@shoplineos/cli 0.0.0 → 1.0.0-beta.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.
Files changed (218) hide show
  1. package/bin/index.js +3 -0
  2. package/dist/commands/auth/index.js +1 -0
  3. package/dist/commands/auth/login.js +1 -0
  4. package/dist/commands/auth/logout.js +1 -0
  5. package/dist/commands/auth/whoami.js +1 -0
  6. package/dist/commands/extension/build.js +1 -0
  7. package/dist/commands/extension/common-options.js +1 -0
  8. package/dist/commands/extension/connect.js +1 -0
  9. package/dist/commands/extension/create.js +2 -0
  10. package/dist/commands/extension/index.js +1 -0
  11. package/dist/commands/extension/push.js +1 -0
  12. package/dist/commands/extension/serve.js +1 -0
  13. package/dist/commands/extension/tunnel.js +1 -0
  14. package/dist/commands/index.js +1 -0
  15. package/dist/commands/report.js +1 -0
  16. package/dist/commands/theme/check.js +1 -0
  17. package/dist/commands/theme/console.js +1 -0
  18. package/dist/commands/theme/index.js +1 -0
  19. package/dist/commands/theme/init.js +2 -0
  20. package/dist/commands/theme/list.js +1 -0
  21. package/dist/commands/theme/package.js +1 -0
  22. package/dist/commands/theme/pull.js +1 -0
  23. package/dist/commands/theme/push.js +1 -0
  24. package/dist/commands/theme/serve.js +1 -0
  25. package/dist/commands/theme/theme-common-options.js +1 -0
  26. package/dist/eventlistener.d.js +1 -0
  27. package/dist/helpers/config.js +1 -0
  28. package/dist/helpers/open-admin-url.js +1 -0
  29. package/dist/helpers/report.js +1 -0
  30. package/dist/helpers/sentry.js +1 -0
  31. package/dist/helpers/sum.js +1 -0
  32. package/dist/helpers/verify-login.js +1 -0
  33. package/dist/services/dev-server/index.js +9 -0
  34. package/dist/services/dev-server/socket.js +1 -0
  35. package/dist/services/dev-server/sse.js +6 -0
  36. package/dist/services/dev-server/web/socket-client.js +1 -0
  37. package/dist/services/dev-server-3/index.js +1 -0
  38. package/dist/services/dev-server-3/server.js +9 -0
  39. package/dist/services/dev-server-3/sse.js +6 -0
  40. package/dist/services/dev-server-3/web/socket-client.js +1 -0
  41. package/dist/services/extension/api.js +4 -0
  42. package/dist/services/extension/check-extension-version.js +1 -0
  43. package/dist/services/extension/clone-repo.js +1 -0
  44. package/dist/services/extension/connect/context.js +1 -0
  45. package/dist/services/extension/connect/index.js +1 -0
  46. package/dist/services/extension/connect/validate.js +1 -0
  47. package/dist/services/extension/const.js +1 -0
  48. package/dist/services/extension/context.js +1 -0
  49. package/dist/services/extension/create/index.js +1 -0
  50. package/dist/services/extension/create.js +1 -0
  51. package/dist/services/extension/ensure-project-type.js +1 -0
  52. package/dist/services/extension/env.js +1 -0
  53. package/dist/services/extension/extension.js +1 -0
  54. package/dist/services/extension/functions/generate.js +1 -0
  55. package/dist/services/extension/functions/info.js +1 -0
  56. package/dist/services/extension/functions/push.js +8 -0
  57. package/dist/services/extension/functions/schemas.js +1 -0
  58. package/dist/services/extension/generate.js +1 -0
  59. package/dist/services/extension/index.js +1 -0
  60. package/dist/services/extension/inquirer.js +1 -0
  61. package/dist/services/extension/loader.js +1 -0
  62. package/dist/services/extension/openapi.js +1 -0
  63. package/dist/services/extension/push/build.js +1 -0
  64. package/dist/services/extension/push/checkout-ui.js +1 -0
  65. package/dist/services/extension/push/index.js +1 -0
  66. package/dist/services/extension/push/show.js +1 -0
  67. package/dist/services/extension/push/theme.js +1 -0
  68. package/dist/services/extension/push/zip.js +1 -0
  69. package/dist/services/extension/push.js +1 -0
  70. package/dist/services/extension/register.js +1 -0
  71. package/dist/services/extension/resolve-env.js +1 -0
  72. package/dist/services/extension/schemas.js +1 -0
  73. package/dist/services/extension/serve/bundler.js +1 -0
  74. package/dist/services/extension/serve/extension.js +1 -0
  75. package/dist/services/extension/serve/localization.js +1 -0
  76. package/dist/services/extension/serve/models.js +1 -0
  77. package/dist/services/extension/serve/payload.js +1 -0
  78. package/dist/services/extension/serve/server/middlewares.js +1 -0
  79. package/dist/services/extension/serve/server.js +1 -0
  80. package/dist/services/extension/serve/websocket/handlers.js +5 -0
  81. package/dist/services/extension/serve/websocket/models.js +1 -0
  82. package/dist/services/extension/serve/websocket.js +1 -0
  83. package/dist/services/extension/serve.js +1 -0
  84. package/dist/services/extension/tunnel/cloudflared.js +1 -0
  85. package/dist/services/extension/tunnel/install-cloudflared.js +1 -0
  86. package/dist/services/extension/tunnel.js +3 -0
  87. package/dist/services/extension/types.js +1 -0
  88. package/dist/services/extension/utils.js +1 -0
  89. package/dist/services/extension/validate.js +3 -0
  90. package/dist/services/extension/write-env-file.js +1 -0
  91. package/dist/services/extension/zip.js +1 -0
  92. package/dist/services/extension/zip3.js +1 -0
  93. package/dist/services/identity-auth/api.js +1 -0
  94. package/dist/services/identity-auth/client/index.html +34 -0
  95. package/dist/services/identity-auth/client/style.css +58 -0
  96. package/dist/services/identity-auth/const.js +1 -0
  97. package/dist/services/identity-auth/create-server.js +1 -0
  98. package/dist/services/identity-auth/index.js +1 -0
  99. package/dist/services/identity-auth/store-enter.js +1 -0
  100. package/dist/services/report/index.js +1 -0
  101. package/dist/services/theme/3.0/api.js +1 -0
  102. package/dist/services/theme/3.0/file.js +1 -0
  103. package/dist/services/theme/3.0/package.js +1 -0
  104. package/dist/services/theme/3.0/pull.js +1 -0
  105. package/dist/services/theme/3.0/push.js +1 -0
  106. package/dist/services/theme/3.0/remote-watcher.js +1 -0
  107. package/dist/services/theme/3.0/theme.js +7 -0
  108. package/dist/services/theme/api.js +1 -0
  109. package/dist/services/theme/check/check.js +7 -0
  110. package/dist/services/theme/check/config.js +1 -0
  111. package/dist/services/theme/check/exception.js +1 -0
  112. package/dist/services/theme/check/index.js +1 -0
  113. package/dist/services/theme/check/types.js +1 -0
  114. package/dist/services/theme/checksum.js +1 -0
  115. package/dist/services/theme/choose-theme-list.js +1 -0
  116. package/dist/services/theme/console/api.js +1 -0
  117. package/dist/services/theme/console/console.js +8 -0
  118. package/dist/services/theme/console/index.js +1 -0
  119. package/dist/services/theme/const.js +1 -0
  120. package/dist/services/theme/draft.js +1 -0
  121. package/dist/services/theme/file.js +1 -0
  122. package/dist/services/theme/git.js +1 -0
  123. package/dist/services/theme/index.js +7 -0
  124. package/dist/services/theme/inquirer.js +1 -0
  125. package/dist/services/theme/no-second-check.js +1 -0
  126. package/dist/services/theme/operation.js +1 -0
  127. package/dist/services/theme/package.js +1 -0
  128. package/dist/services/theme/pull.js +1 -0
  129. package/dist/services/theme/push.js +1 -0
  130. package/dist/services/theme/remote-watcher.js +1 -0
  131. package/dist/services/theme/types.d.js +1 -0
  132. package/dist/services/theme/types.js +1 -0
  133. package/dist/services/theme/update-queue.js +1 -0
  134. package/dist/services/theme/update.js +1 -0
  135. package/dist/services/theme/uploader.js +1 -0
  136. package/dist/services/theme/utils.js +1 -0
  137. package/dist/type.d.js +1 -0
  138. package/dist/types/env.d.js +1 -0
  139. package/dist/types/type.d.js +1 -0
  140. package/dist/utils/abort.js +1 -0
  141. package/dist/utils/check-theme-type-version.js +1 -0
  142. package/dist/utils/check-update.js +6 -0
  143. package/dist/utils/colors.js +1 -0
  144. package/dist/utils/const.js +1 -0
  145. package/dist/utils/content-tokens.js +3 -0
  146. package/dist/utils/debug.js +1 -0
  147. package/dist/utils/decorators.js +1 -0
  148. package/dist/utils/environments.js +1 -0
  149. package/dist/utils/error.js +1 -0
  150. package/dist/utils/exit-hook.js +1 -0
  151. package/dist/utils/find-up-node-module.js +1 -0
  152. package/dist/utils/format-protocol.js +1 -0
  153. package/dist/utils/fs.js +1 -0
  154. package/dist/utils/get-objects-diff.js +1 -0
  155. package/dist/utils/get-real-referer.js +1 -0
  156. package/dist/utils/get-store-env.js +1 -0
  157. package/dist/utils/get-url-handle.js +1 -0
  158. package/dist/utils/git.js +1 -0
  159. package/dist/utils/has-command.js +1 -0
  160. package/dist/utils/hbs.js +1 -0
  161. package/dist/utils/http.js +1 -0
  162. package/dist/utils/ignore-filter.js +1 -0
  163. package/dist/utils/import-esm.js +1 -0
  164. package/dist/utils/include-filter.js +1 -0
  165. package/dist/utils/load-local-preset.js +1 -0
  166. package/dist/utils/local.js +1 -0
  167. package/dist/utils/logger.js +1 -0
  168. package/dist/utils/messages.js +13 -0
  169. package/dist/utils/misc.js +1 -0
  170. package/dist/utils/node-package-manager.js +1 -0
  171. package/dist/utils/ora-manager.js +1 -0
  172. package/dist/utils/os.js +1 -0
  173. package/dist/utils/output.js +1 -0
  174. package/dist/utils/parse-options.js +1 -0
  175. package/dist/utils/path-matcher.js +1 -0
  176. package/dist/utils/path.js +1 -0
  177. package/dist/utils/print-preview.js +1 -0
  178. package/dist/utils/program.js +1 -0
  179. package/dist/utils/replace-dot.js +1 -0
  180. package/dist/utils/replace-top-level-com.js +1 -0
  181. package/dist/utils/retry.js +1 -0
  182. package/dist/utils/schema.js +1 -0
  183. package/dist/utils/string.js +1 -0
  184. package/dist/utils/system.js +1 -0
  185. package/dist/utils/tcp.js +1 -0
  186. package/dist/utils/tiny-queue.js +1 -0
  187. package/dist/utils/toml.js +1 -0
  188. package/dist/utils/tree-kill.js +1 -0
  189. package/dist/utils/ui/Tasks.js +1 -0
  190. package/dist/utils/ui/alert.js +1 -0
  191. package/dist/utils/ui/components/Alert.js +1 -0
  192. package/dist/utils/ui/components/Banner.js +1 -0
  193. package/dist/utils/ui/components/Command.js +1 -0
  194. package/dist/utils/ui/components/ConcurrentOutput.js +1 -0
  195. package/dist/utils/ui/components/FatalError.js +1 -0
  196. package/dist/utils/ui/components/FilePath.js +1 -0
  197. package/dist/utils/ui/components/Link.js +1 -0
  198. package/dist/utils/ui/components/List.js +1 -0
  199. package/dist/utils/ui/components/Prompts/InfoTable.js +1 -0
  200. package/dist/utils/ui/components/SelectInput.js +1 -0
  201. package/dist/utils/ui/components/SelectPrompt.js +1 -0
  202. package/dist/utils/ui/components/Subdued.js +1 -0
  203. package/dist/utils/ui/components/TextAnimation.js +1 -0
  204. package/dist/utils/ui/components/TextInput.js +1 -0
  205. package/dist/utils/ui/components/TextPrompt.js +1 -0
  206. package/dist/utils/ui/components/TokenizedText.js +1 -0
  207. package/dist/utils/ui/components/UserInput.js +1 -0
  208. package/dist/utils/ui/contexts/LinksContext.js +1 -0
  209. package/dist/utils/ui/hooks/use-async-and-unmount.js +1 -0
  210. package/dist/utils/ui/hooks/use-layout.js +1 -0
  211. package/dist/utils/ui/render.js +1 -0
  212. package/dist/utils/ui/ui.js +1 -0
  213. package/dist/utils/ui/utilities.js +1 -0
  214. package/dist/utils/ui.js +1 -0
  215. package/dist/utils/winston/index.js +1 -0
  216. package/dist/utils/winston/log-file.js +2 -0
  217. package/dist/utils/write-file-tree.js +1 -0
  218. package/package.json +125 -4
