{"_id":"@by-association-only/theme-backup","_rev":"3-65e89620538eed637a8f8c65b12f9097","name":"@by-association-only/theme-backup","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@by-association-only/theme-backup","version":"1.0.0","author":{"name":"By Association Only"},"license":"ISC","_id":"@by-association-only/theme-backup@1.0.0","maintainers":[{"name":"dangamble","email":"dan@bao.agency"},{"name":"eng9911","email":"m.p.england@gmail.com"}],"homepage":"https://github.com/baoagency/theme-backup#readme","bugs":{"url":"https://github.com/baoagency/theme-backup/issues"},"bin":{"bao-theme-backup":"index.js"},"dist":{"shasum":"d84f9cbec299d606149e0de63e4a63063d157948","tarball":"https://registry.npmjs.org/@by-association-only/theme-backup/-/theme-backup-1.0.0.tgz","fileCount":4,"integrity":"sha512-azLwGeIEbxzaZbQvAXr5E2+pTC0X4OA3qlXjMFyvrxHAHBAH/022rkdnoLo2cfGhj6qGi3hBaOmMPIEY8DQN4g==","signatures":[{"sig":"MEUCICgXZzKjv0gS2aj4BKT80ovs2w+lUV3RJEegrEgWgXxEAiEAlZSyP11waWFBdLQOYKCPUpfkEt1ilFY94CpAMd47gvA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22666},"main":"index.js","type":"module","gitHead":"26ca1458c734914e2b610f3175a54af7e9f4b48c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"eng9911","email":"m.p.england@gmail.com"},"repository":{"url":"git+https://github.com/baoagency/theme-backup.git","type":"git"},"_npmVersion":"11.5.1","description":"Backup Shopify themes across multiple stores.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"chalk":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/theme-backup_1.0.0_1762774292036_0.3708933417123559","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@by-association-only/theme-backup","version":"1.0.1","author":{"name":"By Association Only"},"license":"ISC","_id":"@by-association-only/theme-backup@1.0.1","maintainers":[{"name":"dangamble","email":"dan@bao.agency"},{"name":"eng9911","email":"m.p.england@gmail.com"}],"homepage":"https://github.com/baoagency/theme-backup#readme","bugs":{"url":"https://github.com/baoagency/theme-backup/issues"},"bin":{"bao-theme-backup":"index.js"},"dist":{"shasum":"7a61053a05f1dbb0fff708eee067f86d00553d4c","tarball":"https://registry.npmjs.org/@by-association-only/theme-backup/-/theme-backup-1.0.1.tgz","fileCount":5,"integrity":"sha512-ZQCRNfpjTDrkzwvt5x6rKRPmg/7GQBROcpwTq4YimNQhkO7VnDLo/dzDySd1ImDHTbGYC24YUMuKAUV1X44z4g==","signatures":[{"sig":"MEYCIQDQvGBjhWvPzyZD6XzxOS2p0axB8SHCjrQFic29xbl2RgIhAIEtsOE0WZVsjqAJpO/KwCbgB5LLSGTjan7XSEdYZQhX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25129},"main":"index.js","type":"module","gitHead":"385d4c5dd4fae85411dcec92a08cb7f937fded44","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"eng9911","email":"m.p.england@gmail.com"},"repository":{"url":"git+https://github.com/baoagency/theme-backup.git","type":"git"},"_npmVersion":"11.5.1","description":"Backup Shopify themes across multiple stores.","directories":{},"_nodeVersion":"22.11.0","dependencies":{"chalk":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/theme-backup_1.0.1_1764166818646_0.07493783936774268","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@by-association-only/theme-backup","version":"1.0.2","description":"Backup Shopify themes across multiple stores.","type":"module","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"bin":{"bao-theme-backup":"index.js"},"dependencies":{"chalk":"^5.3.0"},"repository":{"type":"git","url":"git+https://github.com/baoagency/theme-backup.git"},"author":{"name":"By Association Only"},"license":"ISC","bugs":{"url":"https://github.com/baoagency/theme-backup/issues"},"homepage":"https://github.com/baoagency/theme-backup#readme","devDependencies":{},"_id":"@by-association-only/theme-backup@1.0.2","gitHead":"385d4c5dd4fae85411dcec92a08cb7f937fded44","_nodeVersion":"22.11.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-2OaLTdn8pHQIHa8mJKD6woF6yPh39U8r/kpMzzlXcNSnV1bJFhpA+Xdu+gQ9+LyzASmESryz9BI3LtF3zMcJSQ==","shasum":"15c4ad52844bb0916f25e5ff472e56d6b1c1e9fa","tarball":"https://registry.npmjs.org/@by-association-only/theme-backup/-/theme-backup-1.0.2.tgz","fileCount":5,"unpackedSize":25632,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDzYP2LiI7UdfhAxpX0oEfj8lUEGI62UEy4h7/4KabyZQIgWepGGqboHffOTq+gYujR2pU2KxBd1d4r7BOKxyEIqxw="}]},"_npmUser":{"name":"eng9911","email":"m.p.england@gmail.com"},"directories":{},"maintainers":[{"name":"dangamble","email":"dan@bao.agency"},{"name":"eng9911","email":"m.p.england@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/theme-backup_1.0.2_1764167491231_0.9762041420886263"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-10T11:31:31.938Z","modified":"2025-11-26T14:31:31.663Z","1.0.0":"2025-11-10T11:31:32.227Z","1.0.1":"2025-11-26T14:20:18.848Z","1.0.2":"2025-11-26T14:31:31.436Z"},"bugs":{"url":"https://github.com/baoagency/theme-backup/issues"},"author":{"name":"By Association Only"},"license":"ISC","homepage":"https://github.com/baoagency/theme-backup#readme","repository":{"type":"git","url":"git+https://github.com/baoagency/theme-backup.git"},"description":"Backup Shopify themes across multiple stores.","maintainers":[{"name":"dangamble","email":"dan@bao.agency"},{"name":"eng9911","email":"m.p.england@gmail.com"}],"readme":"# Theme Backup\n\nA CLI tool to backup Shopify themes across multiple stores.\n\n## What it does\n\nThis tool helps you create backups of Shopify themes across multiple stores in your organization:\n\n- Reads store URLs from a config file (`.bao-stores` or `.bao-translation-checker`)\n- Shows interactive theme selection UI\n- Checks theme limits and prompts for deletion if needed:\n  - At 100 themes: Forces deletion (must delete at least 1)\n  - Above 20 themes: Optional deletion prompt\n- Backs up selected theme with naming: `[Original Name] (Backup YYYY-MM-DD)`\n- Uses Shopify CLI `pull` and `push` commands for duplication\n\n## Setup\n\n1) Add a config file in the root: `.bao-stores` (or use existing `.bao-translation-checker`)\n\nList each store name on a separate line (the part before .myshopify.com).\n\nExample:\nIf your stores are:\n- acmestore.myshopify.com\n- acmestore-us.myshopify.com\n\nYou would enter:\n```\nacmestore\nacmestore-us\n```\n\n2) Run the backup tool:\n\n```bash\nnpx @by-association-only/theme-backup\n```\n\n## Usage\n\nThe tool will:\n1. Process each store in your config file\n2. Check theme count and prompt for deletion if needed\n3. Show interactive theme selector\n4. Pull the selected theme to a temp folder\n  5. Push it as a new unpublished theme with backup naming using the DD/MM/YYYY format\n6. Clean up temp files\n\n## Theme Limit Handling\n\nThe tool automatically checks your theme count and handles it as follows:\n\n- **100+ themes**: You've hit the maximum limit. The tool will force you to delete at least 1 theme before proceeding with the backup.\n- **21-99 themes**: You'll see a prompt: \"You have X themes currently. Would you like to delete any?\" You can choose to delete some themes or skip and proceed directly to backup.\n- **20 or fewer themes**: The tool proceeds directly to theme selection and backup.\n\n**Note**: Shopify's theme limits are:\n- Non-Plus stores: 20 themes maximum\n- Shopify Plus stores: 100 themes maximum\n\n## Requirements\n\n- Node v18.20+\n- Shopify CLI v3.71+\n- Valid Shopify store access\n\n## Issues\n\n### Authentication Required\n\nIf you see authentication errors, make sure you're logged into Shopify CLI:\n\n```bash\nshopify auth login\n```\n\n### Theme Limit Errors\n\nIf you're at the theme limit, the tool will prompt you to delete themes before proceeding.\n","readmeFilename":"README.md"}