@ecomweb/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -0
- package/bin/run.js +8 -0
- package/bin/run.ts +5 -0
- package/dist/base-command.d.ts +32 -0
- package/dist/base-command.js +111 -0
- package/dist/base-command.js.map +1 -0
- package/dist/commands/analytics/ga4/all.d.ts +21 -0
- package/dist/commands/analytics/ga4/all.js +60 -0
- package/dist/commands/analytics/ga4/all.js.map +1 -0
- package/dist/commands/analytics/ga4/overview.d.ts +20 -0
- package/dist/commands/analytics/ga4/overview.js +40 -0
- package/dist/commands/analytics/ga4/overview.js.map +1 -0
- package/dist/commands/analytics/ga4/sessions-by-channel.d.ts +21 -0
- package/dist/commands/analytics/ga4/sessions-by-channel.js +44 -0
- package/dist/commands/analytics/ga4/sessions-by-channel.js.map +1 -0
- package/dist/commands/analytics/ga4/trends.d.ts +21 -0
- package/dist/commands/analytics/ga4/trends.js +46 -0
- package/dist/commands/analytics/ga4/trends.js.map +1 -0
- package/dist/commands/analytics/ga4/users-by-country.d.ts +21 -0
- package/dist/commands/analytics/ga4/users-by-country.js +44 -0
- package/dist/commands/analytics/ga4/users-by-country.js.map +1 -0
- package/dist/commands/analytics/ga4/views-by-page.d.ts +21 -0
- package/dist/commands/analytics/ga4/views-by-page.js +44 -0
- package/dist/commands/analytics/ga4/views-by-page.js.map +1 -0
- package/dist/commands/analytics/gsc/all.d.ts +21 -0
- package/dist/commands/analytics/gsc/all.js +46 -0
- package/dist/commands/analytics/gsc/all.js.map +1 -0
- package/dist/commands/analytics/gsc/search-console.d.ts +21 -0
- package/dist/commands/analytics/gsc/search-console.js +45 -0
- package/dist/commands/analytics/gsc/search-console.js.map +1 -0
- package/dist/commands/analytics/sales/all.d.ts +21 -0
- package/dist/commands/analytics/sales/all.js +54 -0
- package/dist/commands/analytics/sales/all.js.map +1 -0
- package/dist/commands/analytics/sales/summary.d.ts +21 -0
- package/dist/commands/analytics/sales/summary.js +44 -0
- package/dist/commands/analytics/sales/summary.js.map +1 -0
- package/dist/commands/analytics/sales/time-series.d.ts +19 -0
- package/dist/commands/analytics/sales/time-series.js +35 -0
- package/dist/commands/analytics/sales/time-series.js.map +1 -0
- package/dist/commands/analytics/summary.js.map +1 -0
- package/dist/commands/analytics/time-series.js.map +1 -0
- package/dist/commands/assets/bulk-delete.d.ts +19 -0
- package/dist/commands/assets/bulk-delete.js +41 -0
- package/dist/commands/assets/bulk-delete.js.map +1 -0
- package/dist/commands/assets/delete.d.ts +21 -0
- package/dist/commands/assets/delete.js +32 -0
- package/dist/commands/assets/delete.js.map +1 -0
- package/dist/commands/assets/get-by-entity.d.ts +26 -0
- package/dist/commands/assets/get-by-entity.js +43 -0
- package/dist/commands/assets/get-by-entity.js.map +1 -0
- package/dist/commands/assets/get.d.ts +22 -0
- package/dist/commands/assets/get.js +37 -0
- package/dist/commands/assets/get.js.map +1 -0
- package/dist/commands/assets/link.d.ts +26 -0
- package/dist/commands/assets/link.js +71 -0
- package/dist/commands/assets/link.js.map +1 -0
- package/dist/commands/assets/list.d.ts +28 -0
- package/dist/commands/assets/list.js +84 -0
- package/dist/commands/assets/list.js.map +1 -0
- package/dist/commands/assets/replace.d.ts +23 -0
- package/dist/commands/assets/replace.js +102 -0
- package/dist/commands/assets/replace.js.map +1 -0
- package/dist/commands/assets/unlink.d.ts +22 -0
- package/dist/commands/assets/unlink.js +52 -0
- package/dist/commands/assets/unlink.js.map +1 -0
- package/dist/commands/assets/update.d.ts +29 -0
- package/dist/commands/assets/update.js +84 -0
- package/dist/commands/assets/update.js.map +1 -0
- package/dist/commands/assets/upload-and-link.d.ts +29 -0
- package/dist/commands/assets/upload-and-link.js +127 -0
- package/dist/commands/assets/upload-and-link.js.map +1 -0
- package/dist/commands/assets/upload-video.d.ts +22 -0
- package/dist/commands/assets/upload-video.js +88 -0
- package/dist/commands/assets/upload-video.js.map +1 -0
- package/dist/commands/assets/upload.d.ts +27 -0
- package/dist/commands/assets/upload.js +110 -0
- package/dist/commands/assets/upload.js.map +1 -0
- package/dist/commands/auth/login.d.ts +18 -0
- package/dist/commands/auth/login.js +52 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.d.ts +18 -0
- package/dist/commands/auth/logout.js +23 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/auth/profiles/delete.d.ts +21 -0
- package/dist/commands/auth/profiles/delete.js +39 -0
- package/dist/commands/auth/profiles/delete.js.map +1 -0
- package/dist/commands/auth/profiles/list.d.ts +18 -0
- package/dist/commands/auth/profiles/list.js +30 -0
- package/dist/commands/auth/profiles/list.js.map +1 -0
- package/dist/commands/auth/profiles/use.d.ts +21 -0
- package/dist/commands/auth/profiles/use.js +36 -0
- package/dist/commands/auth/profiles/use.js.map +1 -0
- package/dist/commands/auth/register.d.ts +20 -0
- package/dist/commands/auth/register.js +35 -0
- package/dist/commands/auth/register.js.map +1 -0
- package/dist/commands/auth/status.d.ts +18 -0
- package/dist/commands/auth/status.js +27 -0
- package/dist/commands/auth/status.js.map +1 -0
- package/dist/commands/auth/verify.d.ts +20 -0
- package/dist/commands/auth/verify.js +43 -0
- package/dist/commands/auth/verify.js.map +1 -0
- package/dist/commands/banners/create.d.ts +27 -0
- package/dist/commands/banners/create.js +75 -0
- package/dist/commands/banners/create.js.map +1 -0
- package/dist/commands/banners/delete.d.ts +25 -0
- package/dist/commands/banners/delete.js +35 -0
- package/dist/commands/banners/delete.js.map +1 -0
- package/dist/commands/banners/get.d.ts +24 -0
- package/dist/commands/banners/get.js +31 -0
- package/dist/commands/banners/get.js.map +1 -0
- package/dist/commands/banners/list.d.ts +24 -0
- package/dist/commands/banners/list.js +65 -0
- package/dist/commands/banners/list.js.map +1 -0
- package/dist/commands/banners/update.d.ts +33 -0
- package/dist/commands/banners/update.js +81 -0
- package/dist/commands/banners/update.js.map +1 -0
- package/dist/commands/blog-categories/all.d.ts +18 -0
- package/dist/commands/blog-categories/all.js +18 -0
- package/dist/commands/blog-categories/all.js.map +1 -0
- package/dist/commands/blog-categories/create.d.ts +25 -0
- package/dist/commands/blog-categories/create.js +65 -0
- package/dist/commands/blog-categories/create.js.map +1 -0
- package/dist/commands/blog-categories/delete.d.ts +24 -0
- package/dist/commands/blog-categories/delete.js +30 -0
- package/dist/commands/blog-categories/delete.js.map +1 -0
- package/dist/commands/blog-categories/list.d.ts +24 -0
- package/dist/commands/blog-categories/list.js +51 -0
- package/dist/commands/blog-categories/list.js.map +1 -0
- package/dist/commands/blog-categories/update.d.ts +31 -0
- package/dist/commands/blog-categories/update.js +68 -0
- package/dist/commands/blog-categories/update.js.map +1 -0
- package/dist/commands/blog-posts/all.d.ts +19 -0
- package/dist/commands/blog-posts/all.js +30 -0
- package/dist/commands/blog-posts/all.js.map +1 -0
- package/dist/commands/blog-posts/batch-create.d.ts +22 -0
- package/dist/commands/blog-posts/batch-create.js +55 -0
- package/dist/commands/blog-posts/batch-create.js.map +1 -0
- package/dist/commands/blog-posts/batch-delete.d.ts +21 -0
- package/dist/commands/blog-posts/batch-delete.js +46 -0
- package/dist/commands/blog-posts/batch-delete.js.map +1 -0
- package/dist/commands/blog-posts/batch-update.d.ts +24 -0
- package/dist/commands/blog-posts/batch-update.js +76 -0
- package/dist/commands/blog-posts/batch-update.js.map +1 -0
- package/dist/commands/blog-posts/create.d.ts +31 -0
- package/dist/commands/blog-posts/create.js +92 -0
- package/dist/commands/blog-posts/create.js.map +1 -0
- package/dist/commands/blog-posts/delete.d.ts +24 -0
- package/dist/commands/blog-posts/delete.js +30 -0
- package/dist/commands/blog-posts/delete.js.map +1 -0
- package/dist/commands/blog-posts/generate.d.ts +22 -0
- package/dist/commands/blog-posts/generate.js +42 -0
- package/dist/commands/blog-posts/generate.js.map +1 -0
- package/dist/commands/blog-posts/get.d.ts +24 -0
- package/dist/commands/blog-posts/get.js +26 -0
- package/dist/commands/blog-posts/get.js.map +1 -0
- package/dist/commands/blog-posts/import.d.ts +24 -0
- package/dist/commands/blog-posts/import.js +103 -0
- package/dist/commands/blog-posts/import.js.map +1 -0
- package/dist/commands/blog-posts/list.d.ts +29 -0
- package/dist/commands/blog-posts/list.js +76 -0
- package/dist/commands/blog-posts/list.js.map +1 -0
- package/dist/commands/blog-posts/search.d.ts +27 -0
- package/dist/commands/blog-posts/search.js +55 -0
- package/dist/commands/blog-posts/search.js.map +1 -0
- package/dist/commands/blog-posts/stats.d.ts +18 -0
- package/dist/commands/blog-posts/stats.js +22 -0
- package/dist/commands/blog-posts/stats.js.map +1 -0
- package/dist/commands/blog-posts/update.d.ts +37 -0
- package/dist/commands/blog-posts/update.js +96 -0
- package/dist/commands/blog-posts/update.js.map +1 -0
- package/dist/commands/blog-settings/get.d.ts +18 -0
- package/dist/commands/blog-settings/get.js +23 -0
- package/dist/commands/blog-settings/get.js.map +1 -0
- package/dist/commands/blog-settings/update.d.ts +30 -0
- package/dist/commands/blog-settings/update.js +79 -0
- package/dist/commands/blog-settings/update.js.map +1 -0
- package/dist/commands/blog-tags/all.d.ts +18 -0
- package/dist/commands/blog-tags/all.js +18 -0
- package/dist/commands/blog-tags/all.js.map +1 -0
- package/dist/commands/blog-tags/create.d.ts +22 -0
- package/dist/commands/blog-tags/create.js +56 -0
- package/dist/commands/blog-tags/create.js.map +1 -0
- package/dist/commands/blog-tags/delete.d.ts +24 -0
- package/dist/commands/blog-tags/delete.js +30 -0
- package/dist/commands/blog-tags/delete.js.map +1 -0
- package/dist/commands/blog-tags/list.d.ts +24 -0
- package/dist/commands/blog-tags/list.js +50 -0
- package/dist/commands/blog-tags/list.js.map +1 -0
- package/dist/commands/categories/all.d.ts +19 -0
- package/dist/commands/categories/all.js +29 -0
- package/dist/commands/categories/all.js.map +1 -0
- package/dist/commands/categories/create.d.ts +28 -0
- package/dist/commands/categories/create.js +78 -0
- package/dist/commands/categories/create.js.map +1 -0
- package/dist/commands/categories/delete.d.ts +25 -0
- package/dist/commands/categories/delete.js +35 -0
- package/dist/commands/categories/delete.js.map +1 -0
- package/dist/commands/categories/get.d.ts +24 -0
- package/dist/commands/categories/get.js +31 -0
- package/dist/commands/categories/get.js.map +1 -0
- package/dist/commands/categories/list.d.ts +28 -0
- package/dist/commands/categories/list.js +70 -0
- package/dist/commands/categories/list.js.map +1 -0
- package/dist/commands/categories/update.d.ts +34 -0
- package/dist/commands/categories/update.js +84 -0
- package/dist/commands/categories/update.js.map +1 -0
- package/dist/commands/collections/all.d.ts +19 -0
- package/dist/commands/collections/all.js +30 -0
- package/dist/commands/collections/all.js.map +1 -0
- package/dist/commands/collections/create.d.ts +28 -0
- package/dist/commands/collections/create.js +85 -0
- package/dist/commands/collections/create.js.map +1 -0
- package/dist/commands/collections/delete.d.ts +26 -0
- package/dist/commands/collections/delete.js +39 -0
- package/dist/commands/collections/delete.js.map +1 -0
- package/dist/commands/collections/get.d.ts +24 -0
- package/dist/commands/collections/get.js +31 -0
- package/dist/commands/collections/get.js.map +1 -0
- package/dist/commands/collections/list.d.ts +29 -0
- package/dist/commands/collections/list.js +75 -0
- package/dist/commands/collections/list.js.map +1 -0
- package/dist/commands/collections/update.d.ts +34 -0
- package/dist/commands/collections/update.js +91 -0
- package/dist/commands/collections/update.js.map +1 -0
- package/dist/commands/customers/addresses.d.ts +21 -0
- package/dist/commands/customers/addresses.js +32 -0
- package/dist/commands/customers/addresses.js.map +1 -0
- package/dist/commands/customers/create.d.ts +26 -0
- package/dist/commands/customers/create.js +70 -0
- package/dist/commands/customers/create.js.map +1 -0
- package/dist/commands/customers/delete.d.ts +24 -0
- package/dist/commands/customers/delete.js +30 -0
- package/dist/commands/customers/delete.js.map +1 -0
- package/dist/commands/customers/get.d.ts +21 -0
- package/dist/commands/customers/get.js +31 -0
- package/dist/commands/customers/get.js.map +1 -0
- package/dist/commands/customers/list.d.ts +24 -0
- package/dist/commands/customers/list.js +65 -0
- package/dist/commands/customers/list.js.map +1 -0
- package/dist/commands/customers/stats.d.ts +18 -0
- package/dist/commands/customers/stats.js +22 -0
- package/dist/commands/customers/stats.js.map +1 -0
- package/dist/commands/customers/update.d.ts +31 -0
- package/dist/commands/customers/update.js +74 -0
- package/dist/commands/customers/update.js.map +1 -0
- package/dist/commands/describe.d.ts +22 -0
- package/dist/commands/describe.js +52 -0
- package/dist/commands/describe.js.map +1 -0
- package/dist/commands/health/check.d.ts +18 -0
- package/dist/commands/health/check.js +35 -0
- package/dist/commands/health/check.js.map +1 -0
- package/dist/commands/init.d.ts +22 -0
- package/dist/commands/init.js +84 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/orders/batch-cancel.d.ts +23 -0
- package/dist/commands/orders/batch-cancel.js +71 -0
- package/dist/commands/orders/batch-cancel.js.map +1 -0
- package/dist/commands/orders/batch-fulfill.d.ts +23 -0
- package/dist/commands/orders/batch-fulfill.js +71 -0
- package/dist/commands/orders/batch-fulfill.js.map +1 -0
- package/dist/commands/orders/batch-update.d.ts +24 -0
- package/dist/commands/orders/batch-update.js +77 -0
- package/dist/commands/orders/batch-update.js.map +1 -0
- package/dist/commands/orders/cancel.d.ts +24 -0
- package/dist/commands/orders/cancel.js +30 -0
- package/dist/commands/orders/cancel.js.map +1 -0
- package/dist/commands/orders/create.d.ts +20 -0
- package/dist/commands/orders/create.js +49 -0
- package/dist/commands/orders/create.js.map +1 -0
- package/dist/commands/orders/deliver.d.ts +25 -0
- package/dist/commands/orders/deliver.js +36 -0
- package/dist/commands/orders/deliver.js.map +1 -0
- package/dist/commands/orders/fulfill.d.ts +24 -0
- package/dist/commands/orders/fulfill.js +33 -0
- package/dist/commands/orders/fulfill.js.map +1 -0
- package/dist/commands/orders/get.d.ts +26 -0
- package/dist/commands/orders/get.js +40 -0
- package/dist/commands/orders/get.js.map +1 -0
- package/dist/commands/orders/list.d.ts +33 -0
- package/dist/commands/orders/list.js +93 -0
- package/dist/commands/orders/list.js.map +1 -0
- package/dist/commands/orders/resume.d.ts +24 -0
- package/dist/commands/orders/resume.js +32 -0
- package/dist/commands/orders/resume.js.map +1 -0
- package/dist/commands/orders/ship.d.ts +26 -0
- package/dist/commands/orders/ship.js +40 -0
- package/dist/commands/orders/ship.js.map +1 -0
- package/dist/commands/orders/stats.d.ts +18 -0
- package/dist/commands/orders/stats.js +22 -0
- package/dist/commands/orders/stats.js.map +1 -0
- package/dist/commands/orders/transitions.d.ts +24 -0
- package/dist/commands/orders/transitions.js +33 -0
- package/dist/commands/orders/transitions.js.map +1 -0
- package/dist/commands/orders/update.d.ts +33 -0
- package/dist/commands/orders/update.js +90 -0
- package/dist/commands/orders/update.js.map +1 -0
- package/dist/commands/products/all.d.ts +19 -0
- package/dist/commands/products/all.js +30 -0
- package/dist/commands/products/all.js.map +1 -0
- package/dist/commands/products/batch-create.d.ts +22 -0
- package/dist/commands/products/batch-create.js +55 -0
- package/dist/commands/products/batch-create.js.map +1 -0
- package/dist/commands/products/batch-delete.d.ts +21 -0
- package/dist/commands/products/batch-delete.js +46 -0
- package/dist/commands/products/batch-delete.js.map +1 -0
- package/dist/commands/products/batch-update.d.ts +24 -0
- package/dist/commands/products/batch-update.js +76 -0
- package/dist/commands/products/batch-update.js.map +1 -0
- package/dist/commands/products/create.d.ts +27 -0
- package/dist/commands/products/create.js +79 -0
- package/dist/commands/products/create.js.map +1 -0
- package/dist/commands/products/delete.d.ts +26 -0
- package/dist/commands/products/delete.js +38 -0
- package/dist/commands/products/delete.js.map +1 -0
- package/dist/commands/products/get.d.ts +29 -0
- package/dist/commands/products/get.js +44 -0
- package/dist/commands/products/get.js.map +1 -0
- package/dist/commands/products/list.d.ts +34 -0
- package/dist/commands/products/list.js +89 -0
- package/dist/commands/products/list.js.map +1 -0
- package/dist/commands/products/search.d.ts +30 -0
- package/dist/commands/products/search.js +72 -0
- package/dist/commands/products/search.js.map +1 -0
- package/dist/commands/products/stats.d.ts +18 -0
- package/dist/commands/products/stats.js +22 -0
- package/dist/commands/products/stats.js.map +1 -0
- package/dist/commands/products/update.d.ts +34 -0
- package/dist/commands/products/update.js +111 -0
- package/dist/commands/products/update.js.map +1 -0
- package/dist/commands/products/variant-options.d.ts +22 -0
- package/dist/commands/products/variant-options.js +48 -0
- package/dist/commands/products/variant-options.js.map +1 -0
- package/dist/commands/promotions/batch-delete.d.ts +21 -0
- package/dist/commands/promotions/batch-delete.js +46 -0
- package/dist/commands/promotions/batch-delete.js.map +1 -0
- package/dist/commands/promotions/create.d.ts +37 -0
- package/dist/commands/promotions/create.js +105 -0
- package/dist/commands/promotions/create.js.map +1 -0
- package/dist/commands/promotions/delete.d.ts +24 -0
- package/dist/commands/promotions/delete.js +30 -0
- package/dist/commands/promotions/delete.js.map +1 -0
- package/dist/commands/promotions/get-by-code.d.ts +21 -0
- package/dist/commands/promotions/get-by-code.js +25 -0
- package/dist/commands/promotions/get-by-code.js.map +1 -0
- package/dist/commands/promotions/get.d.ts +24 -0
- package/dist/commands/promotions/get.js +26 -0
- package/dist/commands/promotions/get.js.map +1 -0
- package/dist/commands/promotions/list.d.ts +31 -0
- package/dist/commands/promotions/list.js +82 -0
- package/dist/commands/promotions/list.js.map +1 -0
- package/dist/commands/promotions/stats.d.ts +18 -0
- package/dist/commands/promotions/stats.js +22 -0
- package/dist/commands/promotions/stats.js.map +1 -0
- package/dist/commands/promotions/update.d.ts +38 -0
- package/dist/commands/promotions/update.js +94 -0
- package/dist/commands/promotions/update.js.map +1 -0
- package/dist/commands/reviews/bulk-import.d.ts +24 -0
- package/dist/commands/reviews/bulk-import.js +82 -0
- package/dist/commands/reviews/bulk-import.js.map +1 -0
- package/dist/commands/reviews/bulk-moderate.d.ts +24 -0
- package/dist/commands/reviews/bulk-moderate.js +66 -0
- package/dist/commands/reviews/bulk-moderate.js.map +1 -0
- package/dist/commands/reviews/create.d.ts +29 -0
- package/dist/commands/reviews/create.js +84 -0
- package/dist/commands/reviews/create.js.map +1 -0
- package/dist/commands/reviews/delete-reply.d.ts +22 -0
- package/dist/commands/reviews/delete-reply.js +31 -0
- package/dist/commands/reviews/delete-reply.js.map +1 -0
- package/dist/commands/reviews/delete.d.ts +21 -0
- package/dist/commands/reviews/delete.js +30 -0
- package/dist/commands/reviews/delete.js.map +1 -0
- package/dist/commands/reviews/get.d.ts +21 -0
- package/dist/commands/reviews/get.js +31 -0
- package/dist/commands/reviews/get.js.map +1 -0
- package/dist/commands/reviews/list.d.ts +34 -0
- package/dist/commands/reviews/list.js +83 -0
- package/dist/commands/reviews/list.js.map +1 -0
- package/dist/commands/reviews/reply.d.ts +25 -0
- package/dist/commands/reviews/reply.js +59 -0
- package/dist/commands/reviews/reply.js.map +1 -0
- package/dist/commands/reviews/stats.d.ts +18 -0
- package/dist/commands/reviews/stats.js +25 -0
- package/dist/commands/reviews/stats.js.map +1 -0
- package/dist/commands/reviews/update-reply.d.ts +25 -0
- package/dist/commands/reviews/update-reply.js +60 -0
- package/dist/commands/reviews/update-reply.js.map +1 -0
- package/dist/commands/reviews/update.d.ts +30 -0
- package/dist/commands/reviews/update.js +83 -0
- package/dist/commands/reviews/update.js.map +1 -0
- package/dist/commands/setup.d.ts +19 -0
- package/dist/commands/setup.js +186 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/shipping-methods/create.d.ts +24 -0
- package/dist/commands/shipping-methods/create.js +63 -0
- package/dist/commands/shipping-methods/create.js.map +1 -0
- package/dist/commands/shipping-methods/delete.d.ts +24 -0
- package/dist/commands/shipping-methods/delete.js +30 -0
- package/dist/commands/shipping-methods/delete.js.map +1 -0
- package/dist/commands/shipping-methods/get.d.ts +24 -0
- package/dist/commands/shipping-methods/get.js +31 -0
- package/dist/commands/shipping-methods/get.js.map +1 -0
- package/dist/commands/shipping-methods/list.d.ts +26 -0
- package/dist/commands/shipping-methods/list.js +63 -0
- package/dist/commands/shipping-methods/list.js.map +1 -0
- package/dist/commands/shipping-methods/update.d.ts +30 -0
- package/dist/commands/shipping-methods/update.js +69 -0
- package/dist/commands/shipping-methods/update.js.map +1 -0
- package/dist/commands/shipping-programs/calculate.d.ts +26 -0
- package/dist/commands/shipping-programs/calculate.js +72 -0
- package/dist/commands/shipping-programs/calculate.js.map +1 -0
- package/dist/commands/shipping-programs/create-rule.d.ts +40 -0
- package/dist/commands/shipping-programs/create-rule.js +110 -0
- package/dist/commands/shipping-programs/create-rule.js.map +1 -0
- package/dist/commands/shipping-programs/create.d.ts +27 -0
- package/dist/commands/shipping-programs/create.js +75 -0
- package/dist/commands/shipping-programs/create.js.map +1 -0
- package/dist/commands/shipping-programs/delete-rule.d.ts +28 -0
- package/dist/commands/shipping-programs/delete-rule.js +42 -0
- package/dist/commands/shipping-programs/delete-rule.js.map +1 -0
- package/dist/commands/shipping-programs/delete.d.ts +24 -0
- package/dist/commands/shipping-programs/delete.js +30 -0
- package/dist/commands/shipping-programs/delete.js.map +1 -0
- package/dist/commands/shipping-programs/get-rule.d.ts +28 -0
- package/dist/commands/shipping-programs/get-rule.js +38 -0
- package/dist/commands/shipping-programs/get-rule.js.map +1 -0
- package/dist/commands/shipping-programs/get.d.ts +24 -0
- package/dist/commands/shipping-programs/get.js +32 -0
- package/dist/commands/shipping-programs/get.js.map +1 -0
- package/dist/commands/shipping-programs/list-rules.d.ts +34 -0
- package/dist/commands/shipping-programs/list-rules.js +86 -0
- package/dist/commands/shipping-programs/list-rules.js.map +1 -0
- package/dist/commands/shipping-programs/list.d.ts +30 -0
- package/dist/commands/shipping-programs/list.js +74 -0
- package/dist/commands/shipping-programs/list.js.map +1 -0
- package/dist/commands/shipping-programs/update-rule.d.ts +44 -0
- package/dist/commands/shipping-programs/update-rule.js +120 -0
- package/dist/commands/shipping-programs/update-rule.js.map +1 -0
- package/dist/commands/shipping-programs/update.d.ts +33 -0
- package/dist/commands/shipping-programs/update.js +81 -0
- package/dist/commands/shipping-programs/update.js.map +1 -0
- package/dist/commands/shipping-zones/create.d.ts +22 -0
- package/dist/commands/shipping-zones/create.js +57 -0
- package/dist/commands/shipping-zones/create.js.map +1 -0
- package/dist/commands/shipping-zones/delete.d.ts +24 -0
- package/dist/commands/shipping-zones/delete.js +30 -0
- package/dist/commands/shipping-zones/delete.js.map +1 -0
- package/dist/commands/shipping-zones/get.d.ts +24 -0
- package/dist/commands/shipping-zones/get.js +32 -0
- package/dist/commands/shipping-zones/get.js.map +1 -0
- package/dist/commands/shipping-zones/list.d.ts +28 -0
- package/dist/commands/shipping-zones/list.js +68 -0
- package/dist/commands/shipping-zones/list.js.map +1 -0
- package/dist/commands/shipping-zones/location-data.d.ts +18 -0
- package/dist/commands/shipping-zones/location-data.js +25 -0
- package/dist/commands/shipping-zones/location-data.js.map +1 -0
- package/dist/commands/shipping-zones/update.d.ts +28 -0
- package/dist/commands/shipping-zones/update.js +63 -0
- package/dist/commands/shipping-zones/update.js.map +1 -0
- package/dist/commands/store-menus/create.d.ts +22 -0
- package/dist/commands/store-menus/create.js +58 -0
- package/dist/commands/store-menus/create.js.map +1 -0
- package/dist/commands/store-menus/delete.d.ts +24 -0
- package/dist/commands/store-menus/delete.js +30 -0
- package/dist/commands/store-menus/delete.js.map +1 -0
- package/dist/commands/store-menus/get-by-ref.d.ts +22 -0
- package/dist/commands/store-menus/get-by-ref.js +30 -0
- package/dist/commands/store-menus/get-by-ref.js.map +1 -0
- package/dist/commands/store-menus/get.d.ts +25 -0
- package/dist/commands/store-menus/get.js +30 -0
- package/dist/commands/store-menus/get.js.map +1 -0
- package/dist/commands/store-menus/list.d.ts +23 -0
- package/dist/commands/store-menus/list.js +54 -0
- package/dist/commands/store-menus/list.js.map +1 -0
- package/dist/commands/store-menus/update.d.ts +28 -0
- package/dist/commands/store-menus/update.js +63 -0
- package/dist/commands/store-menus/update.js.map +1 -0
- package/dist/commands/store-pages/all.d.ts +20 -0
- package/dist/commands/store-pages/all.js +30 -0
- package/dist/commands/store-pages/all.js.map +1 -0
- package/dist/commands/store-pages/create.d.ts +26 -0
- package/dist/commands/store-pages/create.js +73 -0
- package/dist/commands/store-pages/create.js.map +1 -0
- package/dist/commands/store-pages/delete.d.ts +24 -0
- package/dist/commands/store-pages/delete.js +30 -0
- package/dist/commands/store-pages/delete.js.map +1 -0
- package/dist/commands/store-pages/duplicate.d.ts +24 -0
- package/dist/commands/store-pages/duplicate.js +33 -0
- package/dist/commands/store-pages/duplicate.js.map +1 -0
- package/dist/commands/store-pages/get.d.ts +24 -0
- package/dist/commands/store-pages/get.js +26 -0
- package/dist/commands/store-pages/get.js.map +1 -0
- package/dist/commands/store-pages/list.d.ts +24 -0
- package/dist/commands/store-pages/list.js +59 -0
- package/dist/commands/store-pages/list.js.map +1 -0
- package/dist/commands/store-pages/stats.d.ts +18 -0
- package/dist/commands/store-pages/stats.js +22 -0
- package/dist/commands/store-pages/stats.js.map +1 -0
- package/dist/commands/store-pages/update.d.ts +32 -0
- package/dist/commands/store-pages/update.js +78 -0
- package/dist/commands/store-pages/update.js.map +1 -0
- package/dist/commands/store-settings/get.d.ts +18 -0
- package/dist/commands/store-settings/get.js +23 -0
- package/dist/commands/store-settings/get.js.map +1 -0
- package/dist/commands/store-settings/update.d.ts +32 -0
- package/dist/commands/store-settings/update.js +88 -0
- package/dist/commands/store-settings/update.js.map +1 -0
- package/dist/commands/stores/current.d.ts +18 -0
- package/dist/commands/stores/current.js +29 -0
- package/dist/commands/stores/current.js.map +1 -0
- package/dist/commands/stores/info.d.ts +24 -0
- package/dist/commands/stores/info.js +29 -0
- package/dist/commands/stores/info.js.map +1 -0
- package/dist/commands/stores/list.d.ts +18 -0
- package/dist/commands/stores/list.js +25 -0
- package/dist/commands/stores/list.js.map +1 -0
- package/dist/commands/stores/switch.d.ts +24 -0
- package/dist/commands/stores/switch.js +37 -0
- package/dist/commands/stores/switch.js.map +1 -0
- package/dist/hooks/init.d.ts +3 -0
- package/dist/hooks/init.js +6 -0
- package/dist/hooks/init.js.map +1 -0
- package/dist/lib/api-client.d.ts +46 -0
- package/dist/lib/api-client.js +126 -0
- package/dist/lib/api-client.js.map +1 -0
- package/dist/lib/batch.d.ts +21 -0
- package/dist/lib/batch.js +56 -0
- package/dist/lib/batch.js.map +1 -0
- package/dist/lib/config.d.ts +44 -0
- package/dist/lib/config.js +200 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.d.ts +30 -0
- package/dist/lib/errors.js +116 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/output.d.ts +39 -0
- package/dist/lib/output.js +176 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/pagination.d.ts +8 -0
- package/dist/lib/pagination.js +25 -0
- package/dist/lib/pagination.js.map +1 -0
- package/dist/lib/stdin.d.ts +9 -0
- package/dist/lib/stdin.js +86 -0
- package/dist/lib/stdin.js.map +1 -0
- package/dist/lib/validators.d.ts +19 -0
- package/dist/lib/validators.js +499 -0
- package/dist/lib/validators.js.map +1 -0
- package/oclif.manifest.json +23299 -0
- package/package.json +68 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const base_command_1 = require("../../base-command");
|
|
4
|
+
class StoresList extends base_command_1.BaseCommand {
|
|
5
|
+
async run() {
|
|
6
|
+
const stores = await this.apiClient.listStores();
|
|
7
|
+
this.outputResult({
|
|
8
|
+
resource: "stores",
|
|
9
|
+
action: "list",
|
|
10
|
+
data: stores,
|
|
11
|
+
available_actions: ["switch", "info"],
|
|
12
|
+
hints: {
|
|
13
|
+
switch: "ecomweb stores switch <id>",
|
|
14
|
+
info: "ecomweb stores info <id>",
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
StoresList.description = "List all stores accessible with current API key";
|
|
20
|
+
StoresList.examples = ["ecomweb stores list"];
|
|
21
|
+
StoresList.flags = {
|
|
22
|
+
...base_command_1.BaseCommand.baseFlags,
|
|
23
|
+
};
|
|
24
|
+
exports.default = StoresList;
|
|
25
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/stores/list.ts"],"names":[],"mappings":";;AAAA,qDAAiD;AAEjD,MAAqB,UAAW,SAAQ,0BAAW;IASjD,KAAK,CAAC,GAAG;QACP,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAEjD,IAAI,CAAC,YAAY,CAAC;YAChB,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;YACrC,KAAK,EAAE;gBACL,MAAM,EAAE,4BAA4B;gBACpC,IAAI,EAAE,0BAA0B;aACjC;SACF,CAAC,CAAC;IACL,CAAC;;AArBM,sBAAW,GAAG,iDAAiD,CAAC;AAEhE,mBAAQ,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAEnC,gBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;CACzB,CAAC;kBAPiB,UAAU"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { BaseCommand } from "../../base-command";
|
|
2
|
+
export default class StoresSwitch extends BaseCommand {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
id: import("@oclif/core/lib/interfaces").Arg<number, {
|
|
7
|
+
max?: number;
|
|
8
|
+
min?: number;
|
|
9
|
+
}>;
|
|
10
|
+
};
|
|
11
|
+
static flags: {
|
|
12
|
+
"store-id": import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
|
+
"api-key": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
14
|
+
"api-url": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
|
+
output: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
|
+
quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
17
|
+
"dry-run": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
18
|
+
profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
19
|
+
full: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
20
|
+
fields: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
21
|
+
exclude: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
22
|
+
};
|
|
23
|
+
run(): Promise<void>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const base_command_1 = require("../../base-command");
|
|
5
|
+
class StoresSwitch extends base_command_1.BaseCommand {
|
|
6
|
+
async run() {
|
|
7
|
+
const { args } = await this.parse(StoresSwitch);
|
|
8
|
+
const storeId = args.id;
|
|
9
|
+
let storeName;
|
|
10
|
+
try {
|
|
11
|
+
const store = await this.apiClient.getStore(storeId);
|
|
12
|
+
storeName = store.name || store.store_name;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
}
|
|
16
|
+
this.configManager.setStoreId(storeId, storeName);
|
|
17
|
+
this.outputJson({
|
|
18
|
+
store_id: storeId,
|
|
19
|
+
store_name: storeName || null,
|
|
20
|
+
message: `Switched to store ${storeId}`,
|
|
21
|
+
profile: this.configManager.getActiveProfileName(),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
StoresSwitch.description = "Switch the active store (persists to profile)";
|
|
26
|
+
StoresSwitch.examples = [
|
|
27
|
+
"ecomweb stores switch 1",
|
|
28
|
+
"ecomweb stores switch 2 --profile production",
|
|
29
|
+
];
|
|
30
|
+
StoresSwitch.args = {
|
|
31
|
+
id: core_1.Args.integer({ description: "Store ID to switch to", required: true }),
|
|
32
|
+
};
|
|
33
|
+
StoresSwitch.flags = {
|
|
34
|
+
...base_command_1.BaseCommand.baseFlags,
|
|
35
|
+
};
|
|
36
|
+
exports.default = StoresSwitch;
|
|
37
|
+
//# sourceMappingURL=switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/commands/stores/switch.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AAEjD,MAAqB,YAAa,SAAQ,0BAAW;IAgBnD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;QAGxB,IAAI,SAA6B,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACrD,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElD,IAAI,CAAC,UAAU,CAAC;YACd,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE,SAAS,IAAI,IAAI;YAC7B,OAAO,EAAE,qBAAqB,OAAO,EAAE;YACvC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;SACnD,CAAC,CAAC;IACL,CAAC;;AApCM,wBAAW,GAAG,+CAA+C,CAAC;AAE9D,qBAAQ,GAAG;IAChB,yBAAyB;IACzB,8CAA8C;CAC/C,CAAC;AAEK,iBAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC3E,CAAC;AAEK,kBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;CACzB,CAAC;kBAdiB,YAAY"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/hooks/init.ts"],"names":[],"mappings":";;AAMA,MAAM,IAAI,GAAiB,KAAK,WAAW,OAAO;AAGlD,CAAC,CAAC;AAEF,kBAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { AxiosRequestConfig } from "axios";
|
|
2
|
+
import FormData from "form-data";
|
|
3
|
+
export interface ApiClientOptions {
|
|
4
|
+
baseUrl: string;
|
|
5
|
+
apiKey?: string;
|
|
6
|
+
jwtToken?: string;
|
|
7
|
+
timeout?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface PaginatedResponse<T> {
|
|
10
|
+
data: T[];
|
|
11
|
+
meta: {
|
|
12
|
+
total: number;
|
|
13
|
+
limit: number;
|
|
14
|
+
offset: number;
|
|
15
|
+
page: number;
|
|
16
|
+
totalPages: number;
|
|
17
|
+
hasNext: boolean;
|
|
18
|
+
hasPrev: boolean;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export declare class ApiClient {
|
|
22
|
+
private client;
|
|
23
|
+
private storeId?;
|
|
24
|
+
constructor(options: ApiClientOptions);
|
|
25
|
+
setJwtToken(token: string): void;
|
|
26
|
+
clearAuth(): void;
|
|
27
|
+
setStoreId(storeId: number): void;
|
|
28
|
+
private storePath;
|
|
29
|
+
get<T = any>(path: string, params?: Record<string, any>): Promise<T>;
|
|
30
|
+
post<T = any>(path: string, body?: any, config?: AxiosRequestConfig): Promise<T>;
|
|
31
|
+
put<T = any>(path: string, body?: any): Promise<T>;
|
|
32
|
+
patch<T = any>(path: string, body?: any): Promise<T>;
|
|
33
|
+
delete<T = any>(path: string, body?: any): Promise<T>;
|
|
34
|
+
storeGet<T = any>(path: string, params?: Record<string, any>): Promise<T>;
|
|
35
|
+
storePost<T = any>(path: string, body?: any, config?: AxiosRequestConfig): Promise<T>;
|
|
36
|
+
storePut<T = any>(path: string, body?: any): Promise<T>;
|
|
37
|
+
storePatch<T = any>(path: string, body?: any): Promise<T>;
|
|
38
|
+
storeDelete<T = any>(path: string, body?: any): Promise<T>;
|
|
39
|
+
storeUpload<T = any>(path: string, formData: FormData): Promise<T>;
|
|
40
|
+
listPaginated<T = any>(path: string, params?: Record<string, any>): Promise<PaginatedResponse<T>>;
|
|
41
|
+
listAll<T = any>(path: string, params?: Record<string, any>): Promise<T[]>;
|
|
42
|
+
private paginateAll;
|
|
43
|
+
health(): Promise<any>;
|
|
44
|
+
listStores(): Promise<any[]>;
|
|
45
|
+
getStore(id: number): Promise<any>;
|
|
46
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ApiClient = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
class ApiClient {
|
|
9
|
+
constructor(options) {
|
|
10
|
+
this.client = axios_1.default.create({
|
|
11
|
+
baseURL: options.baseUrl,
|
|
12
|
+
timeout: options.timeout || 30_000,
|
|
13
|
+
headers: {
|
|
14
|
+
"Content-Type": "application/json",
|
|
15
|
+
...(options.apiKey && { "x-api-key": options.apiKey }),
|
|
16
|
+
...(options.jwtToken && { Authorization: `Bearer ${options.jwtToken}` }),
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
this.client.interceptors.response.use(undefined, async (error) => {
|
|
20
|
+
const config = error.config;
|
|
21
|
+
if (!error.response || error.response.status !== 429 || config._retryCount >= 3) {
|
|
22
|
+
return Promise.reject(error);
|
|
23
|
+
}
|
|
24
|
+
config._retryCount = (config._retryCount || 0) + 1;
|
|
25
|
+
const delay = Math.pow(2, config._retryCount) * 1000;
|
|
26
|
+
await new Promise((r) => setTimeout(r, delay));
|
|
27
|
+
return this.client.request(config);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
setJwtToken(token) {
|
|
31
|
+
this.client.defaults.headers.common["Authorization"] = `Bearer ${token}`;
|
|
32
|
+
delete this.client.defaults.headers.common["x-api-key"];
|
|
33
|
+
}
|
|
34
|
+
clearAuth() {
|
|
35
|
+
delete this.client.defaults.headers.common["Authorization"];
|
|
36
|
+
delete this.client.defaults.headers.common["x-api-key"];
|
|
37
|
+
}
|
|
38
|
+
setStoreId(storeId) {
|
|
39
|
+
this.storeId = storeId;
|
|
40
|
+
}
|
|
41
|
+
storePath(path) {
|
|
42
|
+
if (!this.storeId)
|
|
43
|
+
throw new Error("No store selected");
|
|
44
|
+
return `/stores/${this.storeId}${path}`;
|
|
45
|
+
}
|
|
46
|
+
async get(path, params) {
|
|
47
|
+
const { data } = await this.client.get(path, { params });
|
|
48
|
+
return data;
|
|
49
|
+
}
|
|
50
|
+
async post(path, body, config) {
|
|
51
|
+
const { data } = await this.client.post(path, body, config);
|
|
52
|
+
return data;
|
|
53
|
+
}
|
|
54
|
+
async put(path, body) {
|
|
55
|
+
const { data } = await this.client.put(path, body);
|
|
56
|
+
return data;
|
|
57
|
+
}
|
|
58
|
+
async patch(path, body) {
|
|
59
|
+
const { data } = await this.client.patch(path, body);
|
|
60
|
+
return data;
|
|
61
|
+
}
|
|
62
|
+
async delete(path, body) {
|
|
63
|
+
const { data } = await this.client.delete(path, body ? { data: body } : undefined);
|
|
64
|
+
return data;
|
|
65
|
+
}
|
|
66
|
+
async storeGet(path, params) {
|
|
67
|
+
return this.get(this.storePath(path), params);
|
|
68
|
+
}
|
|
69
|
+
async storePost(path, body, config) {
|
|
70
|
+
return this.post(this.storePath(path), body, config);
|
|
71
|
+
}
|
|
72
|
+
async storePut(path, body) {
|
|
73
|
+
return this.put(this.storePath(path), body);
|
|
74
|
+
}
|
|
75
|
+
async storePatch(path, body) {
|
|
76
|
+
return this.patch(this.storePath(path), body);
|
|
77
|
+
}
|
|
78
|
+
async storeDelete(path, body) {
|
|
79
|
+
return this.delete(this.storePath(path), body);
|
|
80
|
+
}
|
|
81
|
+
async storeUpload(path, formData) {
|
|
82
|
+
return this.post(this.storePath(path), formData, {
|
|
83
|
+
headers: formData.getHeaders(),
|
|
84
|
+
maxContentLength: Infinity,
|
|
85
|
+
maxBodyLength: Infinity,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
async listPaginated(path, params) {
|
|
89
|
+
return this.storeGet(path, params);
|
|
90
|
+
}
|
|
91
|
+
async listAll(path, params) {
|
|
92
|
+
try {
|
|
93
|
+
const allPath = path.endsWith("/") ? `${path}all` : `${path}/all`;
|
|
94
|
+
const result = await this.storeGet(allPath, params);
|
|
95
|
+
return Array.isArray(result) ? result : result.data;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return this.paginateAll(path, params);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async paginateAll(path, params) {
|
|
102
|
+
const all = [];
|
|
103
|
+
let offset = 0;
|
|
104
|
+
const limit = 100;
|
|
105
|
+
while (true) {
|
|
106
|
+
const response = await this.listPaginated(path, { ...params, limit, offset });
|
|
107
|
+
all.push(...response.data);
|
|
108
|
+
if (!response.meta.hasNext)
|
|
109
|
+
break;
|
|
110
|
+
offset += limit;
|
|
111
|
+
}
|
|
112
|
+
return all;
|
|
113
|
+
}
|
|
114
|
+
async health() {
|
|
115
|
+
return this.get("/health");
|
|
116
|
+
}
|
|
117
|
+
async listStores() {
|
|
118
|
+
const result = await this.get("/stores");
|
|
119
|
+
return Array.isArray(result) ? result : result.data || [];
|
|
120
|
+
}
|
|
121
|
+
async getStore(id) {
|
|
122
|
+
return this.get(`/stores/${id}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.ApiClient = ApiClient;
|
|
126
|
+
//# sourceMappingURL=api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAiE;AAuBjE,MAAa,SAAS;IAIpB,YAAY,OAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,eAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM;YAClC,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;gBACtD,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;aACzE;SACF,CAAC,CAAC;QAGH,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;gBAChF,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,CAAC,WAAW,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;YACrD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEO,SAAS,CAAC,IAAY;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACxD,OAAO,WAAW,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;IAC1C,CAAC;IAGD,KAAK,CAAC,GAAG,CAAU,IAAY,EAAE,MAA4B;QAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAI,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI,CAAU,IAAY,EAAE,IAAU,EAAE,MAA2B;QACvE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAI,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAU,IAAY,EAAE,IAAU;QACzC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAI,IAAI,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAK,CAAU,IAAY,EAAE,IAAU;QAC3C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAI,IAAI,EAAE,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAU,IAAY,EAAE,IAAU;QAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAI,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,KAAK,CAAC,QAAQ,CAAU,IAAY,EAAE,MAA4B;QAChE,OAAO,IAAI,CAAC,GAAG,CAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,SAAS,CAAU,IAAY,EAAE,IAAU,EAAE,MAA2B;QAC5E,OAAO,IAAI,CAAC,IAAI,CAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAU,IAAY,EAAE,IAAU;QAC9C,OAAO,IAAI,CAAC,GAAG,CAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,UAAU,CAAU,IAAY,EAAE,IAAU;QAChD,OAAO,IAAI,CAAC,KAAK,CAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,WAAW,CAAU,IAAY,EAAE,IAAU;QACjD,OAAO,IAAI,CAAC,MAAM,CAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,WAAW,CAAU,IAAY,EAAE,QAAkB;QACzD,OAAO,IAAI,CAAC,IAAI,CAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE;YAClD,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE;YAC9B,gBAAgB,EAAE,QAAQ;YAC1B,aAAa,EAAE,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,aAAa,CAAU,IAAY,EAAE,MAA4B;QACrE,OAAO,IAAI,CAAC,QAAQ,CAAuB,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC;IAMD,KAAK,CAAC,OAAO,CAAU,IAAY,EAAE,MAA4B;QAE/D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;YAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAsB,OAAO,EAAE,MAAM,CAAC,CAAC;YACzE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YAEP,OAAO,IAAI,CAAC,WAAW,CAAI,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAI,IAAY,EAAE,MAA4B;QACrE,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,KAAK,GAAG,GAAG,CAAC;QAElB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAI,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACjF,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO;gBAAE,MAAM;YAClC,MAAM,IAAI,KAAK,CAAC;QAClB,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAGD,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAM,SAAS,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACnC,CAAC;CACF;AAxJD,8BAwJC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface BatchResult<T = any> {
|
|
2
|
+
total: number;
|
|
3
|
+
succeeded: number;
|
|
4
|
+
failed: number;
|
|
5
|
+
results: BatchItemResult<T>[];
|
|
6
|
+
}
|
|
7
|
+
export interface BatchItemResult<T = any> {
|
|
8
|
+
index: number;
|
|
9
|
+
status: "success" | "error" | "skipped";
|
|
10
|
+
data?: T;
|
|
11
|
+
error?: {
|
|
12
|
+
code: string;
|
|
13
|
+
message: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export interface BatchOptions {
|
|
17
|
+
concurrency: number;
|
|
18
|
+
dryRun: boolean;
|
|
19
|
+
continueOnError: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function executeBatch<TInput, TOutput = any>(items: TInput[], operation: (item: TInput, index: number) => Promise<TOutput>, options?: Partial<BatchOptions>): Promise<BatchResult<TOutput>>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executeBatch = executeBatch;
|
|
4
|
+
const DEFAULT_OPTIONS = {
|
|
5
|
+
concurrency: 5,
|
|
6
|
+
dryRun: false,
|
|
7
|
+
continueOnError: true,
|
|
8
|
+
};
|
|
9
|
+
async function executeBatch(items, operation, options = {}) {
|
|
10
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
11
|
+
if (opts.dryRun) {
|
|
12
|
+
return {
|
|
13
|
+
total: items.length,
|
|
14
|
+
succeeded: items.length,
|
|
15
|
+
failed: 0,
|
|
16
|
+
results: items.map((item, index) => ({
|
|
17
|
+
index,
|
|
18
|
+
status: "skipped",
|
|
19
|
+
data: item,
|
|
20
|
+
})),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const results = [];
|
|
24
|
+
let succeeded = 0;
|
|
25
|
+
let failed = 0;
|
|
26
|
+
for (let i = 0; i < items.length; i += opts.concurrency) {
|
|
27
|
+
const chunk = items.slice(i, i + opts.concurrency);
|
|
28
|
+
const chunkResults = await Promise.allSettled(chunk.map((item, chunkIndex) => operation(item, i + chunkIndex)));
|
|
29
|
+
for (let j = 0; j < chunkResults.length; j++) {
|
|
30
|
+
const result = chunkResults[j];
|
|
31
|
+
const index = i + j;
|
|
32
|
+
if (result.status === "fulfilled") {
|
|
33
|
+
succeeded++;
|
|
34
|
+
results.push({ index, status: "success", data: result.value });
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
failed++;
|
|
38
|
+
const err = result.reason;
|
|
39
|
+
const message = err?.response?.data?.message || err?.message || String(err);
|
|
40
|
+
results.push({
|
|
41
|
+
index,
|
|
42
|
+
status: "error",
|
|
43
|
+
error: { code: "BATCH_ITEM_FAILED", message },
|
|
44
|
+
});
|
|
45
|
+
if (!opts.continueOnError) {
|
|
46
|
+
for (let k = index + 1; k < items.length; k++) {
|
|
47
|
+
results.push({ index: k, status: "skipped" });
|
|
48
|
+
}
|
|
49
|
+
return { total: items.length, succeeded, failed, results };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return { total: items.length, succeeded, failed, results };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=batch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../src/lib/batch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface ProfileConfig {
|
|
2
|
+
api_url: string;
|
|
3
|
+
store_id?: number;
|
|
4
|
+
store_name?: string;
|
|
5
|
+
default_output: "json" | "table" | "csv";
|
|
6
|
+
}
|
|
7
|
+
export interface AppConfig {
|
|
8
|
+
active_profile: string;
|
|
9
|
+
profiles: Record<string, ProfileConfig>;
|
|
10
|
+
}
|
|
11
|
+
export declare class ConfigManager {
|
|
12
|
+
private config;
|
|
13
|
+
constructor();
|
|
14
|
+
private ensureDir;
|
|
15
|
+
private loadConfig;
|
|
16
|
+
save(): void;
|
|
17
|
+
getActiveProfileName(): string;
|
|
18
|
+
getProfile(name?: string): ProfileConfig;
|
|
19
|
+
setProfile(name: string, profile: Partial<ProfileConfig>): void;
|
|
20
|
+
setActiveProfile(name: string): void;
|
|
21
|
+
setStoreId(storeId: number, storeName?: string): void;
|
|
22
|
+
getStoreId(): number | undefined;
|
|
23
|
+
getApiKey(profileName?: string): string | undefined;
|
|
24
|
+
setApiKey(key: string, profileName?: string): void;
|
|
25
|
+
removeApiKey(profileName?: string): void;
|
|
26
|
+
getJwtTokens(profileName?: string): {
|
|
27
|
+
access_token: string;
|
|
28
|
+
refresh_token: string;
|
|
29
|
+
expires_at: number;
|
|
30
|
+
} | undefined;
|
|
31
|
+
setJwtTokens(tokens: {
|
|
32
|
+
access_token: string;
|
|
33
|
+
refresh_token: string;
|
|
34
|
+
expires_at: number;
|
|
35
|
+
}, profileName?: string): void;
|
|
36
|
+
removeJwtTokens(profileName?: string): void;
|
|
37
|
+
isJwtExpired(profileName?: string): boolean;
|
|
38
|
+
getProfileNames(): string[];
|
|
39
|
+
deleteProfile(name: string): void;
|
|
40
|
+
resolve<T>(flag: T | undefined, envVar: string, profileValue: T | undefined, defaultValue: T): T;
|
|
41
|
+
resolveApiUrl(flag?: string): string;
|
|
42
|
+
resolveApiKey(flag?: string): string | undefined;
|
|
43
|
+
resolveStoreId(flag?: number): number | undefined;
|
|
44
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ConfigManager = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const CONFIG_DIR = path.join(os.homedir(), ".config", "ecomweb");
|
|
41
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
42
|
+
const CREDENTIALS_DIR = path.join(CONFIG_DIR, "credentials");
|
|
43
|
+
const DEFAULT_PROFILE = {
|
|
44
|
+
api_url: "https://apibase.ecomweb.app/api/v1",
|
|
45
|
+
default_output: "json",
|
|
46
|
+
};
|
|
47
|
+
const DEFAULT_CONFIG = {
|
|
48
|
+
active_profile: "default",
|
|
49
|
+
profiles: {
|
|
50
|
+
default: { ...DEFAULT_PROFILE },
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
class ConfigManager {
|
|
54
|
+
constructor() {
|
|
55
|
+
this.config = this.loadConfig();
|
|
56
|
+
}
|
|
57
|
+
ensureDir(dir) {
|
|
58
|
+
if (!fs.existsSync(dir)) {
|
|
59
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
loadConfig() {
|
|
63
|
+
try {
|
|
64
|
+
if (fs.existsSync(CONFIG_FILE)) {
|
|
65
|
+
const raw = fs.readFileSync(CONFIG_FILE, "utf-8");
|
|
66
|
+
return { ...DEFAULT_CONFIG, ...JSON.parse(raw) };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
}
|
|
71
|
+
return { ...DEFAULT_CONFIG };
|
|
72
|
+
}
|
|
73
|
+
save() {
|
|
74
|
+
this.ensureDir(CONFIG_DIR);
|
|
75
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(this.config, null, 2), { mode: 0o600 });
|
|
76
|
+
}
|
|
77
|
+
getActiveProfileName() {
|
|
78
|
+
return this.config.active_profile;
|
|
79
|
+
}
|
|
80
|
+
getProfile(name) {
|
|
81
|
+
const profileName = name || this.config.active_profile;
|
|
82
|
+
return this.config.profiles[profileName] || { ...DEFAULT_PROFILE };
|
|
83
|
+
}
|
|
84
|
+
setProfile(name, profile) {
|
|
85
|
+
this.config.profiles[name] = {
|
|
86
|
+
...DEFAULT_PROFILE,
|
|
87
|
+
...this.config.profiles[name],
|
|
88
|
+
...profile,
|
|
89
|
+
};
|
|
90
|
+
this.save();
|
|
91
|
+
}
|
|
92
|
+
setActiveProfile(name) {
|
|
93
|
+
this.config.active_profile = name;
|
|
94
|
+
this.save();
|
|
95
|
+
}
|
|
96
|
+
setStoreId(storeId, storeName) {
|
|
97
|
+
const profile = this.getProfile();
|
|
98
|
+
profile.store_id = storeId;
|
|
99
|
+
if (storeName)
|
|
100
|
+
profile.store_name = storeName;
|
|
101
|
+
this.config.profiles[this.config.active_profile] = profile;
|
|
102
|
+
this.save();
|
|
103
|
+
}
|
|
104
|
+
getStoreId() {
|
|
105
|
+
return this.getProfile().store_id;
|
|
106
|
+
}
|
|
107
|
+
getApiKey(profileName) {
|
|
108
|
+
const name = profileName || this.config.active_profile;
|
|
109
|
+
const keyFile = path.join(CREDENTIALS_DIR, `${name}.key`);
|
|
110
|
+
try {
|
|
111
|
+
if (fs.existsSync(keyFile)) {
|
|
112
|
+
return fs.readFileSync(keyFile, "utf-8").trim();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
}
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
setApiKey(key, profileName) {
|
|
120
|
+
const name = profileName || this.config.active_profile;
|
|
121
|
+
this.ensureDir(CREDENTIALS_DIR);
|
|
122
|
+
const keyFile = path.join(CREDENTIALS_DIR, `${name}.key`);
|
|
123
|
+
fs.writeFileSync(keyFile, key, { mode: 0o600 });
|
|
124
|
+
}
|
|
125
|
+
removeApiKey(profileName) {
|
|
126
|
+
const name = profileName || this.config.active_profile;
|
|
127
|
+
const keyFile = path.join(CREDENTIALS_DIR, `${name}.key`);
|
|
128
|
+
if (fs.existsSync(keyFile)) {
|
|
129
|
+
fs.unlinkSync(keyFile);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
getJwtTokens(profileName) {
|
|
133
|
+
const name = profileName || this.config.active_profile;
|
|
134
|
+
const tokenFile = path.join(CREDENTIALS_DIR, `${name}.jwt`);
|
|
135
|
+
try {
|
|
136
|
+
if (fs.existsSync(tokenFile)) {
|
|
137
|
+
return JSON.parse(fs.readFileSync(tokenFile, "utf-8"));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
}
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
setJwtTokens(tokens, profileName) {
|
|
145
|
+
const name = profileName || this.config.active_profile;
|
|
146
|
+
this.ensureDir(CREDENTIALS_DIR);
|
|
147
|
+
const tokenFile = path.join(CREDENTIALS_DIR, `${name}.jwt`);
|
|
148
|
+
fs.writeFileSync(tokenFile, JSON.stringify(tokens), { mode: 0o600 });
|
|
149
|
+
}
|
|
150
|
+
removeJwtTokens(profileName) {
|
|
151
|
+
const name = profileName || this.config.active_profile;
|
|
152
|
+
const tokenFile = path.join(CREDENTIALS_DIR, `${name}.jwt`);
|
|
153
|
+
if (fs.existsSync(tokenFile)) {
|
|
154
|
+
fs.unlinkSync(tokenFile);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
isJwtExpired(profileName) {
|
|
158
|
+
const tokens = this.getJwtTokens(profileName);
|
|
159
|
+
if (!tokens)
|
|
160
|
+
return true;
|
|
161
|
+
return Date.now() / 1000 >= tokens.expires_at - 60;
|
|
162
|
+
}
|
|
163
|
+
getProfileNames() {
|
|
164
|
+
return Object.keys(this.config.profiles);
|
|
165
|
+
}
|
|
166
|
+
deleteProfile(name) {
|
|
167
|
+
delete this.config.profiles[name];
|
|
168
|
+
if (this.config.active_profile === name) {
|
|
169
|
+
this.config.active_profile = "default";
|
|
170
|
+
}
|
|
171
|
+
this.save();
|
|
172
|
+
this.removeApiKey(name);
|
|
173
|
+
}
|
|
174
|
+
resolve(flag, envVar, profileValue, defaultValue) {
|
|
175
|
+
if (flag !== undefined)
|
|
176
|
+
return flag;
|
|
177
|
+
const envVal = process.env[envVar];
|
|
178
|
+
if (envVal !== undefined)
|
|
179
|
+
return envVal;
|
|
180
|
+
if (profileValue !== undefined)
|
|
181
|
+
return profileValue;
|
|
182
|
+
return defaultValue;
|
|
183
|
+
}
|
|
184
|
+
resolveApiUrl(flag) {
|
|
185
|
+
return this.resolve(flag, "ECOMWEB_API_URL", this.getProfile().api_url, "https://apibase.ecomweb.app/api/v1");
|
|
186
|
+
}
|
|
187
|
+
resolveApiKey(flag) {
|
|
188
|
+
return this.resolve(flag, "ECOMWEB_API_KEY", this.getApiKey(), undefined);
|
|
189
|
+
}
|
|
190
|
+
resolveStoreId(flag) {
|
|
191
|
+
const envVal = process.env["ECOMWEB_STORE_ID"];
|
|
192
|
+
if (flag !== undefined)
|
|
193
|
+
return flag;
|
|
194
|
+
if (envVal !== undefined)
|
|
195
|
+
return parseInt(envVal, 10);
|
|
196
|
+
return this.getStoreId();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
exports.ConfigManager = ConfigManager;
|
|
200
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|