@optima-chat/commerce-cli 1.0.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/.claude/CLAUDE.md +101 -0
- package/LICENSE +21 -0
- package/README.md +1132 -0
- package/dist/api/rest/auth.d.ts +56 -0
- package/dist/api/rest/auth.d.ts.map +1 -0
- package/dist/api/rest/auth.js +150 -0
- package/dist/api/rest/auth.js.map +1 -0
- package/dist/api/rest/base.d.ts +7 -0
- package/dist/api/rest/base.d.ts.map +1 -0
- package/dist/api/rest/base.js +51 -0
- package/dist/api/rest/base.js.map +1 -0
- package/dist/api/rest/commerce.d.ts +730 -0
- package/dist/api/rest/commerce.d.ts.map +1 -0
- package/dist/api/rest/commerce.js +935 -0
- package/dist/api/rest/commerce.js.map +1 -0
- package/dist/commands/auth/index.d.ts +3 -0
- package/dist/commands/auth/index.d.ts.map +1 -0
- package/dist/commands/auth/index.js +14 -0
- package/dist/commands/auth/index.js.map +1 -0
- package/dist/commands/auth/login.d.ts +3 -0
- package/dist/commands/auth/login.d.ts.map +1 -0
- package/dist/commands/auth/login.js +194 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.d.ts +3 -0
- package/dist/commands/auth/logout.d.ts.map +1 -0
- package/dist/commands/auth/logout.js +126 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/auth/switch.d.ts +3 -0
- package/dist/commands/auth/switch.d.ts.map +1 -0
- package/dist/commands/auth/switch.js +111 -0
- package/dist/commands/auth/switch.js.map +1 -0
- package/dist/commands/auth/test-refresh.d.ts +3 -0
- package/dist/commands/auth/test-refresh.d.ts.map +1 -0
- package/dist/commands/auth/test-refresh.js +43 -0
- package/dist/commands/auth/test-refresh.js.map +1 -0
- package/dist/commands/auth/whoami.d.ts +3 -0
- package/dist/commands/auth/whoami.d.ts.map +1 -0
- package/dist/commands/auth/whoami.js +117 -0
- package/dist/commands/auth/whoami.js.map +1 -0
- package/dist/commands/cleanup.d.ts +3 -0
- package/dist/commands/cleanup.d.ts.map +1 -0
- package/dist/commands/cleanup.js +100 -0
- package/dist/commands/cleanup.js.map +1 -0
- package/dist/commands/collection/add-products.d.ts +3 -0
- package/dist/commands/collection/add-products.d.ts.map +1 -0
- package/dist/commands/collection/add-products.js +105 -0
- package/dist/commands/collection/add-products.js.map +1 -0
- package/dist/commands/collection/create.d.ts +3 -0
- package/dist/commands/collection/create.d.ts.map +1 -0
- package/dist/commands/collection/create.js +154 -0
- package/dist/commands/collection/create.js.map +1 -0
- package/dist/commands/collection/delete.d.ts +3 -0
- package/dist/commands/collection/delete.d.ts.map +1 -0
- package/dist/commands/collection/delete.js +83 -0
- package/dist/commands/collection/delete.js.map +1 -0
- package/dist/commands/collection/get.d.ts +3 -0
- package/dist/commands/collection/get.d.ts.map +1 -0
- package/dist/commands/collection/get.js +83 -0
- package/dist/commands/collection/get.js.map +1 -0
- package/dist/commands/collection/index.d.ts +4 -0
- package/dist/commands/collection/index.d.ts.map +1 -0
- package/dist/commands/collection/index.js +22 -0
- package/dist/commands/collection/index.js.map +1 -0
- package/dist/commands/collection/list-products.d.ts +3 -0
- package/dist/commands/collection/list-products.d.ts.map +1 -0
- package/dist/commands/collection/list-products.js +100 -0
- package/dist/commands/collection/list-products.js.map +1 -0
- package/dist/commands/collection/list.d.ts +3 -0
- package/dist/commands/collection/list.d.ts.map +1 -0
- package/dist/commands/collection/list.js +98 -0
- package/dist/commands/collection/list.js.map +1 -0
- package/dist/commands/collection/remove-products.d.ts +3 -0
- package/dist/commands/collection/remove-products.d.ts.map +1 -0
- package/dist/commands/collection/remove-products.js +128 -0
- package/dist/commands/collection/remove-products.js.map +1 -0
- package/dist/commands/collection/update.d.ts +3 -0
- package/dist/commands/collection/update.d.ts.map +1 -0
- package/dist/commands/collection/update.js +166 -0
- package/dist/commands/collection/update.js.map +1 -0
- package/dist/commands/conversation/close.d.ts +3 -0
- package/dist/commands/conversation/close.d.ts.map +1 -0
- package/dist/commands/conversation/close.js +70 -0
- package/dist/commands/conversation/close.js.map +1 -0
- package/dist/commands/conversation/create.d.ts +3 -0
- package/dist/commands/conversation/create.d.ts.map +1 -0
- package/dist/commands/conversation/create.js +153 -0
- package/dist/commands/conversation/create.js.map +1 -0
- package/dist/commands/conversation/get.d.ts +3 -0
- package/dist/commands/conversation/get.d.ts.map +1 -0
- package/dist/commands/conversation/get.js +128 -0
- package/dist/commands/conversation/get.js.map +1 -0
- package/dist/commands/conversation/index.d.ts +3 -0
- package/dist/commands/conversation/index.d.ts.map +1 -0
- package/dist/commands/conversation/index.js +19 -0
- package/dist/commands/conversation/index.js.map +1 -0
- package/dist/commands/conversation/list.d.ts +3 -0
- package/dist/commands/conversation/list.d.ts.map +1 -0
- package/dist/commands/conversation/list.js +129 -0
- package/dist/commands/conversation/list.js.map +1 -0
- package/dist/commands/conversation/mark-read.d.ts +3 -0
- package/dist/commands/conversation/mark-read.d.ts.map +1 -0
- package/dist/commands/conversation/mark-read.js +69 -0
- package/dist/commands/conversation/mark-read.js.map +1 -0
- package/dist/commands/conversation/messages.d.ts +3 -0
- package/dist/commands/conversation/messages.d.ts.map +1 -0
- package/dist/commands/conversation/messages.js +128 -0
- package/dist/commands/conversation/messages.js.map +1 -0
- package/dist/commands/conversation/send.d.ts +3 -0
- package/dist/commands/conversation/send.d.ts.map +1 -0
- package/dist/commands/conversation/send.js +100 -0
- package/dist/commands/conversation/send.js.map +1 -0
- package/dist/commands/homepage/create.d.ts +3 -0
- package/dist/commands/homepage/create.d.ts.map +1 -0
- package/dist/commands/homepage/create.js +150 -0
- package/dist/commands/homepage/create.js.map +1 -0
- package/dist/commands/homepage/delete.d.ts +3 -0
- package/dist/commands/homepage/delete.d.ts.map +1 -0
- package/dist/commands/homepage/delete.js +83 -0
- package/dist/commands/homepage/delete.js.map +1 -0
- package/dist/commands/homepage/get.d.ts +3 -0
- package/dist/commands/homepage/get.d.ts.map +1 -0
- package/dist/commands/homepage/get.js +96 -0
- package/dist/commands/homepage/get.js.map +1 -0
- package/dist/commands/homepage/index.d.ts +4 -0
- package/dist/commands/homepage/index.d.ts.map +1 -0
- package/dist/commands/homepage/index.js +26 -0
- package/dist/commands/homepage/index.js.map +1 -0
- package/dist/commands/homepage/list.d.ts +3 -0
- package/dist/commands/homepage/list.d.ts.map +1 -0
- package/dist/commands/homepage/list.js +101 -0
- package/dist/commands/homepage/list.js.map +1 -0
- package/dist/commands/homepage/patch-settings.d.ts +3 -0
- package/dist/commands/homepage/patch-settings.d.ts.map +1 -0
- package/dist/commands/homepage/patch-settings.js +109 -0
- package/dist/commands/homepage/patch-settings.js.map +1 -0
- package/dist/commands/homepage/reorder.d.ts +3 -0
- package/dist/commands/homepage/reorder.d.ts.map +1 -0
- package/dist/commands/homepage/reorder.js +99 -0
- package/dist/commands/homepage/reorder.js.map +1 -0
- package/dist/commands/homepage/update-collections.d.ts +3 -0
- package/dist/commands/homepage/update-collections.d.ts.map +1 -0
- package/dist/commands/homepage/update-collections.js +93 -0
- package/dist/commands/homepage/update-collections.js.map +1 -0
- package/dist/commands/homepage/update-images.d.ts +3 -0
- package/dist/commands/homepage/update-images.d.ts.map +1 -0
- package/dist/commands/homepage/update-images.js +129 -0
- package/dist/commands/homepage/update-images.js.map +1 -0
- package/dist/commands/homepage/update-target.d.ts +3 -0
- package/dist/commands/homepage/update-target.d.ts.map +1 -0
- package/dist/commands/homepage/update-target.js +94 -0
- package/dist/commands/homepage/update-target.js.map +1 -0
- package/dist/commands/homepage/update.d.ts +3 -0
- package/dist/commands/homepage/update.d.ts.map +1 -0
- package/dist/commands/homepage/update.js +109 -0
- package/dist/commands/homepage/update.js.map +1 -0
- package/dist/commands/i18n/collection/create.d.ts +3 -0
- package/dist/commands/i18n/collection/create.d.ts.map +1 -0
- package/dist/commands/i18n/collection/create.js +147 -0
- package/dist/commands/i18n/collection/create.js.map +1 -0
- package/dist/commands/i18n/collection/delete.d.ts +3 -0
- package/dist/commands/i18n/collection/delete.d.ts.map +1 -0
- package/dist/commands/i18n/collection/delete.js +82 -0
- package/dist/commands/i18n/collection/delete.js.map +1 -0
- package/dist/commands/i18n/collection/get.d.ts +3 -0
- package/dist/commands/i18n/collection/get.d.ts.map +1 -0
- package/dist/commands/i18n/collection/get.js +85 -0
- package/dist/commands/i18n/collection/get.js.map +1 -0
- package/dist/commands/i18n/collection/index.d.ts +3 -0
- package/dist/commands/i18n/collection/index.d.ts.map +1 -0
- package/dist/commands/i18n/collection/index.js +14 -0
- package/dist/commands/i18n/collection/index.js.map +1 -0
- package/dist/commands/i18n/collection/list.d.ts +3 -0
- package/dist/commands/i18n/collection/list.d.ts.map +1 -0
- package/dist/commands/i18n/collection/list.js +89 -0
- package/dist/commands/i18n/collection/list.js.map +1 -0
- package/dist/commands/i18n/collection/update.d.ts +3 -0
- package/dist/commands/i18n/collection/update.d.ts.map +1 -0
- package/dist/commands/i18n/collection/update.js +108 -0
- package/dist/commands/i18n/collection/update.js.map +1 -0
- package/dist/commands/i18n/homepage/delete.d.ts +3 -0
- package/dist/commands/i18n/homepage/delete.d.ts.map +1 -0
- package/dist/commands/i18n/homepage/delete.js +90 -0
- package/dist/commands/i18n/homepage/delete.js.map +1 -0
- package/dist/commands/i18n/homepage/index.d.ts +4 -0
- package/dist/commands/i18n/homepage/index.d.ts.map +1 -0
- package/dist/commands/i18n/homepage/index.js +10 -0
- package/dist/commands/i18n/homepage/index.js.map +1 -0
- package/dist/commands/i18n/homepage/list.d.ts +3 -0
- package/dist/commands/i18n/homepage/list.d.ts.map +1 -0
- package/dist/commands/i18n/homepage/list.js +85 -0
- package/dist/commands/i18n/homepage/list.js.map +1 -0
- package/dist/commands/i18n/homepage/set.d.ts +3 -0
- package/dist/commands/i18n/homepage/set.d.ts.map +1 -0
- package/dist/commands/i18n/homepage/set.js +157 -0
- package/dist/commands/i18n/homepage/set.js.map +1 -0
- package/dist/commands/i18n/index.d.ts +3 -0
- package/dist/commands/i18n/index.d.ts.map +1 -0
- package/dist/commands/i18n/index.js +16 -0
- package/dist/commands/i18n/index.js.map +1 -0
- package/dist/commands/i18n/languages.d.ts +3 -0
- package/dist/commands/i18n/languages.d.ts.map +1 -0
- package/dist/commands/i18n/languages.js +90 -0
- package/dist/commands/i18n/languages.js.map +1 -0
- package/dist/commands/i18n/merchant/create.d.ts +3 -0
- package/dist/commands/i18n/merchant/create.d.ts.map +1 -0
- package/dist/commands/i18n/merchant/create.js +107 -0
- package/dist/commands/i18n/merchant/create.js.map +1 -0
- package/dist/commands/i18n/merchant/delete.d.ts +3 -0
- package/dist/commands/i18n/merchant/delete.d.ts.map +1 -0
- package/dist/commands/i18n/merchant/delete.js +57 -0
- package/dist/commands/i18n/merchant/delete.js.map +1 -0
- package/dist/commands/i18n/merchant/index.d.ts +3 -0
- package/dist/commands/i18n/merchant/index.d.ts.map +1 -0
- package/dist/commands/i18n/merchant/index.js +12 -0
- package/dist/commands/i18n/merchant/index.js.map +1 -0
- package/dist/commands/i18n/merchant/list.d.ts +3 -0
- package/dist/commands/i18n/merchant/list.d.ts.map +1 -0
- package/dist/commands/i18n/merchant/list.js +65 -0
- package/dist/commands/i18n/merchant/list.js.map +1 -0
- package/dist/commands/i18n/merchant/update.d.ts +3 -0
- package/dist/commands/i18n/merchant/update.d.ts.map +1 -0
- package/dist/commands/i18n/merchant/update.js +62 -0
- package/dist/commands/i18n/merchant/update.js.map +1 -0
- package/dist/commands/i18n/product/create.d.ts +3 -0
- package/dist/commands/i18n/product/create.d.ts.map +1 -0
- package/dist/commands/i18n/product/create.js +142 -0
- package/dist/commands/i18n/product/create.js.map +1 -0
- package/dist/commands/i18n/product/delete.d.ts +3 -0
- package/dist/commands/i18n/product/delete.d.ts.map +1 -0
- package/dist/commands/i18n/product/delete.js +67 -0
- package/dist/commands/i18n/product/delete.js.map +1 -0
- package/dist/commands/i18n/product/get.d.ts +3 -0
- package/dist/commands/i18n/product/get.d.ts.map +1 -0
- package/dist/commands/i18n/product/get.js +69 -0
- package/dist/commands/i18n/product/get.js.map +1 -0
- package/dist/commands/i18n/product/index.d.ts +3 -0
- package/dist/commands/i18n/product/index.d.ts.map +1 -0
- package/dist/commands/i18n/product/index.js +14 -0
- package/dist/commands/i18n/product/index.js.map +1 -0
- package/dist/commands/i18n/product/list.d.ts +3 -0
- package/dist/commands/i18n/product/list.d.ts.map +1 -0
- package/dist/commands/i18n/product/list.js +88 -0
- package/dist/commands/i18n/product/list.js.map +1 -0
- package/dist/commands/i18n/product/update.d.ts +3 -0
- package/dist/commands/i18n/product/update.d.ts.map +1 -0
- package/dist/commands/i18n/product/update.js +75 -0
- package/dist/commands/i18n/product/update.js.map +1 -0
- package/dist/commands/i18n/variant/create.d.ts +3 -0
- package/dist/commands/i18n/variant/create.d.ts.map +1 -0
- package/dist/commands/i18n/variant/create.js +179 -0
- package/dist/commands/i18n/variant/create.js.map +1 -0
- package/dist/commands/i18n/variant/delete.d.ts +3 -0
- package/dist/commands/i18n/variant/delete.d.ts.map +1 -0
- package/dist/commands/i18n/variant/delete.js +91 -0
- package/dist/commands/i18n/variant/delete.js.map +1 -0
- package/dist/commands/i18n/variant/get.d.ts +3 -0
- package/dist/commands/i18n/variant/get.d.ts.map +1 -0
- package/dist/commands/i18n/variant/get.js +75 -0
- package/dist/commands/i18n/variant/get.js.map +1 -0
- package/dist/commands/i18n/variant/index.d.ts +3 -0
- package/dist/commands/i18n/variant/index.d.ts.map +1 -0
- package/dist/commands/i18n/variant/index.js +14 -0
- package/dist/commands/i18n/variant/index.js.map +1 -0
- package/dist/commands/i18n/variant/list.d.ts +3 -0
- package/dist/commands/i18n/variant/list.d.ts.map +1 -0
- package/dist/commands/i18n/variant/list.js +79 -0
- package/dist/commands/i18n/variant/list.js.map +1 -0
- package/dist/commands/i18n/variant/update.d.ts +3 -0
- package/dist/commands/i18n/variant/update.d.ts.map +1 -0
- package/dist/commands/i18n/variant/update.js +113 -0
- package/dist/commands/i18n/variant/update.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +98 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/inventory/history.d.ts +3 -0
- package/dist/commands/inventory/history.d.ts.map +1 -0
- package/dist/commands/inventory/history.js +133 -0
- package/dist/commands/inventory/history.js.map +1 -0
- package/dist/commands/inventory/index.d.ts +3 -0
- package/dist/commands/inventory/index.d.ts.map +1 -0
- package/dist/commands/inventory/index.js +12 -0
- package/dist/commands/inventory/index.js.map +1 -0
- package/dist/commands/inventory/low-stock.d.ts +3 -0
- package/dist/commands/inventory/low-stock.d.ts.map +1 -0
- package/dist/commands/inventory/low-stock.js +100 -0
- package/dist/commands/inventory/low-stock.js.map +1 -0
- package/dist/commands/inventory/reserve.d.ts +3 -0
- package/dist/commands/inventory/reserve.d.ts.map +1 -0
- package/dist/commands/inventory/reserve.js +103 -0
- package/dist/commands/inventory/reserve.js.map +1 -0
- package/dist/commands/inventory/update.d.ts +3 -0
- package/dist/commands/inventory/update.d.ts.map +1 -0
- package/dist/commands/inventory/update.js +119 -0
- package/dist/commands/inventory/update.js.map +1 -0
- package/dist/commands/merchant/index.d.ts +3 -0
- package/dist/commands/merchant/index.d.ts.map +1 -0
- package/dist/commands/merchant/index.js +12 -0
- package/dist/commands/merchant/index.js.map +1 -0
- package/dist/commands/merchant/info.d.ts +3 -0
- package/dist/commands/merchant/info.d.ts.map +1 -0
- package/dist/commands/merchant/info.js +113 -0
- package/dist/commands/merchant/info.js.map +1 -0
- package/dist/commands/merchant/setup.d.ts +3 -0
- package/dist/commands/merchant/setup.d.ts.map +1 -0
- package/dist/commands/merchant/setup.js +228 -0
- package/dist/commands/merchant/setup.js.map +1 -0
- package/dist/commands/merchant/update.d.ts +3 -0
- package/dist/commands/merchant/update.d.ts.map +1 -0
- package/dist/commands/merchant/update.js +177 -0
- package/dist/commands/merchant/update.js.map +1 -0
- package/dist/commands/merchant/url.d.ts +3 -0
- package/dist/commands/merchant/url.d.ts.map +1 -0
- package/dist/commands/merchant/url.js +96 -0
- package/dist/commands/merchant/url.js.map +1 -0
- package/dist/commands/order/cancel.d.ts +3 -0
- package/dist/commands/order/cancel.d.ts.map +1 -0
- package/dist/commands/order/cancel.js +142 -0
- package/dist/commands/order/cancel.js.map +1 -0
- package/dist/commands/order/complete.d.ts +3 -0
- package/dist/commands/order/complete.d.ts.map +1 -0
- package/dist/commands/order/complete.js +99 -0
- package/dist/commands/order/complete.js.map +1 -0
- package/dist/commands/order/get.d.ts +3 -0
- package/dist/commands/order/get.d.ts.map +1 -0
- package/dist/commands/order/get.js +80 -0
- package/dist/commands/order/get.js.map +1 -0
- package/dist/commands/order/index.d.ts +3 -0
- package/dist/commands/order/index.d.ts.map +1 -0
- package/dist/commands/order/index.js +16 -0
- package/dist/commands/order/index.js.map +1 -0
- package/dist/commands/order/list.d.ts +3 -0
- package/dist/commands/order/list.d.ts.map +1 -0
- package/dist/commands/order/list.js +135 -0
- package/dist/commands/order/list.js.map +1 -0
- package/dist/commands/order/mark-delivered.d.ts +3 -0
- package/dist/commands/order/mark-delivered.d.ts.map +1 -0
- package/dist/commands/order/mark-delivered.js +70 -0
- package/dist/commands/order/mark-delivered.js.map +1 -0
- package/dist/commands/order/ship.d.ts +3 -0
- package/dist/commands/order/ship.d.ts.map +1 -0
- package/dist/commands/order/ship.js +124 -0
- package/dist/commands/order/ship.js.map +1 -0
- package/dist/commands/product/add-images.d.ts +3 -0
- package/dist/commands/product/add-images.d.ts.map +1 -0
- package/dist/commands/product/add-images.js +210 -0
- package/dist/commands/product/add-images.js.map +1 -0
- package/dist/commands/product/create.d.ts +3 -0
- package/dist/commands/product/create.d.ts.map +1 -0
- package/dist/commands/product/create.js +369 -0
- package/dist/commands/product/create.js.map +1 -0
- package/dist/commands/product/delete.d.ts +3 -0
- package/dist/commands/product/delete.d.ts.map +1 -0
- package/dist/commands/product/delete.js +100 -0
- package/dist/commands/product/delete.js.map +1 -0
- package/dist/commands/product/get.d.ts +3 -0
- package/dist/commands/product/get.d.ts.map +1 -0
- package/dist/commands/product/get.js +123 -0
- package/dist/commands/product/get.js.map +1 -0
- package/dist/commands/product/index.d.ts +3 -0
- package/dist/commands/product/index.d.ts.map +1 -0
- package/dist/commands/product/index.js +18 -0
- package/dist/commands/product/index.js.map +1 -0
- package/dist/commands/product/list.d.ts +3 -0
- package/dist/commands/product/list.d.ts.map +1 -0
- package/dist/commands/product/list.js +154 -0
- package/dist/commands/product/list.js.map +1 -0
- package/dist/commands/product/update.d.ts +3 -0
- package/dist/commands/product/update.d.ts.map +1 -0
- package/dist/commands/product/update.js +183 -0
- package/dist/commands/product/update.js.map +1 -0
- package/dist/commands/product/url.d.ts +3 -0
- package/dist/commands/product/url.d.ts.map +1 -0
- package/dist/commands/product/url.js +124 -0
- package/dist/commands/product/url.js.map +1 -0
- package/dist/commands/refund/create.d.ts +3 -0
- package/dist/commands/refund/create.d.ts.map +1 -0
- package/dist/commands/refund/create.js +161 -0
- package/dist/commands/refund/create.js.map +1 -0
- package/dist/commands/refund/get.d.ts +3 -0
- package/dist/commands/refund/get.d.ts.map +1 -0
- package/dist/commands/refund/get.js +93 -0
- package/dist/commands/refund/get.js.map +1 -0
- package/dist/commands/refund/index.d.ts +3 -0
- package/dist/commands/refund/index.d.ts.map +1 -0
- package/dist/commands/refund/index.js +8 -0
- package/dist/commands/refund/index.js.map +1 -0
- package/dist/commands/shipping/calculate.d.ts +3 -0
- package/dist/commands/shipping/calculate.d.ts.map +1 -0
- package/dist/commands/shipping/calculate.js +183 -0
- package/dist/commands/shipping/calculate.js.map +1 -0
- package/dist/commands/shipping/history.d.ts +3 -0
- package/dist/commands/shipping/history.d.ts.map +1 -0
- package/dist/commands/shipping/history.js +111 -0
- package/dist/commands/shipping/history.js.map +1 -0
- package/dist/commands/shipping/index.d.ts +3 -0
- package/dist/commands/shipping/index.d.ts.map +1 -0
- package/dist/commands/shipping/index.js +10 -0
- package/dist/commands/shipping/index.js.map +1 -0
- package/dist/commands/shipping/update-status.d.ts +3 -0
- package/dist/commands/shipping/update-status.d.ts.map +1 -0
- package/dist/commands/shipping/update-status.js +138 -0
- package/dist/commands/shipping/update-status.js.map +1 -0
- package/dist/commands/shipping-zone/create.d.ts +3 -0
- package/dist/commands/shipping-zone/create.d.ts.map +1 -0
- package/dist/commands/shipping-zone/create.js +191 -0
- package/dist/commands/shipping-zone/create.js.map +1 -0
- package/dist/commands/shipping-zone/delete.d.ts +3 -0
- package/dist/commands/shipping-zone/delete.d.ts.map +1 -0
- package/dist/commands/shipping-zone/delete.js +97 -0
- package/dist/commands/shipping-zone/delete.js.map +1 -0
- package/dist/commands/shipping-zone/index.d.ts +3 -0
- package/dist/commands/shipping-zone/index.d.ts.map +1 -0
- package/dist/commands/shipping-zone/index.js +14 -0
- package/dist/commands/shipping-zone/index.js.map +1 -0
- package/dist/commands/shipping-zone/list.d.ts +3 -0
- package/dist/commands/shipping-zone/list.d.ts.map +1 -0
- package/dist/commands/shipping-zone/list.js +91 -0
- package/dist/commands/shipping-zone/list.js.map +1 -0
- package/dist/commands/shipping-zone/rates.d.ts +4 -0
- package/dist/commands/shipping-zone/rates.d.ts.map +1 -0
- package/dist/commands/shipping-zone/rates.js +285 -0
- package/dist/commands/shipping-zone/rates.js.map +1 -0
- package/dist/commands/test/health.d.ts +3 -0
- package/dist/commands/test/health.d.ts.map +1 -0
- package/dist/commands/test/health.js +126 -0
- package/dist/commands/test/health.js.map +1 -0
- package/dist/commands/test/index.d.ts +3 -0
- package/dist/commands/test/index.d.ts.map +1 -0
- package/dist/commands/test/index.js +8 -0
- package/dist/commands/test/index.js.map +1 -0
- package/dist/commands/test/smoke.d.ts +3 -0
- package/dist/commands/test/smoke.d.ts.map +1 -0
- package/dist/commands/test/smoke.js +201 -0
- package/dist/commands/test/smoke.js.map +1 -0
- package/dist/commands/transfer/index.d.ts +3 -0
- package/dist/commands/transfer/index.d.ts.map +1 -0
- package/dist/commands/transfer/index.js +8 -0
- package/dist/commands/transfer/index.js.map +1 -0
- package/dist/commands/transfer/list.d.ts +3 -0
- package/dist/commands/transfer/list.d.ts.map +1 -0
- package/dist/commands/transfer/list.js +90 -0
- package/dist/commands/transfer/list.js.map +1 -0
- package/dist/commands/transfer/summary.d.ts +3 -0
- package/dist/commands/transfer/summary.d.ts.map +1 -0
- package/dist/commands/transfer/summary.js +68 -0
- package/dist/commands/transfer/summary.js.map +1 -0
- package/dist/commands/upload/file.d.ts +3 -0
- package/dist/commands/upload/file.d.ts.map +1 -0
- package/dist/commands/upload/file.js +79 -0
- package/dist/commands/upload/file.js.map +1 -0
- package/dist/commands/upload/image.d.ts +3 -0
- package/dist/commands/upload/image.d.ts.map +1 -0
- package/dist/commands/upload/image.js +92 -0
- package/dist/commands/upload/image.js.map +1 -0
- package/dist/commands/upload/index.d.ts +3 -0
- package/dist/commands/upload/index.d.ts.map +1 -0
- package/dist/commands/upload/index.js +10 -0
- package/dist/commands/upload/index.js.map +1 -0
- package/dist/commands/upload/video.d.ts +3 -0
- package/dist/commands/upload/video.d.ts.map +1 -0
- package/dist/commands/upload/video.js +78 -0
- package/dist/commands/upload/video.js.map +1 -0
- package/dist/commands/variant/add-images.d.ts +3 -0
- package/dist/commands/variant/add-images.d.ts.map +1 -0
- package/dist/commands/variant/add-images.js +146 -0
- package/dist/commands/variant/add-images.js.map +1 -0
- package/dist/commands/variant/create.d.ts +3 -0
- package/dist/commands/variant/create.d.ts.map +1 -0
- package/dist/commands/variant/create.js +189 -0
- package/dist/commands/variant/create.js.map +1 -0
- package/dist/commands/variant/delete.d.ts +3 -0
- package/dist/commands/variant/delete.d.ts.map +1 -0
- package/dist/commands/variant/delete.js +110 -0
- package/dist/commands/variant/delete.js.map +1 -0
- package/dist/commands/variant/index.d.ts +3 -0
- package/dist/commands/variant/index.d.ts.map +1 -0
- package/dist/commands/variant/index.js +14 -0
- package/dist/commands/variant/index.js.map +1 -0
- package/dist/commands/variant/list.d.ts +3 -0
- package/dist/commands/variant/list.d.ts.map +1 -0
- package/dist/commands/variant/list.js +98 -0
- package/dist/commands/variant/list.js.map +1 -0
- package/dist/commands/variant/update.d.ts +3 -0
- package/dist/commands/variant/update.d.ts.map +1 -0
- package/dist/commands/variant/update.js +141 -0
- package/dist/commands/variant/update.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +133 -0
- package/dist/index.js.map +1 -0
- package/dist/postinstall.d.ts +3 -0
- package/dist/postinstall.d.ts.map +1 -0
- package/dist/postinstall.js +108 -0
- package/dist/postinstall.js.map +1 -0
- package/dist/preuninstall.d.ts +3 -0
- package/dist/preuninstall.d.ts.map +1 -0
- package/dist/preuninstall.js +53 -0
- package/dist/preuninstall.js.map +1 -0
- package/dist/utils/config.d.ts +110 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +347 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/error.d.ts +35 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +110 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/format.d.ts +77 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +406 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/helpText.d.ts +116 -0
- package/dist/utils/helpText.d.ts.map +1 -0
- package/dist/utils/helpText.js +138 -0
- package/dist/utils/helpText.js.map +1 -0
- package/dist/utils/interactive.d.ts +60 -0
- package/dist/utils/interactive.d.ts.map +1 -0
- package/dist/utils/interactive.js +118 -0
- package/dist/utils/interactive.js.map +1 -0
- package/dist/utils/output.d.ts +82 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +151 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/validation.d.ts +16 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +46 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
export type Environment = 'production' | 'stage' | 'development';
|
|
2
|
+
interface UserData {
|
|
3
|
+
id: string;
|
|
4
|
+
email: string;
|
|
5
|
+
name: string;
|
|
6
|
+
role: string;
|
|
7
|
+
}
|
|
8
|
+
interface EnvironmentConfig {
|
|
9
|
+
authUrl: string;
|
|
10
|
+
apiUrl: string;
|
|
11
|
+
storeDomain: string;
|
|
12
|
+
clientId: string;
|
|
13
|
+
configFile: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const ENV_CONFIG: Record<Environment, EnvironmentConfig>;
|
|
16
|
+
/**
|
|
17
|
+
* 获取当前激活的环境
|
|
18
|
+
*/
|
|
19
|
+
export declare function getCurrentEnvironment(): Environment;
|
|
20
|
+
/**
|
|
21
|
+
* 设置当前激活的环境
|
|
22
|
+
*/
|
|
23
|
+
export declare function setCurrentEnvironment(env: Environment): void;
|
|
24
|
+
/**
|
|
25
|
+
* 获取当前环境的配置信息
|
|
26
|
+
*/
|
|
27
|
+
export declare function getCurrentEnvConfig(): EnvironmentConfig;
|
|
28
|
+
/**
|
|
29
|
+
* 保存认证令牌
|
|
30
|
+
*/
|
|
31
|
+
export declare function saveTokens(access_token: string, refresh_token: string, expires_in: number): void;
|
|
32
|
+
/**
|
|
33
|
+
* 获取访问令牌(不刷新)
|
|
34
|
+
* 优先级:OPTIMA_TOKEN 环境变量 > ~/.optima/token 文件 > 配置文件
|
|
35
|
+
*/
|
|
36
|
+
export declare function getAccessToken(): string | null;
|
|
37
|
+
/**
|
|
38
|
+
* 获取 token 过期时间
|
|
39
|
+
*/
|
|
40
|
+
export declare function getTokenExpiresAt(): number | null;
|
|
41
|
+
/**
|
|
42
|
+
* 检查 token 是否过期
|
|
43
|
+
*/
|
|
44
|
+
export declare function isTokenExpired(): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* 获取刷新令牌
|
|
47
|
+
*/
|
|
48
|
+
export declare function getRefreshToken(): string | null;
|
|
49
|
+
/**
|
|
50
|
+
* 检查是否已认证(不检查过期)
|
|
51
|
+
*/
|
|
52
|
+
export declare function isAuthenticated(): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* 确保有效的访问令牌(自动刷新)
|
|
55
|
+
* @returns 有效的访问令牌,如果无法获取则返回 null
|
|
56
|
+
* @throws AuthenticationError 当 token 刷新失败时
|
|
57
|
+
*/
|
|
58
|
+
export declare function ensureValidToken(): Promise<string | null>;
|
|
59
|
+
/**
|
|
60
|
+
* 保存用户信息
|
|
61
|
+
*/
|
|
62
|
+
export declare function saveUser(user: UserData): void;
|
|
63
|
+
/**
|
|
64
|
+
* 获取当前用户信息
|
|
65
|
+
*/
|
|
66
|
+
export declare function getUser(): UserData | null;
|
|
67
|
+
/**
|
|
68
|
+
* 清除当前环境的配置(登出)
|
|
69
|
+
*/
|
|
70
|
+
export declare function clearConfig(): void;
|
|
71
|
+
/**
|
|
72
|
+
* 清除指定环境的配置
|
|
73
|
+
*/
|
|
74
|
+
export declare function clearConfigForEnv(env: Environment): void;
|
|
75
|
+
/**
|
|
76
|
+
* 清除所有环境的配置
|
|
77
|
+
*/
|
|
78
|
+
export declare function clearAllConfigs(): void;
|
|
79
|
+
/**
|
|
80
|
+
* 获取配置文件路径
|
|
81
|
+
*/
|
|
82
|
+
export declare function getConfigPath(): string;
|
|
83
|
+
/**
|
|
84
|
+
* 获取 Commerce API URL
|
|
85
|
+
* 优先级:环境变量 > 配置文件 > 默认值
|
|
86
|
+
*/
|
|
87
|
+
export declare function getApiUrl(): string;
|
|
88
|
+
/**
|
|
89
|
+
* 获取 Auth API URL
|
|
90
|
+
* 优先级:环境变量 > 配置文件 > 默认值
|
|
91
|
+
*/
|
|
92
|
+
export declare function getAuthUrl(): string;
|
|
93
|
+
/**
|
|
94
|
+
* 设置 Commerce API URL
|
|
95
|
+
*/
|
|
96
|
+
export declare function setApiUrl(url: string): void;
|
|
97
|
+
/**
|
|
98
|
+
* 设置 Auth API URL
|
|
99
|
+
*/
|
|
100
|
+
export declare function setAuthUrl(url: string): void;
|
|
101
|
+
/**
|
|
102
|
+
* 获取店铺前端域名
|
|
103
|
+
* 根据当前环境返回对应的前端域名
|
|
104
|
+
* - production: optima.shop
|
|
105
|
+
* - stage: stage.optima.shop
|
|
106
|
+
* - development: optima.sh
|
|
107
|
+
*/
|
|
108
|
+
export declare function getStoreDomain(): string;
|
|
109
|
+
export {};
|
|
110
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,aAAa,CAAC;AASjE,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAaD,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAsB7D,CAAC;AAmCF;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CAqBnD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAW5D;AAUD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,iBAAiB,CAGvD;AAuBD;;GAEG;AACH,wBAAgB,UAAU,CACxB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,GACjB,IAAI,CAQN;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAgB9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAGjD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAIxC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAG/C;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAIzC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyE/D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAE7C;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,QAAQ,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAGxD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAetC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAGvC"}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import Conf from 'conf';
|
|
2
|
+
import { readFileSync, existsSync, writeFileSync, mkdirSync, unlinkSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { homedir } from 'os';
|
|
5
|
+
// ============== 环境配置常量 ==============
|
|
6
|
+
export const ENV_CONFIG = {
|
|
7
|
+
production: {
|
|
8
|
+
authUrl: 'https://auth.optima.shop',
|
|
9
|
+
apiUrl: 'https://api.optima.shop',
|
|
10
|
+
storeDomain: 'optima.shop',
|
|
11
|
+
clientId: 'optima-cli-cwkbnadr',
|
|
12
|
+
configFile: 'config-prod.json',
|
|
13
|
+
},
|
|
14
|
+
stage: {
|
|
15
|
+
authUrl: 'https://auth-stage.optima.shop',
|
|
16
|
+
apiUrl: 'https://api-stage.optima.shop',
|
|
17
|
+
storeDomain: 'stage.optima.shop',
|
|
18
|
+
clientId: 'optima-cli-c5ljkuwx',
|
|
19
|
+
configFile: 'config-stage.json',
|
|
20
|
+
},
|
|
21
|
+
development: {
|
|
22
|
+
authUrl: 'https://auth.optima.chat',
|
|
23
|
+
apiUrl: 'https://api.optima.chat',
|
|
24
|
+
storeDomain: 'optima.sh',
|
|
25
|
+
clientId: 'optima-cli-q1hiavyg',
|
|
26
|
+
configFile: 'config-dev.json',
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
// ============== 配置实例管理 ==============
|
|
30
|
+
const configDir = join(homedir(), '.config', 'commerce-cli');
|
|
31
|
+
const currentEnvFile = join(configDir, 'current-env.json');
|
|
32
|
+
// 配置实例缓存(多环境隔离)
|
|
33
|
+
const configCache = new Map();
|
|
34
|
+
/**
|
|
35
|
+
* 获取指定环境的配置实例
|
|
36
|
+
*/
|
|
37
|
+
function getConfigForEnv(env) {
|
|
38
|
+
if (configCache.has(env)) {
|
|
39
|
+
return configCache.get(env);
|
|
40
|
+
}
|
|
41
|
+
const envConfig = ENV_CONFIG[env];
|
|
42
|
+
const conf = new Conf({
|
|
43
|
+
projectName: 'commerce-cli',
|
|
44
|
+
configName: envConfig.configFile.replace('.json', ''), // Conf 会自动添加 .json
|
|
45
|
+
encryptionKey: 'commerce-cli-secret-key-2025',
|
|
46
|
+
defaults: {
|
|
47
|
+
tokens: null,
|
|
48
|
+
user: null,
|
|
49
|
+
api_url: envConfig.apiUrl,
|
|
50
|
+
auth_url: envConfig.authUrl,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
configCache.set(env, conf);
|
|
54
|
+
return conf;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 获取当前激活的环境
|
|
58
|
+
*/
|
|
59
|
+
export function getCurrentEnvironment() {
|
|
60
|
+
// 1. 优先从环境变量读取
|
|
61
|
+
const envFromEnv = process.env.OPTIMA_ENV;
|
|
62
|
+
if (envFromEnv && ['production', 'stage', 'development'].includes(envFromEnv)) {
|
|
63
|
+
return envFromEnv;
|
|
64
|
+
}
|
|
65
|
+
// 2. 从配置文件读取
|
|
66
|
+
try {
|
|
67
|
+
if (existsSync(currentEnvFile)) {
|
|
68
|
+
const data = JSON.parse(readFileSync(currentEnvFile, 'utf-8'));
|
|
69
|
+
if (data.env && ['production', 'stage', 'development'].includes(data.env)) {
|
|
70
|
+
return data.env;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
// 文件读取失败,使用默认值
|
|
76
|
+
}
|
|
77
|
+
// 3. 默认使用生产环境
|
|
78
|
+
return 'production';
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 设置当前激活的环境
|
|
82
|
+
*/
|
|
83
|
+
export function setCurrentEnvironment(env) {
|
|
84
|
+
try {
|
|
85
|
+
// 确保目录存在
|
|
86
|
+
mkdirSync(configDir, { recursive: true });
|
|
87
|
+
// 写入环境配置
|
|
88
|
+
const data = { env };
|
|
89
|
+
writeFileSync(currentEnvFile, JSON.stringify(data, null, 2), 'utf-8');
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.error(`无法保存环境配置: ${error.message}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 获取当前环境的配置实例
|
|
97
|
+
*/
|
|
98
|
+
function getConfig() {
|
|
99
|
+
const env = getCurrentEnvironment();
|
|
100
|
+
return getConfigForEnv(env);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 获取当前环境的配置信息
|
|
104
|
+
*/
|
|
105
|
+
export function getCurrentEnvConfig() {
|
|
106
|
+
const env = getCurrentEnvironment();
|
|
107
|
+
return ENV_CONFIG[env];
|
|
108
|
+
}
|
|
109
|
+
// ============== 向后兼容的配置变量(使用当前环境) ==============
|
|
110
|
+
const config = getConfig();
|
|
111
|
+
/**
|
|
112
|
+
* 从 ~/.optima/token 文件读取 token
|
|
113
|
+
*/
|
|
114
|
+
function getTokenFromFile() {
|
|
115
|
+
const tokenFile = join(homedir(), '.optima', 'token');
|
|
116
|
+
if (!existsSync(tokenFile)) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
return readFileSync(tokenFile, 'utf-8').trim();
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
// 文件读取失败,返回 null
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* 保存认证令牌
|
|
129
|
+
*/
|
|
130
|
+
export function saveTokens(access_token, refresh_token, expires_in) {
|
|
131
|
+
const expires_at = Date.now() + expires_in * 1000;
|
|
132
|
+
config.set('tokens', {
|
|
133
|
+
access_token,
|
|
134
|
+
refresh_token,
|
|
135
|
+
expires_in,
|
|
136
|
+
expires_at,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* 获取访问令牌(不刷新)
|
|
141
|
+
* 优先级:OPTIMA_TOKEN 环境变量 > ~/.optima/token 文件 > 配置文件
|
|
142
|
+
*/
|
|
143
|
+
export function getAccessToken() {
|
|
144
|
+
// 1. 优先从环境变量读取
|
|
145
|
+
if (process.env.OPTIMA_TOKEN) {
|
|
146
|
+
return process.env.OPTIMA_TOKEN;
|
|
147
|
+
}
|
|
148
|
+
// 2. 从 ~/.optima/token 文件读取
|
|
149
|
+
const tokenFromFile = getTokenFromFile();
|
|
150
|
+
if (tokenFromFile) {
|
|
151
|
+
return tokenFromFile;
|
|
152
|
+
}
|
|
153
|
+
// 3. 从配置文件读取
|
|
154
|
+
const tokens = config.get('tokens');
|
|
155
|
+
if (!tokens)
|
|
156
|
+
return null;
|
|
157
|
+
return tokens.access_token;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* 获取 token 过期时间
|
|
161
|
+
*/
|
|
162
|
+
export function getTokenExpiresAt() {
|
|
163
|
+
const tokens = config.get('tokens');
|
|
164
|
+
return tokens?.expires_at ?? null;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* 检查 token 是否过期
|
|
168
|
+
*/
|
|
169
|
+
export function isTokenExpired() {
|
|
170
|
+
const expiresAt = getTokenExpiresAt();
|
|
171
|
+
if (!expiresAt)
|
|
172
|
+
return true;
|
|
173
|
+
return Date.now() >= expiresAt;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* 获取刷新令牌
|
|
177
|
+
*/
|
|
178
|
+
export function getRefreshToken() {
|
|
179
|
+
const tokens = config.get('tokens');
|
|
180
|
+
return tokens?.refresh_token ?? null;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* 检查是否已认证(不检查过期)
|
|
184
|
+
*/
|
|
185
|
+
export function isAuthenticated() {
|
|
186
|
+
// 环境变量或配置文件中有 token
|
|
187
|
+
const token = getAccessToken();
|
|
188
|
+
return token !== null;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* 确保有效的访问令牌(自动刷新)
|
|
192
|
+
* @returns 有效的访问令牌,如果无法获取则返回 null
|
|
193
|
+
* @throws AuthenticationError 当 token 刷新失败时
|
|
194
|
+
*/
|
|
195
|
+
export async function ensureValidToken() {
|
|
196
|
+
// 1. 如果使用环境变量 token,直接返回(不刷新)
|
|
197
|
+
if (process.env.OPTIMA_TOKEN) {
|
|
198
|
+
if (process.env.DEBUG === 'true') {
|
|
199
|
+
console.log('[Token] Using OPTIMA_TOKEN environment variable');
|
|
200
|
+
}
|
|
201
|
+
return process.env.OPTIMA_TOKEN;
|
|
202
|
+
}
|
|
203
|
+
// 2. 如果使用 ~/.optima/token 文件,直接返回(不刷新)
|
|
204
|
+
const tokenFromFile = getTokenFromFile();
|
|
205
|
+
if (tokenFromFile) {
|
|
206
|
+
if (process.env.DEBUG === 'true') {
|
|
207
|
+
console.log('[Token] Using token from ~/.optima/token file');
|
|
208
|
+
}
|
|
209
|
+
return tokenFromFile;
|
|
210
|
+
}
|
|
211
|
+
// 3. 使用配置文件 token(支持自动刷新)
|
|
212
|
+
const tokens = config.get('tokens');
|
|
213
|
+
if (!tokens) {
|
|
214
|
+
// 没有保存的 token,需要登录
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
// 如果未过期,直接返回
|
|
218
|
+
if (!isTokenExpired()) {
|
|
219
|
+
if (process.env.DEBUG === 'true') {
|
|
220
|
+
const remaining = Math.floor((tokens.expires_at - Date.now()) / 1000 / 60);
|
|
221
|
+
console.log(`[Token] Valid token, expires in ${remaining} minutes`);
|
|
222
|
+
}
|
|
223
|
+
return tokens.access_token;
|
|
224
|
+
}
|
|
225
|
+
// Token 已过期,尝试刷新
|
|
226
|
+
if (process.env.DEBUG === 'true') {
|
|
227
|
+
console.log('[Token] Token expired, attempting refresh...');
|
|
228
|
+
}
|
|
229
|
+
try {
|
|
230
|
+
// 动态导入避免循环依赖
|
|
231
|
+
const { authApi } = await import('../api/rest/auth.js');
|
|
232
|
+
const result = await authApi.refreshToken(tokens.refresh_token);
|
|
233
|
+
if (result.access_token && result.refresh_token && result.expires_in) {
|
|
234
|
+
// 保存新的 token
|
|
235
|
+
saveTokens(result.access_token, result.refresh_token, result.expires_in);
|
|
236
|
+
if (process.env.DEBUG === 'true') {
|
|
237
|
+
console.log(`[Token] Refresh successful, new token expires in ${result.expires_in / 60} minutes`);
|
|
238
|
+
}
|
|
239
|
+
return result.access_token;
|
|
240
|
+
}
|
|
241
|
+
// 刷新失败,清除配置并抛出错误
|
|
242
|
+
clearConfig();
|
|
243
|
+
const { AuthenticationError } = await import('./error.js');
|
|
244
|
+
throw new AuthenticationError('登录已过期,请重新登录: commerce auth login');
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
// 刷新失败(可能 refresh token 也过期了),清除配置
|
|
248
|
+
clearConfig();
|
|
249
|
+
// 如果已经是 AuthenticationError,直接抛出
|
|
250
|
+
if (error.name === 'AuthenticationError') {
|
|
251
|
+
throw error;
|
|
252
|
+
}
|
|
253
|
+
// 其他错误(网络问题等),包装成 AuthenticationError
|
|
254
|
+
const { AuthenticationError } = await import('./error.js');
|
|
255
|
+
const message = error.response?.data?.error_description || error.message || '未知错误';
|
|
256
|
+
throw new AuthenticationError(`Token 刷新失败: ${message}。请重新登录: commerce auth login`);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* 保存用户信息
|
|
261
|
+
*/
|
|
262
|
+
export function saveUser(user) {
|
|
263
|
+
config.set('user', user);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* 获取当前用户信息
|
|
267
|
+
*/
|
|
268
|
+
export function getUser() {
|
|
269
|
+
return config.get('user');
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* 清除当前环境的配置(登出)
|
|
273
|
+
*/
|
|
274
|
+
export function clearConfig() {
|
|
275
|
+
const currentConfig = getConfig();
|
|
276
|
+
currentConfig.clear();
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* 清除指定环境的配置
|
|
280
|
+
*/
|
|
281
|
+
export function clearConfigForEnv(env) {
|
|
282
|
+
const conf = getConfigForEnv(env);
|
|
283
|
+
conf.clear();
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* 清除所有环境的配置
|
|
287
|
+
*/
|
|
288
|
+
export function clearAllConfigs() {
|
|
289
|
+
const environments = ['production', 'stage', 'development'];
|
|
290
|
+
environments.forEach(env => {
|
|
291
|
+
const conf = getConfigForEnv(env);
|
|
292
|
+
conf.clear();
|
|
293
|
+
});
|
|
294
|
+
// 同时清除当前环境标记
|
|
295
|
+
try {
|
|
296
|
+
if (existsSync(currentEnvFile)) {
|
|
297
|
+
unlinkSync(currentEnvFile);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
catch (error) {
|
|
301
|
+
// 忽略错误
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* 获取配置文件路径
|
|
306
|
+
*/
|
|
307
|
+
export function getConfigPath() {
|
|
308
|
+
return config.path;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* 获取 Commerce API URL
|
|
312
|
+
* 优先级:环境变量 > 配置文件 > 默认值
|
|
313
|
+
*/
|
|
314
|
+
export function getApiUrl() {
|
|
315
|
+
return process.env.OPTIMA_API_URL || config.get('api_url') || 'https://api.optima.shop';
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* 获取 Auth API URL
|
|
319
|
+
* 优先级:环境变量 > 配置文件 > 默认值
|
|
320
|
+
*/
|
|
321
|
+
export function getAuthUrl() {
|
|
322
|
+
return process.env.OPTIMA_AUTH_URL || config.get('auth_url') || 'https://auth.optima.shop';
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* 设置 Commerce API URL
|
|
326
|
+
*/
|
|
327
|
+
export function setApiUrl(url) {
|
|
328
|
+
config.set('api_url', url);
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* 设置 Auth API URL
|
|
332
|
+
*/
|
|
333
|
+
export function setAuthUrl(url) {
|
|
334
|
+
config.set('auth_url', url);
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* 获取店铺前端域名
|
|
338
|
+
* 根据当前环境返回对应的前端域名
|
|
339
|
+
* - production: optima.shop
|
|
340
|
+
* - stage: stage.optima.shop
|
|
341
|
+
* - development: optima.sh
|
|
342
|
+
*/
|
|
343
|
+
export function getStoreDomain() {
|
|
344
|
+
const env = getCurrentEnvironment();
|
|
345
|
+
return ENV_CONFIG[env].storeDomain;
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API 调用错误
|
|
3
|
+
*/
|
|
4
|
+
export declare class ApiError extends Error {
|
|
5
|
+
statusCode: number;
|
|
6
|
+
code?: string | undefined;
|
|
7
|
+
details?: any | undefined;
|
|
8
|
+
constructor(message: string, statusCode: number, code?: string | undefined, details?: any | undefined);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 输入验证错误
|
|
12
|
+
*/
|
|
13
|
+
export declare class ValidationError extends Error {
|
|
14
|
+
field?: string | undefined;
|
|
15
|
+
constructor(message: string, field?: string | undefined);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 未认证错误
|
|
19
|
+
*/
|
|
20
|
+
export declare class AuthenticationError extends Error {
|
|
21
|
+
constructor(message?: string);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 统一错误处理器
|
|
25
|
+
*/
|
|
26
|
+
export declare function handleError(error: unknown): never;
|
|
27
|
+
/**
|
|
28
|
+
* 从 Axios 错误创建 ApiError
|
|
29
|
+
*/
|
|
30
|
+
export declare function createApiError(error: any): ApiError;
|
|
31
|
+
/**
|
|
32
|
+
* 包装异步函数,自动处理错误
|
|
33
|
+
*/
|
|
34
|
+
export declare function withErrorHandling<T extends (...args: any[]) => Promise<any>>(fn: T): T;
|
|
35
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAGxB,UAAU,EAAE,MAAM;IAClB,IAAI,CAAC,EAAE,MAAM;IACb,OAAO,CAAC,EAAE,GAAG;gBAHpB,OAAO,EAAE,MAAM,EACR,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,OAAO,CAAC,EAAE,GAAG,YAAA;CAKvB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACJ,KAAK,CAAC,EAAE,MAAM;gBAAtC,OAAO,EAAE,MAAM,EAAS,KAAK,CAAC,EAAE,MAAM,YAAA;CAInD;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,GAAE,MAAqC;CAI3D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAiDjD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,QAAQ,CAUnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAC1E,EAAE,EAAE,CAAC,GACJ,CAAC,CAQH"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
/**
|
|
3
|
+
* API 调用错误
|
|
4
|
+
*/
|
|
5
|
+
export class ApiError extends Error {
|
|
6
|
+
statusCode;
|
|
7
|
+
code;
|
|
8
|
+
details;
|
|
9
|
+
constructor(message, statusCode, code, details) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.statusCode = statusCode;
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.details = details;
|
|
14
|
+
this.name = 'ApiError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 输入验证错误
|
|
19
|
+
*/
|
|
20
|
+
export class ValidationError extends Error {
|
|
21
|
+
field;
|
|
22
|
+
constructor(message, field) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.field = field;
|
|
25
|
+
this.name = 'ValidationError';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 未认证错误
|
|
30
|
+
*/
|
|
31
|
+
export class AuthenticationError extends Error {
|
|
32
|
+
constructor(message = '未登录,请先执行 optima auth login') {
|
|
33
|
+
super(message);
|
|
34
|
+
this.name = 'AuthenticationError';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 统一错误处理器
|
|
39
|
+
*/
|
|
40
|
+
export function handleError(error) {
|
|
41
|
+
if (error instanceof AuthenticationError) {
|
|
42
|
+
// 认证错误 - 红色显示,提示登录
|
|
43
|
+
console.error(chalk.red(`\n❌ 认证错误: ${error.message}`));
|
|
44
|
+
console.error(chalk.gray('\n提示: 运行 ') + chalk.cyan('commerce auth login') + chalk.gray(' 登录\n'));
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
if (error instanceof ValidationError) {
|
|
48
|
+
// 验证错误 - 黄色警告显示
|
|
49
|
+
console.error(chalk.yellow(`\n⚠️ 验证错误: ${error.message}`));
|
|
50
|
+
if (error.field) {
|
|
51
|
+
console.error(chalk.gray(` 字段: ${error.field}`));
|
|
52
|
+
}
|
|
53
|
+
console.error();
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
if (error instanceof ApiError) {
|
|
57
|
+
// API 错误 - 红色显示,附带状态码和错误码
|
|
58
|
+
console.error(chalk.red(`\n❌ API 错误 [${error.statusCode}]: ${error.message}`));
|
|
59
|
+
if (error.code) {
|
|
60
|
+
console.error(chalk.gray(` 错误码: ${error.code}`));
|
|
61
|
+
}
|
|
62
|
+
if (error.details) {
|
|
63
|
+
// 总是显示 details(如果有的话),因为它包含有用的诊断信息
|
|
64
|
+
console.error(chalk.gray(' 详情:'), JSON.stringify(error.details, null, 2));
|
|
65
|
+
}
|
|
66
|
+
console.error();
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
if (error instanceof Error) {
|
|
70
|
+
// 普通错误 - 红色显示
|
|
71
|
+
console.error(chalk.red(`\n❌ 错误: ${error.message}`));
|
|
72
|
+
// DEBUG 模式下显示堆栈
|
|
73
|
+
if (process.env.DEBUG === 'true') {
|
|
74
|
+
console.error(chalk.gray('\n堆栈跟踪:'));
|
|
75
|
+
console.error(chalk.gray(error.stack));
|
|
76
|
+
}
|
|
77
|
+
console.error();
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
// 未知错误
|
|
81
|
+
console.error(chalk.red('\n❌ 未知错误:'), error);
|
|
82
|
+
console.error();
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* 从 Axios 错误创建 ApiError
|
|
87
|
+
*/
|
|
88
|
+
export function createApiError(error) {
|
|
89
|
+
const statusCode = error.response?.status || 500;
|
|
90
|
+
const data = error.response?.data;
|
|
91
|
+
// 提取错误信息
|
|
92
|
+
const message = data?.message || data?.error_description || data?.error || error.message || '请求失败';
|
|
93
|
+
const code = data?.code || data?.error;
|
|
94
|
+
const details = data?.details || data;
|
|
95
|
+
return new ApiError(message, statusCode, code, details);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 包装异步函数,自动处理错误
|
|
99
|
+
*/
|
|
100
|
+
export function withErrorHandling(fn) {
|
|
101
|
+
return (async (...args) => {
|
|
102
|
+
try {
|
|
103
|
+
return await fn(...args);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
handleError(error);
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/utils/error.ts"],"names":[],"mappings":"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"}
|