package/bin/index.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ const path = require('path');
3
+ require(path.join(__dirname, '../dist/commands'));
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("./login"),require("./logout"),require("./whoami");
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"login",{enumerable:!0,get:()=>g});const e=require("commander"),r=require("../../utils/program"),t=c(require("../../utils/format-protocol")),o=c(require("../../services/identity-auth")),i=c(require("../../utils/get-url-handle")),u=c(require("../../utils/replace-top-level-com")),l=require("../../utils/messages"),s=require("../../utils/ui/render"),n=require("../../utils/error"),a=require("../../services/theme/utils"),d=c(require("../../utils/winston"));function c(e){return e&&e.__esModule?e:{default:e}}async function g(e){try{let r=new URL((0,t.default)(e.store)),a=(0,u.default)(r).origin;if("admin"===(0,i.default)(a)){d.default.log("your store is admin");let r=(0,l.getMessage)("core.login.invalid_store",{shop:e.store});throw d.default.log(r),new n.AbortError(r)}d.default.log(`authorizing ${a}...`),await (0,o.default)(a),d.default.log("login succeed!"),(0,s.renderSuccess)({body:(0,l.getMessage)("core.login.login_succeed")})}catch(e){(0,a.handleError)(e)}}r.program.command("login").addOption(new e.Option("--store <store>","Your store domain").makeOptionMandatory().env("SHOPLINE_FLAG_STORE")).action(g);
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"logout",{enumerable:!0,get:()=>n});const e=require("../../utils/program"),t=i(require("../../helpers/config")),o=i(require("../../utils/logger")),r=i(require("../../services/theme")),u=require("../../utils/messages"),l=i(require("../../utils/winston")),s=require("../../services/theme/utils");function i(e){return e&&e.__esModule?e:{default:e}}async function n(){try{let e=t.default.developmentThemeId;l.default.log("removing login info..."),t.default.removeLoginInfo(),l.default.log(`removing development theme: ${e}...`),await r.default.deleteDevelopment(e),o.default.success((0,u.getMessage)("core.logout.logout_succeed")),l.default.log("logout succeed!")}catch(e){(0,s.handleError)(e)}}e.program.command("logout").action(n);
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"whoami",{enumerable:!0,get:()=>a});const e=require("../../utils/program"),t=l(require("../../helpers/config")),r=require("../../utils/messages"),o=require("../../utils/error"),u=require("../../utils/output"),i=l(require("../../helpers/verify-login")),n=l(require("../../utils/winston")),s=require("../../services/theme/utils");function l(e){return e&&e.__esModule?e:{default:e}}async function a(){try{let e=new o.AbortError((0,r.getMessage)("core.whoami.not_logged_in"),(0,u.outputContent)`If trying to log into a store account, please use ${u.outputToken.cyan("sl login --store=STORE")} to log in.`);n.default.log("checking login info...");let s=await (0,i.default)();if(n.default.log(`current is login: ${s}`),s)(0,u.outputSuccess)((0,u.outputContent)`Logged into store: ${u.outputToken.green(t.default.currentStore)}`);else throw e}catch(e){(0,s.handleError)(e)}}e.program.command("whoami").action(a);
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>n});const e=require("commander"),t=function(e){return e&&e.__esModule?e:{default:e}}(require("../../services/extension"));require("../../services/extension/const"),require("../../utils/colors");const o=require("./common-options");function n(){let n=new e.Command("build");return n.addOption((0,o.getResetOption)()).addOption((0,o.getVerboseOption)()).action(t.default.buildAction),n}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{getVerboseOption:()=>t,getResetOption:()=>n});const e=require("commander");function t(){return new e.Option("--verbose","Increase the verbosity of the logs.").env("SHOPLINE_FLAG_VERBOSE")}function n(){return new e.Option("-r, --reset","Reset all your settings.").default(!1).env("SHOPLINE_FLAG_RESET")}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>o});const e=require("commander"),n=function(e){return e&&e.__esModule?e:{default:e}}(require("../../services/extension")),t=require("./common-options");function o(){let o=new e.Command("connect");return o.description("Connects an existing extension to Shopline CLI.").addOption((0,t.getResetOption)()).action(n.default.connectAction),o}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>r});const e=require("commander"),t=function(e){return e&&e.__esModule?e:{default:e}}(require("../../services/extension")),n=require("../../utils/messages");function r(){let r=new e.Command("create");return r.description((0,n.getMessage)("extension.create.help")).addOption(new e.Option("-n, --name <name>","extension name").env("SHOPLINE_FLAG_EXTENSION_NAME")).showHelpAfterError().configureOutput({outputError:(e,t)=>{t(e===`error: missing required argument 'extensionName'
2
+ `?(0,n.getMessage)("extension.create.invalid_name_option"):e)}}).action(t.default.createAction),r}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("../../utils/messages"),r=require("../../utils/program"),d=s(require("./create")),t=s(require("./push"));require("./build");const u=s(require("./connect")),a=s(require("./serve"));function s(e){return e&&e.__esModule?e:{default:e}}const n=r.program.command("extension").description((0,e.getMessage)("extension.help")).addCommand((0,d.default)()).addCommand((0,t.default)()).addCommand((0,u.default)());n.addCommand((0,a.default)());
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>s});const e=require("commander"),t=function(e){return e&&e.__esModule?e:{default:e}}(require("../../services/extension"));require("../../services/extension/const");const r=require("../../utils/messages");require("../../utils/colors");const o=require("./common-options");function s(){let s=new e.Command("push");return s.description((0,r.getMessage)("extension.push.help")).addOption((0,o.getResetOption)()).addOption((0,o.getVerboseOption)()).showHelpAfterError().configureOutput({outputError:(e,t)=>{t(e)}}).action(t.default.pushAction),s}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>n});const e=require("commander"),t=function(e){return e&&e.__esModule?e:{default:e}}(require("../../services/extension")),o=require("../../utils/messages"),r=require("./common-options");function n(){let n=new e.Command("serve");return n.description((0,o.getMessage)("extension.serve.help")).addOption(new e.Option("-p, --port <port>","Local port of the app extension development server.").default(8910).env("SHOPLINE_FLAG_PORT")).addOption((0,r.getResetOption)()).addOption((0,r.getVerboseOption)()).showHelpAfterError().action(t.default.serveAction),n}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>r});const e=require("commander"),n=function(e){return e&&e.__esModule?e:{default:e}}(require("../../services/extension")),t=require("../../utils/messages"),o=require("./common-options");function r(){let r=new e.Command("tunnel"),s=new e.Command("auth");return s.description((0,t.getMessage)("extension.tunnel.auth")).addArgument(new e.Argument("<token>","ngrok token")).action(n.default.tunnelAction),r.description((0,t.getMessage)("extension.tunnel.help")).addCommand(s).addOption((0,o.getVerboseOption)()).showHelpAfterError(),r}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>s});const e=require("../utils/program"),r=require("../helpers/sentry"),t=require("../utils/error"),o=function(e){return e&&e.__esModule?e:{default:e}}(require("../../package.json"));if(require("./auth/index"),require("./theme/index"),require("./extension/index"),require("./report"),(0,r.initSentry)(),process.on("unhandledRejection",e=>{(0,r.reportBug)(e);let o=new t.AbortError(e.message);o.stack=e.stack,console.log(o)}),e.program.version(o.default.version),"test"!==process.env.NODE_ENV)try{e.program.parse(process.argv)}catch(e){(0,r.reportBug)(e)}const s=e.program;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("commander"),r=require("../utils/program"),t=function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=n(r);if(t&&t.has(e))return t.get(e);var o={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(o,u,i):o[u]=e[u]}return o.default=e,t&&t.set(e,o),o}(require("../services/report")),o=require("../services/theme/utils");function n(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(n=function(e){return e?t:r})(e)}r.program.command("report").description("Report current directory log file to SHOPLINE, Currently just output log file path").addOption(new e.Option("-d, --day <day>","The amount of log file to report for each day needs to be reported. (unit: day)").choices(Object.values(t.ElogDay)).default(t.ElogDay.three)).action(async e=>{try{await (0,t.default)(e)}catch(e){(0,o.handleError)(e)}});
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>c});const e=require("commander"),t=require("./theme-common-options"),i=require("../../utils/parse-options"),n=function(e){return e&&e.__esModule?e:{default:e}}(require("../../services/theme/check")),o=require("../../services/theme/check/types"),r=require("../../services/theme/utils"),c=()=>{let c=new e.Command("check");return c.description("Validate the theme.").addOption(new e.Option("-C, --config <path>","Use the config provided, overriding .theme-check.yml if present").env("SHOPLINE_FLAG_CONFIG")).addOption(new e.Option("-c, --category <category...>","Only run this category of checks, Runs checks matching all categories when specified more than once").choices(Object.keys(o.ECheckCategory)).default([]).env("SHOPLINE_FLAG_CATEGORY")).addOption(new e.Option("--fail-level <level>","Minimum severity for exit with error code").choices(Object.values(o.EFailLevel)).default(o.EFailLevel.error).env("SHOPLINE_FLAG_FAIL_LEVEL")).addOption(new e.Option("--init","Generate a .theme-check.yml file").env("SHOPLINE_FLAG_INIT")).addOption(new e.Option("-o, --output <output>","The output format to use").choices(Object.values(o.ECheckOutput)).default(o.ECheckOutput.text).env("SHOPLINE_FLAG_OUTPUT")).addOption(new e.Option("--print","Output active config to STDOUT").env("SHOPLINE_FLAG_PRINT")).addOption(new e.Option("--list","List enabled checks").env("SHOPLINE_FLAG_LIST")).addOption((0,t.getPathOption)()).addOption((0,t.getEnvironmentOption)()).showHelpAfterError().action(async(e,t)=>{try{let o=await (0,i.parseOptions)(e,t);await (0,n.default)(o)}catch(e){(0,r.handleError)(e)}})};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>n});const e=require("commander"),o=require("../../services/theme/console"),t=require("./theme-common-options"),n=()=>{let n=new e.Command("console");return n.description("Shopline Handlebars REPL (read-eval-print loop) tool").addOption(new e.Option("--url <url>","The url to be used as context").default("/").env("SHOPLINE_FLAG_URL")).addOption((0,t.getVerboseOption)()).addOption((0,t.getEnvironmentOption)()).showHelpAfterError().action(o.consoleAction),n};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=require("../../utils/program"),d=n(require("./serve")),a=n(require("./init")),r=n(require("./package")),u=n(require("./pull")),t=n(require("./push")),m=n(require("./list")),o=n(require("./console")),l=n(require("./check"));function n(e){return e&&e.__esModule?e:{default:e}}const i=e.program.command("theme");i.addCommand((0,a.default)()),i.addCommand((0,d.default)()),i.addCommand((0,r.default)()),i.addCommand((0,u.default)()),i.addCommand((0,t.default)()),i.addCommand((0,m.default)()),i.addCommand((0,o.default)()),i.addCommand((0,l.default)());
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>a});const e=require("commander"),t=function(e){return e&&e.__esModule?e:{default:e}}(require("../../services/theme")),r=require("../../utils/messages"),i=require("./theme-common-options"),n=require("../../utils/path"),u=async(e,r)=>{await t.default.init(e,r.path||(0,n.cwd)())},a=()=>{let t=new e.Command("init");return t.description((0,r.getMessage)("theme.init.help")).addArgument(new e.Argument("<themeName>","Theme name")).addOption((0,i.getPathOption)()).showHelpAfterError().configureOutput({outputError:(e,t)=>{t(e===`error: missing required argument 'themeName'
2
+ `?(0,r.getMessage)("theme.init.invalid_name"):e)}}).action(u),t};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>o});const e=require("commander"),t=function(e){return e&&e.__esModule?e:{default:e}}(require("../../services/theme/3.0/theme")),r=require("../../utils/messages"),i=require("./theme-common-options"),n=async()=>{await t.default.list()},o=()=>{let t=new e.Command("list");return t.addOption((0,i.getPathOption)()).addOption((0,i.getEnvironmentOption)()).description((0,r.getMessage)("theme.list.help")).action(n),t};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>s});const e=require("commander"),t=n(require("../../services/theme")),r=n(require("../../services/theme/3.0/theme")),a=require("./theme-common-options"),i=require("../../utils/check-theme-type-version"),o=require("../../utils/parse-options");function n(e){return e&&e.__esModule?e:{default:e}}const s=()=>{let n=new e.Command("package");return n.description("Package your theme into a .zip file, ready to upload to the Online Store").addOption((0,a.getPathOption)()).action(async(e,a)=>{let n=await (0,o.parseOptions)(e,a),s=n.path;(0,i.isThemeTypeVersion3)(s)?r.default.package({},e.path):t.default.package({},e.path)}),n};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>p});const e=require("commander"),t=require("../../services/theme/3.0/pull"),o=require("./theme-common-options"),n=require("../../utils/parse-options"),i=require("../../utils/system"),l=a(require("../../utils/winston")),r=require("../../services/theme/utils"),d=a(require("../../helpers/config"));function a(e){return e&&e.__esModule?e:{default:e}}const p=()=>{let a=new e.Command("pull");return a.description("Downloads your remote theme files locally").addOption(new e.Option("--theme <themeId>","Theme ID of the remote theme, theme name not supported.").env("SHOPLINE_FLAG_THEME_ID")).addOption(new e.Option("-l, --live","Pull theme files from your remote live theme.").env("SHOPLINE_FLAG_LIVE")).addOption(new e.Option("-n, --nodelete","Runs the pull command without deleting local files.").env("SHOPLINE_FLAG_NODELETE")).addOption(new e.Option("-d, --development","Pull theme files from your remote development theme.").env("SHOPLINE_FLAG_DEVELOPMENT")).addOption(new e.Option("-o, --only <value...>","Download only the specified files (Multiple flags allowed).").default([]).env("SHOPLINE_FLAG_ONLY")).addOption(new e.Option("-x, --ignore <value...>","Skip downloading the specified files (Multiple flags allowed).").default([]).env("SHOPLINE_FLAG_IGNORE")).addOption((0,o.getPathOption)()).addOption((0,o.getEnvironmentOption)()).showHelpAfterError().action(async(e,o)=>{try{let r=await (0,n.parseOptions)(e,o),a=r.path;l.default.log("Checking login..."),d.default.isLogin(),(0,i.rmZipOnExit)(void 0,a),await new t.PullService3(r,a).pull()}catch(e){(0,r.handleError)(e)}})};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>o});const e=require("commander"),t=require("../../services/theme/push"),n=require("./theme-common-options"),o=()=>{let o=new e.Command("push");return o.description("Uploads your local theme files to the store you have logged in, overwriting the remote version if specified.").addOption(new e.Option("--theme <themeId>","Theme ID of the remote theme, theme name not supported.").env("SHOPLINE_FLAG_THEME_ID")).addOption(new e.Option("-l, --live","Push theme files from your remote live theme.").env("SHOPLINE_FLAG_LIVE")).addOption(new e.Option("-n, --nodelete","Runs the push command without deleting local files.").env("SHOPLINE_FLAG_NODELETE")).addOption(new e.Option("-a, --allow-live","Allow push to a live theme.").env("SHOPLINE_FLAG_ALLOW_LIVE")).addOption(new e.Option("-p, --publish","Publish as the live theme after uploading.").env("SHOPLINE_FLAG_PUBLISH")).addOption(new e.Option("-u, --unpublished","Create a new unpublished theme and push to it.").env("SHOPLINE_FLAG_UNPUBLISHED")).addOption(new e.Option("-d, --development","Push to your remote development theme, and create it if needed.").env("SHOPLINE_FLAG_DEVELOPMENT")).addOption(new e.Option("-o, --only <value...>","Upload only the specified files (Multiple flags allowed).").default([]).env("SHOPLINE_FLAG_ONLY")).addOption(new e.Option("-x, --ignore <value...>","Skip uploading the specified files (Multiple flags allowed).").default([]).env("SHOPLINE_FLAG_IGNORE")).addOption((0,n.getPathOption)()).addOption((0,n.getEnvironmentOption)()).showHelpAfterError().action(t.pushAction)};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>p});const e=require("commander"),t=s(require("../../services/dev-server")),i=s(require("../../services/dev-server-3")),r=require("../../services/theme/utils"),o=require("../../services/theme/const"),n=require("./theme-common-options"),a=require("../../utils/parse-options"),d=require("../../utils/check-theme-type-version");function s(e){return e&&e.__esModule?e:{default:e}}const p=()=>{let s=new e.Command("serve");return s.addOption(new e.Option("--port <port>","Local port to serve theme preview from.").default(o.DEV_SERVE_PORT).env("SHOPLINE_FLAG_PORT")).addOption(new e.Option("--live-reload <mode>","The live reload mode switches the server behavior when a file is modified").choices(o.LIVE_RELOAD_MODE).default(o.DEFAULT_LIVE_RELOAD_MODE).env("SHOPLINE_FLAG_LIVE_RELOAD")).addOption(new e.Option("--theme-editor-sync","Synchronize Theme Editor updates in the local theme files.").env("SHOPLINE_FLAG_THEME_EDITOR_SYNC")).addOption(new e.Option("-o, --only <value...>","Hot reload only files that match the specified pattern.").default([]).env("SHOPLINE_FLAG_ONLY")).addOption(new e.Option("-x, --ignore <value...>","Skip hot reloading any files that match the specified pattern.").default([]).env("SHOPLINE_FLAG_IGNORE")).addOption((0,n.getPathOption)()).addOption((0,n.getEnvironmentOption)()).addOption((0,n.getVerboseOption)()).action(async(e,o)=>{try{let r=await (0,a.parseOptions)(e,o),n=r.path,s=(0,d.getThemeTypeVersion)(n);3===s?await (0,i.default)(r):await (0,t.default)(r)}catch(e){(0,r.handleError)(e)}}),s};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{getPathOption:()=>r,getEnvironmentOption:()=>o,getVerboseOption:()=>i});const e=require("commander"),t=require("../../utils/path");function n(e){return(0,t.resolvePath)(e)}function r(){return new e.Option("--path <path>","The path to your theme directory.").default((0,t.cwd)()).argParser(n).env("SHOPLINE_FLAG_PATH")}function o(){return new e.Option("-e, --environment <environment>","The environment to apply to the current command.").env("SHOPLINE_FLAG_ENVIRONMENT")}function i(){return new e.Option("--verbose","Increase the verbosity of the logs.").env("SHOPLINE_FLAG_VERBOSE")}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"IEventEmitter",{enumerable:!0,get:()=>e});class e{}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var s in t)Object.defineProperty(e,s,{enumerable:!0,get:t[s]})}(exports,{APP_CONFIG_NAME:()=>E,default:()=>u});const e=h(require("configstore")),t=h(require("../utils/replace-dot")),s=require("../services/theme/utils"),i=require("../utils/messages"),n=require("../utils/error"),r=require("../utils/output");function o(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}function h(e){return e&&e.__esModule?e:{default:e}}const E="shopline",_={};class N extends e.default{isLogin(){if(!this.loginInfo)throw new n.AbortError((0,i.getMessage)("core.config.not_logged_in"),(0,r.outputContent)`If trying to log into a store account, please use ${r.outputToken.cyan("sl login --store=STORE")} to log in.`);return!0}parseKey(e){return`${this.LOGIN_INFO_KEY}.${(0,t.default)(this.currentStore)}.${e}`}getLoginInfo(e){return this.getConf([this.LOGIN_INFO_KEY,e])}saveLoginInfo(e,s){this.set(`${this.LOGIN_INFO_KEY}.${(0,t.default)(s)}`,e),this.set(this.CURRENT_STORE,s)}removeLoginInfo(){this.delete(`${this.LOGIN_INFO_KEY}`),this.delete(this.CURRENT_STORE),this.delConf([this.FILE_CHECKSUMS]),this.delConf([this.CURRENT_PARTNER])}deleteStoreKey(e,t){this.delConf([this.LOGIN_INFO_KEY,e,t])}setFileCheckSums(e){this.set(this.FILE_CHECKSUMS,e)}setFileCheckSumsWithKey(e,t){this.setConf([this.FILE_CHECKSUMS,e],t)}deleteFileCheckSumsWithKey(e){this.delConf([this.FILE_CHECKSUMS,e])}setConf(e,t){this.set((0,s.getStringifyKey)(e),t)}getConf(e){return this.get((0,s.getStringifyKey)(e))}delConf(e){this.delete((0,s.getStringifyKey)(e))}get fileCheckSums(){return this.get(this.FILE_CHECKSUMS)}set developmentThemeId(e){this.set(this.parseKey(this.DEVELOPMENT_THEME_ID_KEY),e)}get developmentThemeId(){return this.get(this.parseKey(this.DEVELOPMENT_THEME_ID_KEY))}get dfpToken(){return this.get(this.parseKey(this.DFP_TOKEN))}get currentStoreId(){return this.get(this.parseKey(this.STORE_ID))}get loginInfo(){var e;return this.get(`${this.LOGIN_INFO_KEY}.${(0,t.default)(null!==(e=this.currentStore)&&void 0!==e?e:"")}`)}get allStoreInfos(){return this.getConf([this.LOGIN_INFO_KEY])}get currentStore(){return this.get(this.CURRENT_STORE)}set developmentThemeName(e){this.setConf([this.LOGIN_INFO_KEY,this.currentStore,this.DEVELOPMENT_THEME_NAME_KEY],e)}get developmentThemeName(){return this.getConf([this.LOGIN_INFO_KEY,this.currentStore,this.DEVELOPMENT_THEME_NAME_KEY])}set currentPartner(e){this.setConf([this.CURRENT_PARTNER],e)}get currentPartner(){return this.getConf([this.CURRENT_PARTNER])}deleteCurrentPartner(){this.delConf([this.CURRENT_PARTNER])}get ngrokToken(){return this.getConf([this.NGROK_TOKEN])}set ngrokToken(e){this.setConf([this.NGROK_TOKEN],e)}deleteNgrokToken(){this.delConf([this.NGROK_TOKEN])}get extensionCache(){return this.getConf([this.EXTENSION_CACHE])}set extensionCache(e){this.setConf([this.EXTENSION_CACHE],e)}deleteExtensionCache(){this.delConf([this.EXTENSION_CACHE])}get isShownNot2o1ThemeTips(){return this.getConf([this.IS_SHOWN_NOT_2o1_THEME_TIPS])}set isShownNot2o1ThemeTips(e){this.setConf([this.IS_SHOWN_NOT_2o1_THEME_TIPS],e)}constructor(){super(E,_),o(this,"LOGIN_INFO_KEY","loginInfo"),o(this,"CURRENT_STORE","currentStore"),o(this,"FILE_CHECKSUMS","fileCheckSums"),o(this,"DEVELOPMENT_THEME_ID_KEY","developmentThemeId"),o(this,"DEVELOPMENT_THEME_NAME_KEY","developmentThemeName"),o(this,"DFP_TOKEN","dfptoken"),o(this,"CURRENT_PARTNER","currentPartner"),o(this,"NGROK_TOKEN","ngrokToken"),o(this,"EXTENSION_CACHE","extensionCache"),o(this,"STORE_ID","store_id"),o(this,"IS_SHOWN_NOT_2o1_THEME_TIPS","isShownNot2o1ThemeTips")}}const u=new N;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(exports,{replaceAdminHandle:()=>n,default:()=>i});const e=function(e){return e&&e.__esModule?e:{default:e}}(require("open")),t=require("../services/identity-auth/create-server"),r=e=>{let r=new URL(e);r.pathname="/user/signIn";let n=encodeURIComponent(`http://127.0.0.1:${t.IdentityAuthServerPort}`);return r.search=`?sl_state=${encodeURIComponent("scene=cli&")}redirect_url=${n}&auto_redirect=false`,r.href},n=e=>{let t=new URL(e),r=t.host.split(".");return(r.shift(),(null==r?void 0:r[0])==="preview")?"https://admin-preview.myshopline.com":(r.unshift("admin"),t.host=r.join("."),t.origin)},i=async t=>{let i=r(n(t));return await (0,e.default)(i),i};
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{isProd:()=>a,initSentry:()=>s,reportBug:()=>u,reportAndExit:()=>l,reportHttpRes:()=>d,default:()=>c});const e=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=o(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var s=i?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(r,a,s):r[a]=e[a]}return r.default=e,n&&n.set(e,r),r}(require("@sentry/node")),t=require("../services/extension/utils"),n=i(require("../../package.json"));require("../utils/ui/render");const r=i(require("../utils/winston"));function i(e){return e&&e.__esModule?e:{default:e}}function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(o=function(e){return e?n:t})(e)}const a=!0;function s(){e.init({dsn:"https://81320b4cb2cd4e26a1a10071d4345f9b@sentry-new.myshopline.com/482",release:n.default.version,environment:"production",enabled:a,tracesSampleRate:1,initialScope:{tags:{"shopline-cli":"external"}},beforeSend:e=>(e.tags={...e.tags,"cli-trace-id":r.default.getTraceId()},e)})}function u(n){e.setTag("date_time",Date.now()),e.setTag("date_human",(0,t.formatTime)()),e.setTag("time_zone",new Date().getTimezoneOffset()),"string"==typeof n?e.captureMessage(n):e.captureException(n)}function l(t){a?(u(t),e.close(2e3).then(()=>{process.exit(1)})):process.exit(1)}function d(t){var n,r,i,o,a,s,u,l,d;let c=null==t?void 0:null===(n=t.data)||void 0===n?void 0:n.success,f=null==t?void 0:null===(r=t.data)||void 0===r?void 0:r.code;(null==t?void 0:null===(i=t.data)||void 0===i?void 0:i.msg)||null==t||null===(o=t.data)||void 0===o||o.message,l=t.config.baseURL,d=t.config.url,l.endsWith("/")&&d.startsWith("/")?d.slice(1):l.endsWith("/")||d.startsWith("/");let p=(null==t?void 0:null===(a=t.data)||void 0===a?void 0:a.trace_id)||(null==t?void 0:null===(s=t.data)||void 0===s?void 0:s.traceid)||(null==t?void 0:null===(u=t.headers)||void 0===u?void 0:u["x-request-id"])||"";("boolean"==typeof c&&!1===c||200!==t.status)&&(e.setTags({error_code:f,trace_id:p}),e.setExtra("http_request",t.config),e.setExtra("http_response",t))}const c=e;
@@ -0,0 +1 @@
1
+ "use strict";function e(e,t){return e+t}Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>e});
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>n});const e=function(e){return e&&e.__esModule?e:{default:e}}(require("./config")),t=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=r(t);if(n&&n.has(e))return n.get(e);var u={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in e)if("default"!==f&&Object.prototype.hasOwnProperty.call(e,f)){var i=o?Object.getOwnPropertyDescriptor(e,f):null;i&&(i.get||i.set)?Object.defineProperty(u,f,i):u[f]=e[f]}return u.default=e,n&&n.set(e,u),u}(require("../services/identity-auth/api"));function r(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(r=function(e){return e?n:t})(e)}async function n(){if(e.default.currentStore&&e.default.loginInfo){(0,t.default)(e.default.currentStore);let r=await (0,t.verifyLogin)(e.default.currentStore),{rescode:n,data:u}=r.data;if("0"===n&&u.checkLogin)return!0}return!1}
@@ -0,0 +1,9 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>M});const e=U(require("qs")),t=U(require("koa")),r=U(require("http")),i=U(require("https")),o=U(require("path")),s=U(require("@koa/router")),l=U(require("koa-send")),u=U(require("form-data")),d=U(require("axios")),a=U(require("koa-body")),n=U(require("../theme/update")),c=U(require("../../helpers/config")),h=require("../theme"),p=require("../../utils/messages"),v=require("../../utils/const"),g=require("./sse"),f=U(require("../../utils/debug")),m=U(require("../theme/remote-watcher")),w=require("../theme/update-queue"),y=U(require("../../utils/get-real-referer")),q=U(require("../../utils/include-filter")),_=U(require("../../utils/ignore-filter")),b=U(require("../theme/uploader")),$=require("../../utils/path"),k=require("../theme/utils"),S=U(require("../../utils/check-theme-type-version")),Q=U(require("../../utils/winston"));function x(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function U(e){return e&&e.__esModule?e:{default:e}}const C=["multipart/form-data","application/x-www-form-urlencoded"];class j extends f.default{static getRequestBody(t,r){if(t.includes("multipart/form-data")){let e=new u.default;for(let t in r)Object.prototype.hasOwnProperty.call(r,t)&&e.append(t,r[t]);return{body:e,headers:e.getHeaders()}}if(t.includes("application/x-www-form-urlencoded")){let t=e.default.stringify(r);return{body:t,headers:{"Content-Type":"application/x-www-form-urlencoded"}}}return{body:r,headers:{}}}start(){let e=new t.default,u=new s.default,n=r.default.createServer(e.callback()),c=new i.default.Agent({rejectUnauthorized:!1}),g=d.default.create({httpsAgent:c});return u.get("/socket-client.js",async e=>{await (0,l.default)(e,e.path,{root:o.default.join(__dirname,"./web")})}),u.get("/hot-reload",e=>{e.req.socket.setKeepAlive(!0),e.req.socket.setNoDelay(!0),e.req.socket.setTimeout(0),e.set({"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-cache",Connection:"keep-alive"});let t=this.streams.create();e.status=200,e.body=t,t.write(":ok\n"),t.on("close",()=>{this.log("SSE lost connection")})}),u.get("/assets/(.*)",async e=>{await (0,l.default)(e,e.path,{root:this.cwd})}),u.all("/(.*)",(0,a.default)({multipart:!0}),async e=>{var t,r,i,o,s,l,u,d,a;let{method:n,query:c,path:h,request:f}=e,{body:m,headers:w}=j.getRequestBody((null===(t=e.request.headers)||void 0===t?void 0:t["content-type"])||"",e.request.body),q="l_spwd=1";try{let t={cookie:`${f.headers.cookie}; ${q}`||q,"user-agent":`${f.headers["user-agent"]} ${v.CLI_USER_AGENT}`,...w,referer:(0,y.default)(this.storeUrl,(null===(r=f.headers)||void 0===r?void 0:r.referer)||"/",this.previewQuery),Accept:(null===(i=e.request.headers)||void 0===i?void 0:i.accept)||"*/*"},s=await g({method:n,url:`${this.storeUrl}${h}`,maxRedirects:0,headers:t,params:{...c,...this.previewQuery,ignoreRedirect:!0,dev_mode:1},data:"get"===n.toLowerCase()?null:m});if(e.set(s.headers),h.endsWith(".ico")||["application/json",...C].some(e=>s.headers["content-type"].includes(e))){e.status=200,e.body=s.data;return}let l=`<script>
2
+ (() => {
3
+ window.__SHOPLINE_CLI_ENV__ = {
4
+ mode: '${this.mode}',
5
+ section_names_by_type: []
6
+ }
7
+ })();
8
+ </script>
9
+ <script src="/socket-client.js"></script>`,u=null==s?void 0:null===(o=s.data)||void 0===o?void 0:o.replace(/(<\/body>)/,`${l}$1`);e.status=200,e.body=u}catch(r){let t=null==r?void 0:null===(s=r.response)||void 0===s?void 0:s.status;if(!t){Q.default.log(`request proxy error: ${r}`),console.log(r),e.body=r;return}if(t.toString().startsWith(30)){e.status=t;let i=null==r?void 0:null===(l=r.response)||void 0===l?void 0:null===(u=l.headers)||void 0===u?void 0:u["set-cookie"];i&&e.set("set-cookie",i);let o=null==r?void 0:null===(d=r.response)||void 0===d?void 0:null===(a=d.headers)||void 0===a?void 0:a.location;if(Q.default.log(`request proxy redirect: ${o}`),o){let t=o.replace(this.storeUrl,this.localUrl);e.redirect(t);return}e.body="";return}if(!t.toString().startsWith(20)){let e=`${this.storeUrl}${h}`,r={...c,...this.previewQuery,ignoreRedirect:!0,dev_mode:1};Q.default.log(`request proxy error: ${t} ${e} ${JSON.stringify(r)}`),console.log((0,p.getMessage)("theme.serve.error.non_start_20_error",{errorCode:t,requestUrl:e,requestQuery:JSON.stringify(r,null,2)}))}e.body=r.response.data}}),e.use(u.routes()).use(u.allowedMethods()),n.listen(this.port,async()=>{Q.default.log(`dev server listening on port ${this.port}, start theme watcher...`);let e=await (0,h.startThemeService)(this.mode,this.editorSync,this.streams,this.updateQueue,this.includeFilter,this.ignoreFilter,this.uploader,this.cwd);this.previewQuery.themeId=null==e?void 0:e.themeId,this.listen()}),e}listen(){let{storeUrl:t}=this,{themeId:r}=this.previewQuery,i=`${t}/admin/theme/editor/editing/Home?themeId=${r}&dev_mode=1`,o=`${t}/?${e.default.stringify({...this.previewQuery,dev_mode:1})}`,{localUrl:s}=this,l=(0,k.getRelativePath)(this.cwd);console.log((0,p.getMessage)("theme.serve.serving",{path:l||"."})),console.log(),console.log((0,p.getMessage)("theme.serve.print_theme_id",{theme_id:r})),console.log(),console.log((0,p.getMessage)("core.context.open_url",{url:s})),console.log(),console.log((0,p.getMessage)("theme.serve.customize_or_preview",{editor_url:i,preview_url:o}))}get localUrl(){return`http://127.0.0.1:${this.port}`}constructor({port:e,liveReload:t,themeEditorSync:r,path:i},o,s,l){super("theme:serve"),x(this,"cwd",void 0),x(this,"port",void 0),x(this,"previewQuery",void 0),x(this,"storeUrl",void 0),x(this,"streams",void 0),x(this,"mode",void 0),x(this,"editorSync",void 0),x(this,"updateQueue",void 0),x(this,"includeFilter",void 0),x(this,"ignoreFilter",void 0),x(this,"uploader",void 0),this.cwd=i,this.port=e,this.storeUrl=c.default.currentStore,this.mode=t,this.streams=new g.SSEQueue,this.editorSync=r,this.updateQueue=s,this.ignoreFilter=o.ignore,this.includeFilter=o.include,this.uploader=l,this.previewQuery={preview:1,themeId:""},this.start()}}const M=async e=>{let t=e.path||(0,$.cwd)(),r=e.themeEditorSync,i=function(e,t){var r,i;let o=null!==(r=e.only)&&void 0!==r?r:[],s=null!==(i=e.ignore)&&void 0!==i?i:[],l=new q.default(o,t),u=new _.default(s,t);return{include:l,ignore:u}}(e,t);Q.default.log("Checking login..."),c.default.isLogin(),(0,S.default)(t);let o=new w.UpdateQueue,s=new b.default(i,!0,t),l=new n.default(r,i,s,t);await l.syncTheme(),new j({...e,path:t},i,o,s),new m.default(r,i,o,s,t).start()};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSocketServer=getSocketServer;var SocketIO=_interopRequireWildcard(require("socket.io"));function _interopRequireWildcard(a){if(a&&a.__esModule)return a;var b={};if(null!=a){for(var c in a)if(Object.prototype.hasOwnProperty.call(a,c)){var d=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(a,c):{};d.get||d.set?Object.defineProperty(b,c,d):b[c]=a[c]}}return b.default=a,b}let io;function createSocketServer(a){io=new SocketIO.Server(a)}function getSocketServer(a){return io||createSocketServer(a),io}
@@ -0,0 +1,6 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(t,e){for(var r in e)Object.defineProperty(t,r,{enumerable:!0,get:e[r]})}(exports,{default:()=>r,SSEQueue:()=>s});const t=require("stream");function e(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class r extends t.Transform{_transform(t,e,r){t.comment&&this.push(`: ${t.comment}
2
+ `),t.event&&this.push(`event: ${t.event}
3
+ `),t.id&&this.push(`id: ${t.id}
4
+ `),t.retry&&this.push(`retry: ${t.retry}
5
+ `),t.data&&this.push(function t(e){return"object"==typeof e?t(JSON.stringify(e)):e.split(/\r\n|\r|\n/).map(t=>`data: ${t}
6
+ `).join("")}(t.data)),this.push("\n"),r()}constructor(){super({writableObjectMode:!0})}}class s{create(){let t=new r;return this.list.push(t),this.current=t,t}broadcast(t){this.list.length&&this.list.forEach(e=>{e.write(t)})}close(){this.list.length=0}constructor(){e(this,"list",[]),e(this,"current",null)}}
@@ -0,0 +1 @@
1
+ "use strict";console.log("[HotReload] Initializing..."),"undefined"==typeof EventSource&&console.error("[HotReload] Error: SSE features are not supported. Try a different browser."),(()=>{function e(){let e=window.__SHOPLINE_CLI_ENV__;return e.mode}function o(){console.log("[HotReload] Refreshing entire page"),window.location.reload()}function t(t){var s;let r;let a=JSON.parse(t.data);if(a.reload_page){o([]);return}void 0!==(r=a.modified)&&((s=r=r.map(e=>e.replace(/\.hbs$/,"")),"full-page"===e()||s.some(e=>!l(e)&&!i(e)))?o(r):r.forEach(n))}function n(e){if(l(e)){(function(e){let t=document.querySelectorAll(`link[href^="/assets"][href*="${e}"][rel="stylesheet"]`);t.length?t.forEach(o=>{o.href=`${new URL(o.href).pathname}?v=${Date.now()}`,console.log(`[HotReload] Reloaded stylesheet ${e}`)}):(console.log(`[HotReload] Could not find link for stylesheet ${e}`),o([]))})(e);return}i(e)&&function(e){new s(e).refresh()}(e)}function l(e){return e.endsWith(".css")}function i(e){return new s(e).valid()}class s{valid(){return this.filename.startsWith("sections/")&&this.elements.length>0}async refreshElement(e){let o=e.id.replace(/^shopline-section-/,""),t=new URL(window.location.href);t.searchParams.append("sections",o);let n=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});try{if(["product/collections/collection-page","product/detail/product-preview","product/detail/product-quick-add","product/collections/collection-filter"].includes(o))window.location.reload(),console.log(`[HotReload] Hot-reloading not supported, fully reloading ${this.name} section`);else{let t=await n.json();e.outerHTML=t[o];let l=new CustomEvent("shopline:section:load",{detail:{sectionId:o},bubbles:!0,cancelable:!1});window.document.dispatchEvent(l)}}catch(e){window.location.reload(),console.log(`[HotReload] Failed to reload ${this.name} section: ${e.message}`)}}async refresh(){console.log(`[HotReload] Reloaded ${this.name} sections`),this.elements.forEach(this.refreshElement.bind(this))}constructor(e){this.filename=e,this.name=e.split("/").pop().replace(".html",""),this.elements=function(e){let o=document.querySelectorAll(`[id^='shopline-section'][id$='${e}']`);return Array.from(o)}(this.name)}}"off"!==e()&&function e(){let o=new EventSource("/hot-reload");o.onmessage=t,o.onopen=()=>console.log("[HotReload] SSE connected."),o.onclose=()=>{console.log("[HotReload] SSE closed. Attempting to reconnect..."),setTimeout(e,5e3)},o.onerror=()=>o.close()}()})();
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>c});const e=a(require("fast-glob")),t=a(require("pathe")),r=a(require("fs-extra")),l=a(require("../../helpers/config")),i=require("../../utils/path"),u=a(require("./server")),n=a(require("../theme/3.0/theme")),d=a(require("../../utils/include-filter")),o=a(require("../../utils/ignore-filter"));function a(e){return e&&e.__esModule?e:{default:e}}const f=l=>{let i=e.default.sync("*.zip",{cwd:l});i.forEach(e=>{let i=t.default.join(l,e);r.default.unlinkSync(i)})},c=async e=>{let t=e.path||(0,i.cwd)();l.default.isLogin();let r=function(e,t){var r,l;let i=null!==(r=e.only)&&void 0!==r?r:[],u=null!==(l=e.ignore)&&void 0!==l?l:[],n=new d.default(i,t),a=new o.default(u,t);return{include:n,ignore:a}}(e,t),a=new n.default({mode:e.liveReload,themeId:l.default.developmentThemeId,includeFilter:r.include,ignoreFilter:r.ignore,cwd:t});await a.syncTheme(),f(t),new u.default({...e,path:t},r)};
@@ -0,0 +1,9 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>_});const e=y(require("qs")),t=y(require("koa")),r=y(require("https")),i=y(require("pathe")),s=y(require("koa-send")),o=y(require("koa-body")),l=y(require("@koa/router")),d=y(require("form-data")),n=y(require("axios")),a=require("./sse"),u=y(require("../../utils/debug")),c=y(require("../../helpers/config")),h=require("../../utils/messages"),p=require("../../utils/const"),v=require("../theme/utils"),m=y(require("../../utils/get-real-referer")),g=require("../theme/3.0/theme");function f(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function y(e){return e&&e.__esModule?e:{default:e}}const w=["multipart/form-data","application/x-www-form-urlencoded"];class _ extends u.default{async start(){let e=new t.default,d=new l.default,a=new r.default.Agent({rejectUnauthorized:!1}),u=n.default.create({httpsAgent:a});return d.get("/(.*).css",async e=>{await (0,s.default)(e,e.path,{root:this.cwd})}),d.get("/socket-client.js",async e=>{await (0,s.default)(e,e.path,{root:i.default.join(__dirname,"./web")})}),d.get("/hot-reload",e=>{e.req.socket.setKeepAlive(!0),e.req.socket.setNoDelay(!0),e.req.socket.setTimeout(0),e.set({"Content-Type":"text/event-stream; charset=utf-8","Cache-Control":"no-cache",Connection:"keep-alive"});let t=this.streams.create();e.status=200,e.body=t,t.write(":ok\n"),t.on("close",()=>{this.log("SSE lost connection")})}),d.all("/(.*)",(0,o.default)({multipart:!0}),async e=>{var t,r,i,s,o,l,d,n,a;let{method:c,query:h,path:v,request:g}=e,{body:f,headers:y}=_.getRequestBody((null===(t=e.request.headers)||void 0===t?void 0:t["content-type"])||"",e.request.body),q="l_spwd=1";try{let t={cookie:`${g.headers.cookie}; ${q}`||q,"user-agent":`${g.headers["user-agent"]} ${p.CLI_USER_AGENT}`,...y,referer:(0,m.default)(this.storeUrl,(null===(r=g.headers)||void 0===r?void 0:r.referer)||"/",this.previewQuery),Accept:(null===(i=e.request.headers)||void 0===i?void 0:i.accept)||"*/*"},o=await u({method:c,url:`${this.storeUrl}${v}`,maxRedirects:0,headers:t,params:{...h,...this.previewQuery,ignoreRedirect:!0,dev_mode:1},data:"get"===c.toLowerCase()?null:f});if(e.set(o.headers),v.endsWith(".ico")||["application/json",...w].some(e=>o.headers["content-type"].includes(e))){e.status=200,e.body=o.data;return}let l=`<script>
2
+ (() => {
3
+ window.__SHOPLINE_CLI_ENV__ = {
4
+ mode: '${this.mode}',
5
+ section_names_by_type: []
6
+ }
7
+ })();
8
+ </script>
9
+ <script src="/socket-client.js"></script>`,d=null==o?void 0:null===(s=o.data)||void 0===s?void 0:s.replace(/(<\/body>)/,`${l}$1`);e.status=200,e.body=d}catch(r){let t=null==r?void 0:null===(o=r.response)||void 0===o?void 0:o.status;if(!t){console.log(r),e.body=r;return}if(t.toString().startsWith(30)){e.status=t;let i=null==r?void 0:null===(l=r.response)||void 0===l?void 0:null===(d=l.headers)||void 0===d?void 0:d["set-cookie"];i&&e.set("set-cookie",i);let s=null==r?void 0:null===(n=r.response)||void 0===n?void 0:null===(a=n.headers)||void 0===a?void 0:a.location;if(s){let t=s.replace(this.storeUrl,this.localUrl);e.redirect(t);return}e.body=""}}}),e.use(d.routes()).use(d.allowedMethods()),e.listen(this.port,async()=>{let e=await (0,g.startThemeService)({mode:this.mode,cwd:this.cwd,sse:this.streams,includeFilter:this.includeFilter,ignoreFilter:this.ignoreFilter,editorSync:this.editorSync});this.previewQuery.themeId=null==e?void 0:e.themeId,this.printInfo()}),e}printInfo(){let{storeUrl:t}=this,{themeId:r}=this.previewQuery,i=`${t}/admin/theme/editor/editing/Home?themeId=${r}&dev_mode=1`,s=`${t}/?${e.default.stringify({...this.previewQuery,dev_mode:1})}`,{localUrl:o}=this,l=(0,v.getRelativePath)(this.cwd);console.log((0,h.getMessage)("theme.serve.serving",{path:l||"."})),console.log(),console.log((0,h.getMessage)("theme.serve.print_theme_id",{theme_id:r})),console.log(),console.log((0,h.getMessage)("core.context.open_url",{url:o})),console.log(),console.log((0,h.getMessage)("theme.serve.customize_or_preview",{editor_url:i,preview_url:s}))}static getRequestBody(t,r){if(t.includes("multipart/form-data")){let e=new d.default;for(let t in r)Object.prototype.hasOwnProperty.call(r,t)&&e.append(t,r[t]);return{body:e,headers:e.getHeaders()}}if(t.includes("application/x-www-form-urlencoded")){let t=e.default.stringify(r);return{body:t,headers:{"Content-Type":"application/x-www-form-urlencoded"}}}return{body:r,headers:{}}}get localUrl(){return`http://127.0.0.1:${this.port}`}constructor({port:e,liveReload:t,path:r,themeEditorSync:i},s){super("theme:serve"),f(this,"cwd",void 0),f(this,"port",void 0),f(this,"previewQuery",void 0),f(this,"storeUrl",void 0),f(this,"mode",void 0),f(this,"streams",void 0),f(this,"includeFilter",void 0),f(this,"ignoreFilter",void 0),f(this,"editorSync",void 0),this.cwd=r,this.port=e,this.storeUrl=c.default.currentStore,this.mode=t,this.streams=new a.SSEQueue,this.ignoreFilter=s.ignore,this.includeFilter=s.include,this.editorSync=i,this.previewQuery={preview:1,themeId:""},this.start()}}
@@ -0,0 +1,6 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(t,e){for(var r in e)Object.defineProperty(t,r,{enumerable:!0,get:e[r]})}(exports,{default:()=>r,SSEQueue:()=>s});const t=require("stream");function e(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}class r extends t.Transform{_transform(t,e,r){t.comment&&this.push(`: ${t.comment}
2
+ `),t.event&&this.push(`event: ${t.event}
3
+ `),t.id&&this.push(`id: ${t.id}
4
+ `),t.retry&&this.push(`retry: ${t.retry}
5
+ `),t.data&&this.push(function t(e){return"object"==typeof e?t(JSON.stringify(e)):e.split(/\r\n|\r|\n/).map(t=>`data: ${t}
6
+ `).join("")}(t.data)),this.push("\n"),r()}constructor(){super({writableObjectMode:!0})}}class s{create(){let t=new r;return this.list.push(t),this.current=t,t}broadcast(t){this.list.length&&this.list.forEach(e=>{e.write(t)})}close(){this.list.length=0}constructor(){e(this,"list",[]),e(this,"current",null)}}
@@ -0,0 +1 @@
1
+ "use strict";console.log("[HotReload] Initializing..."),"undefined"==typeof EventSource&&console.error("[HotReload] Error: SSE features are not supported. Try a different browser."),(()=>{function e(){let e=window.__SHOPLINE_CLI_ENV__;return e.mode}function o(){console.log("[HotReload] Refreshing entire page"),window.location.reload()}function t(t){let i=JSON.parse(t.data);if(i.reload_page){o([]);return}(function(t){let i=t.modified;void 0!==i&&("full-page"===e()||i.some(e=>!l(e)&&!s(e))?o(i):i.forEach(n))})(i)}function n(e){if(l(e)){(function(e){let t=document.querySelectorAll(`link[href*="${e}"][rel="stylesheet"]`);t.length?t.forEach(o=>{o.href=`/${e}?v=${Date.now()}`,console.log(`[HotReload] Reloaded stylesheet ${e}`)}):(console.log(`[HotReload] Could not find link for stylesheet ${e}`),o([]))})(e);return}s(e)&&function(e){new i(e).refresh()}(e)}function l(e){return e.endsWith(".css")}function s(e){return new i(e).valid()}class i{valid(){return this.filename.startsWith("sections/")&&this.elements.length>0}async refreshElement(e){let o=e.id.replace(/^shopline-section-/,""),t=new URL(window.location.href);t.searchParams.append("sections",o);let n=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});try{let t=await n.json();e.outerHTML=t[o];let l=new CustomEvent("shopline:section:load",{detail:{sectionId:o},bubbles:!0,cancelable:!1});window.document.dispatchEvent(l)}catch(e){console.log(`[HotReload] Failed to reload ${this.name} section: ${e.message}`)}}async refresh(){console.log(`[HotReload] Reloaded ${this.name} sections`),this.elements.forEach(this.refreshElement.bind(this))}constructor(e){this.filename=e,this.name=e.split("/").pop().replace(".html",""),this.elements=function(e){let o=document.querySelectorAll(`[id^='shopline-section'][id$='${e}']`);return Array.from(o)}(this.name)}}"off"!==e()&&function e(){let o=new EventSource("/hot-reload");o.onmessage=t,o.onopen=()=>console.log("[HotReload] SSE connected."),o.onclose=()=>{console.log("[HotReload] SSE closed. Attempting to reconnect..."),setTimeout(e,5e3)},o.onerror=()=>o.close()}()})();
@@ -0,0 +1,4 @@
1
+ "use strict";var e,t,r;Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(exports,{ECategory:()=>e,ERegisterType:()=>t,EExtensionState:()=>r,http:()=>T,authHttp:()=>m,changeBaseURL:()=>O,createExtensionInstance:()=>R,pushExtension:()=>y,getAppList:()=>L,getAppExtList:()=>v,getPartnerList:()=>A,getStoreList:()=>N,getAccessToken:()=>U,getAppInfo:()=>b,getStoreInfo:()=>C,getFunctionTemplates:()=>q,registerFunction:()=>I,pushFunction:()=>H});const n=g(require("form-data")),s=g(require("axios")),o=g(require("../../helpers/config")),a=require("./const"),i=g(require("../../utils/debug")),u=require("../../utils/error"),p=require("../../utils/messages"),l=require("../../utils/misc"),c=require("../../helpers/sentry"),d=require("../../utils/const"),f=g(require("../../utils/winston"));function g(e){return e&&e.__esModule?e:{default:e}}function E(e){return`${e}/api/v1/cli/app/ext`}function h(e){return`${e}/api/v1/cli`}function _(e,t={}){let r=e=>{let{loginInfo:t,dfpToken:r,currentPartner:n}=o.default;if(t){n&&(t.a_dc_partnerid=n.id,Object.assign(e.headers,{dc_partner_f:"1"}));let s=Object.keys(t).map(e=>`${e}=${t[e]}`).join(";");Object.assign(e.headers,{cookie:s,"dfp-token":r||""})}};e.interceptors.request.use(e=>(i.default.printRequest(e),t.useThemeAuth&&r(e),e.data instanceof n.default&&Object.assign(e.headers,e.data.getHeaders()),f.default.logHttp({type:"request",method:e.method,url:e.baseURL+e.url,params:e.params}),e),e=>Promise.reject(e)),e.interceptors.response.use(e=>{var t,r,n,s,d;let g=null==e?void 0:null===(t=e.data)||void 0===t?void 0:t.success,E=null==e?void 0:null===(r=e.data)||void 0===r?void 0:r.code,{config:h}=e,_=(0,l.getUrlOrigin)(h.baseURL);i.default.printResponse(h,e),(0,c.reportHttpRes)(e);let T=(null==e?void 0:null===(n=e.headers)||void 0===n?void 0:n.traceid)||"";if(f.default.logHttp({type:"response",method:e.config.method,url:e.config.baseURL+e.config.url,params:e.config.params,body:e.data,status:e.status,traceId:T}),E===a.ERRORS.PARTNER_INFO_NOT_COMPLETE)throw o.default.deleteCurrentPartner(),new u.ApiError({code:E,message:e.data.message,tryMessage:_?(0,p.getMessage)("extension.create.connect.try_partner_info_not_complete_message",{link:`${_}/info/fill`}):void 0});if(E===a.ERRORS.USER_NOT_LOGIN)throw new u.ApiError({code:E,message:e.data.message,tryMessage:(0,p.getMessage)("core.whoami.not_logged_in")});if("boolean"==typeof g&&!1===g)throw new u.AbortError(`url: ${e.config.url}
2
+ error code: ${E}
3
+ error message: ${null==e?void 0:null===(d=e.data)||void 0===d?void 0:d.message}
4
+ trace id: ${T}`);return null===(s=e.data)||void 0===s?void 0:s.data},e=>(e.response&&(0,c.reportHttpRes)(e.response),(0,c.reportBug)(e),Promise.reject(e)))}const T=s.default.create({baseURL:E(a.DEFAULT_EXTENSION_ENDPOINT),maxBodyLength:1/0,maxContentLength:1/0,headers:{"Content-Type":"application/json","User-Agent":d.CLI_USER_AGENT}});_(T);const m=s.default.create({baseURL:h(a.DEFAULT_EXTENSION_ENDPOINT),maxBodyLength:1/0,maxContentLength:1/0,headers:{"Content-Type":"application/json"}});function O(e){let t=a.EXTENSION_ENDPOINTS[e];T.defaults.baseURL=E(t),m.defaults.baseURL=h(t)}_(m,{useThemeAuth:!0}),function(e){e.CHECKOUT="CHECKOUT",e.THEME="THEME"}(e||(e={})),function(e){e.THEME_APP_BLOCK="THEME_APP_BLOCK",e.CHECKOUT_UI="CHECKOUT_UI"}(t||(t={})),function(e){e.DRAFT="DRAFT",e.WORKING_DRAFT="WORKING_DRAFT"}(r||(r={}));const R=e=>T.post("/register",JSON.stringify({...e})),y=e=>T.post("/push",e),L=e=>m.post("/auth/app/list",e),v=e=>m.post("/auth/app/ext/list",e),A=()=>m.get("/auth/partner/list");function N(e){return m.post("/auth/store/list",{partnerId:e})}function U(e){return m.post("/auth/generate/accessToken",e)}function b(e,t){return m.post("/auth/app/queryByAppKey",{partnerId:e,appKey:t})}function C(e,t){return m.post("/auth/store/queryByHandle",{partnerId:e,handle:t})}function q(){return m.post("/function/template/list")}function I(e){return m.post("/function/register",e)}function H(e){return m.post("/function/deploy",e)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(exports,{isThemeAppExtensionOS3:()=>u,isThemeAppExtensionOS2:()=>o});const e=i(require("yaml")),t=i(require("fs-extra")),r=i(require("pathe")),n=require("./const");function i(e){return e&&e.__esModule?e:{default:e}}function u(i){let u=r.default.join(i||process.cwd(),n.EXTENSION_CONFIG_FILE);if(!t.default.existsSync(u))throw Error(`${n.EXTENSION_CONFIG_FILE} not found`);let o=e.default.parse(t.default.readFileSync(u,"utf8"));return!!o.compatibility}function o(e){return!u(e)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var i in t)Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}(exports,{default:()=>n,downloadRepository:()=>u});const e=function(e){return e&&e.__esModule?e:{default:e}}(require("simple-git")),t=require("../../utils/git"),i=require("../../utils/ui/ui"),r=require("../../utils/path");async function n(i,r,n){await (0,t.ensureGitOrAbort)();let u=(0,e.default)();await u.clone(i,r,{"--progress":null,"--depth":1,...n})}async function u(e,t,u,a){let o=(0,r.relativePath)(u,t);await (0,i.renderTasks)([{title:`Cloning ${e} into ${o}`,task:async()=>{await n(e,t,a)}}])}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var a in t)Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}(exports,{getAllAppExtList:()=>a,getAppExts:()=>r,buildSelectAppExtChoice:()=>p});const e=require("../api"),t=require("../extension");async function a(e,a){let p=await (0,t.getAppLists)(e.id),n=await Promise.all(p.map(async e=>{let t=await r(e.appKey,a);return{...e,exts:t||[]}}));return n}async function r(t,a){let{dataList:r=[]}=await (0,e.getAppExtList)({appKey:t,pageSize:300,currentPage:1,types:[a]});return r}function p(e,t){return e.map(e=>{let{appName:a,appSecret:r}=e,p=e.exts.reduce((p,n)=>(p.label=`${e.appName} by ${t}: ${n.name}`,p.value={...n,appName:a,appSecret:r},p),Object.create(null));return p})}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"connect",{enumerable:!0,get:()=>p});const e=require("../env"),t=require("../types"),n=require("../../../utils/error"),o=require("../../../utils/output"),r=require("./context"),i=require("../context"),u=require("../../../utils/ui/ui"),l=require("../utils"),s=require("./validate"),a=require("../functions/info"),c=function(e){return e&&e.__esModule?e:{default:e}}(require("../../../utils/winston"));async function p(p){var d;let E=null!==(d=p.cwd)&&void 0!==d?d:process.cwd(),g=await (0,e.getEnv)();c.default.log(`Current store environment: ${g}`);let x=await (0,l.getExtensionType)(E);if(c.default.log(`Current selected extension type: ${x}`),x===t.EExtensionTypes.themeAppExtension&&(c.default.log("Checking Current directory is theme app extension or not..."),await (0,s.ensureThemeAppExtension)(E)),await (0,a.isFunctionType)(x))throw new n.AbortError("Shopline extension connect is not support for Functions extension.");p.reset&&(c.default.log("Clearing environment variables..."),(0,e.clearEnvFile)(g,E));let f=await (0,i.getPartnerInfoIfNeed)(g,E),w=(0,l.getExtType)(x),h=await (0,r.getAllAppExtList)(f,w),T=(h||[]).filter(e=>e.exts.length>0);if(!T.length)throw new n.AbortError((0,o.outputContent)`You don't have any extensions of ${o.outputToken.magenta((0,l.getExtShowType)(x))} type`,(0,o.outputContent)`You can use ${o.outputToken.cyan("sl extension create")} to create!`);c.default.log("Selecting extension to connect...");let y=await (0,u.renderSelectPrompt)({message:"Which extension would you like to connect to?",choices:(0,r.buildSelectAppExtChoice)(T,f.partnerName)});c.default.log(`Selected extension with ${y.name}!`);let{appKey:v,appSecret:m,id:S,uuid:P,name:_,appName:q}=y,C={PARTNER_ID:f.id,SHOPLINE_APP_KEY:v,SHOPLINE_APP_SECRET:m,EXTENSION_TITLE:_,EXTENSION_ID:`${S}`,EXTENSION_UUID:P};c.default.log("Write environment variables..."),(0,e.writeEnvFile)(g,C,E),c.default.log(`Current extension is connected to ${q}: ${_}`),(0,o.outputSuccess)((0,o.outputContent)`Project now connected to ${o.outputToken.green(`${q}: ${_}`)}`)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ensureThemeAppExtension",{enumerable:!0,get:()=>i});const e=require("../../../utils/error"),t=require("../../theme/utils"),r=require("../const"),n=require("../../../utils/output"),o=require("../check-extension-version");async function i(i){let u=(0,t.getDirsWithoutDot)(i),s=new e.AbortError("You are not in a theme app extension project.",(0,n.outputContent)`Run ${n.outputToken.cyan("sl extension create")} to create a new one`);if(!u.length)throw s;let c=r.SUPPORTED_BUCKETS.every(e=>u.includes(e));if(!c&&!(0,o.isThemeAppExtensionOS3)(i))throw s}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,s){for(var o in s)Object.defineProperty(e,o,{enumerable:!0,get:s[o]})}(exports,{EXTENSION_ENDPOINTS:()=>o,DEFAULT_EXTENSION_ENDPOINT:()=>t,DEFAULT_EXTENSION_NAME:()=>r,ENVS:()=>c,TARGETS:()=>_,EXTENSION_LINK_PATH:()=>E,TAGS:()=>i,OPTION_TYPES:()=>n,EXTENSION_NAME_LENGTH_LIMIT:()=>a,MAX_ALL_FILE_SIZE:()=>l,MAX_BLOCKS_FILE_COUNT:()=>T,MAX_BLOCKS_FILE_SIZE:()=>p,MAX_BLOCKS_FILE_SIZE_3:()=>u,SUPPORTED_ASSET_EXTS:()=>N,SUPPORTED_ASSET_EXTS_3:()=>m,SUPPORTED_BUCKETS:()=>d,SUPPORTED_BUCKETS_3:()=>O,SUPPORTED_LOCALE_EXTS:()=>I,EXTENSION_CONFIG_FILE:()=>S,CHECKOUT_UI_CONFIG_FILE:()=>L,FUNCTION_CONFIG_FILE:()=>g,ERRORS:()=>A,ALL_TEMPLATES:()=>P,ALL_TEMPLATES_3:()=>h,EXTENSION_TYPES:()=>U,DEFAULT_EXTENSION_TYPE:()=>M,DEFAULT_CHECKOUT_UI_CUSTOMIZER_NAME:()=>v});const e=require("../../utils/messages"),s=require("./types"),o={dev:"https://devcenter.myshoplinedev.com",test:"https://opendoc.myshoplinestg.com",pre:"https://devcenter-pre.myshopline.com",prod:"https://developer.myshopline.com"},t=o.prod,r="shopline-app-extension",c=["dev","test","pre","prod"],_=["section","head","body"],E="app/edit-extension",i=["article","aside","div","footer","header","section"],n=["checkbox","radio","select"],a=50,l=10485760,T=25,p=102400,u=102400,N=[".jpg",".js",".css",".png",".svg",".hbs"],m=[".jpg",".js",".css",".png",".svg"],d=["assets","blocks","snippets","locales"],O=["blocks","components","i18n","public","compatibility"],I=[".json"],S=".shopline-cli.yml",L="shopline.ui.customizer.toml",g="shopline.function.extension.toml",A={EXTENSION_NAME_LENGTH_LIMIT:(0,e.getMessage)("extension.create.invalid_name",{limit:a}),ENV_INVALID:(0,e.getMessage)("extension.invalid_env",{envs:c.join(", ")}),ENV_FILE_NOT_FOUND:(0,e.getMessage)("extension.no_env_file"),SHOPLINE_CONFIG_NOT_FOUND:(0,e.getMessage)("extension.no_config_file",{config_name:S}),UNSUPPORTED_PROJECT_TYPE:(0,e.getMessage)("extension.invalid_type"),REPEAT_DIR_NAME:"The theme app extension directory already exists. Please rename or use another name.",INVALID_INTERPOLATION:"must be of the form {{ apps.metafields.<namespace>.<key>.value }}",PARTNER_INFO_NOT_COMPLETE:"PARTNER_INFO_NOT_COMPLETE",USER_NOT_LOGIN:"USER_NOT_LOGIN"},P=["index","collections_all","collection","products/detail","cart","blogs/list","blogs/detail","404","products/search","page","customers/login","customers/register","customers/account","customers/reset_password","customers/addresses","customers/order/list","customers/order/detail","password"],h=["index","collections_all","collection","product","cart","blog","article","404","search","page","policy","password","gift_card","customers/login","customers/register","customers/account","customers/reset_password","customers/addresses","customers/order/list","customers/orders","customers/order/detail","customers/order","customers/activate_account","customers/message","customers/forgot_password","customers/company","customers/logout","customers/bind_account","customers/unsub","customers/unsub_feedback"],U=[{label:"Theme App Extension",value:s.EExtensionTypes.themeAppExtension}];U.push({label:"checkout ui customizer",value:s.EExtensionTypes.checkoutUiCustomizer});const M="themeAppExtension",v="checkout-ui-customizer";
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{ensureCurrentEnvs:()=>u,showEnvInfos:()=>P,showPushEnvInfos:()=>l,getCartPathFromExtension:()=>N,getCheckoutPageUrlFromExtension:()=>p,getPartnerInfoIfNeed:()=>d,ExtensionContext:()=>_});const e=require("../../utils/node-package-manager"),t=require("./const"),n=require("./env"),r=require("./extension"),i=require("./types"),o=require("./utils"),a=require("../../utils/ui/render"),E=require("../../utils/output"),s=require("../../utils/error"),c=require("./connect/context");function I(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}async function u(e,i){let a=await (0,n.resolveEnvContents)(e,i),c={},I="",u="",P="";if(a.PARTNER_ID)c.PARTNER_ID=a.PARTNER_ID,u=await (0,r.getPartnerName)(a.PARTNER_ID);else{let{id:e,partnerName:t}=await (0,r.getSelectedPartner)();c.PARTNER_ID=e,u=t}if(a.SHOPLINE_APP_KEY&&a.SHOPLINE_APP_SECRET&&a.EXTENSION_TITLE&&a.EXTENSION_UUID){c.SHOPLINE_APP_KEY=a.SHOPLINE_APP_KEY,c.SHOPLINE_APP_SECRET=a.SHOPLINE_APP_SECRET,c.EXTENSION_TITLE=a.EXTENSION_TITLE,c.EXTENSION_UUID=a.EXTENSION_UUID;let e=await (0,r.getAppName)(c.PARTNER_ID,a.SHOPLINE_APP_KEY);if(e)P=e;else throw new s.AbortError("The application name corresponding to the app key cannot be found.")}else{let e={id:c.PARTNER_ID,partnerName:u},{appKey:n,appName:i,appSecret:a}=await (0,r.getSelectedApp)(e);P=i,c.SHOPLINE_APP_KEY=n,c.SHOPLINE_APP_SECRET=a,c.EXTENSION_TITLE=t.DEFAULT_CHECKOUT_UI_CUSTOMIZER_NAME,c.EXTENSION_UUID=(0,o.generateDevUUID)()}if(a.SHOP){c.SHOP=a.SHOP;let t=(0,o.getShopHandle)(a.SHOP,e);if(t)I=await (0,r.getStoreId)(a.PARTNER_ID,t);else throw new s.AbortError(`The developer store domain \`${E.outputToken.cyan(a.SHOP)}\` you have currently configured is incorrect.`)}else{let t=await (0,r.getSelectedShop)(c.PARTNER_ID,e);c.SHOP=(0,o.getStoreUrl)(null==t?void 0:t.handle,e),I=t.storeId}let{SHOPLINE_APP_KEY:l,SHOP:p}=c,d=await N(I,l,p);return c.EXTENSION_RESOURCE_URL=d,{envObject:c,partnerName:u,appName:P,storeId:I}}function P(e,t,n,r){let i=[`Org: ${e}`,`App: ${t}`,`Dev store: ${r}`,`Extension name: ${n}`];(0,a.renderInfo)({headline:["Using your previous dev settings",{char:":"}],body:[{list:{items:i}},"\nTo reset your default dev config, run",{command:"sl extension serve --reset"}]})}function l(e,t,n){let r=[`Org: ${e}`,`App: ${t}`,`Extension name: ${n}`];(0,a.renderInfo)({headline:["Your configs for dev were",{char:":"}],body:[{list:{items:r}},"\nTo reset your default dev config, run",{command:"sl extension push --reset"}]})}async function N(e,t,n){let i=await (0,r.getAvailableProductSkuId)(e,t,n);return`/cart/${i}:1`}function p(e){let{url:t,checkoutCartUrl:n,shop:r}=e,i=encodeURIComponent(`${t}/extensions`);return`https://${r}${n}?dev=${i}`}async function d(e,t){try{let i=await (0,n.resolveEnvContents)(e,t);if(i.PARTNER_ID){let e=await (0,r.getPartnerName)(i.PARTNER_ID);return{id:i.PARTNER_ID,partnerName:e}}}catch(e){}return(0,r.getSelectedPartner)()}class _{async getPackageManager(){return(0,e.getPackageManager)(this.cwd)}readEnvContent(){let e=(0,n.resolveEnvContents)(this.env,this.cwd);return e}async getInitializeLocaleEnvInNeed(){let e=await this.getPartnerInfoIfNeed(),t=await this.getAppInfo(e);return{partnerInfo:e,appInfo:t}}async getPartnerInfoIfNeed(){if(this.envObject.PARTNER_ID){let e=this.envObject.PARTNER_ID,t=await (0,r.getPartnerName)(e);return{id:e,partnerName:t}}return(0,r.getSelectedPartner)()}async getExtInfo(e){try{let t=(0,o.getExtType)(this.type),n=await (0,c.getAppExts)(e,t);return null==n?void 0:n[0]}catch(e){return null}}async getExt(e){var t,n;let r=await this.getExtInfo(e),i=(0,o.getExtensionName)("",this.type);return{extensionId:(null==r?void 0:r.id)?String(r.id):"",extensionUuid:null!==(t=null==r?void 0:r.uuid)&&void 0!==t?t:"",extensionName:null!==(n=null==r?void 0:r.name)&&void 0!==n?n:i}}async getFuncAppInfo(e){if(this.envObject.SHOPLINE_APP_KEY&&this.envObject.SHOPLINE_APP_SECRET&&this.envObject.EXTENSION_TITLE&&this.envObject.EXTENSION_UUID){let{SHOPLINE_APP_KEY:t,SHOPLINE_APP_SECRET:n,EXTENSION_TITLE:i,EXTENSION_UUID:o}=this.envObject,a=await (0,r.getAppName)(e.id,this.envObject.SHOPLINE_APP_KEY);if(a)return{EXTENSION_TITLE:i,appName:a,EXTENSION_UUID:o,SHOPLINE_APP_KEY:t,SHOPLINE_APP_SECRET:n};throw new s.AbortError("The application name corresponding to the app key cannot be found.")}{let{appKey:t,appName:n,appSecret:i}=await (0,r.getSelectedApp)(e),o=await this.getExt(t);return{EXTENSION_TITLE:o.extensionName,EXTENSION_UUID:o.extensionUuid,appName:n,SHOPLINE_APP_KEY:t,SHOPLINE_APP_SECRET:i}}}async getOtherAppInfo(e){if(this.envObject.SHOPLINE_APP_KEY&&this.envObject.SHOPLINE_APP_SECRET&&this.envObject.EXTENSION_TITLE&&this.envObject.EXTENSION_UUID&&this.envObject.EXTENSION_ID){let{SHOPLINE_APP_KEY:t,SHOPLINE_APP_SECRET:n,EXTENSION_TITLE:i,EXTENSION_UUID:o,EXTENSION_ID:a}=this.envObject,E=await (0,r.getAppName)(e.id,this.envObject.SHOPLINE_APP_KEY);if(E)return{EXTENSION_ID:a,EXTENSION_TITLE:i,appName:E,EXTENSION_UUID:o,SHOPLINE_APP_KEY:t,SHOPLINE_APP_SECRET:n};throw new s.AbortError("The application name corresponding to the app key cannot be found.")}{let{appKey:t,appName:n,appSecret:i}=await (0,r.getSelectedApp)(e),o=await this.getExt(t);return{EXTENSION_TITLE:o.extensionName,EXTENSION_UUID:o.extensionUuid,EXTENSION_ID:o.extensionId,appName:n,SHOPLINE_APP_KEY:t,SHOPLINE_APP_SECRET:i}}}async getAppInfo(e){return[i.EExtensionTypes.checkoutUiCustomizer,i.EExtensionTypes.themeAppExtension].includes(this.type)?this.getOtherAppInfo(e):this.getFuncAppInfo(e)}constructor(e,t,n){I(this,"type",void 0),I(this,"cwd",void 0),I(this,"env",void 0),I(this,"envObject",void 0),this.type=null!=e?e:i.EExtensionTypes.themeAppExtension,this.env=t,this.cwd=null!=n?n:process.cwd(),this.envObject=this.readEnvContent()}}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{createEntry:()=>x,beforeCreate:()=>E,getSelectedExtType:()=>w,buildGenerateOptions:()=>m,renderSuccessMessage:()=>q});const e=require("fs-extra"),t=require("../../../utils/ui/ui"),n=require("../env"),r=require("../extension"),i=require("../types"),o=require("../utils"),a=require("../api"),u=require("../generate"),s=require("../../../utils/error"),l=require("../const"),c=require("../../../utils/path"),p=require("../../../utils/output"),d=require("../../../utils/ui/render"),f=require("../functions/info"),h=g(require("../../../utils/winston")),y=g(require("../../../helpers/config"));function g(e){return e&&e.__esModule?e:{default:e}}async function x(e){let t=await E(e),n=await m(t),r=await (0,u.generateExtension)(n);await q(r),h.default.log(`Extension created: ${r.directory}`)}async function E(t){var i;let a=null==t?void 0:t.name,u=null!==(i=null==t?void 0:t.cwd)&&void 0!==i?i:process.cwd(),d=await (0,n.getEnv)();h.default.log(`Current store environment: ${d}`);let f=await w(),g=(0,o.getExtensionName)(a,f);h.default.log(`Current extension name: ${g}`),function(t,n){if(!t)throw new s.AbortError("Please specify an extension name");if(t.length>l.EXTENSION_NAME_LENGTH_LIMIT)throw new s.AbortError(l.ERRORS.EXTENSION_NAME_LENGTH_LIMIT);if((0,e.existsSync)((0,c.joinPath)(n,t)))throw new s.AbortError((0,p.outputContent)`${p.outputToken.cyan(t)} directory already exists.`.value)}(g,u);let x=await (0,r.getSelectedPartner)();y.default.currentPartner=x;let E=await (0,r.getSelectedApp)(x);return{extensionName:g,cwd:u,env:d,partnerInfo:x,appInfo:E,type:f}}async function w(){let e=[];h.default.log("Loading function extension templates..."),e=await (0,a.getFunctionTemplates)(),h.default.log("Choosing extension type to create...");let n=await (0,t.renderSelectPrompt)({message:"What type of extension are you creating?",choices:(0,o.buildExtensionTypeChoice)(e)});return h.default.log(`Current selected extension type: ${n}`),n}async function m(e){let{extensionName:t,appInfo:n,type:r,env:o,cwd:a,partnerInfo:u}=e,s=async()=>{if(r===i.EExtensionTypes.themeAppExtension)return"https://github.com/shoplineos/theme-app-extension-template.git";if(r===i.EExtensionTypes.checkoutUiCustomizer)return"https://github.com/shoplineos/checkout-ui-customizer-template.git";let e=await (0,f.getFunctionInfo)(r);if(e)return e.templateGit},l=await s();return h.default.log(`Current clone url: ${l}`),{name:t,app:{appKey:n.appKey,appSecret:n.appSecret},partnerId:u.id,type:r,cloneUrl:l,env:o,cwd:a}}async function q(e){let{specification:t}=e,n={headline:["Your extension was created in",{filePath:e.directory},{char:"."}],nextSteps:[],reference:[]};t.type===i.EExtensionTypes.checkoutUiCustomizer&&n.nextSteps.push(["To preview this extension along with the rest of the project, run",{command:"sl extension serve"}]),(0,d.renderSuccess)(n)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>i});const e=function(e){return e&&e.__esModule?e:{default:e}}(require("ora")),r=require("./api"),t=require("./resolve-env"),s=require("../../utils/messages"),n=require("../../helpers/sentry");async function i(i,a){let u,o,{EXTENSION_TITLE:c,SHOPLINE_APP_KEY:l,SHOPLINE_APP_SECRET:d,EXTENSION_ID:g,EXTENSION_UUID:f}=await (0,t.resolveEnvContents)(i,a);if(u=g&&"undefined"!==g?g:"",o=f&&"undefined"!==f?f:"",!u){let p=(0,e.default)((0,s.getMessage)("extension.register.waiting_text")).start();try{let m=await (0,r.createExtensionInstance)({appKey:l,appSecret:d,name:c}),{id:x,uuid:E}=m||{};if(!x||!E)return await Promise.reject(Error((0,s.getMessage)("extension.register.fail")));u=x,o=E,p.succeed((0,s.getMessage)("extension.register.success",{name:c}))}catch(_){return(0,n.reportBug)(_),p.fail(),Promise.reject(_.message||_)}}return{EXTENSION_ID:u,EXTENSION_TITLE:c,SHOPLINE_APP_KEY:l,SHOPLINE_APP_SECRET:d,EXTENSION_UUID:o}}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>f});const e=function(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=i(r);if(t&&t.has(e))return t.get(e);var n={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var f=o?Object.getOwnPropertyDescriptor(e,u):null;f&&(f.get||f.set)?Object.defineProperty(n,u,f):n[u]=e[u]}return n.default=e,t&&t.set(e,n),n}(require("js-yaml")),r=u(require("path")),t=u(require("fs-extra")),n=require("./const"),o=require("../../utils/error");function u(e){return e&&e.__esModule?e:{default:e}}function i(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(i=function(e){return e?t:r})(e)}async function f(u=process.cwd()){let i=r.default.join(u,n.EXTENSION_CONFIG_FILE);if(!t.default.existsSync(i))throw new o.AbortError(n.ERRORS.SHOPLINE_CONFIG_NOT_FOUND);let f=e.load(t.default.readFileSync(i,"utf8"));return(null==f?void 0:f.project_type)==="extension"?Promise.resolve():Promise.reject(Error(n.ERRORS.UNSUPPORTED_PROJECT_TYPE))}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(exports,{getEnv:()=>c,getEnvVariable:()=>a,resolveEnvContents:()=>s,writeEnvFile:()=>f,clearEnvFile:()=>d});const e=l(require("fs-extra")),t=l(require("dotenv")),r=l(require("../../utils/get-store-env"));require("./inquirer");const n=require("./api"),i=require("./const"),u=require("./utils"),o=require("../../utils/error");function l(e){return e&&e.__esModule?e:{default:e}}async function c(e){let t=e;if(t&&i.ENVS.includes(t))return(0,n.changeBaseURL)(t),t;if(t=await a(),!i.ENVS.includes(t))throw new o.AbortError(i.ERRORS.ENV_INVALID);return(0,n.changeBaseURL)(t),t}async function a(){let e=(0,r.default)();return e||"prod"}function s(r,n=process.cwd()){let l=(0,u.getEnvPath)(r,n);if(!e.default.existsSync(l))throw new o.AbortError(i.ERRORS.ENV_FILE_NOT_FOUND);let c=t.default.parse(e.default.readFileSync(l,"utf8"));return c}function f(t,r,n=process.cwd()){let i={};try{i=s(t,n)}catch(e){}let o={...i,...r},l=Reflect.ownKeys(o).map(e=>"undefined"===o[e]?"":`${e}=${o[e]}`).join("\n"),c=(0,u.getEnvPath)(t,n);e.default.writeFileSync(c,l)}function d(t,r){let n=(0,u.getEnvPath)(t,r);e.default.writeFileSync(n,"")}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(exports,{getSelectedPartner:()=>u,getPartnerName:()=>s,getSelectedApp:()=>c,getAppLists:()=>p,getSelectedShop:()=>d,handleNoStore:()=>g,getPartnerAccessToken:()=>f,getStoreId:()=>h,getAppName:()=>v,getAvailableProductSkuId:()=>w});const e=require("../../utils/ui/ui"),t=require("./api"),r=require("./utils"),a=require("../../utils/error"),n=require("../../utils/ui/render"),o=require("./openapi"),i=require("../../utils/output"),l=function(e){return e&&e.__esModule?e:{default:e}}(require("../../utils/winston"));async function u(){let n=[];if(l.default.log("Loading partner list..."),await (0,e.renderTasks)([{title:"Loading available partner organizations",task:async()=>{n=await (0,t.getPartnerList)()}}]),!n.length)throw new a.AbortError("No partner in your account.");l.default.log("Selecting partner organization...");let o=await (0,e.renderSelectPrompt)({message:"Select partner organization?",choices:(0,r.buildPartnerChoice)(n)}),i=n.find(e=>e.id===o).partnerName;return l.default.log(`Selected partner organization: ${i}`),{id:o,partnerName:i}}async function s(e){let r=await (0,t.getPartnerList)(),n=r.find(t=>t.id===e);if(null==n?void 0:n.partnerName)return n.partnerName;throw new a.AbortError((0,i.outputContent)`The partner id: ${i.outputToken.cyan(e)} does not exist in your account.`,(0,i.outputContent)`Please add the ${i.outputToken.magenta("--reset")} flag after your command.`)}async function c(t){let a=[];if(l.default.log("Loading your apps..."),await (0,e.renderTasks)([{title:"Loading your apps",task:async()=>{a=await p(t.id)}}]),!a.length)throw Error("No apps in your account.");l.default.log("Selecting app...");let n=await (0,e.renderSelectPrompt)({message:"Which app would like to register this extension with?",choices:(0,r.buildAppChoice)(a,t.partnerName)});return l.default.log(`Selected app: ${JSON.stringify(n)}`),n}async function p(e){let{dataList:r=[]}=await (0,t.getAppList)({pageSize:300,partnerId:e});return r}async function d(a,n){let o=[];if(await (0,e.renderTasks)([{title:"Loading your development store",task:async()=>{o=await (0,t.getStoreList)(a)}}]),o.length){if(1===o.length){let[e]=o;return e}{let t=await (0,e.renderSelectPrompt)({message:"Which development store would you like to use?",choices:(0,r.buildStoreChoice)(o)});return t}}await g(a,n)}async function g(t,a){(0,n.renderWarning)({headline:["This partner account does not have a development store."],body:["Please visit",{link:{label:"the developer platform",url:(0,r.getDeveloperPlatformLink)(a)}},"to create a development store and try again."]});let o=await (0,e.renderSelectPrompt)({message:"How will you proceed to the next step?",choices:[{label:"Developement store has been created, please retry!",value:1},{label:"Abort",value:0}]});o?await d(t,a):process.exit(1)}async function f(e,r){let a=await (0,t.getAccessToken)({storeId:e,appKey:r});return a.token||""}async function h(e,r){let a=await (0,t.getStoreInfo)(e,r);return a.storeId||""}async function v(e,r){let a=await (0,t.getAppInfo)(e,r);return a.appName||""}async function w(e,t,r){let n=new a.AbortError("Your store need to have at least one product to sever checkout ui customizer"),l=await f(e,t),u=await (0,o.getOpenApiHttp)(l,r);try{let e=await u.get("/products/products.json",{params:{status:"active"}});if(e.products.length>0){var s,c;(0,i.outputDebug)((0,i.outputContent)`You have an available first product variants: ${i.outputToken.json(null===(s=e.products)||void 0===s?void 0:null===(c=s[0])||void 0===c?void 0:c.variants)}`);let t=(()=>{var t;let r=e.products.find(e=>e.variants.length&&e.variants.some(e=>e.id));return null===(t=null==r?void 0:r.variants[0])||void 0===t?void 0:t.id})();if(t)return t}}catch(e){throw n}throw n}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"initFunctionExtension",{enumerable:!0,get:()=>p});const e=require("../../../utils/path"),t=require("../clone-repo"),n=require("../../../utils/fs"),a=require("../../../utils/hbs"),i=require("../../../utils/node-package-manager"),l=require("../../../utils/ui/ui"),o=require("../../../utils/output"),r=require("../utils"),u=require("../env"),s=function(e){return e&&e.__esModule?e:{default:e}}(require("../../../utils/winston"));async function p(i){let{app:{appKey:l,appSecret:p},name:c,env:g,cwd:f,cloneUrl:E,partnerId:P,type:m}=i,y=(0,e.joinPath)(f,`.${c}`);s.default.log(`Downloading repository: ${E}`),await (0,t.downloadRepository)(E,y,f,{"--branch":"master"});let w=(0,e.joinPath)(y,`templates/${m}`),I=(0,e.joinPath)(f,c);(0,n.pathExists)(w)&&(s.default.log(`Copying template files from ${w} to ${I}`),await (0,a.recursiveHbsTemplateCopy)(w,I,{name:c},y),await d(I),s.default.log(`Write .env.${g} file`),function(e,t,n){let a={PARTNER_ID:e.partnerId,SHOPLINE_APP_KEY:e.appKey,SHOPLINE_APP_SECRET:e.appSecret,EXTENSION_TITLE:e.name,EXTENSION_UUID:(0,r.generateDevUUID)()};(0,u.writeEnvFile)(t,a,`${n}/${e.name}`),(0,o.outputCompleted)((0,o.outputContent)`.env saved to project root`)}({partnerId:P,appKey:l,appSecret:p,name:c},g,f))}async function d(e){s.default.log("Get package manager...");let t=await (0,i.getPackageManager)(e);s.default.log(`Using ${t}`),s.default.log("Installing dependencies..."),await (0,l.renderTasks)([{title:`Installing dependencies with ${t}`,task:async()=>{await (0,i.addNPMDependencies)([],{type:"dev",directory:e,packageManager:t})}}]),s.default.log("Dependencies installed successfully"),(0,o.outputCompleted)((0,o.outputContent)`Dependencies installed`)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{getFunctionInfo:()=>n,isFunctionType:()=>i});const e=require("../api");let t=null;async function n(n){if(t)return t.find(e=>e.templateName===n);let i=await (0,e.getFunctionTemplates)(),a=i.find(e=>e.templateName===n);return t=i,a}async function i(n){if(t){let e=t.find(e=>e.templateName===n);return!!e}let i=await (0,e.getFunctionTemplates)(),a=i.find(e=>e.templateName===n);return!!a}
@@ -0,0 +1,8 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"pushFunctionExt",{enumerable:!0,get:()=>v});const e=y(require("fs")),t=y(require("archiver")),n=y(require("form-data")),i=y(require("../../../helpers/config")),o=require("../../../utils/ui/ui"),r=require("../env"),u=require("../api"),a=require("./info"),s=require("../../../utils/error"),l=require("../../../utils/output"),p=require("./schemas"),d=require("../../../utils/system"),c=require("../const"),f=require("../../../utils/path"),h=require("../zip"),w=require("../utils"),m=require("../../../utils/ui/render"),g=require("../../../utils/fs"),E=y(require("../../../utils/winston"));function y(e){return e&&e.__esModule?e:{default:e}}async function v(n){let i=n.readEnvContent(),o=await (0,p.getExtensionConfig)(n.cwd);E.default.log(`Create function (${n.type}) extension instance...`);let u=await I(i,n.type,o.version);(0,l.outputDebug)((0,l.outputContent)`Write ${l.outputToken.json(u)} content to ${l.outputToken.cyan(`.env.${n.env}`)} file to ${n.cwd}`),E.default.log(`Write .env.${n.env} file...`),(0,r.writeEnvFile)(n.env,u,n.cwd);let d=await (0,a.getFunctionInfo)(n.type),w=o.build;if(null==w?void 0:w.command){var m,g;E.default.log(`Build function extension with ${w.command} to ${w.path}...`),await b(w.command,w.path,{env:n.env,type:n.type});let r=(0,f.joinPath)(n.cwd,`${i.EXTENSION_TITLE}.zip`);E.default.log(`Compress function extension to ${r}...`),await (m=null==d?void 0:d.filterPath,g=n.cwd,new Promise((n,i)=>{(0,l.outputDebug)((0,l.outputContent)`Compressing to ${l.outputToken.path(r)}`);let o=(0,t.default)("zip",{zlib:{level:9}}),u=e.default.createWriteStream(r);for(let e of(u.on("close",()=>{}),u.on("finish",()=>{n({size:o.pointer()})}),o.on("error",()=>{i(new s.AbortError("Failed to compress!"))}),o.pipe(u),m))o.glob(e,{cwd:g});o.finalize()}));let u=await N(r,o,i,n);E.default.log("Push function extension..."),await P(u),E.default.log("Push function extension success!"),(0,l.outputDebug)("Remove .zip file"),E.default.log("Remove .zip file..."),(0,h.removeZip)(r)}else throw new s.AbortError((0,l.outputContent)`The function extension ${n.type} doesn't have a build command or it's empty
2
+ Edit the ${c.FUNCTION_CONFIG_FILE} configuration file and set how to build the extension.
3
+
4
+ [build]
5
+ command = "{COMMAND}"
6
+
7
+ Note that the command must output a dist/function.wasm file.
8
+ `)}async function I(e,t,n){let i=e;return i.EXTENSION_UUID&&!i.EXTENSION_UUID.startsWith("dev-")?e:(await (0,o.renderTasks)([{title:"Registering with SHOPLINE",task:async()=>{let o=await (0,a.getFunctionInfo)(t),r=await (0,u.registerFunction)({appKey:e.SHOPLINE_APP_KEY,functionType:t,version:n,language:null==o?void 0:o.language}),{uuid:l}=r||{};if(!l)throw new s.AbortError("Failed to register. Please retry again!");i.EXTENSION_UUID=l}}]),i)}async function b(e,t,{type:n,env:i}){(0,l.outputDebug)("Start build function extension"),await (0,o.renderConcurrent)({processes:[{prefix:"Building extension with npm",action:async(o,r)=>{let u=e.split(/\s+/).filter(Boolean),a=[`-o=${t}`,`--env=${i}`,`--type=${n}`],s=["exec","--"].concat(u).concat(a);await (0,d.exec)("npm",s,{stdout:o,stderr:r})}}],showTimestamps:!1})}async function P(e){(0,l.outputDebug)((0,l.outputContent)`Pushing ${l.outputToken.path(e.output)} file to remote`),await (0,o.renderTasks)([{title:"Pushing your extension to Shopline",task:async()=>{await q(e)}}])}async function q(e){let t=new n.default;t.append("wasmFile",e.wasmFile),t.append("codeFile",e.zipFile),t.append("uuid",e.uuid),t.append("appKey",e.appKey),t.append("funcInput",e.inputGraphqlContent),t.append("storeId",e.storeId),t.append("UiCustomizer",e.uiPaths),t.append("name",e.name);let i=await (0,u.pushFunction)(t);i?(0,m.renderSuccess)({headline:["Pushed",{userInput:e.name},"to Shopline!"]}):(0,m.renderFatalError)(new s.AbortError(`Pushed to SHOPLINE with errors on ${(0,w.formatTime)()}`))}async function N(t,n,o,r){var u,a;let l=e.default.createReadStream(t),p=null===(u=n.build)||void 0===u?void 0:u.path,d=null===(a=n.ui)||void 0===a?void 0:a.paths,c=(0,f.joinPath)(r.cwd,p);if(!await (0,g.fileExists)(c))throw new s.AbortError("Cannot found wasm file in this project");let h=e.default.createReadStream(c),w=(0,f.joinPath)(r.cwd,"input.graphql");if(!await (0,g.fileExists)(w))throw new s.AbortError("Cannot found input.graphql file in this project");let m=await (0,g.readFile)(w),E=(()=>{let e=Object.keys(d);if(e.length>0){let t=e.map(e=>({name:e,path:d[e]}));return JSON.stringify(t)}return""})();return{wasmFile:h,zipFile:l,output:t,uuid:o.EXTENSION_UUID,appKey:o.SHOPLINE_APP_KEY,name:o.EXTENSION_TITLE,inputGraphqlContent:m,storeId:i.default.currentStoreId,uiPaths:E}}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var o in t)Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}(exports,{FunctionTypeSchema:()=>a,FunctionConfigSchema:()=>s,getExtensionConfig:()=>d});const e=require("../../../utils/path"),t=require("../../../utils/schema"),o=require("../const"),i=require("../../../utils/fs"),r=require("../../../utils/toml"),n=require("../../../utils/error"),a=t.zod.object({type:t.zod.string()}),s=t.zod.object({version:t.zod.string().default(""),build:t.zod.object({command:t.zod.string().transform(e=>""===e.trim()?void 0:e).optional(),path:t.zod.string().default("dist/function.wasm")}).optional(),ui:t.zod.object({paths:t.zod.object({create:t.zod.string(),details:t.zod.string()}).optional()}).optional()});async function d(t){let a=(0,e.joinPath)(t,o.FUNCTION_CONFIG_FILE);if(await (0,i.fileExists)(a)){let e=await (0,i.readFile)(a),t=(0,r.decodeToml)(e),o=await s.parse(t);return o}throw new n.AbortError("The directory you are in is not a valid extension project.")}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"generateExtension",{enumerable:!0,get:()=>g});const e=f(require("pathe")),t=require("./types"),i=require("./clone-repo"),a=require("../../utils/path"),n=require("../../utils/hbs"),o=require("../../utils/fs"),r=require("../../utils/node-package-manager"),l=require("../../utils/ui/ui"),u=require("../../utils/output"),s=require("./env"),p=require("./utils"),d=require("./functions/generate"),c=f(require("../../utils/winston"));function f(e){return e&&e.__esModule?e:{default:e}}async function g(i){switch(i.type){case t.EExtensionTypes.themeAppExtension:await w(i);break;case t.EExtensionTypes.checkoutUiCustomizer:await y(i);break;default:await (0,d.initFunctionExtension)(i)}return{directory:(0,a.relativizePath)(e.default.join(i.cwd,i.name),i.cwd),specification:i}}async function y(e){let{app:{appKey:t,appSecret:r},name:l,env:u,cwd:s,cloneUrl:p,partnerId:d}=e,f=(0,a.joinPath)(s,`.${l}`);c.default.log(`Downloading repository: ${p}`),await (0,i.downloadRepository)(p,f,s);let g=(0,a.joinPath)(s,l);(0,o.pathExists)(f)&&(c.default.log(`Copying template files from ${f} to ${g}`),await (0,n.recursiveHbsTemplateCopy)(f,g,{name:l},f),await m(g),c.default.log(`Write .env.${u} file`),E({partnerId:d,appKey:t,appSecret:r,name:l},u,s))}async function w(e){let{app:{appKey:t,appSecret:o},name:r,env:l,cwd:u,cloneUrl:s,partnerId:p}=e,d=(0,a.joinPath)(u,`.${r}`),f=(0,a.joinPath)(u,r);c.default.log(`Downloading repository: ${s}`),await (0,i.downloadRepository)(s,d,u,{"--branch":"main"}),c.default.log(`Copying template files from .${r} to ${r}`),await (0,n.recursiveThemeTemplateCopy)(d,f),c.default.log(`Write .env.${l} file`),E({partnerId:p,appKey:t,appSecret:o,name:r},l,u)}function E(e,t,i){let a={PARTNER_ID:e.partnerId,SHOPLINE_APP_KEY:e.appKey,SHOPLINE_APP_SECRET:e.appSecret,EXTENSION_TITLE:e.name,EXTENSION_UUID:(0,p.generateDevUUID)()};(0,s.writeEnvFile)(t,a,`${i}/${e.name}`),(0,u.outputCompleted)((0,u.outputContent)`.env saved to project root`)}async function m(e){c.default.log("Get package manager...");let t=await (0,r.getPackageManager)(e);c.default.log(`Using ${t}`),c.default.log("Installing dependencies..."),await (0,l.renderTasks)([{title:`Installing dependencies with ${t}`,task:async()=>{await (0,r.addNPMDependencies)([],{type:"prod",directory:e,packageManager:t})}}]),c.default.log("Dependencies installed successfully"),(0,u.outputCompleted)((0,u.outputContent)`Dependencies installed`)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>g});const e=h(require("../../helpers/config")),t=require("../../utils/output"),r=require("../../utils/ui/render"),n=require("./serve"),i=require("../../utils/error"),o=require("./connect/index"),a=require("./create/index"),u=require("./push/index"),c=require("../../utils/local"),s=require("./push/build"),l=require("../theme/utils"),d=h(require("../../utils/winston"));function h(e){return e&&e.__esModule?e:{default:e}}class g{static async createAction(t){try{d.default.log("Checking login..."),e.default.isLogin(),await (0,a.createEntry)(t)}catch(e){(0,l.handleError)(e)}}static async buildAction(e){try{await (0,s.buildExtension)(e)}catch(e){(0,l.handleError)(e)}}static async pushAction(t){try{let r=(0,c.isCI)();r||(d.default.log("Checking login..."),e.default.isLogin()),await (0,u.pushExtension)(t,r)}catch(e){(0,l.handleError)(e)}}static async connectAction(t){try{d.default.log("Checking login..."),e.default.isLogin(),await (0,o.connect)(t)}catch(e){(0,l.handleError)(e)}}static async serveAction(t){try{d.default.log("Checking login..."),e.default.isLogin(),await (0,n.serve)(t)}catch(e){(0,l.handleError)(e)}}static async tunnelAction(n){if(!n){(0,r.renderFatalError)(new i.AbortError("requires a token argument",`Find it on your ngrok dashboard: ${t.outputToken.link("https://dashboard.ngrok.com/auth/your-authtoken","https://dashboard.ngrok.com/auth/your-authtoken")}`));return}e.default.ngrokToken=n,(0,t.outputSuccess)("Authentication ngrok token successfully")}}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(exports,{askForEnv:()=>s,getEnvFiles:()=>u,askChooseEnv:()=>o,askForSelectAppExt:()=>c});const e=a(require("fs-extra")),t=a(require("inquirer")),r=require("../../utils/messages"),n=require("./const");function a(e){return e&&e.__esModule?e:{default:e}}async function s(){let e=[{type:"list",name:"env",message:(0,r.getMessage)("extension.create.ask_env"),choices:n.ENVS,default:n.ENVS[0]}];return t.default.prompt(e)}async function u(t){let r=e.default.readdirSync(t).filter(e=>null==e?void 0:e.startsWith(".env.")),a=r.map(e=>{let t=null==e?void 0:e.replace(".env.","");return t});return 0===a.length?Promise.reject(Error(n.ERRORS.ENV_FILE_NOT_FOUND)):a}async function o(e=process.cwd()){try{let n=await u(e),a=[{type:"list",name:"env",message:(0,r.getMessage)("extension.create.ask_env"),choices:n,default:n[0]}];return await t.default.prompt(a)}catch(e){return Promise.reject(e.message||e)}}async function c(e,r){let n=e.map(e=>{let{appName:t,appSecret:n}=e,a=e.exts.reduce((a,s)=>(a.name=`${e.appName} by ${r}: ${s.name}`,a.value={...s,appName:t,appSecret:n},a),Object.create(null));return a}),a=[{type:"list",name:"ext",message:"Which extension would you like to connect to?",choices:n,default:e[0]}];return t.default.prompt(a)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"parseConfigurationFile",{enumerable:!0,get:()=>o});const e=require("../../utils/error"),t=require("../../utils/fs"),r=require("../../utils/output"),i=require("../../utils/string"),n=require("../../utils/toml");async function o(e,t,i=n.decodeToml){let o=await u(t,i);if(!o)return{};let a=e.safeParse(o);if(!a.success){let e=JSON.stringify(a.error.issues,null,2);return s((0,r.outputContent)`Fix a schema error in ${r.outputToken.path(t)}:\n${e}`)}return a.data}async function u(e,o=n.decodeToml){let u;if(!await (0,t.fileExists)(e))return s((0,r.outputContent)`Couldn't find the configuration file at ${r.outputToken.path(e)}`);let a=await (0,t.readFile)(e);try{u=o(a)}catch(t){if(t.line&&t.pos&&t.col)return s((0,r.outputContent)`Fix the following error in ${r.outputToken.path(e)}:\n${t.message}`);throw t}return{...Object.fromEntries(Object.entries(u).map(e=>[(0,i.camelize)(e[0]),e[1]]))}}function s(t){throw new e.AbortError(t)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(exports,{getBaseEndPoint:()=>a,getOpenApiHttp:()=>i});const e=s(require("axios")),t=s(require("form-data")),r=s(require("../../utils/debug")),n=require("../../helpers/sentry"),o=s(require("../../utils/format-protocol"));function s(e){return e&&e.__esModule?e:{default:e}}function a(e){return(0,o.default)(e)+"/admin/openapi/v20230301"}function i(o,s){let i=e.default.create({baseURL:a(s),maxBodyLength:1/0,maxContentLength:1/0,headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`}});return i.interceptors.request.use(e=>(r.default.printRequest(e),e.data instanceof t.default&&Object.assign(e.headers,e.data.getHeaders()),e),e=>Promise.reject(e)),i.interceptors.response.use(e=>{let{config:t}=e;return r.default.printResponse(t,e),(0,n.reportHttpRes)(e),e.data},e=>{var t,r;e.response&&(0,n.reportHttpRes)(e.response),(0,n.reportBug)(e);let o=null===(t=e.response)||void 0===t?void 0:null===(r=t.data)||void 0===r?void 0:r.errors;if(o)throw Error(o);return Promise.reject(e)}),i}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{pushExtension:()=>a,buildExtension:()=>c});const e=require("../../../utils/error"),t=require("../context"),n=require("../env"),i=require("../types"),r=require("../utils"),o=require("./checkout-ui"),s=require("./theme"),u=require("./show"),l=function(e){return e&&e.__esModule?e:{default:e}}(require("../../../utils/winston"));async function a(l,a){var c;let{env:w}=l,p=null!==(c=null==l?void 0:l.cwd)&&void 0!==c?c:process.cwd(),d=await (0,n.getEnv)(w),x=await (0,r.getExtensionType)(p);if(!x)throw new e.AbortError("Unknow extension type");l.reset&&(0,n.clearEnvFile)(d,p);let E=new t.ExtensionContext(x,d,p);a||await (0,u.showReuseInfo)(E),x===i.EExtensionTypes.themeAppExtension?await (0,s.pushThemeExt)(E):await (0,o.pushCheckoutUiCustomizer)(E)}async function c(u){var a;let{env:c}=u,w=null!==(a=null==u?void 0:u.cwd)&&void 0!==a?a:process.cwd(),p=await (0,n.getEnv)(c);l.default.log(`Current store environment: ${p}`);let d=await (0,r.getExtensionType)(w);if(l.default.log(`Current selected extension type: ${d}`),!d)throw new e.AbortError("Unknow extension type");u.reset&&(l.default.log("Clear env file..."),(0,n.clearEnvFile)(p,w));let x=new t.ExtensionContext(d,p,w);d===i.EExtensionTypes.themeAppExtension?await (0,s.buildThemeExt)(x):await (0,o.buildCheckoutUiCustomizer)(x)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var i in t)Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}(exports,{pushCheckoutUiCustomizer:()=>y,buildCheckoutUiCustomizer:()=>I});const e=h(require("fs")),t=h(require("archiver")),i=h(require("form-data")),o=h(require("path")),n=require("../../../utils/error"),u=require("../api"),a=require("../../../utils/ui/ui"),r=require("../env"),l=require("../const"),s=require("../../../utils/path"),c=require("../../../utils/node-package-manager"),p=require("../../../utils/system"),d=require("../zip"),f=require("../../../utils/ui/render"),E=require("../utils"),g=require("../serve/localization"),w=require("../../../utils/output"),T=h(require("../../../utils/winston"));function h(e){return e&&e.__esModule?e:{default:e}}async function y(e){let t=e.readEnvContent();T.default.log("Create checkout ui customizer instance...");let i=await C(t);(0,w.outputDebug)((0,w.outputContent)`Write ${w.outputToken.json(i)} content to ${w.outputToken.cyan(`.env.${e.env}`)} file to ${e.cwd}`),T.default.log(`Write .env.${e.env} file...`),(0,r.writeEnvFile)(e.env,i,e.cwd),T.default.log("Validate localization files..."),await m(e.cwd),T.default.log("Build checkout ui customizer..."),await P(e.cwd);let o=(0,s.joinPath)(e.cwd,`${t.EXTENSION_TITLE}.zip`);T.default.log("Compress checkout ui customizer..."),await _(o,e.cwd),T.default.log("Push checkout ui customizer..."),await N(i,o,e),T.default.log("Push checkout ui customizer success!"),(0,w.outputDebug)("Remove .zip file"),T.default.log("Remove .zip file..."),(0,d.removeZip)(o)}async function I(t){let i=t.readEnvContent();T.default.log("Create checkout ui customizer instance...");let n=await C(i);(0,w.outputDebug)((0,w.outputContent)`Write ${w.outputToken.json(n)} content to ${w.outputToken.cyan(`.env.${t.env}`)} file`),T.default.log(`Write .env.${t.env} file...`),(0,r.writeEnvFile)(t.env,n,t.cwd),T.default.log("Validate localization files..."),await m(t.cwd),T.default.log("Build checkout ui customizer..."),await P(t.cwd);let a=o.default.join(t.cwd,".plugin.zip");T.default.log("Compress checkout ui customizer..."),await _(a,t.cwd);let l=o.default.join(t.cwd,".plugin.json"),{SHOPLINE_APP_KEY:s,SHOPLINE_APP_SECRET:c,EXTENSION_ID:p,EXTENSION_UUID:d}=n;T.default.log("Write configuration to .plugin.json file..."),e.default.writeFileSync(l,JSON.stringify({appKey:s,appSecret:c,extensionId:p,extensionUuid:d,type:u.ERegisterType.CHECKOUT_UI,category:u.ECategory.CHECKOUT},null,2))}async function C(e){let t=e;return t.EXTENSION_ID&&t.EXTENSION_UUID?e:(await (0,a.renderTasks)([{title:"Registering with SHOPLINE",task:async()=>{let i=await (0,u.createExtensionInstance)({appKey:e.SHOPLINE_APP_KEY,appSecret:e.SHOPLINE_APP_SECRET,name:e.EXTENSION_TITLE,type:u.ERegisterType.CHECKOUT_UI,category:u.ECategory.CHECKOUT}),{id:o,uuid:a}=i||{};if(!o||!a)throw new n.AbortError("Failed to register. Please retry again!");t.EXTENSION_ID=o,t.EXTENSION_UUID=a}}]),t)}async function m(e){(0,w.outputDebug)("Validating locales/*.json default localization file");let t=await (0,g.getLocalizationFilePaths)({directory:e}),i=(0,g.findDefaultLocale)(t);(0,g.validateDefaultLanguage)(i,t)}async function P(e){(0,w.outputDebug)("Start build checkout ui customizer");let t=await (0,c.getPackageManager)(e);await (0,a.renderConcurrent)({processes:[{prefix:`Building extension with ${t}`,action:async(e,i)=>{let o=[];"npm"===t&&o.push("run"),o.push("build"),await (0,p.exec)(t,o,{stdout:e,stderr:i})}}],showTimestamps:!1})}function _(i,o){return new Promise((u,a)=>{(0,w.outputDebug)((0,w.outputContent)`Compressing to ${w.outputToken.path(i)}`);let r=(0,t.default)("zip",{zlib:{level:9}}),s=e.default.createWriteStream(i);s.on("close",()=>{}),s.on("finish",()=>{u({size:r.pointer()})}),r.on("error",()=>{a(new n.AbortError("Failed to compress!"))}),r.pipe(s),r.glob("locales/**/*.json",{cwd:o}).glob("build/**/*.js",{cwd:o}).glob(l.CHECKOUT_UI_CONFIG_FILE,{cwd:o}).finalize()})}async function N(e,t,i){(0,w.outputDebug)((0,w.outputContent)`Pushing ${w.outputToken.path(t)} file to remote`),await (0,a.renderTasks)([{title:"Pushing your extension to Shopline",task:async()=>{await S(e,t,i)}}])}async function S(t,o,a){let r=e.default.createReadStream(o),l=new i.default;l.append("extensionFile",r),l.append("appKey",t.SHOPLINE_APP_KEY),l.append("appSecret",t.SHOPLINE_APP_SECRET),l.append("extensionId",t.EXTENSION_ID),l.append("extensionUuid",t.EXTENSION_UUID),l.append("type",u.ERegisterType.CHECKOUT_UI),l.append("category",u.ECategory.CHECKOUT);let s=await (0,u.pushExtension)(l);if(null==s?void 0:s.id){let e=(0,E.getExtensionLink)({appKey:t.SHOPLINE_APP_KEY,extensionUuid:t.EXTENSION_UUID,env:a.env});(0,f.renderSuccess)({headline:["Pushed",{userInput:t.EXTENSION_TITLE},"to a draft on",(0,E.formatTime)(s.updateTime)],body:["Visit",{link:{label:e,url:e}},"to version and publish your extenison",{char:"."}]})}else(0,f.renderFatalError)(new n.AbortError(`Pushed to SHOPLINE with errors on ${(0,E.formatTime)()}`))}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"pushExtension",{enumerable:!0,get:()=>c});const e=require("../../../utils/error"),t=require("../context"),n=require("../env"),r=require("../types"),i=require("../utils"),o=require("./checkout-ui"),u=require("./theme"),s=require("./show"),l=require("../functions/push"),a=function(e){return e&&e.__esModule?e:{default:e}}(require("../../../utils/winston"));async function c(c,p){var w;let{env:h}=c,d=null!==(w=null==c?void 0:c.cwd)&&void 0!==w?w:process.cwd(),x=await (0,n.getEnv)(h);a.default.log(`Current store environment: ${x}`);let f=await (0,i.getExtensionType)(d);if(a.default.log(`Current selected extension type: ${f}`),!f)throw new e.AbortError("Unknown extension type");c.reset&&(a.default.log("Clearing environment variables..."),(0,n.clearEnvFile)(x,d));let E=new t.ExtensionContext(f,x,d);p||(a.default.log("Show environment information..."),await (0,s.showReuseInfo)(E)),f===r.EExtensionTypes.themeAppExtension?await (0,u.pushThemeExt)(E):f===r.EExtensionTypes.checkoutUiCustomizer?await (0,o.pushCheckoutUiCustomizer)(E):await (0,l.pushFunctionExt)(E)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"showReuseInfo",{enumerable:!0,get:()=>t});const e=require("../context"),E=require("../env"),n=require("../functions/info");async function t(t){let{appInfo:I,partnerInfo:N}=await t.getInitializeLocaleEnvInNeed(),i={EXTENSION_TITLE:I.EXTENSION_TITLE,EXTENSION_UUID:I.EXTENSION_UUID,SHOPLINE_APP_KEY:I.SHOPLINE_APP_KEY,SHOPLINE_APP_SECRET:I.SHOPLINE_APP_SECRET,PARTNER_ID:N.id};await (0,n.isFunctionType)(t.type)||(i.EXTENSION_ID=I.EXTENSION_ID),(0,E.writeEnvFile)(t.env,i,t.cwd),(0,e.showPushEnvInfos)(N.partnerName,I.appName,I.EXTENSION_TITLE)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{pushThemeExt:()=>u,buildThemeExt:()=>o});const e=i(require("../register")),t=require("../env"),n=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&Object.prototype.hasOwnProperty.call(e,u)){var o=i?Object.getOwnPropertyDescriptor(e,u):null;o&&(o.get||o.set)?Object.defineProperty(r,u,o):r[u]=e[u]}return r.default=e,n&&n.set(e,r),r}(require("./zip")),r=i(require("../../../utils/winston"));function i(e){return e&&e.__esModule?e:{default:e}}function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}async function u(i){r.default.log("Create theme extension instance...");let{EXTENSION_ID:a,EXTENSION_TITLE:u,SHOPLINE_APP_KEY:o,SHOPLINE_APP_SECRET:l,EXTENSION_UUID:f,PARTNER_ID:c}=await (0,e.default)(i.env,i.cwd),d={SHOPLINE_APP_KEY:o,SHOPLINE_APP_SECRET:l,EXTENSION_TITLE:u,EXTENSION_ID:a,EXTENSION_UUID:f,PARTNER_ID:c};r.default.log(`Write environment variables to .env.${i.env} file...`),(0,t.writeEnvFile)(i.env,d,i.cwd),await (0,n.default)(d,i.env,i.cwd)}async function o(i){r.default.log("Create theme extension instance...");let{EXTENSION_ID:a,EXTENSION_TITLE:u,SHOPLINE_APP_KEY:o,SHOPLINE_APP_SECRET:l,EXTENSION_UUID:f,PARTNER_ID:c}=await (0,e.default)(i.env,i.cwd),d={SHOPLINE_APP_KEY:o,SHOPLINE_APP_SECRET:l,EXTENSION_TITLE:u,EXTENSION_ID:a,EXTENSION_UUID:f,PARTNER_ID:c};r.default.log(`Write environment variables to .env.${i.env} file...`),(0,t.writeEnvFile)(i.env,d,i.cwd),await (0,n.zipAndBuild)(d,i.env,i.cwd)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var i in t)Object.defineProperty(e,i,{enumerable:!0,get:t[i]})}(exports,{ValidateRule3:()=>y,ValidateRule:()=>g,default:()=>O,zipAndBuild:()=>b});const e=w(require("fs-extra")),t=w(require("ora")),i=w(require("pathe")),r=w(require("form-data")),a=w(require("filesize")),l=require("@shoplinedev/theme-check"),n=w(require("fast-glob")),s=require("../api"),o=require("../zip"),u=require("../zip3"),f=require("../const"),d=require("../utils"),c=require("../../../utils/messages"),p=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var i=S(t);if(i&&i.has(e))return i.get(e);var r={},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var n=a?Object.getOwnPropertyDescriptor(e,l):null;n&&(n.get||n.set)?Object.defineProperty(r,l,n):r[l]=e[l]}return r.default=e,i&&i.set(e,r),r}(require("../validate")),E=require("../../../utils/error"),m=w(require("../../../utils/winston")),h=require("../check-extension-version");function _(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function w(e){return e&&e.__esModule?e:{default:e}}function S(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,i=new WeakMap;return(S=function(e){return e?i:t})(e)}class y{static async validate(){let{cwd:t}=y,r=n.default.sync(["compatibility/**/*"],{cwd:t});r.length&&(g.cwd=i.default.join(t,"compatibility"),await g.validate());let l=n.default.sync(["**/*","!compatibility/**/*"],{cwd:t}),s=0,o=0,u=0;if(l.forEach(r=>{let a=i.default.join(t,r),l=e.default.statSync(a);l.isFile()&&y.validateFile(r)&&(r.startsWith("blocks")&&(o+=l.size,u+=1),r.startsWith("components")&&(o+=l.size),s+=l.size)}),s>f.MAX_ALL_FILE_SIZE)throw Error(`Total size of all files must be less than ${(0,a.default)(f.MAX_ALL_FILE_SIZE)}`);if(u>f.MAX_BLOCKS_FILE_COUNT)throw Error(`Total number of files for all blocks must be less than ${f.MAX_BLOCKS_FILE_COUNT}`);if(o>f.MAX_BLOCKS_FILE_SIZE_3)throw Error(`Total size of all blocks and components html must be less than ${(0,a.default)(f.MAX_BLOCKS_FILE_SIZE_3)}`)}static validateFile(e){let t=i.default.join(y.cwd,e),r=i.default.dirname(e),a=i.default.extname(e),l=/\/|\\\\/;if("."===r)return!1;if(l.test(r)){let[e]=r.split(l);if(!f.SUPPORTED_BUCKETS_3.includes(e))throw Error(`Invalid directory: ${r}`)}else if(!f.SUPPORTED_BUCKETS_3.includes(r))throw Error(`Invalid directory: ${r}`);if("public"===r){if(!f.SUPPORTED_ASSET_EXTS_3.includes(a))throw Error(`Invalid filename: ${e}; ${a} is not supported`)}else if("i18n"===r){if(".json"!==a)throw Error(`Invalid filename: ${e}; Only ${f.SUPPORTED_LOCALE_EXTS.join(", ")} allowed in ${r}`)}else if("blocks"===r)return y.validateBlocksSchema(t);return!0}static validateBlocksSchema(t){let r=e.default.readFileSync(t,"utf-8"),a=(0,d.extractSchema)(r),l=i.default.relative(y.cwd,t);return(0,p.validateBlockSchema3)(a,{relativeFile:l})}}_(y,"cwd",void 0);class g{static async validate(){let{cwd:t}=g,r=(0,l.configOnlyChecks)(["ValidHtml"]),s=await (0,l.cliCheckTheme)({themePath:t,config:r});if(s.errors.length){let e=s.errors.map(e=>{let r=e.errors.map(e=>`${e.message} in ${i.default.join(t,e.file)}:${e.position.start.line}:${e.position.start.column}`).join("\n");return r}).join("\n");throw new E.AbortError(e)}let o=n.default.sync("**/*",{cwd:t}),u=0,d=0,c=0;if(o.forEach(r=>{let a=i.default.join(t,r),l=e.default.statSync(a);if(l.isFile()&&g.validateFile(r)){let e=i.default.dirname(r);"blocks"===e&&(d+=l.size,c+=1),"snippets"===e&&(d+=l.size),u+=l.size}}),u>f.MAX_ALL_FILE_SIZE)throw Error(`Total size of all files must be less than ${(0,a.default)(f.MAX_ALL_FILE_SIZE)}`);if(c>f.MAX_BLOCKS_FILE_COUNT)throw Error(`Total number of files for all blocks must be less than ${f.MAX_BLOCKS_FILE_COUNT}`);if(d>f.MAX_BLOCKS_FILE_SIZE)throw Error(`Total size of all blocks and snippets HTML files must be less than ${(0,a.default)(f.MAX_BLOCKS_FILE_SIZE)}`)}static validateFile(e){let t=i.default.join(g.cwd,e),r=i.default.dirname(e),a=i.default.extname(e),l=/\/|\\\\/;if("."===r)return!1;if(l.test(r)){let[e]=r.split(l);if(!f.SUPPORTED_BUCKETS.includes(e))throw Error(`Invalid directory: ${r}`)}else if(!f.SUPPORTED_BUCKETS.includes(r))throw Error(`Invalid directory: ${r}`);if("assets"===r){if(!f.SUPPORTED_ASSET_EXTS.includes(a))throw Error(`Invalid filename: ${e}; ${a} is not supported`)}else if("locales"===r){if(".json"!==a)throw Error(`Invalid filename: ${e}; Only ${f.SUPPORTED_LOCALE_EXTS.join(", ")} allowed in ${r}`)}else if(["snippets","blocks"].includes(r)){if(".html"!==a)throw Error(`Invalid filename: ${e}; Only .html allowed in ${r}`);if("blocks"===r)return g.validateBlocksSchema(t)}return!0}static validateBlocksSchema(t){let r=e.default.readFileSync(t,"utf-8"),a=(0,d.extractSchema)(r),l=i.default.relative(g.cwd,t);return(0,p.default)(a,{relativeFile:l})}}async function T(e){(0,d.removeFile)(e),(0,h.isThemeAppExtensionOS3)()?await (0,u.zip)(e):(0,h.isThemeAppExtensionOS2)()&&await (0,o.zip)(e)}async function v(i,a,l){let n=(0,t.default)((0,c.getMessage)("extension.push.waiting_text")).start(),{SHOPLINE_APP_KEY:o,SHOPLINE_APP_SECRET:u,EXTENSION_ID:f,EXTENSION_UUID:p,EXTENSION_TITLE:m}=a;try{let t=e.default.createReadStream(i),a=new r.default;a.append("extensionFile",t),a.append("appKey",o),a.append("appSecret",u),a.append("extensionId",f),a.append("extensionUuid",p),a.append("type",s.ERegisterType.THEME_APP_BLOCK),a.append("category",s.ECategory.THEME);let h=await (0,s.pushExtension)(a);if(h){if(h.id)return n.succeed((0,c.getMessage)("extension.push.success",{name:m,updated_at:(0,d.formatTime)(h.updateTime)})),console.log((0,c.getMessage)("extension.push.success_info",{link:(0,d.getExtensionLink)({appKey:o,extensionUuid:p,env:l})})),await Promise.resolve();return n.fail(),await Promise.reject(new E.AbortError((0,c.getMessage)("extension.push.fail",{updated_at:(0,d.formatTime)(h.updateTime)})))}return n.fail(),await Promise.reject(new E.AbortError((0,c.getMessage)("extension.push.fail",{updated_at:(0,d.formatTime)()})))}catch(e){throw n.fail((0,c.getMessage)("extension.push.fail",{updated_at:(0,d.formatTime)()})),new E.AbortError(e.message||e)}}async function O(e,t,r=process.cwd()){let{EXTENSION_TITLE:a}=e,l=i.default.join(r,`${a}.zip`),n=(0,h.isThemeAppExtensionOS3)(r)?y:g;try{return n.cwd=r,m.default.log("Validate extension..."),await n.validate(),m.default.log("Zip extension..."),await T(l),m.default.log("Zip and push extension..."),await v(l,e,t),m.default.log("Push theme app extension success!"),(0,d.removeFile)(l),await Promise.resolve()}catch(e){if((0,d.removeFile)(l),e instanceof E.AbortError)throw e;return Promise.reject(e.message||e)}}async function b(t,r,a=process.cwd()){let l=i.default.join(a,".plugin.zip"),n=i.default.join(a,".plugin.json"),{SHOPLINE_APP_KEY:o,SHOPLINE_APP_SECRET:u,EXTENSION_ID:f,EXTENSION_UUID:d}=t,c=(0,h.isThemeAppExtensionOS3)(a)?y:g;try{return c.cwd=a,m.default.log("Validate extension..."),await c.validate(),m.default.log("Zip extension..."),await T(l),m.default.log("Write json file to output file..."),e.default.writeFileSync(n,JSON.stringify({appKey:o,appSecret:u,extensionId:f,extensionUuid:d,type:s.ERegisterType.THEME_APP_BLOCK,category:s.ECategory.THEME},null,2)),await Promise.resolve()}catch(e){if(e instanceof E.AbortError)throw e;return Promise.reject(e.message||e)}}_(g,"cwd",void 0);
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),!function(e,t){for(var a in t)Object.defineProperty(e,a,{enumerable:!0,get:t[a]})}(exports,{ValidateRule:()=>p,default:()=>_});const e=c(require("fs-extra")),t=c(require("ora")),a=c(require("path")),i=c(require("form-data")),r=c(require("filesize")),s=c(require("fast-glob")),l=require("./api"),n=require("./zip"),o=require("./const"),u=require("./utils"),d=require("../../utils/messages"),f=c(require("./validate"));function c(e){return e&&e.__esModule?e:{default:e}}class p{static async validate(){let{cwd:t}=p,i=s.default.sync("**/*",{cwd:t}),l=0,n=0,u=0;if(i.forEach(i=>{let r=a.default.join(t,i),s=e.default.statSync(r);if(s.isFile()&&p.validateFile(i)){let o=a.default.dirname(i);"blocks"===o&&(n+=s.size,u+=1),"snippets"===o&&(n+=s.size),l+=s.size}}),l>o.MAX_ALL_FILE_SIZE)throw Error(`Total size of all files must be less than ${(0,r.default)(o.MAX_ALL_FILE_SIZE)}`);if(u>o.MAX_BLOCKS_FILE_COUNT)throw Error(`Total number of files for all blocks must be less than ${o.MAX_BLOCKS_FILE_COUNT}`);if(n>o.MAX_BLOCKS_FILE_SIZE)throw Error(`Total size of all blocks html must be less than ${(0,r.default)(o.MAX_BLOCKS_FILE_SIZE)}`)}static validateFile(e){let t=a.default.join(p.cwd,e),i=a.default.dirname(e),r=a.default.extname(e),s=/\/|\\\\/;if("."===i)return!1;if(s.test(i)){let[l]=i.split(s);if(!o.SUPPORTED_BUCKETS.includes(l))throw Error(`: ${i}`)}else if(!o.SUPPORTED_BUCKETS.includes(i))throw Error(`Invalid directory: ${i}`);if("assets"===i){if(!o.SUPPORTED_ASSET_EXTS.includes(r))throw Error(`Invalid filename: ${e}; ${r} is not supported`)}else if("locales"===i){if(".json"!==r)throw Error(`Invalid filename: ${e}; Only ${o.SUPPORTED_LOCALE_EXTS.join(", ")} allowed in ${i}`)}else if(["snippets","blocks"].includes(i)){if(".html"!==r)throw Error(`Invalid filename: ${e}; Only .html allowed in ${i}`);if("blocks"===i)return p.validateBlocksSchema(t)}return!0}static validateBlocksSchema(t){let i=e.default.readFileSync(t,"utf-8"),r=(0,u.extractSchema)(i),s=a.default.relative(p.cwd,t);return(0,f.default)(r,{relativeFile:s})}}async function m(e){(0,u.removeFile)(e),await (0,n.zip)(e)}async function E(a,r,s){let n=(0,t.default)((0,d.getMessage)("extension.push.waiting_text")).start(),{SHOPLINE_APP_KEY:o,SHOPLINE_APP_SECRET:f,EXTENSION_ID:c,EXTENSION_UUID:p,EXTENSION_TITLE:m}=r;try{let E=e.default.createReadStream(a),_=new i.default;_.append("extensionFile",E),_.append("appKey",o),_.append("appSecret",f),_.append("extensionId",c),_.append("extensionUuid",p),_.append("type","THEME_APP_BLOCK"),_.append("category","THEME");let h=await (0,l.pushExtension)(_);if(h){if(h.id)return n.succeed((0,d.getMessage)("extension.push.success",{name:m,updated_at:(0,u.formatTime)(h.updateTime)})),console.log((0,d.getMessage)("extension.push.success_info",{link:(0,u.getExtensionLink)({appKey:o,extensionUuid:p,env:s})})),await Promise.resolve();return n.fail(),await Promise.reject(Error((0,d.getMessage)("extension.push.fail",{updated_at:(0,u.formatTime)(h.updateTime)})))}return n.fail(),await Promise.reject(Error((0,d.getMessage)("extension.push.fail",{updated_at:(0,u.formatTime)()})))}catch(w){return n.fail((0,d.getMessage)("extension.push.fail",{updated_at:(0,u.formatTime)()})),Promise.reject(w)}}async function _(e,t,i=process.cwd()){let{EXTENSION_TITLE:r}=e,s=a.default.join(i,`${r}.zip`);try{return p.cwd=i,await p.validate(),await m(s),await E(s,e,t),(0,u.removeFile)(s),await Promise.resolve()}catch(l){return(0,u.removeFile)(s),Promise.reject(l.message||l)}}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>i});const e=function(e){return e&&e.__esModule?e:{default:e}}(require("ora")),t=require("./api"),r=require("./env"),s=require("../../utils/messages"),n=require("../../utils/error");async function i(i,a){let o,u;let{EXTENSION_TITLE:c,SHOPLINE_APP_KEY:g,SHOPLINE_APP_SECRET:l,EXTENSION_ID:f,EXTENSION_UUID:E,PARTNER_ID:d}=await (0,r.resolveEnvContents)(i,a);if(o=f&&"undefined"!==f?f:"",u=E&&"undefined"!==E?E:"",!o){let r=(0,e.default)((0,s.getMessage)("extension.register.waiting_text")).start();try{let e=await (0,t.createExtensionInstance)({appKey:g,appSecret:l,name:c,type:t.ERegisterType.THEME_APP_BLOCK,category:t.ECategory.THEME}),{id:i,uuid:a}=e||{};if(!i||!a)throw new n.AbortError((0,s.getMessage)("extension.register.fail"));o=i,u=a,r.succeed((0,s.getMessage)("extension.register.success",{name:c}))}catch(e){if(r.fail(),e instanceof n.AbortError)throw e;throw new n.AbortError(e.message||e)}}return{PARTNER_ID:d,EXTENSION_ID:o,EXTENSION_TITLE:c,SHOPLINE_APP_KEY:g,SHOPLINE_APP_SECRET:l,EXTENSION_UUID:u}}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"resolveEnvContents",{enumerable:!0,get:()=>s});const e=u(require("fs-extra")),r=u(require("dotenv")),t=require("./utils"),n=require("./const");function u(e){return e&&e.__esModule?e:{default:e}}async function s(u,s=process.cwd()){let o=(0,t.getEnvPath)(u,s);if(!e.default.existsSync(o))return Promise.reject(Error(n.ERRORS.ENV_FILE_NOT_FOUND));let i=r.default.parse(e.default.readFileSync(o,"utf8"));return i}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,o){for(var t in o)Object.defineProperty(e,t,{enumerable:!0,get:o[t]})}(exports,{TypeSchema:()=>o,MetafieldSchema:()=>t,NewExtensionPointSchema:()=>i,ApiVersionSchema:()=>a,CapabilitiesSchema:()=>n,BaseUiCustomizerSchema:()=>s});const e=require("../../utils/schema"),o=e.zod.object({type:e.zod.string().default("checkout_ui_customizer")}),t=e.zod.object({namespace:e.zod.string(),key:e.zod.string()}),i=e.zod.object({target:e.zod.string(),module:e.zod.string(),metafields:e.zod.array(t).optional()}),a=e.zod.string(),n=e.zod.object({network_access:e.zod.boolean().optional(),block_progress:e.zod.boolean().optional(),api_access:e.zod.boolean().optional()}),s=e.zod.object({name:e.zod.string(),type:e.zod.string().default("checkout_ui_customizer"),extensionPoints:e.zod.any().optional(),capabilities:n.optional()});