@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,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Add enhanced help text sections to a Commander command
|
|
3
|
+
*
|
|
4
|
+
* This utility adds LLM-friendly documentation including:
|
|
5
|
+
* - Real usage examples
|
|
6
|
+
* - JSON output structure
|
|
7
|
+
* - Related commands for workflow guidance
|
|
8
|
+
* - Important notes and best practices
|
|
9
|
+
*
|
|
10
|
+
* @param command - The Commander command to enhance
|
|
11
|
+
* @param options - Help text content options
|
|
12
|
+
* @returns The enhanced command (for chaining)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const cmd = new Command('create')
|
|
17
|
+
* .description('Create a product')
|
|
18
|
+
* .option('--title <string>', 'Product name (required)')
|
|
19
|
+
* .option('--price <number>', 'Product price (required)');
|
|
20
|
+
*
|
|
21
|
+
* addEnhancedHelp(cmd, {
|
|
22
|
+
* examples: [
|
|
23
|
+
* '# Create a basic product',
|
|
24
|
+
* '$ commerce product create --title "Mug" --price 29.99',
|
|
25
|
+
* '',
|
|
26
|
+
* '# Create with JSON output',
|
|
27
|
+
* '$ commerce product create --title "Mug" --price 29.99 --json'
|
|
28
|
+
* ],
|
|
29
|
+
* output: {
|
|
30
|
+
* example: JSON.stringify({
|
|
31
|
+
* success: true,
|
|
32
|
+
* data: { product_id: 'uuid', name: 'Mug', price: '29.99' }
|
|
33
|
+
* }, null, 2)
|
|
34
|
+
* },
|
|
35
|
+
* relatedCommands: [
|
|
36
|
+
* { command: 'product list', description: 'View created products' },
|
|
37
|
+
* { command: 'upload image', description: 'Upload product images' }
|
|
38
|
+
* ],
|
|
39
|
+
* notes: [
|
|
40
|
+
* 'title and price are required parameters',
|
|
41
|
+
* 'Upload images first to get media IDs'
|
|
42
|
+
* ]
|
|
43
|
+
* });
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export function addEnhancedHelp(command, options) {
|
|
47
|
+
command.addHelpText('after', () => {
|
|
48
|
+
let text = '';
|
|
49
|
+
// Add Examples section
|
|
50
|
+
if (options.examples && options.examples.length > 0) {
|
|
51
|
+
text += '\nExamples:\n';
|
|
52
|
+
options.examples.forEach((line) => {
|
|
53
|
+
text += ` ${line}\n`;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
// Add Output section
|
|
57
|
+
if (options.output) {
|
|
58
|
+
text += '\nOutput (JSON):\n';
|
|
59
|
+
if (options.output.description) {
|
|
60
|
+
text += ` ${options.output.description}\n\n`;
|
|
61
|
+
}
|
|
62
|
+
// Indent JSON output
|
|
63
|
+
const lines = options.output.example.split('\n');
|
|
64
|
+
lines.forEach((line) => {
|
|
65
|
+
text += ` ${line}\n`;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
// Add Related Commands section
|
|
69
|
+
if (options.relatedCommands && options.relatedCommands.length > 0) {
|
|
70
|
+
text += '\nRelated Commands:\n';
|
|
71
|
+
options.relatedCommands.forEach((rc) => {
|
|
72
|
+
const commandPadded = `commerce ${rc.command}`.padEnd(28);
|
|
73
|
+
text += ` ${commandPadded}${rc.description}\n`;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// Add Notes section
|
|
77
|
+
if (options.notes && options.notes.length > 0) {
|
|
78
|
+
text += '\nNotes:\n';
|
|
79
|
+
options.notes.forEach((note) => {
|
|
80
|
+
text += ` - ${note}\n`;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return text;
|
|
84
|
+
});
|
|
85
|
+
return command;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Standardized output format documentation for success responses
|
|
89
|
+
*/
|
|
90
|
+
export const OUTPUT_SUCCESS_TEMPLATE = {
|
|
91
|
+
success: true,
|
|
92
|
+
data: {
|
|
93
|
+
'...': 'Resource data here',
|
|
94
|
+
},
|
|
95
|
+
message: 'Optional success message',
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Standardized output format documentation for error responses
|
|
99
|
+
*/
|
|
100
|
+
export const OUTPUT_ERROR_TEMPLATE = {
|
|
101
|
+
success: false,
|
|
102
|
+
error: {
|
|
103
|
+
code: 'ERROR_CODE',
|
|
104
|
+
message: 'Error description',
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Helper to format option description with type and requirement info
|
|
109
|
+
*
|
|
110
|
+
* @param description - The option description
|
|
111
|
+
* @param type - The parameter type (string, number, uuid, etc.)
|
|
112
|
+
* @param required - Whether the parameter is required
|
|
113
|
+
* @param defaultValue - Default value if any
|
|
114
|
+
* @returns Formatted description
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* formatOptionDescription('Product name', 'string', true)
|
|
119
|
+
* // Returns: "Product name (required)"
|
|
120
|
+
*
|
|
121
|
+
* formatOptionDescription('Stock quantity', 'number', false, 0)
|
|
122
|
+
* // Returns: "Stock quantity (default: 0)"
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
export function formatOptionDescription(description, type, required, defaultValue) {
|
|
126
|
+
let formatted = description;
|
|
127
|
+
if (type) {
|
|
128
|
+
formatted = `${formatted} <${type}>`;
|
|
129
|
+
}
|
|
130
|
+
if (required) {
|
|
131
|
+
formatted = `${formatted} (required)`;
|
|
132
|
+
}
|
|
133
|
+
else if (defaultValue !== undefined) {
|
|
134
|
+
formatted = `${formatted} (default: ${defaultValue})`;
|
|
135
|
+
}
|
|
136
|
+
return formatted;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=helpText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpText.js","sourceRoot":"","sources":["../../src/utils/helpText.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 交互式环境检测工具
|
|
3
|
+
*
|
|
4
|
+
* 自动检测是否应该使用交互式提示(inquirer)
|
|
5
|
+
* 在非交互环境(AI、CI/CD)中返回 false
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 检测当前是否为交互式环境
|
|
9
|
+
*
|
|
10
|
+
* @returns true 如果在交互式终端环境,false 如果在非交互环境
|
|
11
|
+
*
|
|
12
|
+
* 检测逻辑:
|
|
13
|
+
* 0. OPTIMA_INTERACTIVE=1 - 显式启用(最高优先级)
|
|
14
|
+
* 1. process.stdin.isTTY - 标准输入是否为终端
|
|
15
|
+
* 2. CI 环境变量 - 是否在 CI/CD 环境
|
|
16
|
+
* 3. 显式禁用标志 - 用户手动禁用交互模式
|
|
17
|
+
*/
|
|
18
|
+
export declare function isInteractiveEnvironment(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* 确保参数已提供,否则抛出验证错误
|
|
21
|
+
*
|
|
22
|
+
* 在非交互环境中使用此函数代替 inquirer.prompt()
|
|
23
|
+
*
|
|
24
|
+
* @param value - 参数值
|
|
25
|
+
* @param paramName - 参数名称(用于错误消息)
|
|
26
|
+
* @param friendlyName - 友好名称(用于错误消息)
|
|
27
|
+
* @returns 去除空格的参数值
|
|
28
|
+
* @throws ValidationError 如果值为空
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* // 非交互模式下验证必需参数
|
|
32
|
+
* const title = requireParam(options.title, 'title', '商品名称');
|
|
33
|
+
* // 如果 options.title 为空,抛出:缺少必需参数: --title (商品名称)
|
|
34
|
+
*/
|
|
35
|
+
export declare function requireParam(value: string | undefined | null, paramName: string, friendlyName?: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* 确保数值参数已提供且有效
|
|
38
|
+
*
|
|
39
|
+
* @param value - 参数值
|
|
40
|
+
* @param paramName - 参数名称
|
|
41
|
+
* @param friendlyName - 友好名称
|
|
42
|
+
* @param min - 最小值(可选)
|
|
43
|
+
* @param max - 最大值(可选)
|
|
44
|
+
* @returns 解析后的数值
|
|
45
|
+
* @throws ValidationError 如果值无效
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* // 验证价格参数(必须 > 0.01)
|
|
49
|
+
* const price = requireNumberParam(options.price, 'price', '商品价格', 0.01);
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* // 验证库存参数(必须 >= 0)
|
|
53
|
+
* const stock = requireNumberParam(options.stock, 'stock', '库存数量', 0);
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* // 验证重量参数(必须 0.1-1000 kg)
|
|
57
|
+
* const weight = requireNumberParam(options.weight, 'weight', '重量', 0.1, 1000);
|
|
58
|
+
*/
|
|
59
|
+
export declare function requireNumberParam(value: string | undefined | null, paramName: string, friendlyName?: string, min?: number, max?: number): number;
|
|
60
|
+
//# sourceMappingURL=interactive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAwClD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAChC,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,GACtB,MAAM,CASR;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAChC,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,EACrB,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,GACb,MAAM,CAiCR"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 交互式环境检测工具
|
|
3
|
+
*
|
|
4
|
+
* 自动检测是否应该使用交互式提示(inquirer)
|
|
5
|
+
* 在非交互环境(AI、CI/CD)中返回 false
|
|
6
|
+
*/
|
|
7
|
+
import { ValidationError } from './error.js';
|
|
8
|
+
/**
|
|
9
|
+
* 检测当前是否为交互式环境
|
|
10
|
+
*
|
|
11
|
+
* @returns true 如果在交互式终端环境,false 如果在非交互环境
|
|
12
|
+
*
|
|
13
|
+
* 检测逻辑:
|
|
14
|
+
* 0. OPTIMA_INTERACTIVE=1 - 显式启用(最高优先级)
|
|
15
|
+
* 1. process.stdin.isTTY - 标准输入是否为终端
|
|
16
|
+
* 2. CI 环境变量 - 是否在 CI/CD 环境
|
|
17
|
+
* 3. 显式禁用标志 - 用户手动禁用交互模式
|
|
18
|
+
*/
|
|
19
|
+
export function isInteractiveEnvironment() {
|
|
20
|
+
// 检测 0:显式启用标志(最高优先级)
|
|
21
|
+
// 允许用户在 CI 环境中强制启用交互模式(用于调试)
|
|
22
|
+
if (process.env.OPTIMA_INTERACTIVE === '1') {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
// 检测 1:标准输入是否为 TTY
|
|
26
|
+
// 非 TTY 场景:管道、重定向、AI 环境、后台进程
|
|
27
|
+
if (!process.stdin.isTTY) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
// 检测 2:CI 环境
|
|
31
|
+
// 常见 CI 环境变量
|
|
32
|
+
const ciEnvVars = [
|
|
33
|
+
'CI', // 通用 CI 标志
|
|
34
|
+
'CONTINUOUS_INTEGRATION', // Jenkins, Travis
|
|
35
|
+
'BUILD_ID', // Jenkins
|
|
36
|
+
'GITHUB_ACTIONS', // GitHub Actions
|
|
37
|
+
'GITLAB_CI', // GitLab CI
|
|
38
|
+
'CIRCLECI', // CircleCI
|
|
39
|
+
'TRAVIS', // Travis CI
|
|
40
|
+
];
|
|
41
|
+
for (const envVar of ciEnvVars) {
|
|
42
|
+
if (process.env[envVar] === 'true' || process.env[envVar] === '1') {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// 检测 3:显式禁用标志
|
|
47
|
+
// 用户可以通过环境变量强制禁用交互模式
|
|
48
|
+
if (process.env.NON_INTERACTIVE === '1' ||
|
|
49
|
+
process.env.OPTIMA_NON_INTERACTIVE === 'true') {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
// 默认:允许交互
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 确保参数已提供,否则抛出验证错误
|
|
57
|
+
*
|
|
58
|
+
* 在非交互环境中使用此函数代替 inquirer.prompt()
|
|
59
|
+
*
|
|
60
|
+
* @param value - 参数值
|
|
61
|
+
* @param paramName - 参数名称(用于错误消息)
|
|
62
|
+
* @param friendlyName - 友好名称(用于错误消息)
|
|
63
|
+
* @returns 去除空格的参数值
|
|
64
|
+
* @throws ValidationError 如果值为空
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* // 非交互模式下验证必需参数
|
|
68
|
+
* const title = requireParam(options.title, 'title', '商品名称');
|
|
69
|
+
* // 如果 options.title 为空,抛出:缺少必需参数: --title (商品名称)
|
|
70
|
+
*/
|
|
71
|
+
export function requireParam(value, paramName, friendlyName) {
|
|
72
|
+
if (!value || value.trim().length === 0) {
|
|
73
|
+
const displayName = friendlyName || paramName;
|
|
74
|
+
throw new ValidationError(`缺少必需参数: --${paramName} (${displayName})`, paramName);
|
|
75
|
+
}
|
|
76
|
+
return value.trim();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 确保数值参数已提供且有效
|
|
80
|
+
*
|
|
81
|
+
* @param value - 参数值
|
|
82
|
+
* @param paramName - 参数名称
|
|
83
|
+
* @param friendlyName - 友好名称
|
|
84
|
+
* @param min - 最小值(可选)
|
|
85
|
+
* @param max - 最大值(可选)
|
|
86
|
+
* @returns 解析后的数值
|
|
87
|
+
* @throws ValidationError 如果值无效
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* // 验证价格参数(必须 > 0.01)
|
|
91
|
+
* const price = requireNumberParam(options.price, 'price', '商品价格', 0.01);
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* // 验证库存参数(必须 >= 0)
|
|
95
|
+
* const stock = requireNumberParam(options.stock, 'stock', '库存数量', 0);
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* // 验证重量参数(必须 0.1-1000 kg)
|
|
99
|
+
* const weight = requireNumberParam(options.weight, 'weight', '重量', 0.1, 1000);
|
|
100
|
+
*/
|
|
101
|
+
export function requireNumberParam(value, paramName, friendlyName, min, max) {
|
|
102
|
+
if (!value || value.trim().length === 0) {
|
|
103
|
+
const displayName = friendlyName || paramName;
|
|
104
|
+
throw new ValidationError(`缺少必需参数: --${paramName} (${displayName})`, paramName);
|
|
105
|
+
}
|
|
106
|
+
const numValue = parseFloat(value);
|
|
107
|
+
if (isNaN(numValue)) {
|
|
108
|
+
throw new ValidationError(`参数 --${paramName} 必须是有效数字: ${value}`, paramName);
|
|
109
|
+
}
|
|
110
|
+
if (min !== undefined && numValue < min) {
|
|
111
|
+
throw new ValidationError(`参数 --${paramName} 必须大于等于 ${min}`, paramName);
|
|
112
|
+
}
|
|
113
|
+
if (max !== undefined && numValue > max) {
|
|
114
|
+
throw new ValidationError(`参数 --${paramName} 必须小于等于 ${max}`, paramName);
|
|
115
|
+
}
|
|
116
|
+
return numValue;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=interactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/utils/interactive.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB;IACpC,qBAAqB;IACrB,6BAA6B;IAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,mBAAmB;IACnB,6BAA6B;IAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,aAAa;IACb,aAAa;IACb,MAAM,SAAS,GAAG;QACd,IAAI,EAAuB,WAAW;QACtC,wBAAwB,EAAG,kBAAkB;QAC7C,UAAU,EAAiB,UAAU;QACrC,gBAAgB,EAAW,iBAAiB;QAC5C,WAAW,EAAgB,YAAY;QACvC,UAAU,EAAiB,WAAW;QACtC,QAAQ,EAAmB,YAAY;KAC1C,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;YAChE,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,cAAc;IACd,qBAAqB;IACrB,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,GAAG;QACnC,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,MAAM,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,UAAU;IACV,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,YAAY,CACxB,KAAgC,EAChC,SAAiB,EACjB,YAAqB;IAErB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,YAAY,IAAI,SAAS,CAAC;QAC9C,MAAM,IAAI,eAAe,CACrB,aAAa,SAAS,KAAK,WAAW,GAAG,EACzC,SAAS,CACZ,CAAC;IACN,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,kBAAkB,CAC9B,KAAgC,EAChC,SAAiB,EACjB,YAAqB,EACrB,GAAY,EACZ,GAAY;IAEZ,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,YAAY,IAAI,SAAS,CAAC;QAC9C,MAAM,IAAI,eAAe,CACrB,aAAa,SAAS,KAAK,WAAW,GAAG,EACzC,SAAS,CACZ,CAAC;IACN,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAEnC,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,eAAe,CACrB,QAAQ,SAAS,aAAa,KAAK,EAAE,EACrC,SAAS,CACZ,CAAC;IACN,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;QACtC,MAAM,IAAI,eAAe,CACrB,QAAQ,SAAS,WAAW,GAAG,EAAE,EACjC,SAAS,CACZ,CAAC;IACN,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;QACtC,MAAM,IAAI,eAAe,CACrB,QAAQ,SAAS,WAAW,GAAG,EAAE,EACjC,SAAS,CACZ,CAAC;IACN,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Ora } from 'ora';
|
|
2
|
+
/**
|
|
3
|
+
* 输出格式枚举
|
|
4
|
+
*/
|
|
5
|
+
export declare enum OutputFormat {
|
|
6
|
+
JSON = "json",
|
|
7
|
+
PRETTY = "pretty"
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* CLI 响应结构
|
|
11
|
+
*/
|
|
12
|
+
export interface CliResponse {
|
|
13
|
+
success: boolean;
|
|
14
|
+
data?: any;
|
|
15
|
+
error?: {
|
|
16
|
+
code: string;
|
|
17
|
+
message: string;
|
|
18
|
+
details?: any;
|
|
19
|
+
};
|
|
20
|
+
message?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Mock Spinner(JSON 模式下不显示 spinner)
|
|
24
|
+
*/
|
|
25
|
+
declare class MockSpinner {
|
|
26
|
+
succeed(_message?: string): this;
|
|
27
|
+
fail(_message?: string): this;
|
|
28
|
+
stop(): this;
|
|
29
|
+
start(): this;
|
|
30
|
+
warn(_message?: string): this;
|
|
31
|
+
info(_message?: string): this;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 输出管理器
|
|
35
|
+
*/
|
|
36
|
+
export declare class OutputManager {
|
|
37
|
+
private _format?;
|
|
38
|
+
constructor();
|
|
39
|
+
/**
|
|
40
|
+
* 获取输出格式(延迟初始化)
|
|
41
|
+
*/
|
|
42
|
+
private ensureFormat;
|
|
43
|
+
/**
|
|
44
|
+
* 初始化输出管理器(向后兼容,现在不需要了)
|
|
45
|
+
* @deprecated 不再需要显式调用
|
|
46
|
+
*/
|
|
47
|
+
init(_programOpts: any): void;
|
|
48
|
+
/**
|
|
49
|
+
* 获取当前输出格式
|
|
50
|
+
*/
|
|
51
|
+
getFormat(): OutputFormat;
|
|
52
|
+
/**
|
|
53
|
+
* 输出成功响应
|
|
54
|
+
*/
|
|
55
|
+
success(data: any, message?: string): void;
|
|
56
|
+
/**
|
|
57
|
+
* 输出错误响应
|
|
58
|
+
*/
|
|
59
|
+
error(error: Error | string, code?: string): never;
|
|
60
|
+
/**
|
|
61
|
+
* 创建 spinner(JSON 模式下返回 mock)
|
|
62
|
+
*/
|
|
63
|
+
spinner(text: string): Ora | MockSpinner;
|
|
64
|
+
/**
|
|
65
|
+
* 判断是否为 JSON 模式
|
|
66
|
+
*/
|
|
67
|
+
isJson(): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* 判断是否为 Pretty 模式
|
|
70
|
+
*/
|
|
71
|
+
isPretty(): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* 输出简单消息(仅 Pretty 模式)
|
|
74
|
+
*/
|
|
75
|
+
log(message: string, color?: 'green' | 'yellow' | 'red' | 'cyan' | 'gray'): void;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 全局输出管理器实例
|
|
79
|
+
*/
|
|
80
|
+
export declare const output: OutputManager;
|
|
81
|
+
export {};
|
|
82
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AACA,OAAY,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE/B;;GAEG;AACH,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,cAAM,WAAW;IACf,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM;IACzB,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM;IACtB,IAAI;IACJ,KAAK;IACL,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM;IACtB,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM;CACvB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAC,CAAe;;IAM/B;;OAEG;IACH,OAAO,CAAC,YAAY;IAoBpB;;;OAGG;IACH,IAAI,CAAC,YAAY,EAAE,GAAG;IAItB;;OAEG;IACH,SAAS,IAAI,YAAY;IAKzB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAgB1C;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK;IA2BlD;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,WAAW;IAQxC;;OAEG;IACH,MAAM,IAAI,OAAO;IAKjB;;OAEG;IACH,QAAQ,IAAI,OAAO;IAKnB;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;CAMjF;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,eAAsB,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import ora from 'ora';
|
|
3
|
+
/**
|
|
4
|
+
* 输出格式枚举
|
|
5
|
+
*/
|
|
6
|
+
export var OutputFormat;
|
|
7
|
+
(function (OutputFormat) {
|
|
8
|
+
OutputFormat["JSON"] = "json";
|
|
9
|
+
OutputFormat["PRETTY"] = "pretty";
|
|
10
|
+
})(OutputFormat || (OutputFormat = {}));
|
|
11
|
+
/**
|
|
12
|
+
* Mock Spinner(JSON 模式下不显示 spinner)
|
|
13
|
+
*/
|
|
14
|
+
class MockSpinner {
|
|
15
|
+
succeed(_message) { return this; }
|
|
16
|
+
fail(_message) { return this; }
|
|
17
|
+
stop() { return this; }
|
|
18
|
+
start() { return this; }
|
|
19
|
+
warn(_message) { return this; }
|
|
20
|
+
info(_message) { return this; }
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 输出管理器
|
|
24
|
+
*/
|
|
25
|
+
export class OutputManager {
|
|
26
|
+
_format;
|
|
27
|
+
constructor() {
|
|
28
|
+
// 延迟初始化,在第一次访问时确定格式
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 获取输出格式(延迟初始化)
|
|
32
|
+
*/
|
|
33
|
+
ensureFormat() {
|
|
34
|
+
if (this._format !== undefined) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// 优先级:CLI 参数 > 环境变量 > 默认值
|
|
38
|
+
const args = process.argv;
|
|
39
|
+
if (args.includes('--json')) {
|
|
40
|
+
this._format = OutputFormat.JSON;
|
|
41
|
+
}
|
|
42
|
+
else if (args.includes('--pretty')) {
|
|
43
|
+
this._format = OutputFormat.PRETTY;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const envFormat = process.env.OPTIMA_CLI_FORMAT?.toLowerCase();
|
|
47
|
+
this._format = envFormat === 'pretty'
|
|
48
|
+
? OutputFormat.PRETTY
|
|
49
|
+
: OutputFormat.JSON;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 初始化输出管理器(向后兼容,现在不需要了)
|
|
54
|
+
* @deprecated 不再需要显式调用
|
|
55
|
+
*/
|
|
56
|
+
init(_programOpts) {
|
|
57
|
+
// 保留此方法以向后兼容,但不再需要
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* 获取当前输出格式
|
|
61
|
+
*/
|
|
62
|
+
getFormat() {
|
|
63
|
+
this.ensureFormat();
|
|
64
|
+
return this._format;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 输出成功响应
|
|
68
|
+
*/
|
|
69
|
+
success(data, message) {
|
|
70
|
+
this.ensureFormat();
|
|
71
|
+
if (this._format === OutputFormat.JSON) {
|
|
72
|
+
const response = {
|
|
73
|
+
success: true,
|
|
74
|
+
data,
|
|
75
|
+
...(message && { message })
|
|
76
|
+
};
|
|
77
|
+
console.log(JSON.stringify(response, null, 2));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Pretty 模式:由调用方负责格式化输出
|
|
81
|
+
// 此方法在 Pretty 模式下不输出任何内容
|
|
82
|
+
// 调用方应该使用原有的格式化逻辑
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* 输出错误响应
|
|
87
|
+
*/
|
|
88
|
+
error(error, code) {
|
|
89
|
+
this.ensureFormat();
|
|
90
|
+
const errorObj = typeof error === 'string' ? new Error(error) : error;
|
|
91
|
+
if (this._format === OutputFormat.JSON) {
|
|
92
|
+
const response = {
|
|
93
|
+
success: false,
|
|
94
|
+
error: {
|
|
95
|
+
code: code || errorObj.name || 'UNKNOWN_ERROR',
|
|
96
|
+
message: errorObj.message,
|
|
97
|
+
...(process.env.DEBUG === 'true' && {
|
|
98
|
+
stack: errorObj.stack,
|
|
99
|
+
details: errorObj.details
|
|
100
|
+
})
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
console.log(JSON.stringify(response, null, 2));
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Pretty 模式:使用原有错误处理
|
|
107
|
+
const { handleError } = require('./error.js');
|
|
108
|
+
handleError(errorObj);
|
|
109
|
+
}
|
|
110
|
+
// 确保函数永远不返回
|
|
111
|
+
process.exit(1);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 创建 spinner(JSON 模式下返回 mock)
|
|
115
|
+
*/
|
|
116
|
+
spinner(text) {
|
|
117
|
+
this.ensureFormat();
|
|
118
|
+
if (this._format === OutputFormat.JSON) {
|
|
119
|
+
return new MockSpinner();
|
|
120
|
+
}
|
|
121
|
+
return ora(text).start();
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* 判断是否为 JSON 模式
|
|
125
|
+
*/
|
|
126
|
+
isJson() {
|
|
127
|
+
this.ensureFormat();
|
|
128
|
+
return this._format === OutputFormat.JSON;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* 判断是否为 Pretty 模式
|
|
132
|
+
*/
|
|
133
|
+
isPretty() {
|
|
134
|
+
this.ensureFormat();
|
|
135
|
+
return this._format === OutputFormat.PRETTY;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* 输出简单消息(仅 Pretty 模式)
|
|
139
|
+
*/
|
|
140
|
+
log(message, color) {
|
|
141
|
+
if (this.isPretty()) {
|
|
142
|
+
const coloredMessage = color ? chalk[color](message) : message;
|
|
143
|
+
console.log(coloredMessage);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* 全局输出管理器实例
|
|
149
|
+
*/
|
|
150
|
+
export const output = new OutputManager();
|
|
151
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supported languages in BCP 47 format
|
|
3
|
+
*/
|
|
4
|
+
export declare const SUPPORTED_LANGUAGES: readonly ["en-US", "es-ES", "ja-JP", "vi-VN", "zh-CN"];
|
|
5
|
+
/**
|
|
6
|
+
* Validates language code format (BCP 47: xx-XX)
|
|
7
|
+
* @param languageCode - The language code to validate
|
|
8
|
+
* @returns true if valid
|
|
9
|
+
* @throws ValidationError if invalid
|
|
10
|
+
*/
|
|
11
|
+
export declare function validateLanguageCode(languageCode: string): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Get language code display name
|
|
14
|
+
*/
|
|
15
|
+
export declare function getLanguageName(code: string): string;
|
|
16
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,mBAAmB,wDAMtB,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAuBlE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASpD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ValidationError } from './error.js';
|
|
2
|
+
/**
|
|
3
|
+
* Supported languages in BCP 47 format
|
|
4
|
+
*/
|
|
5
|
+
export const SUPPORTED_LANGUAGES = [
|
|
6
|
+
'en-US',
|
|
7
|
+
'es-ES',
|
|
8
|
+
'ja-JP',
|
|
9
|
+
'vi-VN',
|
|
10
|
+
'zh-CN',
|
|
11
|
+
];
|
|
12
|
+
/**
|
|
13
|
+
* Validates language code format (BCP 47: xx-XX)
|
|
14
|
+
* @param languageCode - The language code to validate
|
|
15
|
+
* @returns true if valid
|
|
16
|
+
* @throws ValidationError if invalid
|
|
17
|
+
*/
|
|
18
|
+
export function validateLanguageCode(languageCode) {
|
|
19
|
+
const trimmed = languageCode.trim();
|
|
20
|
+
// Check BCP 47 format (xx-XX)
|
|
21
|
+
const bcp47Pattern = /^[a-z]{2}-[A-Z]{2}$/;
|
|
22
|
+
if (!bcp47Pattern.test(trimmed)) {
|
|
23
|
+
throw new ValidationError(`语言代码格式错误。请使用 BCP 47 格式(如 en-US, zh-CN)。\n` +
|
|
24
|
+
`支持的语言: ${SUPPORTED_LANGUAGES.join(', ')}`, 'lang');
|
|
25
|
+
}
|
|
26
|
+
// Check if it's in supported list
|
|
27
|
+
if (!SUPPORTED_LANGUAGES.includes(trimmed)) {
|
|
28
|
+
throw new ValidationError(`不支持的语言代码: ${trimmed}\n` +
|
|
29
|
+
`支持的语言: ${SUPPORTED_LANGUAGES.join(', ')}`, 'lang');
|
|
30
|
+
}
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get language code display name
|
|
35
|
+
*/
|
|
36
|
+
export function getLanguageName(code) {
|
|
37
|
+
const names = {
|
|
38
|
+
'en-US': 'English (US)',
|
|
39
|
+
'es-ES': 'Spanish (Spain)',
|
|
40
|
+
'ja-JP': 'Japanese',
|
|
41
|
+
'vi-VN': 'Vietnamese',
|
|
42
|
+
'zh-CN': 'Chinese (Simplified)',
|
|
43
|
+
};
|
|
44
|
+
return names[code] || code;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;IACP,OAAO;CACC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;IAEpC,8BAA8B;IAC9B,MAAM,YAAY,GAAG,qBAAqB,CAAC;IAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,eAAe,CACvB,2CAA2C;YAC3C,UAAU,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC1C,MAAM,CACP,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAc,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,eAAe,CACvB,aAAa,OAAO,IAAI;YACxB,UAAU,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC1C,MAAM,CACP,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,KAAK,GAA2B;QACpC,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,sBAAsB;KAChC,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC7B,CAAC"}
|