@shoplineos/cli 1.5.3 → 1.5.6

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 (230) hide show
  1. package/dist/commands/auth/index.js +2 -1
  2. package/dist/commands/auth/login.js +2 -1
  3. package/dist/commands/auth/logout.js +2 -1
  4. package/dist/commands/auth/whoami.js +2 -1
  5. package/dist/commands/extension/build.js +2 -1
  6. package/dist/commands/extension/common-options.js +2 -1
  7. package/dist/commands/extension/connect.js +2 -1
  8. package/dist/commands/extension/create.js +2 -1
  9. package/dist/commands/extension/index.js +2 -1
  10. package/dist/commands/extension/push.js +2 -1
  11. package/dist/commands/extension/serve.js +2 -1
  12. package/dist/commands/index.js +2 -1
  13. package/dist/commands/report.js +2 -1
  14. package/dist/commands/theme/check.js +2 -1
  15. package/dist/commands/theme/console.js +2 -1
  16. package/dist/commands/theme/index.js +2 -1
  17. package/dist/commands/theme/init.js +2 -1
  18. package/dist/commands/theme/list.js +2 -1
  19. package/dist/commands/theme/package.js +2 -1
  20. package/dist/commands/theme/pull.js +2 -1
  21. package/dist/commands/theme/push.js +2 -1
  22. package/dist/commands/theme/serve.js +2 -1
  23. package/dist/commands/theme/theme-common-options.js +2 -1
  24. package/dist/eventlistener.d.js +2 -1
  25. package/dist/helpers/config.js +2 -1
  26. package/dist/helpers/monitoring-bootstrap.js +2 -0
  27. package/dist/helpers/monitoring-environment.js +2 -0
  28. package/dist/helpers/monitoring.js +2 -0
  29. package/dist/helpers/open-admin-url.js +2 -1
  30. package/dist/helpers/process-errors.js +2 -0
  31. package/dist/helpers/report.js +2 -1
  32. package/dist/helpers/sum.js +2 -1
  33. package/dist/helpers/verify-login.js +2 -1
  34. package/dist/services/auth/logout.js +2 -1
  35. package/dist/services/dev-server/index.js +3 -2
  36. package/dist/services/dev-server/sse.js +2 -1
  37. package/dist/services/dev-server/web/socket-client.js +2 -1
  38. package/dist/services/dev-server-3/index.js +2 -1
  39. package/dist/services/dev-server-3/server.js +3 -2
  40. package/dist/services/dev-server-3/sse.js +2 -1
  41. package/dist/services/dev-server-3/web/socket-client.js +2 -1
  42. package/dist/services/extension/api.js +3 -2
  43. package/dist/services/extension/check-extension-version.js +2 -1
  44. package/dist/services/extension/clone-repo.js +2 -1
  45. package/dist/services/extension/connect/context.js +2 -1
  46. package/dist/services/extension/connect/index.js +2 -1
  47. package/dist/services/extension/connect/validate.js +2 -1
  48. package/dist/services/extension/const.js +2 -1
  49. package/dist/services/extension/context.js +2 -1
  50. package/dist/services/extension/create/index.js +2 -1
  51. package/dist/services/extension/ensure-project-type.js +2 -1
  52. package/dist/services/extension/env.js +2 -1
  53. package/dist/services/extension/extension.js +2 -1
  54. package/dist/services/extension/functions/generate.js +2 -1
  55. package/dist/services/extension/functions/info.js +2 -1
  56. package/dist/services/extension/functions/push.js +2 -1
  57. package/dist/services/extension/functions/schemas.js +2 -1
  58. package/dist/services/extension/generate.js +2 -1
  59. package/dist/services/extension/index.js +2 -1
  60. package/dist/services/extension/inquirer.js +2 -1
  61. package/dist/services/extension/loader.js +2 -1
  62. package/dist/services/extension/openapi.js +2 -1
  63. package/dist/services/extension/push/build.js +2 -1
  64. package/dist/services/extension/push/checkout-ui.js +2 -1
  65. package/dist/services/extension/push/index.js +2 -1
  66. package/dist/services/extension/push/pixels.js +2 -1
  67. package/dist/services/extension/push/post-purchase.js +2 -1
  68. package/dist/services/extension/push/shopper.js +2 -1
  69. package/dist/services/extension/push/show.js +2 -1
  70. package/dist/services/extension/push/theme.js +2 -1
  71. package/dist/services/extension/push/zip.js +2 -1
  72. package/dist/services/extension/register.js +2 -1
  73. package/dist/services/extension/schemas.js +2 -1
  74. package/dist/services/extension/serve/bundler.js +2 -1
  75. package/dist/services/extension/serve/extension.js +2 -1
  76. package/dist/services/extension/serve/localization.js +2 -1
  77. package/dist/services/extension/serve/models.js +2 -1
  78. package/dist/services/extension/serve/payload.js +2 -1
  79. package/dist/services/extension/serve/server/middlewares.js +2 -1
  80. package/dist/services/extension/serve/server.js +2 -1
  81. package/dist/services/extension/serve/websocket/handlers.js +2 -1
  82. package/dist/services/extension/serve/websocket/models.js +2 -1
  83. package/dist/services/extension/serve/websocket.js +2 -1
  84. package/dist/services/extension/serve.js +2 -1
  85. package/dist/services/extension/tunnel/cloudflared.js +2 -1
  86. package/dist/services/extension/tunnel/install-cloudflared.js +2 -1
  87. package/dist/services/extension/types.js +2 -1
  88. package/dist/services/extension/utils.js +2 -1
  89. package/dist/services/extension/validate.js +2 -1
  90. package/dist/services/extension/zip.js +2 -1
  91. package/dist/services/extension/zip3.js +2 -1
  92. package/dist/services/identity-auth/api.js +2 -1
  93. package/dist/services/identity-auth/const.js +2 -1
  94. package/dist/services/identity-auth/create-server.js +2 -1
  95. package/dist/services/identity-auth/index.js +2 -1
  96. package/dist/services/identity-auth/store-enter.js +2 -1
  97. package/dist/services/report/index.js +2 -1
  98. package/dist/services/theme/3.0/api.js +4 -3
  99. package/dist/services/theme/3.0/check.js +2 -1
  100. package/dist/services/theme/3.0/file.js +2 -1
  101. package/dist/services/theme/3.0/package.js +2 -1
  102. package/dist/services/theme/3.0/pull.js +2 -1
  103. package/dist/services/theme/3.0/push.js +2 -1
  104. package/dist/services/theme/3.0/remote-watcher.js +2 -1
  105. package/dist/services/theme/3.0/theme.js +4 -3
  106. package/dist/services/theme/api.js +2 -1
  107. package/dist/services/theme/check/check.js +2 -1
  108. package/dist/services/theme/check/config.js +2 -1
  109. package/dist/services/theme/check/exception.js +2 -1
  110. package/dist/services/theme/check/index.js +2 -1
  111. package/dist/services/theme/check/types.js +2 -1
  112. package/dist/services/theme/checksum.js +2 -1
  113. package/dist/services/theme/choose-theme-list.js +2 -1
  114. package/dist/services/theme/console/api.js +2 -1
  115. package/dist/services/theme/console/console.js +4 -3
  116. package/dist/services/theme/console/index.js +2 -1
  117. package/dist/services/theme/const.js +2 -1
  118. package/dist/services/theme/dev-server-monitoring.js +2 -0
  119. package/dist/services/theme/file.js +2 -1
  120. package/dist/services/theme/git.js +2 -1
  121. package/dist/services/theme/index.js +4 -3
  122. package/dist/services/theme/inquirer.js +2 -1
  123. package/dist/services/theme/no-second-check.js +2 -1
  124. package/dist/services/theme/operation.js +2 -1
  125. package/dist/services/theme/package.js +2 -1
  126. package/dist/services/theme/preview-http-client.js +2 -0
  127. package/dist/services/theme/proxy-error.js +2 -0
  128. package/dist/services/theme/pull.js +2 -1
  129. package/dist/services/theme/push.js +2 -1
  130. package/dist/services/theme/remote-watcher.js +2 -1
  131. package/dist/services/theme/types.js +2 -1
  132. package/dist/services/theme/update-queue.js +2 -1
  133. package/dist/services/theme/update.js +2 -1
  134. package/dist/services/theme/uploader.js +2 -1
  135. package/dist/services/theme/utils.js +3 -1
  136. package/dist/services/theme/watcher-monitoring.js +2 -0
  137. package/dist/type.d.js +2 -1
  138. package/dist/types/env.d.js +2 -1
  139. package/dist/types/type.d.js +2 -1
  140. package/dist/utils/abort.js +2 -1
  141. package/dist/utils/check-theme-type-version.js +2 -1
  142. package/dist/utils/check-update.js +2 -1
  143. package/dist/utils/colors.js +2 -1
  144. package/dist/utils/const.js +2 -1
  145. package/dist/utils/content-tokens.js +2 -1
  146. package/dist/utils/debug.js +2 -1
  147. package/dist/utils/decorators.js +2 -1
  148. package/dist/utils/environments.js +2 -1
  149. package/dist/utils/error.js +2 -1
  150. package/dist/utils/exit-hook.js +2 -1
  151. package/dist/utils/find-up-node-module.js +2 -1
  152. package/dist/utils/format-protocol.js +2 -1
  153. package/dist/utils/fs.js +2 -1
  154. package/dist/utils/get-objects-diff.js +2 -1
  155. package/dist/utils/get-real-referer.js +2 -1
  156. package/dist/utils/get-store-env.js +2 -1
  157. package/dist/utils/get-url-handle.js +2 -1
  158. package/dist/utils/git.js +2 -1
  159. package/dist/utils/has-command.js +2 -1
  160. package/dist/utils/hbs.js +2 -1
  161. package/dist/utils/http.js +2 -1
  162. package/dist/utils/ignore-filter.js +2 -1
  163. package/dist/utils/import-esm.js +2 -1
  164. package/dist/utils/include-filter.js +2 -1
  165. package/dist/utils/load-local-preset.js +2 -1
  166. package/dist/utils/local.js +2 -1
  167. package/dist/utils/logger.js +2 -1
  168. package/dist/utils/messages.js +3 -2
  169. package/dist/utils/misc.js +2 -1
  170. package/dist/utils/node-package-manager.js +2 -1
  171. package/dist/utils/ora-manager.js +2 -1
  172. package/dist/utils/os.js +2 -1
  173. package/dist/utils/output.js +2 -1
  174. package/dist/utils/parse-options.js +2 -1
  175. package/dist/utils/path-matcher.js +2 -1
  176. package/dist/utils/path.js +2 -1
  177. package/dist/utils/print-preview.js +2 -1
  178. package/dist/utils/program.js +2 -1
  179. package/dist/utils/replace-dot.js +2 -1
  180. package/dist/utils/replace-top-level-com.js +2 -1
  181. package/dist/utils/retry.js +2 -1
  182. package/dist/utils/schema.js +2 -1
  183. package/dist/utils/string.js +2 -1
  184. package/dist/utils/system.js +2 -1
  185. package/dist/utils/tcp.js +2 -1
  186. package/dist/utils/tiny-queue.js +2 -1
  187. package/dist/utils/toml.js +2 -1
  188. package/dist/utils/tree-kill.js +2 -1
  189. package/dist/utils/ui/Tasks.js +2 -1
  190. package/dist/utils/ui/alert.js +2 -1
  191. package/dist/utils/ui/components/Alert.js +2 -1
  192. package/dist/utils/ui/components/Banner.js +2 -1
  193. package/dist/utils/ui/components/Command.js +2 -1
  194. package/dist/utils/ui/components/ConcurrentOutput.js +2 -1
  195. package/dist/utils/ui/components/FatalError.js +2 -1
  196. package/dist/utils/ui/components/FilePath.js +2 -1
  197. package/dist/utils/ui/components/Link.js +2 -1
  198. package/dist/utils/ui/components/List.js +2 -1
  199. package/dist/utils/ui/components/Prompts/InfoTable.js +2 -1
  200. package/dist/utils/ui/components/SelectInput.js +2 -1
  201. package/dist/utils/ui/components/SelectPrompt.js +2 -1
  202. package/dist/utils/ui/components/Subdued.js +2 -1
  203. package/dist/utils/ui/components/TextAnimation.js +2 -1
  204. package/dist/utils/ui/components/TextInput.js +2 -1
  205. package/dist/utils/ui/components/TextPrompt.js +2 -1
  206. package/dist/utils/ui/components/TokenizedText.js +2 -1
  207. package/dist/utils/ui/components/UserInput.js +2 -1
  208. package/dist/utils/ui/contexts/LinksContext.js +2 -1
  209. package/dist/utils/ui/hooks/use-async-and-unmount.js +2 -1
  210. package/dist/utils/ui/hooks/use-layout.js +2 -1
  211. package/dist/utils/ui/render.js +2 -1
  212. package/dist/utils/ui/ui.js +2 -1
  213. package/dist/utils/ui/utilities.js +2 -1
  214. package/dist/utils/winston/index.js +2 -1
  215. package/dist/utils/winston/log-file.js +3 -2
  216. package/dist/utils/write-file-tree.js +2 -1
  217. package/dist/vendor/logger-apm-node/index.js +11 -0
  218. package/dist/vendor/logger-apm-node/licenses.txt +296 -0
  219. package/package.json +16 -9
  220. package/dist/commands/extension/tunnel.js +0 -1
  221. package/dist/helpers/sentry.js +0 -1
  222. package/dist/services/dev-server/socket.js +0 -1
  223. package/dist/services/extension/create.js +0 -1
  224. package/dist/services/extension/push.js +0 -1
  225. package/dist/services/extension/resolve-env.js +0 -1
  226. package/dist/services/extension/tunnel.js +0 -3
  227. package/dist/services/extension/write-env-file.js +0 -1
  228. package/dist/services/theme/draft.js +0 -1
  229. package/dist/services/theme/types.d.js +0 -1
  230. package/dist/utils/ui.js +0 -1
@@ -1 +1,2 @@
1
- "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var o in t)Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}(exports,{ExtensionsPayloadStoreEvent:()=>e,getExtensionsPayloadStoreRawPayload:()=>d,getUiCustomizerPayload:()=>c,ExtensionsPayloadStore:()=>p,getExtensionPoints:()=>y,getUiCustomizer:()=>P,getUiConfiguration:()=>f,reloadNoticePath:()=>x,getReloadNoticeUrl:()=>g,getPreviewPath:()=>U});const t=function(e){return e&&e.__esModule?e:{default:e}}(require("events")),o=require("../../../utils/fs"),i=require("./localization"),n=require("../schemas"),a=require("../../../utils/output"),r=require("../loader"),s=require("../../../utils/path"),u=require("../const");function l(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}async function d(e,t){return{root:{url:new URL("/extensions",t.url).toString()},socket:{url:t.websocketURL},store:t.shop,extensions:[await c(e,t)]}}async function c(e,t){var n,a,r,s;let{localization:u}=await (0,i.getLocalization)(e),l={assets:{main:{name:"main",url:`${t.url}/assets/main.js`,lastUpdated:null!==(r=await (0,o.fileLastUpdatedTimestamp)(e.outputBundlePath))&&void 0!==r?r:0}},capabilities:{blockProgress:(null===(n=e.configuration.capabilities)||void 0===n?void 0:n.block_progress)||!1,networkAccess:(null===(a=e.configuration.capabilities)||void 0===a?void 0:a.network_access)||!1},extensionPoints:e.configuration.extensionPoints,localization:null!=u?u:null,type:e.configuration.type,externalType:e.externalType,uuid:e.devUUID,version:"0",title:e.configuration.name,approvalScopes:[]};return l}(e||(e={})).Update="PayloadUpdatedEvent:UPDATE";class p extends t.default{getConnectedPayload(){let e=this.getRawPayload();return{root:e.root,socket:e.socket,store:e.store,extensions:e.extensions}}getRawPayload(){return this.rawPayload}getRawPayloadFilteredByExtensionIds(e){return{...this.rawPayload,extensions:this.rawPayload.extensions.filter(t=>e.includes(t.uuid))}}async updateExtension(e,t){let o=this.rawPayload.extensions,i=o.findIndex(t=>t.uuid===e.devUUID);if(-1===i){(0,a.outputDebug)((0,a.outputContent)`Could not updateExtension() for extension with uuid: ${e.devUUID}`);return}o[i]=await c(e,{...t}),this.rawPayload.extensions=o,this.emitUpdate([e.devUUID])}emitUpdate(t){this.emit(e.Update,t)}constructor(e,t){super(),l(this,"options",void 0),l(this,"rawPayload",void 0),this.rawPayload=e,this.options=t}}function y(e){return e}async function P(e){return{type:e.type,configuration:await f(e),devUUID:e.uuid,directory:e.cwd,externalType:e.externalType,outputBundlePath:e.outputBundlePath,noProductErrorMessage:e.noProductErrorMessage}}async function f(e){let t={checkout_ui_customizer:u.CHECKOUT_UI_CONFIG_FILE,post_purchase_customizer:u.POST_PURCHASE_CONFIG_FILE},o=await (0,r.parseConfigurationFile)(n.BaseUiCustomizerSchema,(0,s.joinPath)(e.cwd,t[e.type]));return{name:e.name,type:e.type,extensionPoints:o.extensionPoints,capabilities:o.capabilities}}const x="/reloadNotice";function g(e){return`${e}${x}`}function U(e){return`/extensions/${e}`}
1
+ "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var o in t)Object.defineProperty(e,o,{enumerable:!0,get:t[o]})}(exports,{ExtensionsPayloadStoreEvent:()=>e,getExtensionsPayloadStoreRawPayload:()=>d,getUiCustomizerPayload:()=>c,ExtensionsPayloadStore:()=>p,getExtensionPoints:()=>y,getUiCustomizer:()=>P,getUiConfiguration:()=>f,reloadNoticePath:()=>x,getReloadNoticeUrl:()=>g,getPreviewPath:()=>U});const t=function(e){return e&&e.__esModule?e:{default:e}}(require("events")),o=require("../../../utils/fs"),i=require("./localization"),n=require("../schemas"),a=require("../../../utils/output"),r=require("../loader"),s=require("../../../utils/path"),u=require("../const");function l(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}async function d(e,t){return{root:{url:new URL("/extensions",t.url).toString()},socket:{url:t.websocketURL},store:t.shop,extensions:[await c(e,t)]}}async function c(e,t){var n,a,r,s;let{localization:u}=await (0,i.getLocalization)(e),l={assets:{main:{name:"main",url:`${t.url}/assets/main.js`,lastUpdated:null!==(r=await (0,o.fileLastUpdatedTimestamp)(e.outputBundlePath))&&void 0!==r?r:0}},capabilities:{blockProgress:(null===(n=e.configuration.capabilities)||void 0===n?void 0:n.block_progress)||!1,networkAccess:(null===(a=e.configuration.capabilities)||void 0===a?void 0:a.network_access)||!1},extensionPoints:e.configuration.extensionPoints,localization:null!=u?u:null,type:e.configuration.type,externalType:e.externalType,uuid:e.devUUID,version:"0",title:e.configuration.name,approvalScopes:[]};return l}(e||(e={})).Update="PayloadUpdatedEvent:UPDATE";class p extends t.default{getConnectedPayload(){let e=this.getRawPayload();return{root:e.root,socket:e.socket,store:e.store,extensions:e.extensions}}getRawPayload(){return this.rawPayload}getRawPayloadFilteredByExtensionIds(e){return{...this.rawPayload,extensions:this.rawPayload.extensions.filter(t=>e.includes(t.uuid))}}async updateExtension(e,t){let o=this.rawPayload.extensions,i=o.findIndex(t=>t.uuid===e.devUUID);if(-1===i){(0,a.outputDebug)((0,a.outputContent)`Could not updateExtension() for extension with uuid: ${e.devUUID}`);return}o[i]=await c(e,{...t}),this.rawPayload.extensions=o,this.emitUpdate([e.devUUID])}emitUpdate(t){this.emit(e.Update,t)}constructor(e,t){super(),l(this,"options",void 0),l(this,"rawPayload",void 0),this.rawPayload=e,this.options=t}}function y(e){return e}async function P(e){return{type:e.type,configuration:await f(e),devUUID:e.uuid,directory:e.cwd,externalType:e.externalType,outputBundlePath:e.outputBundlePath,noProductErrorMessage:e.noProductErrorMessage}}async function f(e){let t={checkout_ui_customizer:u.CHECKOUT_UI_CONFIG_FILE,post_purchase_customizer:u.POST_PURCHASE_CONFIG_FILE},o=await (0,r.parseConfigurationFile)(n.BaseUiCustomizerSchema,(0,s.joinPath)(e.cwd,t[e.type]));return{name:e.name,type:e.type,extensionPoints:o.extensionPoints,capabilities:o.capabilities}}const x="/reloadNotice";function g(e){return`${e}${x}`}function U(e){return`/extensions/${e}`}
2
+ //# sourceMappingURL=payload.js.map
@@ -1 +1,2 @@
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,{getLogMiddleware:()=>o,noCacheMiddleware:()=>r,getExtensionsPayloadMiddleware:()=>d,redirectToExtensionMiddleware:()=>u,redirectToCheckoutPageMiddleware:()=>c,fileServerMiddleware:()=>l,getExtensionAssetMiddleware:()=>p,getExtensionDevAssetMiddleware:()=>x,handleExtensionHotReloadMiddleware:()=>h});const e=require("h3"),t=require("node-fetch-native"),n=require("../../../../utils/output"),s=require("../../../../utils/path"),a=require("../../../../utils/fs"),i=require("../../context");function o(){return async(e,t,s)=>{(0,n.outputDebug)(`UI extensions server received a ${e.method} request to URL ${e.url}`),s()}}function r(e,t,n){t.setHeader("Cache-Control","no-cache"),n()}async function d({payloadStore:t},n){return(0,e.setResponseHeaders)(n,{"content-type":"application/json"}),t.getRawPayload()}async function u({devOptions:t},n){await (0,e.sendRedirect)(n,`/extensions/${t.extension.devUUID}`,307)}async function c({devOptions:t},n){let s=(0,i.getCheckoutPageUrlFromExtension)(t);await (0,e.sendRedirect)(n,s,307)}async function l(t,n){let{filePath:i}=n;await (0,a.isDirectory)(i)&&(i+=i.endsWith("/")?"index.html":"/index.html");let o=await (0,a.fileExists)(i);if(!o)return(0,e.sendError)(t,(0,e.createError)({statusCode:404,statusMessage:`Not Found: ${i}`}));let r=await (0,a.readFile)(i),d=(0,s.extname)(i);return(0,e.setResponseHeaders)(t,{"content-type":{".ico":"image/x-icon",".html":"text/html",".js":"text/javascript",".json":"application/json",".css":"text/css",".png":"image/png",".jpg":"image/jpeg",".wav":"audio/wav",".mp3":"audio/mpeg",".svg":"image/svg+xml",".pdf":"application/pdf",".doc":"application/msword"}[d]||"text/plain"}),(0,e.setResponseStatus)(t,200),r}function p({devOptions:t},n){let{extension:a}=t,{assetPath:i,extensionId:o}=n.context.params,r=a.outputBundlePath.replace("main.js",""),d=a.devUUID===o;return d?l(n,{filePath:(0,s.joinPath)(r,i)}):(0,e.sendError)(n,(0,e.createError)({statusCode:404,statusMessage:`Extension with id ${o} not found`}))}function x({devOptions:n},s){let{port:a}=n,{assetPath:i}=s.context.params,o=`http://0.0.0.0:${a}/assets/${i}`;return(0,e.proxyRequest)(s,o,{fetch:t.fetch})}function h({devOptions:t,payloadStore:s},a){let{status:i}=(0,e.getQuery)(a);return"succeed"===i?(s.updateExtension(t.extension,t),(0,n.outputDebug)(`The Javascript HotReload server of the UI extension with ID ${t.extension.devUUID} has changed.`)):"failed"===i&&(0,n.outputDebug)(`The Javascript HotReload server of the UI extension with ID ${t.extension.devUUID} has an error.`),(0,e.setResponseStatus)(a,200),""}
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,{getLogMiddleware:()=>o,noCacheMiddleware:()=>r,getExtensionsPayloadMiddleware:()=>d,redirectToExtensionMiddleware:()=>u,redirectToCheckoutPageMiddleware:()=>c,fileServerMiddleware:()=>l,getExtensionAssetMiddleware:()=>p,getExtensionDevAssetMiddleware:()=>x,handleExtensionHotReloadMiddleware:()=>h});const e=require("h3"),t=require("node-fetch-native"),n=require("../../../../utils/output"),s=require("../../../../utils/path"),a=require("../../../../utils/fs"),i=require("../../context");function o(){return async(e,t,s)=>{(0,n.outputDebug)(`UI extensions server received a ${e.method} request to URL ${e.url}`),s()}}function r(e,t,n){t.setHeader("Cache-Control","no-cache"),n()}async function d({payloadStore:t},n){return(0,e.setResponseHeaders)(n,{"content-type":"application/json"}),t.getRawPayload()}async function u({devOptions:t},n){await (0,e.sendRedirect)(n,`/extensions/${t.extension.devUUID}`,307)}async function c({devOptions:t},n){let s=(0,i.getCheckoutPageUrlFromExtension)(t);await (0,e.sendRedirect)(n,s,307)}async function l(t,n){let{filePath:i}=n;await (0,a.isDirectory)(i)&&(i+=i.endsWith("/")?"index.html":"/index.html");let o=await (0,a.fileExists)(i);if(!o)return(0,e.sendError)(t,(0,e.createError)({statusCode:404,statusMessage:`Not Found: ${i}`}));let r=await (0,a.readFile)(i),d=(0,s.extname)(i);return(0,e.setResponseHeaders)(t,{"content-type":{".ico":"image/x-icon",".html":"text/html",".js":"text/javascript",".json":"application/json",".css":"text/css",".png":"image/png",".jpg":"image/jpeg",".wav":"audio/wav",".mp3":"audio/mpeg",".svg":"image/svg+xml",".pdf":"application/pdf",".doc":"application/msword"}[d]||"text/plain"}),(0,e.setResponseStatus)(t,200),r}function p({devOptions:t},n){let{extension:a}=t,{assetPath:i,extensionId:o}=n.context.params,r=a.outputBundlePath.replace("main.js",""),d=a.devUUID===o;return d?l(n,{filePath:(0,s.joinPath)(r,i)}):(0,e.sendError)(n,(0,e.createError)({statusCode:404,statusMessage:`Extension with id ${o} not found`}))}function x({devOptions:n},s){let{port:a}=n,{assetPath:i}=s.context.params,o=`http://0.0.0.0:${a}/assets/${i}`;return(0,e.proxyRequest)(s,o,{fetch:t.fetch})}function h({devOptions:t,payloadStore:s},a){let{status:i}=(0,e.getQuery)(a);return"succeed"===i?(s.updateExtension(t.extension,t),(0,n.outputDebug)(`The Javascript HotReload server of the UI extension with ID ${t.extension.devUUID} has changed.`)):"failed"===i&&(0,n.outputDebug)(`The Javascript HotReload server of the UI extension with ID ${t.extension.devUUID} has an error.`),(0,e.setResponseStatus)(a,200),""}
2
+ //# sourceMappingURL=middlewares.js.map
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"setupHTTPServer",{enumerable:!0,get:()=>s});const e=require("http"),t=require("h3"),r=require("@nozomuikuta/h3-cors"),n=require("./payload"),o=require("./server/middlewares");function s(s){let d=(0,t.createApp)(),a=(0,t.createRouter)();d.use((0,t.fromNodeMiddleware)((0,o.getLogMiddleware)())),d.use((0,r.defineCorsEventHandler)({methods:["GET","OPTIONS"],allowHeaders:["Accept","Content-Type","Content-Length","Accept-Encoding","X-CSRF-Token","Authorization","ngrok-skip-browser-warning"]})),d.use((0,t.fromNodeMiddleware)(o.noCacheMiddleware)),a.get(n.reloadNoticePath,(0,t.eventHandler)(e=>(0,o.handleExtensionHotReloadMiddleware)(s,e))),a.get("/extensions/:extensionId/assets/**:assetPath",(0,t.eventHandler)(e=>(0,o.getExtensionAssetMiddleware)(s,e))),a.get("/assets/**:assetPath",(0,t.eventHandler)(e=>(0,o.getExtensionDevAssetMiddleware)(s,e))),a.get("/extensions/:extensionId",(0,t.eventHandler)(e=>(0,o.redirectToCheckoutPageMiddleware)(s,e))),a.get("/extensions",(0,t.eventHandler)(e=>(0,o.getExtensionsPayloadMiddleware)(s,e))),a.get("/extensions/",(0,t.eventHandler)(e=>(0,o.getExtensionsPayloadMiddleware)(s,e))),a.get("/",(0,t.eventHandler)(e=>(0,o.redirectToExtensionMiddleware)(s,e))),d.use(a);let i=(0,e.createServer)((0,t.toNodeListener)(d));return i.listen(s.devOptions.webProxyPort),i}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"setupHTTPServer",{enumerable:!0,get:()=>s});const e=require("http"),t=require("h3"),r=require("@nozomuikuta/h3-cors"),n=require("./payload"),o=require("./server/middlewares");function s(s){let d=(0,t.createApp)(),a=(0,t.createRouter)();d.use((0,t.fromNodeMiddleware)((0,o.getLogMiddleware)())),d.use((0,r.defineCorsEventHandler)({methods:["GET","OPTIONS"],allowHeaders:["Accept","Content-Type","Content-Length","Accept-Encoding","X-CSRF-Token","Authorization","ngrok-skip-browser-warning"]})),d.use((0,t.fromNodeMiddleware)(o.noCacheMiddleware)),a.get(n.reloadNoticePath,(0,t.eventHandler)(e=>(0,o.handleExtensionHotReloadMiddleware)(s,e))),a.get("/extensions/:extensionId/assets/**:assetPath",(0,t.eventHandler)(e=>(0,o.getExtensionAssetMiddleware)(s,e))),a.get("/assets/**:assetPath",(0,t.eventHandler)(e=>(0,o.getExtensionDevAssetMiddleware)(s,e))),a.get("/extensions/:extensionId",(0,t.eventHandler)(e=>(0,o.redirectToCheckoutPageMiddleware)(s,e))),a.get("/extensions",(0,t.eventHandler)(e=>(0,o.getExtensionsPayloadMiddleware)(s,e))),a.get("/extensions/",(0,t.eventHandler)(e=>(0,o.getExtensionsPayloadMiddleware)(s,e))),a.get("/",(0,t.eventHandler)(e=>(0,o.redirectToExtensionMiddleware)(s,e))),d.use(a);let i=(0,e.createServer)((0,t.toNodeListener)(d));return i.listen(s.devOptions.webProxyPort),i}
2
+ //# sourceMappingURL=server.js.map
@@ -2,4 +2,5 @@
2
2
  ${t.outputToken.json(a)}
3
3
  `),function(e,n){(0,t.outputDebug)((0,t.outputContent)`Sending websocket with event type ${n.event} and data:
4
4
  ${t.outputToken.json(n.data)}
5
- `);let o=JSON.stringify(n);e.clients.forEach(e=>e.send(o))}(n,a)}}
5
+ `);let o=JSON.stringify(n);e.clients.forEach(e=>e.send(o))}(n,a)}}
6
+ //# sourceMappingURL=handlers.js.map
@@ -1 +1,2 @@
1
- "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"EventType",{enumerable:!0,get:()=>e}),(e||(e={})).Update="update";
1
+ "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"EventType",{enumerable:!0,get:()=>e}),(e||(e={})).Update="update";
2
+ //# sourceMappingURL=models.js.map
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"setupWebsocketConnection",{enumerable:!0,get:()=>n});const e=require("ws"),t=require("./websocket/handlers"),r=require("./payload");function n(n){let o=new e.WebSocketServer({noServer:!0,clientTracking:!0}),a=setInterval(()=>{o.clients.forEach(e=>{let t=e.readyState<2;t&&e.ping()})},1e4);return n.httpServer.on("upgrade",(0,t.websocketUpgradeHandler)(o,n)),n.payloadStore.on(r.ExtensionsPayloadStoreEvent.Update,(0,t.getPayloadUpdateHandler)(o,n)),{close:()=>{o.close(),clearInterval(a)}}}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"setupWebsocketConnection",{enumerable:!0,get:()=>n});const e=require("ws"),t=require("./websocket/handlers"),r=require("./payload");function n(n){let o=new e.WebSocketServer({noServer:!0,clientTracking:!0}),a=setInterval(()=>{o.clients.forEach(e=>{let t=e.readyState<2;t&&e.ping()})},1e4);return n.httpServer.on("upgrade",(0,t.websocketUpgradeHandler)(o,n)),n.payloadStore.on(r.ExtensionsPayloadStoreEvent.Update,(0,t.getPayloadUpdateHandler)(o,n)),{close:()=>{o.close(),clearInterval(a)}}}
2
+ //# sourceMappingURL=websocket.js.map
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"serve",{enumerable:!0,get:()=>h});const e=require("../../utils/error"),t=require("./types"),r=require("./utils"),o=require("./env"),n=require("./context"),i=require("../../utils/tcp"),s=require("./serve/extension"),u=require("./serve/payload"),a=require("../../utils/path"),l=require("../../utils/abort"),p=require("../../utils/output"),c=require("./functions/info"),d=function(e){return e&&e.__esModule?e:{default:e}}(require("../../utils/winston")),E=require("./tunnel/cloudflared"),v={[t.EExtensionTypes.checkoutUiCustomizer]:{externalType:"checkout_ui",type:"checkout_ui_customizer",noProductErrorMessage:"Your store needs to have at least one product to serve checkout ui customizer"},[t.EExtensionTypes.postPurchaseCustomizer]:{externalType:"post_purchase",type:"post_purchase_customizer",noProductErrorMessage:"Your store needs to have at least one product to serve post purchase customizer"}};async function h(h){var w;let P=await (0,o.getEnv)();d.default.log(`Current store environment: ${P}`);let g=null!==(w=null==h?void 0:h.cwd)&&void 0!==w?w:process.cwd(),x=await (0,r.getExtensionType)(g);if(d.default.log(`Current selected extension type: ${x}`),x===t.EExtensionTypes.themeAppExtension)throw new e.AbortError("Shopline extension serve is not support for theme app extension.");if(await (0,c.isFunctionType)(x))throw new e.AbortError("Shopline extension serve is not support for Functions extension.");h.reset&&(d.default.log("Clearing environment variables..."),(0,o.clearEnvFile)(P,g)),d.default.log("Ensure current environment...");let{envObject:y,appName:T,partnerName:m,storeId:b}=await (0,n.ensureCurrentEnvs)(P,g,x,v[x].noProductErrorMessage);d.default.log("Write environment variables..."),(0,o.writeEnvFile)(P,y,g),d.default.log("Show environment information..."),(0,n.showEnvInfos)(m,T,y.EXTENSION_TITLE,y.SHOP),h.port&&(d.default.log("Checking port..."),await f(h.port)),d.default.log("Get Available TCP Port...");let _=await (0,i.getAvailableTCPPort)();if(d.default.log(`Web Proxy Port: ${_}`),x===t.EExtensionTypes.checkoutUiCustomizer||x===t.EExtensionTypes.postPurchaseCustomizer){d.default.log("Start cloudflared tunnel...");let e=await (0,E.startTunnel)(_);d.default.log(`Tunnel URL: ${e}`),(0,p.outputSuccess)((0,p.outputContent)`cloudflared tunnel running at ${p.outputToken.link(e,e)}.`);let t=new l.AbortController;await (0,s.devUiCustomizer)({extension:await (0,u.getUiCustomizer)({name:y.EXTENSION_TITLE,cwd:g,externalType:v[x].externalType,outputBundlePath:(0,a.joinPath)(g,"build/main.js"),uuid:y.EXTENSION_UUID,type:v[x].type,noProductErrorMessage:v[x].noProductErrorMessage}),reloadNoticeUrl:(0,u.getReloadNoticeUrl)(e),appKey:y.SHOPLINE_APP_KEY,shop:y.SHOP,storeId:b,port:h.port,webProxyPort:_,signal:t.signal,url:e,previewPath:(0,u.getPreviewPath)(y.EXTENSION_UUID)})}else x===t.EExtensionTypes.pixelsExtension&&await (0,s.devPixelsExtension)({extension:{uuid:y.EXTENSION_UUID,directory:h.cwd},port:h.port,shop:y.SHOP})}async function f(t){if(!t)throw new e.AbortError("Please provide a port number");let r=await (0,i.checkPortAvailability)(t);if(!r)throw new e.AbortError(`Development port ${t} is not available, please choose another one.`)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"serve",{enumerable:!0,get:()=>P});const e=require("../../utils/error"),t=require("./types"),r=require("./utils"),o=require("./env"),n=require("./context"),i=require("../../utils/tcp"),s=require("./serve/extension"),u=require("./serve/payload"),l=require("../../utils/path"),a=require("../../utils/abort"),p=require("../../utils/output"),E=require("./functions/info"),c=function(e){return e&&e.__esModule?e:{default:e}}(require("../../utils/winston")),d=require("./tunnel/cloudflared"),v=require("./const");async function P(P){var T;let h=await (0,o.getEnv)();c.default.log(`Current store environment: ${h}`);let w=null!==(T=null==P?void 0:P.cwd)&&void 0!==T?T:process.cwd(),x=await (0,r.getExtensionType)(w);if(c.default.log(`Current selected extension type: ${x}`),x===t.EExtensionTypes.themeAppExtension)throw new e.AbortError("Shopline extension serve is not support for theme app extension.");if(await (0,E.isFunctionType)(x))throw new e.AbortError("Shopline extension serve is not support for Functions extension.");P.reset&&(c.default.log("Clearing environment variables..."),(0,o.clearEnvFile)(h,w)),c.default.log("Ensure current environment...");let{envObject:g,appName:y,partnerName:_,storeId:m}=await (0,n.ensureCurrentEnvs)(h,w,x);c.default.log("Write environment variables..."),(0,o.writeEnvFile)(h,g,w),c.default.log("Show environment information..."),(0,n.showEnvInfos)(_,y,g.EXTENSION_TITLE,g.SHOP),P.port&&(c.default.log("Checking port..."),await f(P.port)),c.default.log("Get Available TCP Port...");let C=await (0,i.getAvailableTCPPort)();if(c.default.log(`Web Proxy Port: ${C}`),x===t.EExtensionTypes.checkoutUiCustomizer||x===t.EExtensionTypes.postPurchaseCustomizer){c.default.log("Start cloudflared tunnel...");let e=await (0,d.startTunnel)(C);c.default.log(`Tunnel URL: ${e}`),(0,p.outputSuccess)((0,p.outputContent)`cloudflared tunnel running at ${p.outputToken.link(e,e)}.`);let r=new a.AbortController,o={[t.EExtensionTypes.checkoutUiCustomizer]:{externalType:"checkout_ui",type:"checkout_ui_customizer",noProductErrorMessage:v.CHECKOUT_UI_NO_PRODUCT_ERROR_MESSAGE},[t.EExtensionTypes.postPurchaseCustomizer]:{externalType:"post_purchase",type:"post_purchase_customizer",noProductErrorMessage:v.POST_PURCHASE_NO_PRODUCT_ERROR_MESSAGE}},n=o[x];await (0,s.devUiCustomizer)({extension:await (0,u.getUiCustomizer)({name:g.EXTENSION_TITLE,cwd:w,externalType:n.externalType,outputBundlePath:(0,l.joinPath)(w,"build/main.js"),uuid:g.EXTENSION_UUID,type:n.type,noProductErrorMessage:n.noProductErrorMessage}),reloadNoticeUrl:(0,u.getReloadNoticeUrl)(e),appKey:g.SHOPLINE_APP_KEY,shop:g.SHOP,storeId:m,port:P.port,webProxyPort:C,signal:r.signal,url:e,previewPath:(0,u.getPreviewPath)(g.EXTENSION_UUID)})}else x===t.EExtensionTypes.pixelsExtension&&await (0,s.devPixelsExtension)({extension:{uuid:g.EXTENSION_UUID,directory:w},port:P.port,shop:g.SHOP})}async function f(t){if(!t)throw new e.AbortError("Please provide a port number");let r=await (0,i.checkPortAvailability)(t);if(!r)throw new e.AbortError(`Development port ${t} is not available, please choose another one.`)}
2
+ //# sourceMappingURL=serve.js.map
@@ -1 +1,2 @@
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,{startTunnel:()=>c,pollTunnelURL:()=>d});const t=require("stream"),e=require("../../../utils/abort"),r=function(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var r=i(e);if(r&&r.has(t))return r.get(t);var n={},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in t)if("default"!==o&&Object.prototype.hasOwnProperty.call(t,o)){var s=u?Object.getOwnPropertyDescriptor(t,o):null;s&&(s.get||s.set)?Object.defineProperty(n,o,s):n[o]=t[o]}return n.default=t,r&&r.set(t,n),n}(require("./install-cloudflared")),n=require("../../../utils/local"),u=require("../../../utils/system"),o=require("../../../utils/error"),s=require("../../../utils/output"),a=function(t){return t&&t.__esModule?t:{default:t}}(require("../../../utils/winston"));function l(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return(i=function(t){return t?r:e})(t)}async function c(t){try{let e=new g(t);await e.startTunnel();let r=await d(e);return r}catch(t){if(t instanceof o.AbortError)throw t;throw new o.AbortError(`unknown error: ${t.message}`)}}async function d(t){return new Promise((e,r)=>{let n=0,u=async()=>{let u=t.getTunnelStatus();if(a.default.log(`Tunnel status: ${u.status}`),(0,s.outputDebug)(`Polling tunnel status for cloudflare (attempt ${n}): ${u.status}`),"error"===u.status)return r(new o.AbortError(u.message,u.tryMessage));"connected"===u.status?e(u.url):(n+=1,a.default.log(`Tunnel not connected yet, retrying ${n} times...`),l())},l=()=>{setTimeout(u,500)};u()})}const f=(0,n.isUnitTest)()?.2:40;class g{async startTunnel(){try{await (0,r.default)(),this.tunnel()}catch(t){this.currentStatus={status:"error",message:t.message,tryMessage:p()}}}getTunnelStatus(){return this.currentStatus}stopTunnel(){var t;null===(t=this.abortController)||void 0===t||t.abort()}tunnel(l=0){var i;let c;this.abortController=new e.AbortController;let d=!1;if(l>=5){a.default.log("Max tunnel retries reached: 5, stopping tunnel..."),d=!0,this.currentStatus={status:"error",message:"Could not start Cloudflare tunnel: max retries reached.",tryMessage:p()};return}let g=["tunnel","--url",`http://localhost:${this.port}`,"--no-autoupdate"],h=[],m=!1;this.currentStatus={status:"starting"},setTimeout(()=>{if(!d){var t;a.default.log(`Tunnel timeout reached: ${f}, aborting tunnel...`),d=!0;let e=[...new Set(h)].slice(-5).join("\n");""===e?this.currentStatus={status:"error",message:"Could not start Cloudflare tunnel: unknown error.",tryMessage:p()}:this.currentStatus={status:"error",message:e,tryMessage:p()},null===(t=this.abortController)||void 0===t||t.abort()}},1e3*f);let y=this,b=new t.Writable({write(t,e,r){if((0,s.outputDebug)(t.toString()),a.default.log(`cloudflared tunnel output: ${t.toString()}`),d)return;c||(c=function(t){var e;let r=RegExp("(https:\\/\\/[^\\s]+\\.trycloudflare.com)"),n=null!==(e=t.toString().match(r))&&void 0!==e?e:void 0;return n&&n[1]}(t)),function(t){var e;let r=null!==(e=t.toString().match(/(INF Registered tunnel connection|INF Connection)/))&&void 0!==e?e:void 0;return r&&r[0]}(t)&&(m=!0),m&&(c?(d=!0,y.currentStatus={status:"connected",url:c}):y.currentStatus={status:"error",message:"Could not start Cloudflare tunnel: URL not found."});let n=function(t){let e=[/failed to request quick Tunnel/,/failed to unmarshal quick Tunnel/,/failed to parse quick Tunnel ID/,/failed to provision routing/,/ERR Couldn't start tunnel/,/ERR Failed to serve quic connection/,/ERR Failed to create new quic connection error/].some(e=>e.test(t.toString()));if(e)return`Could not start Cloudflare tunnel: ${t.toString().replace(/^[0-9TZ:-]+ (ERR )?/g,"").replace(/connIndex.*/g,"")}`}(t);n&&h.push(n),r()}});a.default.log(`Starting cloudflared tunnel with args: ${g.join(" ")}`),(0,u.exec)((0,r.getBinPathTarget)(),g,{stdout:b,stderr:b,signal:null===(i=this.abortController)||void 0===i?void 0:i.signal,externalErrorHandler:async t=>{if(a.default.log(`Cloudflare tunnel error: ${t.message}`),t.message.includes("Unknown system error -86")){this.currentStatus={status:"error",message:"Could not start Cloudflare tunnel: Missing Rosetta 2.",tryMessage:"Install it by running 'softwareupdate --install-rosetta' and try again"};return}if(d)throw new o.BugError(`Could not start Cloudflare tunnel: process crashed after stablishing a connection: ${t.message}`,p());(0,s.outputDebug)(`Cloudflare tunnel crashed: ${t.message}, restarting...`),(0,n.isUnitTest)()||await (0,u.sleep)(1),this.tunnel(l+1)}})}constructor(t){l(this,"port",void 0),l(this,"currentStatus",{status:"not-started"}),l(this,"abortController",void 0),this.port=t}}function p(){return["What to try:",{list:{items:[["Run the command again"]]}}]}
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,{startTunnel:()=>c,pollTunnelURL:()=>d});const t=require("stream"),e=require("../../../utils/abort"),r=function(t,e){if(!e&&t&&t.__esModule)return t;if(null===t||"object"!=typeof t&&"function"!=typeof t)return{default:t};var r=i(e);if(r&&r.has(t))return r.get(t);var n={},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in t)if("default"!==o&&Object.prototype.hasOwnProperty.call(t,o)){var s=u?Object.getOwnPropertyDescriptor(t,o):null;s&&(s.get||s.set)?Object.defineProperty(n,o,s):n[o]=t[o]}return n.default=t,r&&r.set(t,n),n}(require("./install-cloudflared")),n=require("../../../utils/local"),u=require("../../../utils/system"),o=require("../../../utils/error"),s=require("../../../utils/output"),a=function(t){return t&&t.__esModule?t:{default:t}}(require("../../../utils/winston"));function l(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function i(t){if("function"!=typeof WeakMap)return null;var e=new WeakMap,r=new WeakMap;return(i=function(t){return t?r:e})(t)}async function c(t){try{let e=new g(t);await e.startTunnel();let r=await d(e);return r}catch(t){if(t instanceof o.AbortError)throw t;throw new o.AbortError(`unknown error: ${t.message}`)}}async function d(t){return new Promise((e,r)=>{let n=0,u=async()=>{let u=t.getTunnelStatus();if(a.default.log(`Tunnel status: ${u.status}`),(0,s.outputDebug)(`Polling tunnel status for cloudflare (attempt ${n}): ${u.status}`),"error"===u.status)return r(new o.AbortError(u.message,u.tryMessage));"connected"===u.status?e(u.url):(n+=1,a.default.log(`Tunnel not connected yet, retrying ${n} times...`),l())},l=()=>{setTimeout(u,500)};u()})}const f=(0,n.isUnitTest)()?.2:40;class g{async startTunnel(){try{await (0,r.default)(),this.tunnel()}catch(t){this.currentStatus={status:"error",message:t.message,tryMessage:p()}}}getTunnelStatus(){return this.currentStatus}stopTunnel(){var t;null===(t=this.abortController)||void 0===t||t.abort()}tunnel(l=0){var i;let c;this.abortController=new e.AbortController;let d=!1;if(l>=5){a.default.log("Max tunnel retries reached: 5, stopping tunnel..."),d=!0,this.currentStatus={status:"error",message:"Could not start Cloudflare tunnel: max retries reached.",tryMessage:p()};return}let g=["tunnel","--url",`http://localhost:${this.port}`,"--no-autoupdate"],h=[],m=!1;this.currentStatus={status:"starting"},setTimeout(()=>{if(!d){var t;a.default.log(`Tunnel timeout reached: ${f}, aborting tunnel...`),d=!0;let e=[...new Set(h)].slice(-5).join("\n");""===e?this.currentStatus={status:"error",message:"Could not start Cloudflare tunnel: unknown error.",tryMessage:p()}:this.currentStatus={status:"error",message:e,tryMessage:p()},null===(t=this.abortController)||void 0===t||t.abort()}},1e3*f);let y=this,b=new t.Writable({write(t,e,r){if((0,s.outputDebug)(t.toString()),a.default.log(`cloudflared tunnel output: ${t.toString()}`),d)return;c||(c=function(t){var e;let r=RegExp("(https:\\/\\/[^\\s]+\\.trycloudflare.com)"),n=null!==(e=t.toString().match(r))&&void 0!==e?e:void 0;return n&&n[1]}(t)),function(t){var e;let r=null!==(e=t.toString().match(/(INF Registered tunnel connection|INF Connection)/))&&void 0!==e?e:void 0;return r&&r[0]}(t)&&(m=!0),m&&(c?(d=!0,y.currentStatus={status:"connected",url:c}):y.currentStatus={status:"error",message:"Could not start Cloudflare tunnel: URL not found."});let n=function(t){let e=[/failed to request quick Tunnel/,/failed to unmarshal quick Tunnel/,/failed to parse quick Tunnel ID/,/failed to provision routing/,/ERR Couldn't start tunnel/,/ERR Failed to serve quic connection/,/ERR Failed to create new quic connection error/].some(e=>e.test(t.toString()));if(e)return`Could not start Cloudflare tunnel: ${t.toString().replace(/^[0-9TZ:-]+ (ERR )?/g,"").replace(/connIndex.*/g,"")}`}(t);n&&h.push(n),r()}});a.default.log(`Starting cloudflared tunnel with args: ${g.join(" ")}`),(0,u.exec)((0,r.getBinPathTarget)(),g,{stdout:b,stderr:b,signal:null===(i=this.abortController)||void 0===i?void 0:i.signal,externalErrorHandler:async t=>{if(a.default.log(`Cloudflare tunnel error: ${t.message}`),t.message.includes("Unknown system error -86")){this.currentStatus={status:"error",message:"Could not start Cloudflare tunnel: Missing Rosetta 2.",tryMessage:"Install it by running 'softwareupdate --install-rosetta' and try again"};return}if(d)throw new o.BugError(`Could not start Cloudflare tunnel: process crashed after stablishing a connection: ${t.message}`,p());(0,s.outputDebug)(`Cloudflare tunnel crashed: ${t.message}, restarting...`),(0,n.isUnitTest)()||await (0,u.sleep)(1),this.tunnel(l+1)}})}constructor(t){l(this,"port",void 0),l(this,"currentStatus",{status:"not-started"}),l(this,"abortController",void 0),this.port=t}}function p(){return["What to try:",{list:{items:[["Run the command again"]]}}]}
2
+ //# sourceMappingURL=cloudflared.js.map
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,l){for(var t in l)Object.defineProperty(e,t,{enumerable:!0,get:l[t]})}(exports,{CURRENT_CLOUDFLARE_VERSION:()=>u,getBinPathTarget:()=>f,default:()=>p,versionIsGreaterThan:()=>m});const e=require("child_process"),l=require("stream"),t=d(require("util")),r=require("../../../utils/fs"),a=require("../../../utils/output"),i=require("../../../utils/path"),n=require("../../../utils/http"),o=d(require("../../../utils/winston"));function d(e){return e&&e.__esModule?e:{default:e}}const u="2024.2.1",s=`https://github.com/cloudflare/cloudflared/releases/download/${u}/`,c={linux:{arm64:"cloudflared-linux-arm64",arm:"cloudflared-linux-arm",x64:"cloudflared-linux-amd64",ia32:"cloudflared-linux-386"},darwin:{arm64:"cloudflared-darwin-amd64.tgz",x64:"cloudflared-darwin-amd64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe",ia32:"cloudflared-windows-386.exe",arm64:"cloudflared-windows-amd64.exe"}};function f(e=process.platform){return(0,i.joinPath)(__dirname,"..","bin","win32"===e?"cloudflared.exe":"cloudflared")}async function p(l=process.platform,t=process.arch){let i=function(e=process.platform,l=process.arch){let t=Object.keys(c);if(!t.includes(e))throw Error(`Unsupported system platform: ${e}`);let r=c[e][l];if(void 0===r)throw Error(`Unsupported system arch: ${l}`);return s+r}(l,t);o.default.log(`Get will be download cloudflared URL: ${i}`);let n=f(l);o.default.log(`Will be install cloudflared to: ${n}`);try{if((0,r.fileExistsSync)(n)){o.default.log("cloudflared already installed, skipping");let l=(0,e.execFileSync)(n,["--version"],{encoding:"utf8"}).split(" "),t=l.length>2?l[2]:"0.0.0",r=m(u,t);if(!r){(0,a.outputDebug)("cloudflared already installed, skipping");return}}}catch(e){(0,a.outputDebug)("version check failed, reinstalling")}if(o.default.log(`cloudflared not installed, installing with platform: ${l}...`),"linux"===l)await w(i,n);else if("darwin"===l)await y(i,n);else if("win32"===l)await g(i,n);else throw Error(`Unsupported system platform: ${l}`);o.default.log(`cloudflared installed to: ${n}`)}function m(e,l){let[t,r,a]=e.split(".").map(Number),[i,n,o]=l.split(".").map(Number);return t!==i?(null!=t?t:0)>(null!=i?i:0):r!==n?(null!=r?r:0)>(null!=n?n:0):(null!=a?a:0)>(null!=o?o:0)}async function w(e,l){await h(e,l),await (0,r.chmod)(l,"755")}async function y(l,t){await h(l,`${t}.tgz`);let a=(0,i.basename)(`${t}.tgz`);(0,e.execSync)(`tar -xzf ${a}`,{cwd:(0,i.dirname)(t)}),(0,r.unlinkFileSync)(`${t}.tgz`),await (0,r.renameFile)(`${(0,i.dirname)(t)}/cloudflared`,t)}async function g(e,l){await h(e,l)}async function h(e,a){(0,r.fileExistsSync)((0,i.dirname)(a))||(0,r.mkdirSync)((0,i.dirname)(a));let o=t.default.promisify(l.pipeline),d=await (0,n.fetch)(e,{redirect:"follow"});if(!d.ok||!d.body)throw Error(`Couldn't download file ${e} (${d.status} ${d.statusText})`);let u=(0,r.createFileWriteStream)(a);return await o(d.body,u),a}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,l){for(var t in l)Object.defineProperty(e,t,{enumerable:!0,get:l[t]})}(exports,{CURRENT_CLOUDFLARE_VERSION:()=>u,getBinPathTarget:()=>f,default:()=>p,versionIsGreaterThan:()=>m});const e=require("child_process"),l=require("stream"),t=d(require("util")),r=require("../../../utils/fs"),a=require("../../../utils/output"),i=require("../../../utils/path"),n=require("../../../utils/http"),o=d(require("../../../utils/winston"));function d(e){return e&&e.__esModule?e:{default:e}}const u="2024.2.1",s=`https://github.com/cloudflare/cloudflared/releases/download/${u}/`,c={linux:{arm64:"cloudflared-linux-arm64",arm:"cloudflared-linux-arm",x64:"cloudflared-linux-amd64",ia32:"cloudflared-linux-386"},darwin:{arm64:"cloudflared-darwin-amd64.tgz",x64:"cloudflared-darwin-amd64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe",ia32:"cloudflared-windows-386.exe",arm64:"cloudflared-windows-amd64.exe"}};function f(e=process.platform){return(0,i.joinPath)(__dirname,"..","bin","win32"===e?"cloudflared.exe":"cloudflared")}async function p(l=process.platform,t=process.arch){let i=function(e=process.platform,l=process.arch){let t=Object.keys(c);if(!t.includes(e))throw Error(`Unsupported system platform: ${e}`);let r=c[e][l];if(void 0===r)throw Error(`Unsupported system arch: ${l}`);return s+r}(l,t);o.default.log(`Get will be download cloudflared URL: ${i}`);let n=f(l);o.default.log(`Will be install cloudflared to: ${n}`);try{if((0,r.fileExistsSync)(n)){o.default.log("cloudflared already installed, skipping");let l=(0,e.execFileSync)(n,["--version"],{encoding:"utf8"}).split(" "),t=l.length>2?l[2]:"0.0.0",r=m(u,t);if(!r){(0,a.outputDebug)("cloudflared already installed, skipping");return}}}catch(e){(0,a.outputDebug)("version check failed, reinstalling")}if(o.default.log(`cloudflared not installed, installing with platform: ${l}...`),"linux"===l)await w(i,n);else if("darwin"===l)await y(i,n);else if("win32"===l)await g(i,n);else throw Error(`Unsupported system platform: ${l}`);o.default.log(`cloudflared installed to: ${n}`)}function m(e,l){let[t,r,a]=e.split(".").map(Number),[i,n,o]=l.split(".").map(Number);return t!==i?(null!=t?t:0)>(null!=i?i:0):r!==n?(null!=r?r:0)>(null!=n?n:0):(null!=a?a:0)>(null!=o?o:0)}async function w(e,l){await h(e,l),await (0,r.chmod)(l,"755")}async function y(l,t){await h(l,`${t}.tgz`);let a=(0,i.basename)(`${t}.tgz`);(0,e.execSync)(`tar -xzf ${a}`,{cwd:(0,i.dirname)(t)}),(0,r.unlinkFileSync)(`${t}.tgz`),await (0,r.renameFile)(`${(0,i.dirname)(t)}/cloudflared`,t)}async function g(e,l){await h(e,l)}async function h(e,a){(0,r.fileExistsSync)((0,i.dirname)(a))||(0,r.mkdirSync)((0,i.dirname)(a));let o=t.default.promisify(l.pipeline),d=await (0,n.fetch)(e,{redirect:"follow"});if(!d.ok||!d.body)throw Error(`Couldn't download file ${e} (${d.status} ${d.statusText})`);let u=(0,r.createFileWriteStream)(a);return await o(d.body,u),a}
2
+ //# sourceMappingURL=install-cloudflared.js.map
@@ -1 +1,2 @@
1
- "use strict";var e,t,n;Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{ExtensionType:()=>e,EFunctionTypes:()=>t,EExtensionTypes:()=>n}),function(e){e.THEME_APP_EXTENSION="THEME_APP_EXTENSION",e.CHECKOUT_UI_CUSTOMIZER="CHECKOUT_UI_CUSTOMIZER"}(e||(e={})),(t||(t={})).PaymentCustomization="PaymentCustomization",function(e){e.themeAppExtension="themeAppExtension",e.checkoutUiCustomizer="checkoutUiCustomizer",e.postPurchaseCustomizer="postPurchaseCustomizer",e.pixelsExtension="pixelsExtension",e.shopperExtension="shopperExtension"}(n||(n={}));
1
+ "use strict";var e,t,n;Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{ExtensionType:()=>e,EFunctionTypes:()=>t,EExtensionTypes:()=>n}),function(e){e.THEME_APP_EXTENSION="THEME_APP_EXTENSION",e.CHECKOUT_UI_CUSTOMIZER="CHECKOUT_UI_CUSTOMIZER"}(e||(e={})),(t||(t={})).PaymentCustomization="PaymentCustomization",function(e){e.themeAppExtension="themeAppExtension",e.checkoutUiCustomizer="checkoutUiCustomizer",e.postPurchaseCustomizer="postPurchaseCustomizer",e.pixelsExtension="pixelsExtension",e.shopperExtension="shopperExtension"}(n||(n={}));
2
+ //# sourceMappingURL=types.js.map
@@ -1 +1,2 @@
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,{extractSchema:()=>y,removeFile:()=>x,getEnvPath:()=>N,formatTime:()=>I,getExtensionLink:()=>_,getAppVersionManageLink:()=>P,getDeveloperPlatformLink:()=>S,getStoreUrl:()=>O,getShopHandle:()=>w,validateSchemaError:()=>F,isMatchedInterpolation:()=>v,getNonMatchedOptionInterpolation:()=>C,buildPartnerChoice:()=>$,buildAppChoice:()=>g,buildExtChoice:()=>L,buildExtensionTypeChoice:()=>A,buildStoreChoice:()=>U,getExtensionType:()=>j,getExtensionConfig:()=>b,generateDevUUID:()=>q,getExtShowType:()=>D,getExtType:()=>R,getExtensionName:()=>X});const e=require("path"),t=d(require("fs-extra")),i=require("uuid"),n=require("light-date"),o=d(require("js-yaml")),s=require("./const"),r=require("./types"),a=require("./api"),p=d(require("../../utils/colors")),l=require("../../utils/path"),u=require("../../utils/fs"),E=require("../../utils/toml"),c=require("./schemas"),m=require("../../utils/error"),f=require("./functions/schemas"),h=require("./functions/info"),T=require("./push/shopper");function d(e){return e&&e.__esModule?e:{default:e}}function y(e){let t=e.match(/{{\s*#schema\s*}}([\s\S]*?){{\s*\/schema\s*}}/);return t?t[1]:""}function x(e){t.default.existsSync(e)&&t.default.removeSync(e)}function N(t,i=process.cwd()){return t?(0,e.join)(i,`.env.${t}`):(0,e.join)(i,".env")}function I(e=Date.now(),t="{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}"){let i=new Date(e);return(0,n.format)(i,t)}function _(e){let t=s.DEFAULT_EXTENSION_ENDPOINT;return e.env&&(t=s.EXTENSION_ENDPOINTS[e.env]),`${t}/${s.EXTENSION_LINK_PATH}/${e.appKey}/${e.extensionUuid}`}function P(e){let t=s.DEFAULT_EXTENSION_ENDPOINT;return e.env&&(t=s.EXTENSION_ENDPOINTS[e.env]),`${t}/${s.APP_VERSION_MANAGE_LINK_PATH}?appKey=${e.appKey}`}function S(e){return e?s.EXTENSION_ENDPOINTS[e]:s.DEFAULT_EXTENSION_ENDPOINT}function O(e,t){return"dev"===t?`${e}.myshoplinedev.com`:"test"===t?`${e}.myshoplinestg.com`:"pre"===t?`${e}.preview.myshopline.com`:`${e}.myshopline.com`}function w(e,t){if("dev"===t){let t=e.match(/^([^.]+)\.myshoplinedev\.com$/);return null==t?void 0:t[1]}if("test"===t){let t=e.match(/^([^.]+)\.myshoplinestg\.com$/);return null==t?void 0:t[1]}if("pre"===t){let t=e.match(/^([^.]+)\.preview\.myshopline\.com$/);return null==t?void 0:t[1]}if("prod"===t){let t=e.match(/^([^.]+)\.myshopline\.com$/);return null==t?void 0:t[1]}let i=e.match(/^([^.]+)\.myshopline\.com$/);return null==i?void 0:i[1]}function F(e){return(t,i)=>{if(i)throw Error(`[${e}] Invalid tag 'schema': ${i}: ${t}`);if(t)throw Error(`[${e}] Invalid schema: ${t}`);throw Error(`[${e}] Invalid schema`)}}function v(e){return/^{{\s*apps\.metafields\.\w+(\.\w+)+?(?:\.value)\s*}}$/.test(e)}function C(e){let t=e.map((e,t)=>{if(Object.prototype.hasOwnProperty.call(e,"options")&&"string"==typeof e.options){let i=s.OPTION_TYPES.includes(e.type);if(v(e.options)&&i)return{pass:!0,reason:"",field:""};if(v(e.options))return{pass:!1,reason:`must be one of ${s.OPTION_TYPES.join(", ")}`,field:`settings[${t}].type`};if(i)return{pass:!1,reason:s.ERRORS.INVALID_INTERPOLATION,field:`settings[${t}].options`}}return{pass:!0,reason:"",field:""}});return t.filter(e=>!e.pass)}function $(e){return e.map(e=>({label:e.partnerName,value:e.id}))}function g(e,t){return e.map(e=>({label:`${e.appName} ${p.default.magenta(`by ${t}`)}`,value:e}))}function L(e){return[...e.map(e=>({label:`${e.name} ${p.default.magenta(e.type)}`,value:e})),{label:"Register a new extension",value:{}}]}function A(e){let t=s.EXTENSION_TYPES;return e.length>0?t.concat(e.map(e=>({label:`${e.templateName} - Function`,value:e.templateName}))):t}function U(e){return e.map(e=>({label:e.storeName,value:e}))}async function j(e){let i=(0,l.joinPath)(e,s.EXTENSION_CONFIG_FILE),n=(0,l.joinPath)(e,s.CHECKOUT_UI_CONFIG_FILE),a=(0,l.joinPath)(e,s.POST_PURCHASE_CONFIG_FILE),p=(0,l.joinPath)(e,s.FUNCTION_CONFIG_FILE),T=(0,l.joinPath)(e,s.PIXELS_CONFIG_FILE),d=(0,l.joinPath)(e,s.SHOPPER_CONFIG_FILE);if(await (0,u.fileExists)(i)){let e=o.default.load(t.default.readFileSync(i,"utf8"));if("extension"===e.project_type)return r.EExtensionTypes.themeAppExtension}if(await (0,u.fileExists)(n)){let e=await (0,u.readFile)(n),t=(0,E.decodeToml)(e),{type:i}=await c.TypeSchema.parse(t);if("checkout_ui_customizer"===i)return r.EExtensionTypes.checkoutUiCustomizer}if(await (0,u.fileExists)(a)){let e=await (0,u.readFile)(a),t=(0,E.decodeToml)(e),{type:i}=await c.TypeSchema.parse(t);if("post_purchase_customizer"===i)return r.EExtensionTypes.postPurchaseCustomizer}if(await (0,u.fileExists)(p)){let e=await (0,u.readFile)(p),t=(0,E.decodeToml)(e),{type:i}=await f.FunctionTypeSchema.parse(t);if(await (0,h.isFunctionType)(i))return i}if(await (0,u.fileExists)(T)){let e=await (0,u.readFile)(T),t=(0,E.decodeToml)(e),{type:i}=await c.TypeSchema.parse(t);if("shopline-pixels-extension"===i)return r.EExtensionTypes.pixelsExtension}if(await (0,u.fileExists)(d)){let e=await (0,u.readFile)(d),t=(0,E.decodeToml)(e),{type:i}=await c.TypeSchema.parse(t);if([1,2].includes(i))return`${r.EExtensionTypes.shopperExtension}--${i}`}throw new m.AbortError("The directory you are in is not a valid extension project.")}async function b(e,i){if(e===r.EExtensionTypes.themeAppExtension){let e=(0,l.joinPath)(i,s.EXTENSION_CONFIG_FILE);if(await (0,u.fileExists)(e)){let i=o.default.load(t.default.readFileSync(e,"utf8"));if("extension"===i.project_type)return{type:r.EExtensionTypes.themeAppExtension,name:"theme-app-extension"}}}if(e===r.EExtensionTypes.checkoutUiCustomizer){let e=(0,l.joinPath)(i,s.CHECKOUT_UI_CONFIG_FILE);if(await (0,u.fileExists)(e)){let t=await (0,u.readFile)(e),i=(0,E.decodeToml)(t),{name:n}=await c.TypeSchema.parse(i);return{type:r.EExtensionTypes.checkoutUiCustomizer,name:n}}}if(e===r.EExtensionTypes.postPurchaseCustomizer){let e=(0,l.joinPath)(i,s.POST_PURCHASE_CONFIG_FILE);if(await (0,u.fileExists)(e)){let t=await (0,u.readFile)(e),i=(0,E.decodeToml)(t),{name:n}=await c.TypeSchema.parse(i);return{type:r.EExtensionTypes.postPurchaseCustomizer,name:n}}}if(e===r.EExtensionTypes.pixelsExtension){let e=(0,l.joinPath)(i,s.PIXELS_CONFIG_FILE);if(await (0,u.fileExists)(e)){let t=await (0,u.readFile)(e),i=(0,E.decodeToml)(t),{name:n}=await c.TypeSchema.parse(i);return{type:r.EExtensionTypes.pixelsExtension,name:n}}}let n=(0,l.joinPath)(i,s.FUNCTION_CONFIG_FILE);if(await (0,u.fileExists)(n)){let e=await (0,u.readFile)(n),t=(0,E.decodeToml)(e),{type:i,name:o}=await f.FunctionTypeSchema.parse(t);if(await (0,h.isFunctionType)(i))return{type:i,name:o}}if(e.startsWith(r.EExtensionTypes.shopperExtension)){let t=(0,l.joinPath)(i,s.SHOPPER_CONFIG_FILE);if(await (0,u.fileExists)(t)){let i=await (0,u.readFile)(t),n=(0,E.decodeToml)(i),{name:o}=await c.TypeSchema.parse(n);return{type:(0,T.getShopperType)(e),name:o}}}throw new m.AbortError(`Invalid extension type: ${e}`)}function q(){return`dev-${(0,i.v4)()}`}function D(e){let t=s.EXTENSION_TYPES.find(t=>t.value===e);return null==t?void 0:t.label}function R(e){return e===r.EExtensionTypes.checkoutUiCustomizer?a.ERegisterType.CHECKOUT_UI:e===r.EExtensionTypes.themeAppExtension?a.ERegisterType.THEME_APP_BLOCK:e===r.EExtensionTypes.pixelsExtension?a.ERegisterType.PIXELS:e.startsWith(r.EExtensionTypes.shopperExtension)?(0,T.getShopperType)(e):e===r.EExtensionTypes.postPurchaseCustomizer?a.ERegisterType.POST_PURCHASE:void 0}function X(e,t){return e||(t===r.EExtensionTypes.checkoutUiCustomizer?"checkout-ui-customizer":t===r.EExtensionTypes.themeAppExtension?"theme-app-extension":t===r.EExtensionTypes.pixelsExtension?"shopline-pixels-extension":t.startsWith(r.EExtensionTypes.shopperExtension)?"shopper-extension":t===r.EExtensionTypes.postPurchaseCustomizer?"post-purchase-customizer":t||s.DEFAULT_EXTENSION_NAME)}
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,{extractSchema:()=>y,removeFile:()=>x,getEnvPath:()=>N,formatTime:()=>I,getExtensionLink:()=>_,getAppVersionManageLink:()=>P,getDeveloperPlatformLink:()=>S,getStoreUrl:()=>O,getShopHandle:()=>w,validateSchemaError:()=>F,isMatchedInterpolation:()=>v,getNonMatchedOptionInterpolation:()=>C,buildPartnerChoice:()=>$,buildAppChoice:()=>g,buildExtChoice:()=>L,buildExtensionTypeChoice:()=>A,buildStoreChoice:()=>U,getExtensionType:()=>j,getExtensionConfig:()=>b,generateDevUUID:()=>q,getExtShowType:()=>D,getExtType:()=>R,getExtensionName:()=>X});const e=require("path"),t=d(require("fs-extra")),i=require("uuid"),n=require("light-date"),o=d(require("js-yaml")),s=require("./const"),r=require("./types"),a=require("./api"),p=d(require("../../utils/colors")),l=require("../../utils/path"),u=require("../../utils/fs"),E=require("../../utils/toml"),c=require("./schemas"),m=require("../../utils/error"),f=require("./functions/schemas"),h=require("./functions/info"),T=require("./push/shopper");function d(e){return e&&e.__esModule?e:{default:e}}function y(e){let t=e.match(/{{\s*#schema\s*}}([\s\S]*?){{\s*\/schema\s*}}/);return t?t[1]:""}function x(e){t.default.existsSync(e)&&t.default.removeSync(e)}function N(t,i=process.cwd()){return t?(0,e.join)(i,`.env.${t}`):(0,e.join)(i,".env")}function I(e=Date.now(),t="{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}"){let i=new Date(e);return(0,n.format)(i,t)}function _(e){let t=s.DEFAULT_EXTENSION_ENDPOINT;return e.env&&(t=s.EXTENSION_ENDPOINTS[e.env]),`${t}/${s.EXTENSION_LINK_PATH}/${e.appKey}/${e.extensionUuid}`}function P(e){let t=s.DEFAULT_EXTENSION_ENDPOINT;return e.env&&(t=s.EXTENSION_ENDPOINTS[e.env]),`${t}/${s.APP_VERSION_MANAGE_LINK_PATH}?appKey=${e.appKey}`}function S(e){return e?s.EXTENSION_ENDPOINTS[e]:s.DEFAULT_EXTENSION_ENDPOINT}function O(e,t){return"dev"===t?`${e}.myshoplinedev.com`:"test"===t?`${e}.myshoplinestg.com`:"pre"===t?`${e}.preview.myshopline.com`:`${e}.myshopline.com`}function w(e,t){if("dev"===t){let t=e.match(/^([^.]+)\.myshoplinedev\.com$/);return null==t?void 0:t[1]}if("test"===t){let t=e.match(/^([^.]+)\.myshoplinestg\.com$/);return null==t?void 0:t[1]}if("pre"===t){let t=e.match(/^([^.]+)\.preview\.myshopline\.com$/);return null==t?void 0:t[1]}if("prod"===t){let t=e.match(/^([^.]+)\.myshopline\.com$/);return null==t?void 0:t[1]}let i=e.match(/^([^.]+)\.myshopline\.com$/);return null==i?void 0:i[1]}function F(e){return(t,i)=>{if(i)throw Error(`[${e}] Invalid tag 'schema': ${i}: ${t}`);if(t)throw Error(`[${e}] Invalid schema: ${t}`);throw Error(`[${e}] Invalid schema`)}}function v(e){return/^{{\s*apps\.metafields\.\w+(\.\w+)+?(?:\.value)\s*}}$/.test(e)}function C(e){let t=e.map((e,t)=>{if(Object.prototype.hasOwnProperty.call(e,"options")&&"string"==typeof e.options){let i=s.OPTION_TYPES.includes(e.type);if(v(e.options)&&i)return{pass:!0,reason:"",field:""};if(v(e.options))return{pass:!1,reason:`must be one of ${s.OPTION_TYPES.join(", ")}`,field:`settings[${t}].type`};if(i)return{pass:!1,reason:s.ERRORS.INVALID_INTERPOLATION,field:`settings[${t}].options`}}return{pass:!0,reason:"",field:""}});return t.filter(e=>!e.pass)}function $(e){return e.map(e=>({label:e.partnerName,value:e.id}))}function g(e,t){return e.map(e=>({label:`${e.appName} ${p.default.magenta(`by ${t}`)}`,value:e}))}function L(e){return[...e.map(e=>({label:`${e.name} ${p.default.magenta(e.type)}`,value:e})),{label:"Register a new extension",value:{}}]}function A(e){let t=s.EXTENSION_TYPES;return e.length>0?t.concat(e.map(e=>({label:`${e.templateName} - Function`,value:e.templateName}))):t}function U(e){return e.map(e=>({label:e.storeName,value:e}))}async function j(e){let i=(0,l.joinPath)(e,s.EXTENSION_CONFIG_FILE),n=(0,l.joinPath)(e,s.CHECKOUT_UI_CONFIG_FILE),a=(0,l.joinPath)(e,s.POST_PURCHASE_CONFIG_FILE),p=(0,l.joinPath)(e,s.FUNCTION_CONFIG_FILE),T=(0,l.joinPath)(e,s.PIXELS_CONFIG_FILE),d=(0,l.joinPath)(e,s.SHOPPER_CONFIG_FILE);if(await (0,u.fileExists)(i)){let e=o.default.load(t.default.readFileSync(i,"utf8"));if("extension"===e.project_type)return r.EExtensionTypes.themeAppExtension}if(await (0,u.fileExists)(n)){let e=await (0,u.readFile)(n),t=(0,E.decodeToml)(e),{type:i}=await c.TypeSchema.parse(t);if("checkout_ui_customizer"===i)return r.EExtensionTypes.checkoutUiCustomizer}if(await (0,u.fileExists)(a)){let e=await (0,u.readFile)(a),t=(0,E.decodeToml)(e),{type:i}=await c.TypeSchema.parse(t);if("post_purchase_customizer"===i)return r.EExtensionTypes.postPurchaseCustomizer}if(await (0,u.fileExists)(p)){let e=await (0,u.readFile)(p),t=(0,E.decodeToml)(e),{type:i}=await f.FunctionTypeSchema.parse(t);if(await (0,h.isFunctionType)(i))return i}if(await (0,u.fileExists)(T)){let e=await (0,u.readFile)(T),t=(0,E.decodeToml)(e),{type:i}=await c.TypeSchema.parse(t);if("shopline-pixels-extension"===i)return r.EExtensionTypes.pixelsExtension}if(await (0,u.fileExists)(d)){let e=await (0,u.readFile)(d),t=(0,E.decodeToml)(e),{type:i}=await c.TypeSchema.parse(t);if([1,2].includes(i))return`${r.EExtensionTypes.shopperExtension}--${i}`}throw new m.AbortError("The directory you are in is not a valid extension project.")}async function b(e,i){if(e===r.EExtensionTypes.themeAppExtension){let e=(0,l.joinPath)(i,s.EXTENSION_CONFIG_FILE);if(await (0,u.fileExists)(e)){let i=o.default.load(t.default.readFileSync(e,"utf8"));if("extension"===i.project_type)return{type:r.EExtensionTypes.themeAppExtension,name:"theme-app-extension"}}}if(e===r.EExtensionTypes.checkoutUiCustomizer){let e=(0,l.joinPath)(i,s.CHECKOUT_UI_CONFIG_FILE);if(await (0,u.fileExists)(e)){let t=await (0,u.readFile)(e),i=(0,E.decodeToml)(t),{name:n}=await c.TypeSchema.parse(i);return{type:r.EExtensionTypes.checkoutUiCustomizer,name:n}}}if(e===r.EExtensionTypes.postPurchaseCustomizer){let e=(0,l.joinPath)(i,s.POST_PURCHASE_CONFIG_FILE);if(await (0,u.fileExists)(e)){let t=await (0,u.readFile)(e),i=(0,E.decodeToml)(t),{name:n}=await c.TypeSchema.parse(i);return{type:r.EExtensionTypes.postPurchaseCustomizer,name:n}}}if(e===r.EExtensionTypes.pixelsExtension){let e=(0,l.joinPath)(i,s.PIXELS_CONFIG_FILE);if(await (0,u.fileExists)(e)){let t=await (0,u.readFile)(e),i=(0,E.decodeToml)(t),{name:n}=await c.TypeSchema.parse(i);return{type:r.EExtensionTypes.pixelsExtension,name:n}}}let n=(0,l.joinPath)(i,s.FUNCTION_CONFIG_FILE);if(await (0,u.fileExists)(n)){let e=await (0,u.readFile)(n),t=(0,E.decodeToml)(e),{type:i,name:o}=await f.FunctionTypeSchema.parse(t);if(await (0,h.isFunctionType)(i))return{type:i,name:o}}if(e.startsWith(r.EExtensionTypes.shopperExtension)){let t=(0,l.joinPath)(i,s.SHOPPER_CONFIG_FILE);if(await (0,u.fileExists)(t)){let i=await (0,u.readFile)(t),n=(0,E.decodeToml)(i),{name:o}=await c.TypeSchema.parse(n);return{type:(0,T.getShopperType)(e),name:o}}}throw new m.AbortError(`Invalid extension type: ${e}`)}function q(){return`dev-${(0,i.v4)()}`}function D(e){let t=s.EXTENSION_TYPES.find(t=>t.value===e);return null==t?void 0:t.label}function R(e){return e===r.EExtensionTypes.checkoutUiCustomizer?a.ERegisterType.CHECKOUT_UI:e===r.EExtensionTypes.themeAppExtension?a.ERegisterType.THEME_APP_BLOCK:e===r.EExtensionTypes.pixelsExtension?a.ERegisterType.PIXELS:e.startsWith(r.EExtensionTypes.shopperExtension)?(0,T.getShopperType)(e):e===r.EExtensionTypes.postPurchaseCustomizer?a.ERegisterType.POST_PURCHASE:void 0}function X(e,t){return e||(t===r.EExtensionTypes.checkoutUiCustomizer?"checkout-ui-customizer":t===r.EExtensionTypes.themeAppExtension?"theme-app-extension":t===r.EExtensionTypes.pixelsExtension?"shopline-pixels-extension":t.startsWith(r.EExtensionTypes.shopperExtension)?"shopper-extension":t===r.EExtensionTypes.postPurchaseCustomizer?"post-purchase-customizer":t||s.DEFAULT_EXTENSION_NAME)}
2
+ //# sourceMappingURL=utils.js.map
@@ -1,3 +1,4 @@
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,{default:()=>a,validateBlockSchema3:()=>n});const e=require("./const"),t=require("./utils");function r(){class e extends Map{set2(e,t){super.set(e,t)}get2(e){return super.get(e)}validate(e){for(let[t,r]of super.entries()){let a=Object.prototype.hasOwnProperty.call(e,t);r(null==e?void 0:e[t],a)}}}return new e}function a(a,n){let i=null,{relativeFile:l}=n,s=t=>t.every(t=>e.ALL_TEMPLATES.includes(t)),o=r(),f=(0,t.validateSchemaError)(l);o.set2("name",e=>{e||f("must be required","name")}),o.set2("target",t=>{t||f("must be required","target"),e.TARGETS.includes(t)||f(`must be one of ${e.TARGETS.join(", ")}`,"target")}),o.set2("stylesheet",e=>{if(Array.isArray(e)&&e.length>0){let t=e.map(e=>"string"==typeof e?e.trim():e).filter(Boolean);0===t.length&&f("Leave blank or fill in at least one")}}),o.set2("javascript",e=>{if(Array.isArray(e)&&e.length>0){let t=e.map(e=>"string"==typeof e?e.trim():e).filter(Boolean);0===t.length&&f("Leave blank or fill in at least one")}}),o.set2("templates",t=>{Array.isArray(t)&&t.length>0&&!s(t)&&f(`must be one of:
2
2
  ${e.ALL_TEMPLATES.join("\n")}`,"templates")}),o.set2("tag",t=>{t&&!e.TAGS.includes(t)&&f(`must be one of ${e.TAGS.join(", ")}`,"tag")}),o.set2("available_if",(r,a)=>{a&&("string"!=typeof r||!(0,t.isMatchedInterpolation)(r))&&f(e.ERRORS.INVALID_INTERPOLATION,"available_if")}),o.set2("settings",e=>{if(e&&Array.isArray(e)){let r=(0,t.getNonMatchedOptionInterpolation)(e);r.forEach(e=>{f(e.reason,e.field)})}});try{i=JSON.parse(a)}catch(e){f()}return i||f(),o.validate(i),!0}function n(a,n){let i=null,{relativeFile:l}=n,s=t=>t.every(t=>e.ALL_TEMPLATES_3.includes(t)),o=r(),f=(0,t.validateSchemaError)(l);o.set2("name",e=>{e||f("must be required","name")}),o.set2("target",t=>{t||f("must be required","target"),e.TARGETS.includes(t)||f(`must be one of ${e.TARGETS.join(", ")}`,"target")}),o.set2("stylesheet",e=>{if(Array.isArray(e)&&e.length>0){let t=e.map(e=>"string"==typeof e?e.trim():e).filter(Boolean);0===t.length&&f("Leave blank or fill in at least one")}}),o.set2("javascript",e=>{if(Array.isArray(e)&&e.length>0){let t=e.map(e=>"string"==typeof e?e.trim():e).filter(Boolean);0===t.length&&f("Leave blank or fill in at least one")}}),o.set2("templates",t=>{Array.isArray(t)&&t.length>0&&!s(t)&&f(`must be one of:
3
- ${e.ALL_TEMPLATES_3.join("\n")}`,"templates")}),o.set2("tag",t=>{t&&!e.TAGS.includes(t)&&f(`must be one of ${e.TAGS.join(", ")}`,"tag")}),o.set2("available_if",(r,a)=>{a&&("string"!=typeof r||!(0,t.isMatchedInterpolation)(r))&&f(e.ERRORS.INVALID_INTERPOLATION,"available_if")}),o.set2("settings",e=>{if(e&&Array.isArray(e)){let r=(0,t.getNonMatchedOptionInterpolation)(e);r.forEach(e=>{f(e.reason,e.field)})}});try{i=JSON.parse(a)}catch(e){f()}return i||f(),o.validate(i),!0}
3
+ ${e.ALL_TEMPLATES_3.join("\n")}`,"templates")}),o.set2("tag",t=>{t&&!e.TAGS.includes(t)&&f(`must be one of ${e.TAGS.join(", ")}`,"tag")}),o.set2("available_if",(r,a)=>{a&&("string"!=typeof r||!(0,t.isMatchedInterpolation)(r))&&f(e.ERRORS.INVALID_INTERPOLATION,"available_if")}),o.set2("settings",e=>{if(e&&Array.isArray(e)){let r=(0,t.getNonMatchedOptionInterpolation)(e);r.forEach(e=>{f(e.reason,e.field)})}});try{i=JSON.parse(a)}catch(e){f()}return i||f(),o.validate(i),!0}
4
+ //# sourceMappingURL=validate.js.map
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,r){for(var o in r)Object.defineProperty(e,o,{enumerable:!0,get:r[o]})}(exports,{zip:()=>t,removeZip:()=>c});const e=o(require("fs")),r=o(require("archiver"));function o(e){return e&&e.__esModule?e:{default:e}}const s=`${process.cwd()}/dist.zip`;function t(o=s){return new Promise((s,t)=>{let c=(0,r.default)("zip",{zlib:{level:9}}),i=e.default.createWriteStream(o);i.on("close",()=>{}),i.on("finish",()=>{s({output:o,size:c.pointer()})}),c.on("error",()=>{t(Error("Failed to compress!"))}),c.pipe(i),c.glob("assets/**/*",{cwd:process.cwd()}).glob("blocks/**/*.html",{cwd:process.cwd()}).glob("snippets/**/*.html",{cwd:process.cwd()}).glob("locales/**/*.json",{cwd:process.cwd()}).finalize()})}function c(r=s){e.default.unlinkSync(r)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,r){for(var o in r)Object.defineProperty(e,o,{enumerable:!0,get:r[o]})}(exports,{zip:()=>t,removeZip:()=>c});const e=o(require("fs")),r=o(require("archiver"));function o(e){return e&&e.__esModule?e:{default:e}}const s=`${process.cwd()}/dist.zip`;function t(o=s){return new Promise((s,t)=>{let c=(0,r.default)("zip",{zlib:{level:9}}),i=e.default.createWriteStream(o);i.on("close",()=>{}),i.on("finish",()=>{s({output:o,size:c.pointer()})}),c.on("error",()=>{t(Error("Failed to compress!"))}),c.pipe(i),c.glob("assets/**/*",{cwd:process.cwd()}).glob("blocks/**/*.html",{cwd:process.cwd()}).glob("snippets/**/*.html",{cwd:process.cwd()}).glob("locales/**/*.json",{cwd:process.cwd()}).finalize()})}function c(r=s){e.default.unlinkSync(r)}
2
+ //# sourceMappingURL=zip.js.map
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,o){for(var r in o)Object.defineProperty(e,r,{enumerable:!0,get:o[r]})}(exports,{zip:()=>s,removeZip:()=>t});const e=c(require("fs")),o=c(require("archiver")),r=require("./const");function c(e){return e&&e.__esModule?e:{default:e}}const i=`${process.cwd()}/dist.zip`;function s(c=i){return new Promise((i,s)=>{let t=(0,o.default)("zip",{zlib:{level:9}}),n=e.default.createWriteStream(c);n.on("close",()=>{}),n.on("finish",()=>{i({output:c,size:t.pointer()})}),t.on("error",()=>{s(Error("Failed to compress!"))}),t.pipe(n),t.glob("public/**/*",{cwd:process.cwd()}).glob("blocks/**/*",{cwd:process.cwd()}).glob("components/**/*",{cwd:process.cwd()}).glob("i18n/**/*.json",{cwd:process.cwd()}).glob("compatibility/**/*",{cwd:process.cwd()}).glob(r.EXTENSION_CONFIG_FILE,{cwd:process.cwd()}).finalize()})}function t(o=i){e.default.unlinkSync(o)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,o){for(var r in o)Object.defineProperty(e,r,{enumerable:!0,get:o[r]})}(exports,{zip:()=>s,removeZip:()=>t});const e=c(require("fs")),o=c(require("archiver")),r=require("./const");function c(e){return e&&e.__esModule?e:{default:e}}const i=`${process.cwd()}/dist.zip`;function s(c=i){return new Promise((i,s)=>{let t=(0,o.default)("zip",{zlib:{level:9}}),n=e.default.createWriteStream(c);n.on("close",()=>{}),n.on("finish",()=>{i({output:c,size:t.pointer()})}),t.on("error",()=>{s(Error("Failed to compress!"))}),t.pipe(n),t.glob("public/**/*",{cwd:process.cwd()}).glob("blocks/**/*",{cwd:process.cwd()}).glob("components/**/*",{cwd:process.cwd()}).glob("i18n/**/*.json",{cwd:process.cwd()}).glob("compatibility/**/*",{cwd:process.cwd()}).glob(r.EXTENSION_CONFIG_FILE,{cwd:process.cwd()}).finalize()})}function t(o=i){e.default.unlinkSync(o)}
2
+ //# sourceMappingURL=zip3.js.map
@@ -1 +1,2 @@
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,{enterStore:()=>c,fetchUdbCookie:()=>p,verifyLogin:()=>m,default:()=>g});const e=n(require("axios")),t=require("../../helpers/sentry"),r=n(require("../../helpers/config")),o=require("./const"),s=n(require("../../utils/debug")),i=require("../../helpers/open-admin-url"),a=n(require("../../utils/winston")),u=require("../../utils/const");function n(e){return e&&e.__esModule?e:{default:e}}const d="/udb/lgn/login/check.do";let l=e.default.create({timeout:5e3,withCredentials:!0});const c=(e,t)=>l.get(`/admin/api/merchant/stores/${e}/token`,t),p=(t,r)=>{let s=(0,o.getAppId)(r);return e.default.create({timeout:1e4}).get(`${(0,i.replaceAdminHandle)(r)}/udb/lgn/cas/callback.do?ticket=${t}&appid=${s}&subappid=${o.SUB_APP_ID}`)},m=e=>{let t=(0,o.getAppId)(e),s=`${d}?appid=${t}&subappid=${o.SUB_APP_ID}`,{loginInfo:i}=r.default,a="";return i&&(a=Object.keys(i).map(e=>`${e}=${i[e]}`).join(";")),l.get(s,{headers:{cookie:a}})},f=r=>{let o=new URL(r);o.pathname="/",(l=e.default.create({baseURL:o.href,timeout:5e3,withCredentials:!0,headers:{"User-Agent":u.CLI_USER_AGENT}})).interceptors.request.use(e=>(s.default.printRequest(e),a.default.logHttp({type:"request",method:e.method,url:e.baseURL+e.url,params:e.params}),e),e=>Promise.reject(e)),l.interceptors.response.use(e=>{var o,i,u,n;if(s.default.printResponse(e.config,e),(0,t.reportHttpRes)(e),a.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:(null==e?void 0:null===(o=e.data)||void 0===o?void 0:o.traceId)||(null==e?void 0:null===(i=e.data)||void 0===i?void 0:i.trace_id)||(null==e?void 0:null===(u=e.headers)||void 0===u?void 0:u["x-request-id"])||""}),null===(n=e.config.url)||void 0===n?void 0:n.includes(d))return e;if(302===e.status)return Promise.reject(Error("Your store domain does not exist, please check your store domain!"));if(!e.data.success){if("SMS0804"===e.data.code)return Promise.reject(Error(`No permission to access this store domain: ${r}`));let o=Error(e.data.msg?`Request Error:: code: ${e.data.code}; msg: ${e.data.msg}`:"Request Error:: Please retry again!");return(0,t.reportBug)(o),Promise.reject(o)}return e},e=>(e.response&&(0,t.reportHttpRes)(e.response),(0,t.reportBug)(e),Promise.reject(e)))},g=f;
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,{enterStore:()=>c,fetchUdbCookie:()=>p,verifyLogin:()=>m,default:()=>g});const e=u(require("axios")),t=require("../../helpers/monitoring"),r=u(require("../../helpers/config")),o=require("./const"),s=u(require("../../utils/debug")),i=require("../../helpers/open-admin-url"),a=u(require("../../utils/winston")),n=require("../../utils/const");function u(e){return e&&e.__esModule?e:{default:e}}const d="/udb/lgn/login/check.do";let l=e.default.create({timeout:5e3,withCredentials:!0});const c=(e,t)=>l.get(`/admin/api/website/admin/merchant/stores/${e}/token`,t),p=(t,r)=>{let s=(0,o.getAppId)(r);return e.default.create({timeout:1e4}).get(`${(0,i.replaceAdminHandle)(r)}/udb/lgn/cas/callback.do?ticket=${t}&appid=${s}&subappid=${o.SUB_APP_ID}`)},m=e=>{let t=(0,o.getAppId)(e),s=`${d}?appid=${t}&subappid=${o.SUB_APP_ID}`,{loginInfo:i}=r.default,a="";return i&&(a=Object.keys(i).map(e=>`${e}=${i[e]}`).join(";")),l.get(s,{headers:{cookie:a}})},f=r=>{let o=new URL(r);o.pathname="/",(l=e.default.create({baseURL:o.href,timeout:5e3,withCredentials:!0,headers:{"User-Agent":n.CLI_USER_AGENT}})).interceptors.request.use(e=>(s.default.printRequest(e),a.default.logHttp({type:"request",method:e.method,url:e.baseURL+e.url,params:e.params}),e),e=>Promise.reject(e)),l.interceptors.response.use(e=>{var o,i,n,u;if(s.default.printResponse(e.config,e),(0,t.reportHttpRes)(e),a.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:(null==e?void 0:null===(o=e.data)||void 0===o?void 0:o.traceId)||(null==e?void 0:null===(i=e.data)||void 0===i?void 0:i.trace_id)||(null==e?void 0:null===(n=e.headers)||void 0===n?void 0:n["x-request-id"])||""}),null===(u=e.config.url)||void 0===u?void 0:u.includes(d))return e;if(302===e.status)return Promise.reject(Error("Your store domain does not exist, please check your store domain!"));if(!e.data.success){if("SMS0804"===e.data.code)return Promise.reject(Error(`No permission to access this store domain: ${r}`));let o=Error(e.data.msg?`Request Error:: code: ${e.data.code}; msg: ${e.data.msg}`:"Request Error:: Please retry again!");return(0,t.reportBug)(o),Promise.reject(o)}return e},e=>(e.response&&(0,t.reportHttpRes)(e.response),(0,t.reportBug)(e),Promise.reject(e)))},g=f;
2
+ //# sourceMappingURL=api.js.map
@@ -1 +1,2 @@
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,{APP_ID_MAP:()=>t,SUB_APP_ID:()=>r,getAppId:()=>o});const e=function(e){return e&&e.__esModule?e:{default:e}}(require("../../utils/get-store-env")),t={stg:"1163336839",prod:"1165600903"},r="1";function o(r){let o=(0,e.default)(r);return"prod"===o||"pre"===o?t.prod:t.stg}
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,{APP_ID_MAP:()=>t,SUB_APP_ID:()=>r,getAppId:()=>o});const e=function(e){return e&&e.__esModule?e:{default:e}}(require("../../utils/get-store-env")),t={stg:"1163336839",prod:"1165600903"},r="1";function o(r){let o=(0,e.default)(r);return"prod"===o||"pre"===o?t.prod:t.stg}
2
+ //# sourceMappingURL=const.js.map
@@ -1 +1,2 @@
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,{IdentityAuthServerPort:()=>n,default:()=>o});const e=l(require("koa")),t=l(require("koa-ejs")),r=l(require("path")),s=l(require("fs")),a=l(require("killable")),i=require("./api");function l(e){return e&&e.__esModule?e:{default:e}}const n=3456,u=l=>new Promise((u,o)=>{let d=new e.default;(0,t.default)(d,{root:r.default.join(__dirname,"client"),layout:!1,cache:!1});let c=d.listen(n);(0,a.default)(c),d.use(async e=>{let t=e.request.query,a={css:s.default.readFileSync(r.default.join(__dirname,"client/style.css"))};if(t.ticket)try{let r=await (0,i.fetchUdbCookie)(t.ticket,l),{rescode:s,data:n}=r.data;if("0"===s){let t=n.ck;Object.keys(t).length>0?(e.status=200,a.successful=200===e.status,a.message="You've successfuly logged into the Shopline CLI!",await e.render("index",a),u(t)):(e.status=403,a.successful=200===e.status,a.message="Anti-forgery state token does not match the initial request.",await e.render("index",a),o(Error("No message returned after logging in to the server. Please retry again!")))}else"-4"===s?o(Error("Illegal parameters, please retry again!")):"1028"===s&&o(Error("The ticket is invalid, please retry again!"))}catch(e){o(e)}else e.status=403,a.successful=200===e.status,a.message="Login failed due to missing required parameters for the URL.",await e.render("index",a),o(Error("No message returned after logging in to the server. Please retry again!"));setImmediate(()=>{var e;null==c||null===(e=c.kill)||void 0===e||e.call(c)})})}),o=u;
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,{IdentityAuthServerPort:()=>n,default:()=>o});const e=l(require("koa")),t=l(require("koa-ejs")),r=l(require("path")),s=l(require("fs")),a=l(require("killable")),i=require("./api");function l(e){return e&&e.__esModule?e:{default:e}}const n=3456,u=l=>new Promise((u,o)=>{let d=new e.default;(0,t.default)(d,{root:r.default.join(__dirname,"client"),layout:!1,cache:!1});let c=d.listen(n);(0,a.default)(c),d.use(async e=>{let t=e.request.query,a={css:s.default.readFileSync(r.default.join(__dirname,"client/style.css"))};if(t.ticket)try{let r=await (0,i.fetchUdbCookie)(t.ticket,l),{rescode:s,data:n}=r.data;if("0"===s){let t=n.ck;Object.keys(t).length>0?(e.status=200,a.successful=200===e.status,a.message="You've successfuly logged into the Shopline CLI!",await e.render("index",a),u(t)):(e.status=403,a.successful=200===e.status,a.message="Anti-forgery state token does not match the initial request.",await e.render("index",a),o(Error("No message returned after logging in to the server. Please retry again!")))}else"-4"===s?o(Error("Illegal parameters, please retry again!")):"1028"===s&&o(Error("The ticket is invalid, please retry again!"))}catch(e){o(e)}else e.status=403,a.successful=200===e.status,a.message="Login failed due to missing required parameters for the URL.",await e.render("index",a),o(Error("No message returned after logging in to the server. Please retry again!"));setImmediate(()=>{var e;null==c||null===(e=c.kill)||void 0===e||e.call(c)})})}),o=u;
2
+ //# sourceMappingURL=create-server.js.map
@@ -1 +1,2 @@
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,{authority:()=>f,default:()=>d});const e=require("lodash"),t=o(require("../../helpers/config")),r=o(require("../../helpers/open-admin-url")),a=o(require("../../utils/get-url-handle")),u=o(require("./api")),i=o(require("./create-server")),l=o(require("./store-enter")),n=o(require("../auth/logout"));function o(e){return e&&e.__esModule?e:{default:e}}const f=async r=>{(0,u.default)(r);let o=await (0,i.default)(r),f=await (0,l.default)((0,a.default)(r),o),d=t.default.getLoginInfo(r),s={...(0,e.omit)(d,"a_mach"),...o,...f};return d&&await (0,n.default)(),t.default.saveLoginInfo(s,r),s},d=async e=>{await (0,r.default)(e);let t=await f(e);return t};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,r){for(var t in r)Object.defineProperty(e,t,{enumerable:!0,get:r[t]})}(exports,{authority:()=>l,default:()=>o});const e=n(require("../../helpers/config")),r=n(require("../../helpers/open-admin-url")),t=n(require("../../utils/get-url-handle")),u=n(require("./api")),a=n(require("./create-server")),i=n(require("./store-enter"));function n(e){return e&&e.__esModule?e:{default:e}}const l=async r=>{(0,u.default)(r);let n=await (0,a.default)(r),l=await (0,i.default)((0,t.default)(r),n),o={...n,...l};return e.default.replaceLoginInfo(o,r),o},o=async e=>{await (0,r.default)(e);let t=await l(e);return t};
2
+ //# sourceMappingURL=index.js.map
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>t});const e=require("./api"),t=async(t,a)=>{let{data:{data:{contextToken:r,storeId:d}}}=await (0,e.enterStore)(t,{headers:{Cookie:`a_osudb_uid=${a.a_osudb_uid};a_osudb_oar=${a.a_osudb_oar}`},timeout:1e4,maxRedirects:0,validateStatus:e=>e>=200&&(e<300||[302].includes(e))});return{a_ste:r,store_id:d}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>t});const e=require("./api"),t=async(t,a)=>{let{data:{data:{contextToken:r,storeId:d}}}=await (0,e.enterStore)(t,{headers:{Cookie:`a_osudb_uid=${a.a_osudb_uid};a_osudb_oar=${a.a_osudb_oar}`},timeout:1e4,maxRedirects:0,validateStatus:e=>e>=200&&(e<300||[302].includes(e))});return{a_ste:r,store_id:d}};
2
+ //# sourceMappingURL=store-enter.js.map
@@ -1 +1,2 @@
1
- "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var u in t)Object.defineProperty(e,u,{enumerable:!0,get:t[u]})}(exports,{ElogDay:()=>e,default:()=>n});const t=require("../../utils/path"),u=function(e){return e&&e.__esModule?e:{default:e}}(require("../../utils/winston")),o=require("../../utils/output");async function n(e){let n=(0,t.cwd)(),r=await u.default.getLogFileByPath(n,Number(e.day));r&&(0,o.outputSuccess)((0,o.outputContent)`Your log file is located at: ${o.outputToken.path(r)}, you can provide the file or ${o.outputToken.magenta(u.default.getTraceId())} to SHOPLINE`)}!function(e){e.three="3",e.five="5",e.seven="7",e.ten="10",e.fifteen="15"}(e||(e={}));
1
+ "use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var u in t)Object.defineProperty(e,u,{enumerable:!0,get:t[u]})}(exports,{ElogDay:()=>e,default:()=>n});const t=require("../../utils/path"),u=function(e){return e&&e.__esModule?e:{default:e}}(require("../../utils/winston")),o=require("../../utils/output");async function n(e){let n=(0,t.cwd)(),r=await u.default.getLogFileByPath(n,Number(e.day));r&&(0,o.outputSuccess)((0,o.outputContent)`Your log file is located at: ${o.outputToken.path(r)}, you can provide the file or ${o.outputToken.magenta(u.default.getTraceId())} to SHOPLINE`)}!function(e){e.three="3",e.five="5",e.seven="7",e.ten="10",e.fifteen="15"}(e||(e={}));
2
+ //# sourceMappingURL=index.js.map
@@ -1,4 +1,5 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,r){for(var t in r)Object.defineProperty(e,t,{enumerable:!0,get:r[t]})}(exports,{createNewTheme:()=>g,getThemes:()=>h,getThemeInfo:()=>m,uploadTheme:()=>R,getThemeFileList:()=>_,deleteFiles:()=>T,updateFile:()=>O,createFile:()=>$,downloadTheme:()=>b,getThemeFileDetail:()=>I,themeCheck:()=>w});const e=f(require("axios")),r=f(require("form-data")),t=f(require("chalk")),o=f(require("../../../helpers/config")),l=require("../../../utils/const"),i=require("../../../utils/error"),n=require("../const"),s=f(require("../../../utils/debug")),d=f(require("../../../utils/winston")),a=require("../../../helpers/sentry"),u=f(require("../no-second-check")),c=require("../../../utils/ui/render");function f(e){return e&&e.__esModule?e:{default:e}}const{loginInfo:E,currentStore:v}=o.default,p=e.default.create({baseURL:`${v}/api/website/admin/theme/cli`,maxContentLength:1/0,maxBodyLength:1/0});p.interceptors.request.use(e=>{if(E){let r=Object.keys(E).map(e=>`${e}=${E[e]}`).join(";"),t=o.default.dfpToken||"";Object.assign(e.headers,{cookie:r,"dfp-token":t,"User-Agent":l.CLI_USER_AGENT})}return(null==e?void 0:e.data)instanceof r.default&&Object.assign(e.headers,null==e?void 0:e.data.getHeaders()),e}),p.interceptors.response.use(async e=>{var r,o,l,f,E,v,p,g,h,m;if("stream"===e.config.responseType)return e;let R=null==e?void 0:null===(r=e.data)||void 0===r?void 0:r.success,_=null==e?void 0:null===(o=e.data)||void 0===o?void 0:o.code,{config:T}=e;if(s.default.printResponse(T,e),(0,a.reportHttpRes)(e),d.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:(null==e?void 0:null===(l=e.data)||void 0===l?void 0:l.trace_id)||(null==e?void 0:null===(f=e.headers)||void 0===f?void 0:f["x-request-id"])||""}),n.ERROR_CODES.THEME_COUNT_LIMIT.includes(_))throw Error(n.ERRORS.THEME_COUNT_LIMIT);if(n.ERROR_CODES.DEVELOPMENT_THEME_NOT_EXIST.includes(_))throw Error(n.ERRORS.THEME_IS_INVALID);if(n.ERROR_CODES.FEATURE_KEY_NOT_EXIST.includes(_))throw Error(n.ERRORS.FEATURE_KEY_NOT_EXIST);if(n.ERROR_CODES.NO_SECOND_CHECK.includes(_))await u.default.run();else if(n.ERROR_CODES.INVALID_FILE.includes(_)){console.log();let{errors:r}=e.data.data;throw r.forEach(({filename:e,message:r})=>{(0,c.renderInfo)({headline:e,body:`${t.default.red("[error]: ")}${r}`})}),new i.AbortError(`Theme Check Summary.
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,o){for(var r in o)Object.defineProperty(e,r,{enumerable:!0,get:o[r]})}(exports,{createNewTheme:()=>h,getThemes:()=>R,getThemeInfo:()=>_,uploadTheme:()=>O,getThemeFileList:()=>T,deleteFiles:()=>b,updateFile:()=>S,createFile:()=>$,downloadTheme:()=>I,getThemeFileDetail:()=>C,themeCheck:()=>q});const e=f(require("axios")),o=f(require("form-data")),r=f(require("chalk")),t=f(require("../../../helpers/config")),i=require("../../../utils/const"),l=require("../../../utils/error"),n=require("../const"),s=f(require("../../../utils/debug")),d=f(require("../../../utils/winston")),u=require("../../../helpers/monitoring"),a=f(require("../no-second-check")),c=require("../../../utils/ui/render");function f(e){return e&&e.__esModule?e:{default:e}}const{loginInfo:v,currentStore:g}=t.default;function E(e){var o,r;let{monitoring:t}=e.config,i=null==e?void 0:null===(o=e.data)||void 0===o?void 0:o.code;return!(null==t?void 0:null===(r=t.ignoreBusinessCodes)||void 0===r?void 0:r.some(e=>String(e)===String(i)))}function p(e,o){E(o)&&(0,u.reportHttpError)(e,{response:o,source:"theme-3"})}const m=e.default.create({baseURL:`${g}/api/website/admin/theme/cli`,maxContentLength:1/0,maxBodyLength:1/0});m.interceptors.request.use(e=>{if(v){let o=Object.keys(v).map(e=>`${e}=${v[e]}`).join(";"),r=t.default.dfpToken||"";Object.assign(e.headers,{cookie:o,"dfp-token":r,"User-Agent":i.CLI_USER_AGENT})}return(null==e?void 0:e.data)instanceof o.default&&Object.assign(e.headers,null==e?void 0:e.data.getHeaders()),e}),m.interceptors.response.use(async e=>{var o,t,i,u,f,v,g,E,m,h;if("stream"===e.config.responseType)return e;let R=null==e?void 0:null===(o=e.data)||void 0===o?void 0:o.success,_=null==e?void 0:null===(t=e.data)||void 0===t?void 0:t.code,{config:O}=e;if(s.default.printResponse(O,e),d.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:(null==e?void 0:null===(i=e.data)||void 0===i?void 0:i.trace_id)||(null==e?void 0:null===(u=e.headers)||void 0===u?void 0:u["x-request-id"])||""}),n.ERROR_CODES.THEME_COUNT_LIMIT.includes(_)){let o=Error(n.ERRORS.THEME_COUNT_LIMIT);throw p(o,e),o}if(n.ERROR_CODES.DEVELOPMENT_THEME_NOT_EXIST.includes(_)){let o=Object.assign(Error(n.ERRORS.THEME_IS_INVALID),{code:String(_)});throw p(o,e),o}if(n.ERROR_CODES.FEATURE_KEY_NOT_EXIST.includes(_)){let o=Error(n.ERRORS.FEATURE_KEY_NOT_EXIST);throw p(o,e),o}if(n.ERROR_CODES.NO_SECOND_CHECK.includes(_))await a.default.run();else if(n.ERROR_CODES.INVALID_FILE.includes(_)){console.log();let{errors:o}=e.data.data;o.forEach(({filename:e,message:o})=>{(0,c.renderInfo)({headline:e,body:`${r.default.red("[error]: ")}${o}`})});let t=new l.AbortError(`Theme Check Summary.
2
2
 
3
- ${r.length} error${1===r.length?"":"s"} found.`)}if(!R)throw new i.AbortError(`${null!==(g=null==e?void 0:null===(v=e.config)||void 0===v?void 0:v.baseURL)&&void 0!==g?g:""}${null!==(h=null==e?void 0:null===(p=e.config)||void 0===p?void 0:p.url)&&void 0!==h?h:""}
4
- ${JSON.stringify(null!==(m=null==e?void 0:e.data)&&void 0!==m?m:{},null,2)}`);return null==e?void 0:null===(E=e.data)||void 0===E?void 0:E.data},e=>{var r,t,o,l,n,s;let a;let u=null===(r=e.response)||void 0===r?void 0:r.status,c=null===(t=e.response)||void 0===t?void 0:t.data,f=(null===(o=e.config)||void 0===o?void 0:o.baseURL)?`${e.config.baseURL}${null!==(n=e.config.url)&&void 0!==n?n:""}`:"",E=(null!==(s=null===(l=e.config)||void 0===l?void 0:l.method)&&void 0!==s?s:"").toUpperCase();if(e.response){let r=(null==c?void 0:c.message)||(null==c?void 0:c.msg)||e.message||"Unknown error";a=`Request failed (${u}): ${r}`}else a=`Network error: ${e.message||"Unable to connect to server"}`;d.default.log(`[API Error] ${E} ${f} - ${a}`),d.default.logError(e);let v=new i.AbortError(a);return Promise.reject(v)});const g=e=>p.post("/theme/upload",e),h=async()=>p.get("/themes"),m=e=>p.get(`/theme/${e}`),R=e=>p.post("/files/upload",e),_=e=>p.get("/files",{params:{themeId:e}}),T=(e,r)=>p.delete("/files",{data:{themeId:e,fileNames:r}}),O=e=>p.put("/file",e),$=e=>p.post("/file",e),b=e=>p.get(`/theme/${e}/download`,{responseType:"stream"}),I=(e,r)=>p.get("/files",{params:{themeId:e,fileNames:r.join(",")}}),w=e=>p.post("/theme/check",e);
3
+ ${o.length} error${1===o.length?"":"s"} found.`);throw p(t,e),t}if(!R){let o=new l.AbortError(`${null!==(E=null==e?void 0:null===(v=e.config)||void 0===v?void 0:v.baseURL)&&void 0!==E?E:""}${null!==(m=null==e?void 0:null===(g=e.config)||void 0===g?void 0:g.url)&&void 0!==m?m:""}
4
+ ${JSON.stringify(null!==(h=null==e?void 0:e.data)&&void 0!==h?h:{},null,2)}`);throw p(o,e),o}return null==e?void 0:null===(f=e.data)||void 0===f?void 0:f.data},e=>{var o,r,t,i,n,s,a;let c;let f=null===(o=e.response)||void 0===o?void 0:o.status,v=null===(r=e.response)||void 0===r?void 0:r.data,g=(null===(t=e.config)||void 0===t?void 0:t.baseURL)?`${e.config.baseURL}${null!==(n=e.config.url)&&void 0!==n?n:""}`:"",p=(null!==(s=null===(i=e.config)||void 0===i?void 0:i.method)&&void 0!==s?s:"").toUpperCase();if(e.response){let o=(null==v?void 0:v.message)||(null==v?void 0:v.msg)||e.message||"Unknown error";c=`Request failed (${f}): ${o}`}else c=`Network error: ${e.message||"Unable to connect to server"}`;d.default.log(`[API Error] ${p} ${g} - ${c}`),d.default.logError(e);let m=null!==(a=null==v?void 0:v.code)&&void 0!==a?a:e.code,h=Object.assign(new l.AbortError(c),{...void 0===f?{}:{status:f},...void 0===m?{}:{code:String(m)}});return h.stack=e.stack,(!e.response||E(e.response))&&(0,u.reportHttpError)(h,{response:e.response,requestConfig:e.config,source:"theme-3"}),Promise.reject(h)});const h=e=>m.post("/theme/upload",e),R=async()=>m.get("/themes"),_=(e,o)=>m.get(`/theme/${e}`,{monitoring:o}),O=e=>m.post("/files/upload",e),T=e=>m.get("/files",{params:{themeId:e}}),b=(e,o)=>m.delete("/files",{data:{themeId:e,fileNames:o}}),S=e=>m.put("/file",e),$=e=>m.post("/file",e),I=e=>m.get(`/theme/${e}/download`,{responseType:"stream"}),C=(e,o)=>m.get("/files",{params:{themeId:e,fileNames:o.join(",")}}),q=e=>m.post("/theme/check",e);
5
+ //# sourceMappingURL=api.js.map
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>h});const e=s(require("form-data")),t=s(require("fs")),r=s(require("ora")),i=s(require("./package")),a=s(require("../../../utils/debug")),u=require("./api"),c=s(require("../../../utils/winston")),l=require("../../../utils/ui/render");function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e){return e&&e.__esModule?e:{default:e}}class d extends a.default{getThemeZipFormData(){this.zipFilePath=new i.default({cwd:this.cwd,silent:!0}).pack();let r=new e.default;return r.append("file",t.default.createReadStream(this.zipFilePath)),r}async check(){let e=(0,r.default)("Theme check is running...").start(),i=this.getThemeZipFormData();try{let t=await (0,u.themeCheck)(i);return e.succeed(),t}catch(t){throw e.fail(),t}finally{t.default.unlinkSync(this.zipFilePath)}}constructor(e){super("theme:check"),n(this,"cwd",void 0),n(this,"zipFilePath",""),this.cwd=e.path}}const h=async e=>{c.default.log("Check theme...");let t=new d(e),r=await t.check();(0,l.renderSuccess)({headline:"Theme Check Summary.",body:null==r?void 0:r.message})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>h});const e=s(require("form-data")),t=s(require("fs")),r=s(require("ora")),i=s(require("./package")),a=s(require("../../../utils/debug")),u=require("./api"),c=s(require("../../../utils/winston")),l=require("../../../utils/ui/render");function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e){return e&&e.__esModule?e:{default:e}}class d extends a.default{getThemeZipFormData(){this.zipFilePath=new i.default({cwd:this.cwd,silent:!0}).pack();let r=new e.default;return r.append("file",t.default.createReadStream(this.zipFilePath)),r}async check(){let e=(0,r.default)("Theme check is running...").start(),i=this.getThemeZipFormData();try{let t=await (0,u.themeCheck)(i);return e.succeed(),t}catch(t){throw e.fail(),t}finally{t.default.unlinkSync(this.zipFilePath)}}constructor(e){super("theme:check"),n(this,"cwd",void 0),n(this,"zipFilePath",""),this.cwd=e.path}}const h=async e=>{c.default.log("Check theme...");let t=new d(e),r=await t.check();(0,l.renderSuccess)({headline:"Theme Check Summary.",body:null==r?void 0:r.message})};
2
+ //# sourceMappingURL=check.js.map
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>r});const e=require("crypto"),t=function(e){return e&&e.__esModule?e:{default:e}}(require("mime")),i=require("../../../utils/path"),s=require("../../../utils/fs");function l(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class r{get fullPath(){return(0,i.joinPath)(this.cwd,this.filePath)}get extName(){return(0,i.extname)(this.filePath)}get isExist(){return(0,s.fileExistsSync)(this.fullPath)}get isConfigSchemaFile(){return"theme.schema.json"===this.fileName}get isConfigFile(){return["theme.schema.json","theme.config.json"].includes(this.fileName)}get mimeType(){return this.isExist?t.default.getType(this.filePath):""}get isImageType(){var e,t;return(null===(e=this.mimeType)||void 0===e?void 0:e.startsWith("image/"))&&!(null===(t=this.mimeType)||void 0===t?void 0:t.startsWith("image/svg"))}get fileName(){return this.filePath}get fileContent(){return this.isImageType?(0,s.readFileSync)(this.localeFullFilePath,{}):(0,s.readFileSync)(this.localeFullFilePath)}get localeFullFilePath(){let e=(0,i.joinPath)(this.cwd,this.filePath);return e}get checksum(){return(0,e.createHash)("sha256").update(this.fileContent).digest("hex")}constructor(e,t){l(this,"cwd",(0,i.cwd)()),l(this,"filePath",void 0),this.filePath=e,this.cwd=t}}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>l});const e=require("crypto"),t=function(e){return e&&e.__esModule?e:{default:e}}(require("mime")),i=require("../../../utils/path"),s=require("../../../utils/fs");function r(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}class l{get fullPath(){return(0,i.joinPath)(this.cwd,this.filePath)}get extName(){return(0,i.extname)(this.filePath)}get isExist(){return(0,s.fileExistsSync)(this.fullPath)}get isConfigSchemaFile(){return"theme.schema.json"===this.fileName}get isConfigFile(){return["theme.schema.json","theme.config.json"].includes(this.fileName)}get mimeType(){return this.isExist?t.default.getType(this.filePath):""}get isImageType(){var e,t;return(null===(e=this.mimeType)||void 0===e?void 0:e.startsWith("image/"))&&!(null===(t=this.mimeType)||void 0===t?void 0:t.startsWith("image/svg"))}get fileName(){return this.filePath}get fileContent(){return(0,s.readFileSync)(this.localeFullFilePath,{})}get localeFullFilePath(){let e=(0,i.joinPath)(this.cwd,this.filePath);return e}get checksum(){return(0,e.createHash)("sha256").update(this.fileContent).digest("hex")}constructor(e,t){r(this,"cwd",(0,i.cwd)()),r(this,"filePath",void 0),this.filePath=e,this.cwd=t}}
2
+ //# sourceMappingURL=file.js.map
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>p});const e=c(require("pathe")),t=c(require("fs-extra")),i=c(require("fast-glob")),r=c(require("adm-zip")),l=require("../../../utils/fs"),a=c(require("../../../utils/debug")),n=require("../../../utils/path"),u=c(require("../../../utils/colors")),s=require("../utils"),o=c(require("../../../utils/winston")),d=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var i=h(t);if(i&&i.has(e))return i.get(e);var r={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var n=l?Object.getOwnPropertyDescriptor(e,a):null;n&&(n.get||n.set)?Object.defineProperty(r,a,n):r[a]=e[a]}return r.default=e,i&&i.set(e,r),r}(require("../../../utils/logger"));function f(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function c(e){return e&&e.__esModule?e:{default:e}}function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,i=new WeakMap;return(h=function(e){return e?i:t})(e)}class p extends a.default{pack(a){let n=new r.default,f=i.default.sync(a||s.themeDirectoryGlobList3,{cwd:this.cwd});return o.default.log("Pack theme..."),f.forEach(t=>{let i=e.default.dirname(t),r=e.default.join(this.cwd,t);if(this.includeFilter&&this.ignoreFilter){let e=this.ignoreFilter.match(t),l=this.includeFilter.match(t);!e&&l&&(this.silent||d.info(`adding ${u.default.magenta(t)}`,!0),this.log(`adding ${u.default.magenta(t)}`),n.addLocalFile(r,i))}else this.silent||d.info(`adding ${u.default.magenta(t)}`,!0),this.log(`adding ${u.default.magenta(t)}`),n.addLocalFile(r,i)}),(0,l.pathExists)(this.targetZipFilePath)&&t.default.unlinkSync(this.targetZipFilePath),o.default.log(`Write zip file to ${this.targetZipFilePath}...`),n.writeZip(this.targetZipFilePath,e=>{if(e)throw e}),o.default.log(`Write zip file to ${this.targetZipFilePath} success`),this.targetZipFilePath}get targetZipFilePath(){let t=(0,s.getThemeInfo3)(this.cwd),i=`${t.theme_name}-${t.theme_version}.zip`;return e.default.join(this.cwd,i)}constructor({cwd:e,includeFilter:t,ignoreFilter:i,silent:r=!1}){super("theme:package"),f(this,"cwd",(0,n.cwd)()),f(this,"includeFilter",void 0),f(this,"ignoreFilter",void 0),f(this,"silent",void 0),e&&(this.cwd=e),this.silent=r,this.includeFilter=t,this.ignoreFilter=i}}
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:()=>w,formatDevelopmentZipCleanupError:()=>g});const e=h(require("pathe")),t=h(require("fs-extra")),i=h(require("fast-glob")),r=h(require("adm-zip")),l=require("../../../utils/fs"),n=h(require("../../../utils/debug")),a=require("../../../utils/path"),o=h(require("../../../utils/colors")),u=require("../utils"),c=h(require("../../../utils/winston")),d=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var i=p(t);if(i&&i.has(e))return i.get(e);var r={},l=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&Object.prototype.hasOwnProperty.call(e,n)){var a=l?Object.getOwnPropertyDescriptor(e,n):null;a&&(a.get||a.set)?Object.defineProperty(r,n,a):r[n]=e[n]}return r.default=e,i&&i.set(e,r),r}(require("../../../utils/logger")),f=require("../../../utils/error");function s(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function h(e){return e&&e.__esModule?e:{default:e}}function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,i=new WeakMap;return(p=function(e){return e?i:t})(e)}function y(e,i,r=!0){let l=t.default.lstatSync(e);if(l.isSymbolicLink())t.default.symlinkSync(t.default.readlinkSync(e),i),r&&t.default.unlinkSync(e);else if(l.isDirectory()){if(t.default.existsSync(i))throw Object.assign(Error("Development ZIP path changed"),{code:"EEXIST"});t.default.renameSync(e,i)}else t.default.linkSync(e,i),r&&t.default.unlinkSync(e)}function m(i,r){let l,n;try{l=t.default.lstatSync(i)}catch(e){if("ENOENT"===e.code)return;throw e}if(l.dev!==r.dev||l.ino!==r.ino)return;let a=t.default.mkdtempSync(e.default.join(e.default.dirname(i),".shopline-dev-cleanup-")),o=e.default.join(a,e.default.basename(i));try{t.default.renameSync(i,o)}catch(r){let e;try{t.default.rmdirSync(a)}catch(t){e=t}if("ENOENT"===r.code){if(e)throw e;return}throw e&&c.default.log(g(e,"unlink",i).message),r}try{let e=t.default.lstatSync(o);e.dev===r.dev&&e.ino===r.ino?t.default.unlinkSync(o):y(o,i)}catch(e){n=e}if(n&&t.default.existsSync(o))try{y(o,i,!1)}catch(e){c.default.log(g(e,"unlink",i).message)}try{t.default.rmdirSync(a)}catch(e){n||(n=e)}if(n)throw n}function g(t,i,r){let l="object"==typeof t&&t&&"code"in t?String(t.code):"UNKNOWN";return new f.AbortError(`Development ZIP cleanup failed: stage=${i} file=${e.default.basename(r)} code=${l}`)}function v(e){return"string"!=typeof e||"."===e||".."===e||Array.from(e).some(e=>32>e.charCodeAt(0)||'<>:"/\\|?*'.includes(e))}class w extends n.default{pack(e){let i=this.targetZipFilePath,r=this.createZip(e);return(0,l.pathExists)(i)&&t.default.unlinkSync(i),c.default.log(`Write zip file to ${i}...`),r.writeZip(i,e=>{if(e)throw e}),c.default.log(`Write zip file to ${i} success`),i}createZip(t){let l=new r.default,n=i.default.sync(t||u.themeDirectoryGlobList3,{cwd:this.cwd});return c.default.log("Pack theme..."),n.forEach(t=>{let i=e.default.dirname(t),r=e.default.join(this.cwd,t);if(this.includeFilter&&this.ignoreFilter){let e=this.ignoreFilter.match(t),n=this.includeFilter.match(t);!e&&n&&(this.silent||d.info(`adding ${o.default.magenta(t)}`,!0),this.log(`adding ${o.default.magenta(t)}`),l.addLocalFile(r,i))}else this.silent||d.info(`adding ${o.default.magenta(t)}`,!0),this.log(`adding ${o.default.magenta(t)}`),l.addLocalFile(r,i)}),l}packDevelopment(e){let i,r;let l=this.developmentZipFilePath,n=this.createZip(e);c.default.log(`Write zip file to ${l}...`);try{try{i=t.default.openSync(l,"wx",384)}catch(e){throw g(e,"package",l)}let e=t.default.fstatSync(i);r={dev:e.dev,ino:e.ino},t.default.writeFileSync(i,n.toBuffer())}catch(e){if(r)try{m(l,r)}catch(e){c.default.log(g(e,"package",l).message)}if(void 0!==i)try{t.default.closeSync(i)}catch(e){c.default.log(g(e,"package",l).message)}throw e}c.default.log(`Write zip file to ${l} success`);let a=!0,o=i;return{path:l,cleanup:async()=>{let e;if(a){a=!1;try{m(l,r)}catch(t){e=t}try{t.default.closeSync(o)}catch(t){e||(e=t)}if(e)throw e}}}}removeStaleDevelopmentZip(){let e;let i=this.developmentZipFilePath;try{e=t.default.lstatSync(i)}catch(e){if("ENOENT"===e.code)return;throw g(e,"startup-cleanup",i)}if(!e.isFile()&&!e.isSymbolicLink())throw new f.AbortError("The development ZIP path is not a regular file or symbolic link");try{t.default.unlinkSync(i)}catch(e){throw g(e,"startup-cleanup",i)}}get targetZipFilePath(){let t=(0,u.getThemeInfo3)(this.cwd),i=`${t.theme_name}-${t.theme_version}.zip`;return e.default.join(this.cwd,i)}get developmentZipFilePath(){let t=(0,u.getThemeInfo3)(this.cwd),i=`${t.theme_name}-${t.theme_version}-dev.zip`,r=e.default.resolve(this.cwd),l=e.default.resolve(r,i);if(v(t.theme_name)||v(t.theme_version)||e.default.dirname(l)!==r)throw new f.AbortError("Invalid theme name or version for development ZIP");return l}constructor({cwd:e,includeFilter:t,ignoreFilter:i,silent:r=!1}){super("theme:package"),s(this,"cwd",(0,a.cwd)()),s(this,"includeFilter",void 0),s(this,"ignoreFilter",void 0),s(this,"silent",void 0),e&&(this.cwd=e),this.silent=r,this.includeFilter=t,this.ignoreFilter=i}}
2
+ //# sourceMappingURL=package.js.map
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"PullService3",{enumerable:!0,get:()=>P});const e=T(require("fs-extra")),t=T(require("pathe")),i=T(require("progress")),r=T(require("adm-zip")),l=require("../../../utils/path"),o=T(require("../../../utils/debug")),s=T(require("../../../utils/include-filter")),a=T(require("../../../utils/ignore-filter")),n=T(require("../../../utils/winston")),u=require("../../../utils/error"),d=require("../utils"),h=require("../inquirer"),c=require("../../../utils/ora-manager"),m=T(require("../../../utils/logger")),f=T(require("./theme")),p=require("../const"),w=require("./api"),g=T(require("../../../helpers/config")),v=require("../../../utils/check-theme-type-version"),y=require("../pull");function E(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function T(e){return e&&e.__esModule?e:{default:e}}class P extends o.default{async pull(){n.default.log("Prepare pull theme...");let{id:e,themeTypeVersion:t}=await this.prepareTheme();if(n.default.log(`Current pull theme id: ${e}`),n.default.log(`Current pull theme type version: ${t}`),!(0,v.isRemoteThemeTypeVersion3)(t)){await new y.PullService({...this.options,theme:e},this.cwd).pull();return}if(this.themeId=e,e){await this.beforePull(),n.default.log(`Downloading theme (${e})...`);let{fileName:t}=await this.processDownloadTheme(e);n.default.log(`Unzipping theme (${t})...`),this.unzipTheme(t),n.default.log(`Theme (${e}) pulled successfully`),m.default.success("Theme pulled successfully")}else throw new u.AbortError(p.ERRORS.THEME_ID_NOT_EXIST)}unzipTheme(i){let l=t.default.join(this.cwd,i);if(e.default.existsSync(l)){try{let e=new r.default(l),t=e.getEntries();t.forEach(t=>{let i=t.entryName,r=this.ignoreFilter.match(i),l=this.includeFilter.match(i);!r&&l&&e.extractEntryTo(i,this.cwd,!0,!0)})}catch(e){throw n.default.log(`[Pull] Failed to unzip theme: ${e.message}`),new u.AbortError(e.message,p.ERRORS.UNZIP_THEME_FAILED)}e.default.removeSync(l)}}async processDownloadTheme(e){let t=(0,c.createOra)("Fetching the theme package file...");try{t.start();let{fileName:i}=await this.downloadTheme(e,t);return await Promise.resolve({fileName:i,themeId:e})}catch(i){return n.default.log(`[Pull] Download theme #${e} failed: ${i.message||i}`),t.isSpinning&&t.fail().clear(),Promise.reject(i.message||i)}}downloadTheme(e,t){return new Promise(async(i,r)=>{let l=await (0,w.downloadTheme)(e);if(t.succeed().clear(),200===l.status){let t=l.headers,o=t["theme-status"],s=t["theme-develop-type"];if(void 0===o||void 0===s){n.default.log(`[Pull] Missing theme headers for #${e}: status=${o}, type=${s}`),r(new u.AbortError(p.ERRORS.THEME_ID_NOT_EXIST));return}this.onDownloadProgress(l,e).then(e=>i(e)).catch(r)}else n.default.log(`[Pull] Unexpected download status ${l.status} for theme #${e}`),r(new u.AbortError(p.ERRORS.DOWNLOAD_THEME_FAILED))})}onDownloadProgress(r,l){return new Promise((o,s)=>{var a,n;let u;let h=r.headers["theme-status"],m=r.headers["theme-develop-type"],f=r.headers["content-length"]||0,w=r.headers["content-disposition"],v=null!==(n=null===(a=/fileName=([^;]+)/.exec(w))||void 0===a?void 0:a[1])&&void 0!==n?n:p.DEFAULT_ZIP_NAME;v=decodeURIComponent(v);let y=t.default.basename(v,".zip"),E=e.default.createWriteStream(t.default.join(this.cwd,v)),T=(0,d.getKeyMessage)(`Pulling theme files from ${decodeURIComponent(y)} (#${l}) on ${g.default.currentStore}`);f?(u=new i.default((0,d.getKeyMessage)("[:bar] :rate/bps :percent :etas"),{complete:"=",incomplete:" ",total:+f,width:50}),console.log(T)):u=(0,c.createOra)({text:T,spinner:"bouncingBar"}),r.data.pipe(E),r.data.on("data",e=>{f?u.tick(e.length):u.start()}),r.data.on("error",e=>{f||u.fail(),s(e)}),r.data.on("end",()=>{f||u.succeed(),E.on("finish",()=>{let i=e.default.statSync(t.default.join(this.cwd,v)).size;this.log("fileSize: %O",i),0===i?(f||u.fail("Downloaded file is empty"),s(Error("Downloaded file is empty"))):o({themeStatus:h,themeType:m,fileName:v})})})})}get isEmptyDir(){return(0,d.isEmptyDir)(!0,this.cwd)}async beforePull(){if(this.isEmptyDir||this.nodelete)return Promise.resolve();let t=await (0,h.askForPull)();return"clear"===t&&(n.default.log("Clear local theme files..."),e.default.emptyDirSync(this.cwd)),Promise.resolve()}async prepareTheme(){if(this.themeId){let{id:e,themeTypeVersion:t}=await f.default.getThemeInfo(this.themeId);return{id:e,themeTypeVersion:t}}if(this.live){let{id:e,themeTypeVersion:t}=await f.default.getLiveThemeInfo();if(!e)throw new u.AbortError('Theme "live" doesn\'t exist');return{id:e,themeTypeVersion:t}}if(this.development){let{id:e,themeTypeVersion:t=""}=await f.default.getDevelopmentThemeInfo();if(!e)throw new u.AbortError('Theme "development" doesn\'t exist');return{id:e,themeTypeVersion:t}}let{id:e,themeTypeVersion:t}=await f.default.chooseThemeList("pull");return{id:e,themeTypeVersion:t}}constructor(e,t=(0,l.cwd)()){var i,r,o,n;super("theme:pull"),E(this,"cwd",void 0),E(this,"themeId",void 0),E(this,"live",void 0),E(this,"development",void 0),E(this,"nodelete",void 0),E(this,"includeFilter",void 0),E(this,"ignoreFilter",void 0),E(this,"options",void 0),this.options=e,this.cwd=t,this.themeId=e.theme||"",this.live=null!==(i=e.live)&&void 0!==i&&i,this.development=null!==(r=e.development)&&void 0!==r&&r,this.nodelete=e.nodelete;let u=null!==(o=e.only)&&void 0!==o?o:[],d=null!==(n=e.ignore)&&void 0!==n?n:[];this.log("includes: %O",u),this.log("ignores: %O",d),this.includeFilter=new s.default(u,this.cwd),this.ignoreFilter=new a.default(d,this.cwd)}}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"PullService3",{enumerable:!0,get:()=>P});const e=T(require("fs-extra")),t=T(require("pathe")),i=T(require("progress")),r=T(require("adm-zip")),l=require("../../../utils/path"),o=T(require("../../../utils/debug")),s=T(require("../../../utils/include-filter")),a=T(require("../../../utils/ignore-filter")),n=T(require("../../../utils/winston")),u=require("../../../utils/error"),d=require("../utils"),h=require("../inquirer"),c=require("../../../utils/ora-manager"),m=T(require("../../../utils/logger")),f=T(require("./theme")),p=require("../const"),w=require("./api"),g=T(require("../../../helpers/config")),v=require("../../../utils/check-theme-type-version"),y=require("../pull");function E(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function T(e){return e&&e.__esModule?e:{default:e}}class P extends o.default{async pull(){n.default.log("Prepare pull theme...");let{id:e,themeTypeVersion:t}=await this.prepareTheme();if(n.default.log(`Current pull theme id: ${e}`),n.default.log(`Current pull theme type version: ${t}`),!(0,v.isRemoteThemeTypeVersion3)(t)){await new y.PullService({...this.options,theme:e},this.cwd).pull();return}if(this.themeId=e,e){await this.beforePull(),n.default.log(`Downloading theme (${e})...`);let{fileName:t}=await this.processDownloadTheme(e);n.default.log(`Unzipping theme (${t})...`),this.unzipTheme(t),n.default.log(`Theme (${e}) pulled successfully`),m.default.success("Theme pulled successfully")}else throw new u.AbortError(p.ERRORS.THEME_ID_NOT_EXIST)}unzipTheme(i){let l=t.default.join(this.cwd,i);if(e.default.existsSync(l)){try{let e=new r.default(l),t=e.getEntries();t.forEach(t=>{let i=t.entryName,r=this.ignoreFilter.match(i),l=this.includeFilter.match(i);!r&&l&&e.extractEntryTo(i,this.cwd,!0,!0)})}catch(e){throw n.default.log(`[Pull] Failed to unzip theme: ${e.message}`),new u.AbortError(e.message,p.ERRORS.UNZIP_THEME_FAILED)}e.default.removeSync(l)}}async processDownloadTheme(e){let t=(0,c.createOra)("Fetching the theme package file...");try{t.start();let{fileName:i}=await this.downloadTheme(e,t);return await Promise.resolve({fileName:i,themeId:e})}catch(i){return n.default.log(`[Pull] Download theme #${e} failed: ${i.message||i}`),t.isSpinning&&t.fail().clear(),Promise.reject(i.message||i)}}downloadTheme(e,t){return new Promise(async(i,r)=>{let l=await (0,w.downloadTheme)(e);if(t.succeed().clear(),200===l.status){let t=l.headers,o=t["theme-status"],s=t["theme-develop-type"];if(void 0===o||void 0===s){n.default.log(`[Pull] Missing theme headers for #${e}: status=${o}, type=${s}`),r(new u.AbortError(p.ERRORS.THEME_ID_NOT_EXIST));return}this.onDownloadProgress(l,e).then(e=>i(e)).catch(r)}else n.default.log(`[Pull] Unexpected download status ${l.status} for theme #${e}`),r(new u.AbortError(p.ERRORS.DOWNLOAD_THEME_FAILED))})}onDownloadProgress(r,l){return new Promise((o,s)=>{var a,n;let u;let h=r.headers["theme-status"],m=r.headers["theme-develop-type"],f=r.headers["content-length"]||0,w=r.headers["content-disposition"],v=null!==(n=null===(a=/fileName=([^;]+)/.exec(w))||void 0===a?void 0:a[1])&&void 0!==n?n:p.DEFAULT_ZIP_NAME;v=decodeURIComponent(v);let y=t.default.basename(v,".zip"),E=e.default.createWriteStream(t.default.join(this.cwd,v)),T=(0,d.getKeyMessage)(`Pulling theme files from ${decodeURIComponent(y)} (#${l}) on ${g.default.currentStore}`);f?(u=new i.default((0,d.getKeyMessage)("[:bar] :rate/bps :percent :etas"),{complete:"=",incomplete:" ",total:+f,width:50}),console.log(T)):u=(0,c.createOra)({text:T,spinner:"bouncingBar"}),r.data.pipe(E),r.data.on("data",e=>{f?u.tick(e.length):u.start()}),r.data.on("error",e=>{f||u.fail(),s(e)}),r.data.on("end",()=>{f||u.succeed(),E.on("finish",()=>{let i=e.default.statSync(t.default.join(this.cwd,v)).size;this.log("fileSize: %O",i),0===i?(f||u.fail("Downloaded file is empty"),s(Error("Downloaded file is empty"))):o({themeStatus:h,themeType:m,fileName:v})})})})}get isEmptyDir(){return(0,d.isEmptyDir)(!0,this.cwd)}async beforePull(){if(this.isEmptyDir||this.nodelete)return Promise.resolve();let t=await (0,h.askForPull)();return"clear"===t&&(n.default.log("Clear local theme files..."),e.default.emptyDirSync(this.cwd)),Promise.resolve()}async prepareTheme(){if(this.themeId){let{id:e,themeTypeVersion:t}=await f.default.getThemeInfo(this.themeId);return{id:e,themeTypeVersion:t}}if(this.live){let{id:e,themeTypeVersion:t}=await f.default.getLiveThemeInfo();if(!e)throw new u.AbortError('Theme "live" doesn\'t exist');return{id:e,themeTypeVersion:t}}if(this.development){let{id:e,themeTypeVersion:t=""}=await f.default.getDevelopmentThemeInfo();if(!e)throw new u.AbortError('Theme "development" doesn\'t exist');return{id:e,themeTypeVersion:t}}let{id:e,themeTypeVersion:t}=await f.default.chooseThemeList("pull");return{id:e,themeTypeVersion:t}}constructor(e,t=(0,l.cwd)()){var i,r,o,n;super("theme:pull"),E(this,"cwd",void 0),E(this,"themeId",void 0),E(this,"live",void 0),E(this,"development",void 0),E(this,"nodelete",void 0),E(this,"includeFilter",void 0),E(this,"ignoreFilter",void 0),E(this,"options",void 0),this.options=e,this.cwd=t,this.themeId=e.theme||"",this.live=null!==(i=e.live)&&void 0!==i&&i,this.development=null!==(r=e.development)&&void 0!==r&&r,this.nodelete=e.nodelete;let u=null!==(o=e.only)&&void 0!==o?o:[],d=null!==(n=e.ignore)&&void 0!==n?n:[];this.log("includes: %O",u),this.log("ignores: %O",d),this.includeFilter=new s.default(u,this.cwd),this.ignoreFilter=new a.default(d,this.cwd)}}
2
+ //# sourceMappingURL=pull.js.map
@@ -1 +1,2 @@
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:()=>w,prompt:()=>v});const e=p(require("inquirer")),t=p(require("ora")),i=p(require("../../../utils/debug")),s=require("../../../utils/path"),r=p(require("../../../utils/print-preview")),l=require("../../../utils/output"),u=require("../types"),n=p(require("./theme")),o=require("../../../utils/ui/ui"),a=p(require("../../../utils/ignore-filter")),h=p(require("../../../utils/include-filter")),d=p(require("../../../utils/winston")),c=require("../../../utils/error"),m=require("../../../utils/check-theme-type-version");function f(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function p(e){return e&&e.__esModule?e:{default:e}}const v=e.default.createPromptModule();class w extends i.default{async confirmPushMode(){if(this.includes.length>0||this.ignores.length>0)return;let{mode:e}=await v([{type:"list",name:"mode",message:"Please choose an action (Use arrow keys)",default:"overwrite",choices:[{name:"Push all static files (safe mode)",value:"safe"},{name:"Push all files (overwrite existing ones)",value:"overwrite"}]}]);({safe:()=>{this.includeFilter=new h.default(["!**/*.json"],this.cwd)},overwrite:()=>{}})[e]()}async push(){d.default.log("Prepare push theme...");let e=await this.prepareTheme();if(!e)return;await this.confirmPushMode();let i=(0,t.default)("Uploading your theme...").start(),s=e.id;try{if(e.status!==u.EThemeStatus.Unpublished||e.id){d.default.log(`[Push] Syncing to existing theme #${e.id}`);let t=new n.default({themeId:e.id,cwd:this.cwd,includeFilter:this.includeFilter,ignoreFilter:this.ignoreFilter});await t.syncTheme({nodelete:this.nodelete})}else{d.default.log(`[Push] Creating new unpublished theme: ${e.name}`);let t=new n.default({cwd:this.cwd,includeFilter:this.includeFilter,ignoreFilter:this.ignoreFilter}),i=await t.createNewTheme({status:e.status,name:e.name});s=i.id}}catch(e){throw i.fail(),d.default.log(`[Push] Failed to push theme: ${e.message}`),e}i.succeed(),d.default.log(`[Push] Theme (${s}) pushed successfully`),(0,l.outputSuccess)("Your theme was pushed successfully"),(0,r.default)(s)}async prepareTheme(){if(this.development){let{id:e,name:t,status:i}=await n.default.getValidDevelopmentInfo();return{id:e,name:t,status:i}}if(this.live){let{id:e,name:t,status:i}=await n.default.getLiveThemeInfo();if(!e)throw new c.AbortError('Theme "live" doesn\'t exist, please try again!');return{id:e,name:t,status:i}}if(this.unpublished){let e=await w.getThemeNamePrompt();return{id:"",name:e,status:u.EThemeStatus.Unpublished}}if(this.themeId){let{id:e,name:t,status:i}=await n.default.getThemeInfo(this.themeId);return{id:e,name:t,status:i}}let{id:e,status:t,name:i,themeTypeVersion:s}=await n.default.chooseThemeList("push"),r=t===u.EThemeStatus.Published,l=(0,m.getThemeTypeVersion)(this.cwd,!0);if(l!==s)throw new c.AbortError(`The theme type version is not matched, local: ${l}, selected: ${s}`);if(r){if(this.allowAlive)return{id:e,name:i,status:t};let s=await w.confirmOverrideStoreTheme();return s?{id:e,name:i,status:t}:null}return{id:e,name:i,status:t}}static async confirmOverrideStoreTheme(){let{isOverride:e}=await v([{type:"confirm",name:"isOverride",message:"Are you sure you want to push to your live theme?",default:!0}]);return e}static async getThemeNamePrompt(){return(0,o.renderTextPrompt)({message:"Please input the unpublished theme name",validate:e=>{if(!e.trim())return"Theme name cannot be empty"}})}constructor(e,t=(0,s.cwd)()){var i,r,l,u,n;super("theme:push"),f(this,"cwd",void 0),f(this,"themeId",void 0),f(this,"live",void 0),f(this,"allowAlive",void 0),f(this,"development",void 0),f(this,"unpublished",void 0),f(this,"includeFilter",void 0),f(this,"ignoreFilter",void 0),f(this,"nodelete",void 0),f(this,"includes",void 0),f(this,"ignores",void 0),this.cwd=t,this.themeId=e.theme||"",this.live=null!==(i=e.live)&&void 0!==i&&i,this.allowAlive=e.allowLive,this.development=null!==(r=e.development)&&void 0!==r&&r,this.unpublished=e.unpublished,this.nodelete=null!==(l=e.nodelete)&&void 0!==l&&l,this.includes=null!==(u=e.only)&&void 0!==u?u:[],this.ignores=null!==(n=e.ignore)&&void 0!==n?n:[],this.log("includes: %O",this.includes),this.log("ignores: %O",this.ignores),this.includeFilter=new h.default(this.includes,this.cwd),this.ignoreFilter=new a.default(this.ignores,this.cwd)}}
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:()=>w,prompt:()=>v});const e=p(require("inquirer")),t=p(require("ora")),i=p(require("../../../utils/debug")),s=require("../../../utils/path"),r=p(require("../../../utils/print-preview")),l=require("../../../utils/output"),u=require("../types"),n=p(require("./theme")),o=require("../../../utils/ui/ui"),a=p(require("../../../utils/ignore-filter")),h=p(require("../../../utils/include-filter")),d=p(require("../../../utils/winston")),c=require("../../../utils/error"),m=require("../../../utils/check-theme-type-version");function f(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function p(e){return e&&e.__esModule?e:{default:e}}const v=e.default.createPromptModule();class w extends i.default{async confirmPushMode(){if(this.includes.length>0||this.ignores.length>0)return;let{mode:e}=await v([{type:"list",name:"mode",message:"Please choose an action (Use arrow keys)",default:"overwrite",choices:[{name:"Push all static files (safe mode)",value:"safe"},{name:"Push all files (overwrite existing ones)",value:"overwrite"}]}]);({safe:()=>{this.includeFilter=new h.default(["!**/*.json"],this.cwd)},overwrite:()=>{}})[e]()}async push(){d.default.log("Prepare push theme...");let e=await this.prepareTheme();if(!e)return;await this.confirmPushMode();let i=(0,t.default)("Uploading your theme...").start(),s=e.id;try{if(e.status!==u.EThemeStatus.Unpublished||e.id){d.default.log(`[Push] Syncing to existing theme #${e.id}`);let t=new n.default({themeId:e.id,cwd:this.cwd,includeFilter:this.includeFilter,ignoreFilter:this.ignoreFilter});await t.syncTheme({nodelete:this.nodelete})}else{d.default.log(`[Push] Creating new unpublished theme: ${e.name}`);let t=new n.default({cwd:this.cwd,includeFilter:this.includeFilter,ignoreFilter:this.ignoreFilter}),i=await t.createNewTheme({status:e.status,name:e.name});s=i.id}}catch(e){throw i.fail(),d.default.log(`[Push] Failed to push theme: ${e.message}`),e}i.succeed(),d.default.log(`[Push] Theme (${s}) pushed successfully`),(0,l.outputSuccess)("Your theme was pushed successfully"),(0,r.default)(s)}async prepareTheme(){if(this.development){let{id:e,name:t,status:i}=await n.default.getValidDevelopmentInfo();return{id:e,name:t,status:i}}if(this.live){let{id:e,name:t,status:i}=await n.default.getLiveThemeInfo();if(!e)throw new c.AbortError('Theme "live" doesn\'t exist, please try again!');return{id:e,name:t,status:i}}if(this.unpublished){let e=await w.getThemeNamePrompt();return{id:"",name:e,status:u.EThemeStatus.Unpublished}}if(this.themeId){let{id:e,name:t,status:i}=await n.default.getThemeInfo(this.themeId);return{id:e,name:t,status:i}}let{id:e,status:t,name:i,themeTypeVersion:s}=await n.default.chooseThemeList("push"),r=t===u.EThemeStatus.Published,l=(0,m.getThemeTypeVersion)(this.cwd,!0);if(l!==s)throw new c.AbortError(`The theme type version is not matched, local: ${l}, selected: ${s}`);if(r){if(this.allowAlive)return{id:e,name:i,status:t};let s=await w.confirmOverrideStoreTheme();return s?{id:e,name:i,status:t}:null}return{id:e,name:i,status:t}}static async confirmOverrideStoreTheme(){let{isOverride:e}=await v([{type:"confirm",name:"isOverride",message:"Are you sure you want to push to your live theme?",default:!0}]);return e}static async getThemeNamePrompt(){return(0,o.renderTextPrompt)({message:"Please input the unpublished theme name",validate:e=>{if(!e.trim())return"Theme name cannot be empty"}})}constructor(e,t=(0,s.cwd)()){var i,r,l,u,n;super("theme:push"),f(this,"cwd",void 0),f(this,"themeId",void 0),f(this,"live",void 0),f(this,"allowAlive",void 0),f(this,"development",void 0),f(this,"unpublished",void 0),f(this,"includeFilter",void 0),f(this,"ignoreFilter",void 0),f(this,"nodelete",void 0),f(this,"includes",void 0),f(this,"ignores",void 0),this.cwd=t,this.themeId=e.theme||"",this.live=null!==(i=e.live)&&void 0!==i&&i,this.allowAlive=e.allowLive,this.development=null!==(r=e.development)&&void 0!==r&&r,this.unpublished=e.unpublished,this.nodelete=null!==(l=e.nodelete)&&void 0!==l&&l,this.includes=null!==(u=e.only)&&void 0!==u?u:[],this.ignores=null!==(n=e.ignore)&&void 0!==n?n:[],this.log("includes: %O",this.includes),this.log("ignores: %O",this.ignores),this.includeFilter=new h.default(this.includes,this.cwd),this.ignoreFilter=new a.default(this.ignores,this.cwd)}}
2
+ //# sourceMappingURL=push.js.map
@@ -1 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>p});const e=d(require("fs-extra")),t=require("../../../helpers/sentry"),l=require("../../../utils/error"),a=d(require("../../../utils/winston")),i=d(require("../../../utils/get-objects-diff")),r=require("../inquirer"),s=require("../../../utils/messages"),o=d(require("./file")),n=require("./api"),f=d(require("../operation")),c=d(require("../../../utils/debug"));function u(e,t,l){return t in e?Object.defineProperty(e,t,{value:l,enumerable:!0,configurable:!0,writable:!0}):e[t]=l,e}function d(e){return e&&e.__esModule?e:{default:e}}class p extends c.default{async syncRemoteUpdate(){let{local:e,remote:t}=await this.themeService.getFileChecksums();a.default.log("[Remote Watch] Get remote and local diffs...");let l=await (0,i.default)(t,e);this.log("remote diffs: %O",l),a.default.log(`[Remote Watch] Found ${l.length} remote diffs, applying...`),await this.updateStrategy(l,!0)}async updateStrategy(e,t){let{local:l,remote:i}=await p.prepareUpdateDiffs(e,t);this.log("local diffs: %O",l),this.log("remote diffs: %O",i),l.length&&a.default.log(`Run local diffs ${JSON.stringify(l)}...`),i.length&&(a.default.log(`Run remote diffs ${JSON.stringify(i)}...`),i.forEach(async({type:e,key:t})=>{let l=new o.default(t,this.themeService.cwd);await this.processRemoteDiffFile(e,l);let a=new f.default("update"===e?"get":e,l).asSyncMessage();console.log(a)}))}removeUpdateToLocalFiles(e){let t=this.updateToLocalFiles.findIndex(t=>t.fileName===e);-1!==t&&this.updateToLocalFiles.splice(t,1)}shouldUpdateToLocal(e){return this.updateToLocalFiles.find(t=>t.fileName===e)}appendUpdateToLocalFiles(e){this.updateToLocalFiles.find(t=>t.fileName===e.fileName)||this.updateToLocalFiles.push(e)}async processRemoteDiffFile(t,l){let{fullPath:i}=l;if("create"===t||"update"===t){a.default.log(`Get file (${l.fileName}) information: ${l.fileName}`);let t=await this.getFileInfo(l.fileName);a.default.log("Writing file content"),e.default.ensureFileSync(i),this.appendUpdateToLocalFiles(l),e.default.writeFileSync(i,t)}else"delete"===t&&(a.default.log(`Delete file (${l.fileName})`),this.appendUpdateToLocalFiles(l),e.default.unlinkSync(i))}async getFileInfo(e){let t=await (0,n.getThemeFileDetail)(this.themeService.themeId,[e]);return t[0].content}static async prepareUpdateDiffs(e,t){let l={local:[],remote:[]},i=e.length,s=e=>"create"===e?"delete":"delete"===e?"create":"update",o=(e,t)=>{let a=t.filter(e=>{let t=e.key;return(t.startsWith("theme.config")||t.startsWith("templates/"))&&t.endsWith(".json")});"remote"===e?l.remote=l.remote.concat(a):l.local=l.local.concat(a.map(e=>({...e,type:s(e.type)})))};if(!i)return l;if(t)return o("remote",e),l;a.default.log("Update conflicts files...");let[{key:n},...f]=e,c=await p.promptUpdateStrategy(n);if(o(c,[e[0]]),1===i)return l;let u=await (0,r.askForApplyToAll)(f.length);for await(let e of(console.log(),f))if(u)a.default.log("Apply to all files to solve conflict files..."),o(c,f);else{let t=await this.promptUpdateStrategy(e.key);a.default.log(`Apply ${e.key} strategy to solve conflict files...`),console.log(),o(t,[e])}return l}static async promptUpdateStrategy(e){let t=(0,s.getMessage)("theme.serve.syncer.update_strategy.title_content",{file_name:e});console.log(t);let l=await (0,r.askForUpdateStrategy)();return l}start(){this.timer=setInterval(async()=>{try{await this.syncRemoteUpdate()}catch(a){this.stop(),(0,t.reportBug)(a);let e=new l.AbortError(a.message);throw e.stack=a.stack,e}},3e3)}stop(){this.timer&&clearInterval(this.timer)}constructor(e){super("theme:serve:update"),u(this,"themeService",void 0),u(this,"timer",void 0),u(this,"updateToLocalFiles",void 0),this.themeService=e,this.timer=null,this.updateToLocalFiles=[]}}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>h});const e=p(require("fs-extra")),t=require("../../../helpers/monitoring"),i=require("../../../utils/error"),l=p(require("../../../utils/winston")),a=p(require("../../../utils/get-objects-diff")),r=require("../inquirer"),s=require("../../../utils/messages"),o=p(require("./file")),n=require("./api"),f=p(require("../operation")),u=p(require("../../../utils/debug")),c=require("../../../utils/ui/render");function d(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function p(e){return e&&e.__esModule?e:{default:e}}class h extends u.default{async syncRemoteUpdate(){let{local:e,remote:t}=await this.themeService.getFileChecksums();l.default.log("[Remote Watch] Get remote and local diffs...");let i=await (0,a.default)(t,e);this.log("remote diffs: %O",i),l.default.log(`[Remote Watch] Found ${i.length} remote diffs, applying...`),await this.updateStrategy(i,!0)}async updateStrategy(e,t){let{local:i,remote:a}=await h.prepareUpdateDiffs(e,t);if(this.log("local diffs: %O",i),this.log("remote diffs: %O",a),i.length&&l.default.log(`Run local diffs ${JSON.stringify(i)}...`),a.length)for(let{type:e,key:t}of(l.default.log(`Run remote diffs ${JSON.stringify(a)}...`),a)){let i=new o.default(t,this.themeService.cwd);await this.processRemoteDiffFile(e,i);let l="update"===e?"get":e,a=new f.default(l,i).asSyncMessage();console.log(a)}}removeUpdateToLocalFiles(e){let t=this.updateToLocalFiles.findIndex(t=>t.fileName===e);-1!==t&&this.updateToLocalFiles.splice(t,1)}shouldUpdateToLocal(e){return this.updateToLocalFiles.find(t=>t.fileName===e)}appendUpdateToLocalFiles(e){this.updateToLocalFiles.find(t=>t.fileName===e.fileName)||this.updateToLocalFiles.push(e)}async processRemoteDiffFile(t,i){let{fullPath:a}=i;if("create"===t||"update"===t){l.default.log(`Get file (${i.fileName}) information: ${i.fileName}`);let t=await this.getFileInfo(i.fileName);l.default.log("Writing file content"),e.default.ensureFileSync(a),this.appendUpdateToLocalFiles(i),e.default.writeFileSync(a,t)}else"delete"===t&&(l.default.log(`Delete file (${i.fileName})`),this.appendUpdateToLocalFiles(i),e.default.unlinkSync(a))}async getFileInfo(e){let t=await (0,n.getThemeFileDetail)(this.themeService.themeId,[e]);return t[0].content}static async prepareUpdateDiffs(e,t){let i={local:[],remote:[]},a=e.length,s=e=>"create"===e?"delete":"delete"===e?"create":"update",o=(e,t)=>{let l=t.filter(e=>{let t=e.key;return(t.startsWith("theme.config")||t.startsWith("templates/")||/^sections\/[^/]+$/.test(t))&&t.endsWith(".json")});"remote"===e?i.remote=i.remote.concat(l):i.local=i.local.concat(l.map(e=>({...e,type:s(e.type)})))};if(!a)return i;if(t)return o("remote",e),i;l.default.log("Update conflicts files...");let[{key:n},...f]=e,u=await h.promptUpdateStrategy(n);if(o(u,[e[0]]),1===a)return i;let c=await (0,r.askForApplyToAll)(f.length);for await(let e of(console.log(),f))if(c)l.default.log("Apply to all files to solve conflict files..."),o(u,f);else{let t=await this.promptUpdateStrategy(e.key);l.default.log(`Apply ${e.key} strategy to solve conflict files...`),console.log(),o(t,[e])}return i}static async promptUpdateStrategy(e){let t=(0,s.getMessage)("theme.serve.syncer.update_strategy.title_content",{file_name:e});console.log(t);let i=await (0,r.askForUpdateStrategy)();return i}start(){this.stopped=!1,this.timer=setTimeout(async()=>{try{await this.syncRemoteUpdate(),this.stopped||this.start()}catch(l){if((0,t.reportBugOnce)(l),(null==l?void 0:l.code)==="ECONNRESET"){this.stopped||this.start();return}this.stop();let e=l instanceof i.AbortError?l:new i.AbortError(l instanceof Error?l.message:String(null!=l?l:""));e!==l&&l instanceof Error&&(e.stack=l.stack,e.cause=l),(0,c.renderFatalError)(e)}},3e3)}stop(){this.stopped=!0,this.timer&&(clearTimeout(this.timer),this.timer=null)}constructor(e){super("theme:serve:update"),d(this,"themeService",void 0),d(this,"timer",void 0),d(this,"stopped",void 0),d(this,"updateToLocalFiles",void 0),this.themeService=e,this.timer=null,this.stopped=!0,this.updateToLocalFiles=[]}}
2
+ //# sourceMappingURL=remote-watcher.js.map
@@ -1,7 +1,8 @@
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,{default:()=>N,startThemeService:()=>O,themePresenter:()=>W});const e=k(require("fast-glob")),t=k(require("form-data")),a=k(require("fs")),i=k(require("inquirer")),r=k(require("chokidar")),s=k(require("ora")),l=require("lodash"),n=k(require("../../../utils/debug")),d=k(require("../../../helpers/config")),u=require("../../../utils/messages"),h=require("../../../helpers/sentry"),o=require("../../../utils/path"),c=k(require("../../../utils/winston")),m=require("./api"),f=require("../types"),p=require("../utils"),g=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=q(t);if(a&&a.has(e))return a.get(e);var i={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var l=r?Object.getOwnPropertyDescriptor(e,s):null;l&&(l.get||l.set)?Object.defineProperty(i,s,l):i[s]=e[s]}return i.default=e,a&&a.set(e,i),i}(require("../../../utils/logger")),y=k(require("../../../utils/get-objects-diff")),v=k(require("./file")),T=k(require("./package")),w=require("../../../utils/error"),F=require("../const"),S=k(require("../../../utils/colors")),D=k(require("./remote-watcher")),b=require("../../../utils/ui/render");function I(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function k(e){return e&&e.__esModule?e:{default:e}}function q(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(q=function(e){return e?a:t})(e)}const E=i.default.createPromptModule();class N extends n.default{async watchRemote(){this.editorSync&&(this.remoteWatcher=new D.default(this),this.remoteWatcher.start())}watch(){this.watchRemote();let e=r.default.watch((0,p.getThemeDirectory3)(this.cwd),{ignored:/(^|[/\\])\../,ignoreInitial:!0});e.on("ready",()=>{e.on("add",(...e)=>{let t=e[0];c.default.log(`Add theme file: ${t}`),this.shouldWatchFile(t)&&this.onAdd(t)}),e.on("change",(...e)=>{let t=e[0];c.default.log(`Change theme file: ${t}`),this.shouldWatchFile(t)&&this.onChange(t)}),e.on("unlink",(...e)=>{let t=e[0];c.default.log(`Unlink theme file: ${t}`),this.shouldWatchFile(t)&&this.onUnlink(t)})})}shouldWatchFile(e){var t;let a=(0,p.parseFileName)(e,this.cwd);if(null===(t=this.remoteWatcher)||void 0===t?void 0:t.shouldUpdateToLocal(a)){this.remoteWatcher.removeUpdateToLocalFiles(a);return}let i=this.ignoreFilter.match(a),r=this.includeFilter.match(a);return!i&&r}async onAdd(e){let i=(0,p.parseFileName)(e,this.cwd),r=new t.default;r.append("file",a.default.createReadStream(e)),r.append("themeId",this.themeId),r.append("fileName",i);let l=(0,s.default)((0,u.getMessage)("theme.serve.syncer.create_strategy.success",{file_name:i})).start();try{var n;await (0,m.createFile)(r),null===(n=this.sse)||void 0===n||n.broadcast(this.getSseData(e,"add")),l.succeed()}catch(e){c.default.log(`[Watch] Failed to create remote file: ${i}`),(0,b.renderFatalError)(e),l.fail()}}async onChange(e){let i=(0,p.parseFileName)(e,this.cwd),r=new t.default;r.append("file",a.default.createReadStream(e)),r.append("themeId",this.themeId),r.append("fileName",i);let l=(0,s.default)((0,u.getMessage)("theme.serve.syncer.update_strategy.success",{file_name:i})).start();try{var n;await (0,m.updateFile)(r),null===(n=this.sse)||void 0===n||n.broadcast(this.getSseData(e)),l.succeed()}catch(e){c.default.log(`[Watch] Failed to update remote file: ${i}`),(0,b.renderFatalError)(e),l.fail()}}async onUnlink(e){var t;let a=(0,p.parseFileName)(e,this.cwd),i=(0,s.default)((0,u.getMessage)("theme.serve.syncer.delete_strategy.success",{file_name:a})).start();await (0,m.deleteFiles)(this.themeId,[a]),null===(t=this.sse)||void 0===t||t.broadcast(this.getSseData(e,"unlink")),i.succeed()}getSseData(e,t){return"full-page"===this.mode||t&&["add","unlink"].includes(t)?{data:{reload_page:!0}}:{data:{modified:[(0,p.getRelativePath)(e,this.cwd)]}}}async syncTheme({nodelete:e}={nodelete:!1}){let t=(0,s.default)(`✨ Syncing theme #${this.themeId} on ${d.default.currentStore}`).start();c.default.log(`[Sync] Starting sync for theme #${this.themeId}...`);let{name:a,status:i}=await this.findOrCreateTheme(),{local:r,remote:l}=await this.getFileChecksums(),n=await (0,y.default)(r,l);if(c.default.log(`[Sync] Found ${n.length} diffs`),n.length){let t=[],r=[];if(n.forEach(e=>{switch(e.type){case"create":case"update":t.push(e);break;case"delete":r.push(e)}}),!e&&r.length){let e=r.map(e=>e.key);c.default.log(`[Sync] Deleting ${e.length} remote files...`),await (0,m.deleteFiles)(this.themeId,e)}if(t.length){let e=t.map(e=>e.key);c.default.log(`[Sync] Uploading ${e.length} files...`);let r=this.getThemeZipFormData({fileList:e,name:a,status:i});await (0,m.uploadTheme)(r)}}c.default.log(`[Sync] Theme #${this.themeId} synced successfully`),t.succeed()}getThemeZipFormData({fileList:e,status:i,name:r}){let s=new T.default({cwd:this.cwd}).pack(e),l=new t.default;return l.append("file",a.default.createReadStream(s)),l.append("themeId",this.themeId||""),l.append("status",i),l.append("name",r),l}async getFileChecksums(){let{localeFileChecksums:e}=this,t=await (0,m.getThemeFileList)(this.themeId),a=t.reduce((e,t)=>(e[t.name]=t.checksum||"",e),Object.create(null)),i=this.getFilterFileChecksums(e),r=this.getFilterFileChecksums(a);return{local:i,remote:r}}getFilterFileChecksums(e){let t=Object.keys(e).reduce((t,a)=>{let i=this.ignoreFilter.match(a),r=this.includeFilter.match(a);return!i&&r&&(t[a]=e[a]),t},{});return t}get localeFileChecksums(){return this.themeFiles().reduce((e,t)=>(e[t.fileName]=t.checksum,e),{})}themeFiles(){let t=e.default.sync(p.themeDirectoryGlobList3,{cwd:this.cwd,onlyFiles:!0,unique:!0});return t.map(e=>new v.default(e,this.cwd))}static async getThemeInfo(e){let{id:t,name:a,status:i,themeTypeVersion:r}=await (0,m.getThemeInfo)(e);return{id:t,name:a,status:i,themeTypeVersion:r}}async findOrCreateTheme(){try{let{id:e,name:t,status:a}=await N.getThemeInfo(this.themeId);return{id:e,name:t,status:a}}catch(i){c.default.log(`[Sync] Theme #${this.themeId} not found (${i.message}), creating new development theme...`);let{id:e,name:t,status:a}=await this.createNewDevelopmentTheme();return{id:e,name:t,status:a}}}async createNewTheme({name:e,status:t}){let a=this.getThemeZipFormData({status:t,name:e}),{themeId:i}=await (0,m.createNewTheme)(a);return{id:i,name:e,status:t}}async createNewDevelopmentTheme(){let e=(0,p.generateDevThemeName)(),t=this.getThemeZipFormData({name:e,status:f.EThemeStatus.Development}),{themeId:a}=await (0,m.createNewTheme)(t);return this.themeId=a,d.default.developmentThemeId=a,d.default.developmentThemeName=e,{id:a,name:e,status:f.EThemeStatus.Development}}static async getValidDevelopmentInfo(){let e=d.default.developmentThemeId;return await N.isValidDevTheme(e)?{id:e,name:"",status:f.EThemeStatus.Development}:{id:"",name:(0,p.generateDevThemeName)(),status:f.EThemeStatus.Development}}static async isValidDevTheme(e){try{let t=await (0,m.getThemeInfo)(e);if((null==t?void 0:t.status)===f.EThemeStatus.Development)return{id:t.id,name:t.name,status:t.status,themeTypeVersion:t.themeTypeVersion};return null}catch(e){return null}}static async chooseThemeList(e){let t=N.addDevelopmentTheme(await (0,m.getThemes)()),a=t.map(e=>({name:W(e,"short"),value:e.id})).filter(e=>e.value),{themeId:i}=await E([{type:"list",name:"themeId",message:{pull:"Select a theme to pull from",push:"Select theme to push to"}[e],pageSize:a.length,default:a[0].value,loop:!1,choices:a}]),{status:r,name:s,themeTypeVersion:l}=t.find(e=>e.id===i);return{id:i,name:s,status:r,themeTypeVersion:l}}static addDevelopmentTheme(e){let t=d.default.developmentThemeId,a=d.default.developmentThemeName;return t?e.concat({name:a,status:f.EThemeStatus.Development,id:t,themeTypeVersion:""}):e}static async package(e,t=(0,o.cwd)()){try{let e=new T.default({cwd:t});await e.pack()}catch(e){(0,p.handleError)(e)}}static async list(){try{c.default.log("Checking login..."),d.default.isLogin(),console.log((0,u.getMessage)("theme.list.title",{store:d.default.currentStore})),c.default.log("Printing theme list...");let e=await (0,m.getThemes)();e.forEach(e=>{console.log(W(e))}),c.default.log("Print theme list succeed!")}catch(e){(0,p.handleError)(e)}}static async getLiveThemeInfo(){let e=await (0,m.getThemes)(),{id:t,name:a,status:i,themeTypeVersion:r}=e.find(e=>e.status===f.EThemeStatus.Published);return{id:t,name:a,status:i,themeTypeVersion:r}}static async getDevelopmentThemeInfo(){let e=d.default.developmentThemeId,t=d.default.developmentThemeName,a=await N.isValidDevTheme(e);return a?{id:e,name:t,status:a.status,themeTypeVersion:a.themeTypeVersion}:{id:"",name:"",status:"",themeTypeVersion:""}}static checkThemeStandardStructure(e){if(0===e.length)throw new w.AbortError(F.ERRORS.NOT_STANDARD_DIRECTORY);let t=(0,l.difference)(p.standardThemeDirectories3,e);t.length>0&&Error(`
2
- The presence of ${S.default.bold(null==t?void 0:t[0])} in the directory structure isn't supported.
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:()=>P,startThemeService:()=>U,themePresenter:()=>W});const e=k(require("fast-glob")),t=k(require("form-data")),i=k(require("fs")),a=k(require("inquirer")),r=k(require("chokidar")),s=k(require("ora")),l=require("lodash"),n=k(require("../../../utils/debug")),o=k(require("../../../helpers/config")),h=require("../../../utils/messages"),d=require("../../../helpers/monitoring"),u=require("../../../utils/path"),c=k(require("../../../utils/winston")),m=require("./api"),p=require("../types"),f=require("../utils"),g=_(require("../../../utils/logger")),T=k(require("../../../utils/get-objects-diff")),y=k(require("./file")),w=_(require("./package")),v=require("../../../utils/error"),E=require("../const"),F=k(require("../../../utils/colors")),S=k(require("./remote-watcher")),D=require("../../../utils/ui/render"),I=require("../watcher-monitoring"),b=require("../../../utils/check-theme-type-version"),q=k(require("../../../utils/tiny-queue"));function O(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function k(e){return e&&e.__esModule?e:{default:e}}function R(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,i=new WeakMap;return(R=function(e){return e?i:t})(e)}function _(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var i=R(t);if(i&&i.has(e))return i.get(e);var a={},r=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var l=r?Object.getOwnPropertyDescriptor(e,s):null;l&&(l.get||l.set)?Object.defineProperty(a,s,l):a[s]=e[s]}return a.default=e,i&&i.set(e,a),a}const N=a.default.createPromptModule();function M(e,t){let i=e instanceof v.AbortError?e:new v.AbortError(e instanceof Error?e.message:`Theme file ${t} failed with a non-Error value`);e instanceof Error&&i!==e&&(i.stack=e.stack,i.cause=e),(0,I.reportThemeWatcherError)(i,{themeOs:"3",operation:t}),(0,D.renderFatalError)(i)}class P extends n.default{async watchRemote(){this.editorSync&&(this.remoteWatcher=new S.default(this),this.remoteWatcher.start())}watch(){this.watchRemote();let e=r.default.watch((0,f.getThemeDirectory3)(this.cwd),{ignored:/(^|[/\\])\../,ignoreInitial:!0});e.on("ready",()=>{e.on("add",(...e)=>{let t=e[0];if(c.default.log(`Add theme file: ${t}`),this.shouldWatchFile(t)){if(this.consumeRemoteUpdate(t)){var i;null===(i=this.sse)||void 0===i||i.broadcast(this.getSseData(t,"add"))}else this.enqueueFileOperation("create",()=>this.onAdd(t))}}),e.on("change",(...e)=>{let t=e[0];if(c.default.log(`Change theme file: ${t}`),this.shouldWatchFile(t)){if(this.consumeRemoteUpdate(t)){var i;null===(i=this.sse)||void 0===i||i.broadcast(this.getSseData(t))}else this.enqueueFileOperation("update",()=>this.onChange(t))}}),e.on("unlink",(...e)=>{let t=e[0];if(c.default.log(`Unlink theme file: ${t}`),this.shouldWatchFile(t)){if(this.consumeRemoteUpdate(t)){var i;null===(i=this.sse)||void 0===i||i.broadcast(this.getSseData(t,"unlink"))}else this.enqueueFileOperation("delete",()=>this.onUnlink(t))}})})}shouldWatchFile(e){let t=(0,f.parseFileName)(e,this.cwd),i=this.ignoreFilter.match(t),a=this.includeFilter.match(t);return!i&&a}enqueueFileOperation(e,t){this.bufferBrowserUpdates=!0,this.queue.push(()=>t().catch(t=>{M(t,e)}))}notifyBrowser(e,t){let i=this.getSseData(e,t);if(!this.bufferBrowserUpdates){var a;null===(a=this.sse)||void 0===a||a.broadcast(i);return}"reload_page"in i.data?(this.pendingReloadPage=!0,this.pendingModifiedFiles.clear()):this.pendingReloadPage||i.data.modified.forEach(e=>this.pendingModifiedFiles.add(e))}flushBrowserUpdates(){this.bufferBrowserUpdates=!1;try{var e,t;this.pendingReloadPage?null===(e=this.sse)||void 0===e||e.broadcast({data:{reload_page:!0}}):this.pendingModifiedFiles.size&&(null===(t=this.sse)||void 0===t||t.broadcast({data:{modified:[...this.pendingModifiedFiles]}}))}catch(e){M(e,"sync")}finally{this.pendingReloadPage=!1,this.pendingModifiedFiles.clear()}}consumeRemoteUpdate(e){var t;let i=(0,f.parseFileName)(e,this.cwd);return null!==(t=this.remoteWatcher)&&void 0!==t&&!!t.shouldUpdateToLocal(i)&&(this.remoteWatcher.removeUpdateToLocalFiles(i),!0)}async onAdd(e){let a=(0,f.parseFileName)(e,this.cwd),r=(0,s.default)((0,h.getMessage)("theme.serve.syncer.create_strategy.success",{file_name:a})).start();try{let s=new t.default;s.append("file",i.default.createReadStream(e)),s.append("themeId",this.themeId),s.append("fileName",a),await (0,m.createFile)(s),this.notifyBrowser(e,"add"),r.succeed()}catch(t){var l;let e=(0,f.formatThemeFileUploadError)(t,{fileName:a,themeId:String(null!==(l=this.themeId)&&void 0!==l?l:"")});(0,I.reportThemeWatcherError)(e,{themeOs:"3",operation:"create"}),(0,D.renderFatalError)(e),r.fail()}}async onChange(e){let a=(0,f.parseFileName)(e,this.cwd),r=(0,s.default)((0,h.getMessage)("theme.serve.syncer.update_strategy.success",{file_name:a})).start();try{let s=new t.default;s.append("file",i.default.createReadStream(e)),s.append("themeId",this.themeId),s.append("fileName",a),await (0,m.updateFile)(s),this.notifyBrowser(e),r.succeed()}catch(t){var l;let e=(0,f.formatThemeFileUploadError)(t,{fileName:a,themeId:String(null!==(l=this.themeId)&&void 0!==l?l:"")});(0,I.reportThemeWatcherError)(e,{themeOs:"3",operation:"update"}),(0,D.renderFatalError)(e),r.fail()}}async onUnlink(e){let t=(0,f.parseFileName)(e,this.cwd),i=(0,s.default)((0,h.getMessage)("theme.serve.syncer.delete_strategy.success",{file_name:t})).start();try{await (0,m.deleteFiles)(this.themeId,[t]),this.notifyBrowser(e,"unlink"),i.succeed()}catch(r){var a;let e=(0,f.formatThemeFileDeleteError)(r,{fileName:t,themeId:String(null!==(a=this.themeId)&&void 0!==a?a:"")});(0,I.reportThemeWatcherError)(e,{themeOs:"3",operation:"delete"}),(0,D.renderFatalError)(e),i.fail()}}getSseData(e,t){return"full-page"===this.mode||t&&["add","unlink"].includes(t)?{data:{reload_page:!0}}:{data:{modified:[(0,f.getRelativePath)(e,this.cwd)]}}}async syncTheme({nodelete:e}={nodelete:!1}){"development"===this.zipLifecycle&&new w.default({cwd:this.cwd}).removeStaleDevelopmentZip();let t=(0,s.default)(`✨ Syncing theme #${this.themeId} on ${o.default.currentStore}`).start();c.default.log(`[Sync] Starting sync for theme #${this.themeId}...`);let{name:i,status:a}=await this.findOrCreateTheme(),{local:r,remote:l}=await this.getFileChecksums(),n=await (0,T.default)(r,l);if(c.default.log(`[Sync] Found ${n.length} diffs`),n.length){let r=[],s=[];if(n.forEach(e=>{switch(e.type){case"create":case"update":r.push(e);break;case"delete":s.push(e)}}),!e&&s.length){let e=s.map(e=>e.key);c.default.log(`[Sync] Deleting ${e.length} remote files...`),await (0,m.deleteFiles)(this.themeId,e)}if(r.length){let e=r.map(e=>e.key);if(c.default.log(`[Sync] Uploading ${e.length} files...`),t.clear(),"development"===this.zipLifecycle)await this.uploadDevelopmentTheme({fileList:e,name:i,status:a,upload:m.uploadTheme});else{let t=this.getThemeZipFormData({fileList:e,name:i,status:a});await (0,m.uploadTheme)(t)}}}c.default.log(`[Sync] Theme #${this.themeId} synced successfully`),t.succeed()}getThemeZipFormData({fileList:e,status:t,name:a}){let r=new w.default({cwd:this.cwd}).pack(e);return this.createThemeUploadForm(i.default.createReadStream(r),t,a)}createThemeUploadForm(e,i,a){let r=new t.default;return r.append("file",e),r.append("themeId",this.themeId||""),r.append("status",i),r.append("name",a),r}async uploadDevelopmentTheme({fileList:e,status:t,name:a,upload:r}){let s,l,n,o,h;let d=!1,u=!1,m="stream-close";try{s=new w.default({cwd:this.cwd}).packDevelopment(e),(l=i.default.createReadStream(s.path)).once("close",()=>{d=!0});let n=this.createThemeUploadForm(l,t,a);o=await r(n)}catch(e){n=e,u=!0}finally{if(l&&!d)try{await new Promise((e,t)=>{let i;l.once("error",e=>{i=e}),l.once("close",()=>{i?t(i):e()});try{l.destroy()}catch(e){t(e)}})}catch(e){h=e}if(s&&(!l||d))try{await s.cleanup()}catch(e){h||(h=e,m="unlink")}}if(h&&s){let e=(0,w.formatDevelopmentZipCleanupError)(h,m,s.path);if(u)c.default.log(e.message);else throw e}if(u)throw n;return o}async getFileChecksums(){let{localeFileChecksums:e}=this,t=await (0,m.getThemeFileList)(this.themeId),i=t.reduce((e,t)=>(e[t.name]=t.checksum||"",e),Object.create(null)),a=this.getFilterFileChecksums(e),r=this.getFilterFileChecksums(i);return{local:a,remote:r}}getFilterFileChecksums(e){let t=Object.keys(e).reduce((t,i)=>{let a=this.ignoreFilter.match(i),r=this.includeFilter.match(i);return!a&&r&&(t[i]=e[i]),t},{});return t}get localeFileChecksums(){return this.themeFiles().reduce((e,t)=>(e[t.fileName]=t.checksum,e),{})}themeFiles(){let t=e.default.sync(f.themeDirectoryGlobList3,{cwd:this.cwd,onlyFiles:!0,unique:!0});return t.map(e=>new y.default(e,this.cwd))}static async getThemeInfo(e,t){let{id:i,name:a,status:r,themeTypeVersion:s}=await (0,m.getThemeInfo)(e,t);return{id:i,name:a,status:r,themeTypeVersion:s}}async findOrCreateTheme(){let e;if("development"!==this.zipLifecycle)try{let{id:e,name:t,status:i}=await P.getThemeInfo(this.themeId,{ignoreBusinessCodes:E.ERROR_CODES.DEVELOPMENT_THEME_NOT_EXIST});return{id:e,name:t,status:i}}catch(a){c.default.log(`[Sync] Theme #${this.themeId} not found (${a.message}), creating new development theme...`);let{id:e,name:t,status:i}=await this.createNewDevelopmentTheme();return{id:e,name:t,status:i}}if(!this.themeId)return this.createNewDevelopmentTheme();try{e=await P.getThemeInfo(this.themeId,{ignoreBusinessCodes:E.ERROR_CODES.DEVELOPMENT_THEME_NOT_EXIST})}catch(e){c.default.log(`[Sync] Theme #${this.themeId} detail query failed (${e.message}), creating new development theme...`)}if(!e)return this.createNewDevelopmentTheme();let{id:t,name:i,status:a,themeTypeVersion:r}=e,s=(0,b.getThemeTypeVersion)(this.cwd,!0);return r!==s||a!==p.EThemeStatus.Development?this.createNewDevelopmentTheme():(this.themeId=t,o.default.replaceDevelopmentTheme(t,i),{id:t,name:i,status:a})}async createNewTheme({name:e,status:t}){let i=this.getThemeZipFormData({status:t,name:e}),{themeId:a}=await (0,m.createNewTheme)(i);return{id:a,name:e,status:t}}async createNewDevelopmentTheme(){let e;let t=(0,f.generateDevThemeName)();if("development"===this.zipLifecycle){let i=Object.keys(this.getFilterFileChecksums(this.localeFileChecksums));({themeId:e}=await this.uploadDevelopmentTheme({fileList:i,name:t,status:p.EThemeStatus.Development,upload:m.createNewTheme}))}else{let i=this.getThemeZipFormData({name:t,status:p.EThemeStatus.Development});({themeId:e}=await (0,m.createNewTheme)(i))}if(!e)throw new v.AbortError(E.ERRORS.THEME_ID_NOT_EXIST);return this.themeId=e,o.default.replaceDevelopmentTheme(e,t),{id:e,name:t,status:p.EThemeStatus.Development}}static async getValidDevelopmentInfo(){let e=o.default.developmentThemeId;return await P.isValidDevTheme(e)?{id:e,name:"",status:p.EThemeStatus.Development}:{id:"",name:(0,f.generateDevThemeName)(),status:p.EThemeStatus.Development}}static async isValidDevTheme(e){try{let t=await (0,m.getThemeInfo)(e,{ignoreBusinessCodes:E.ERROR_CODES.DEVELOPMENT_THEME_NOT_EXIST});if((null==t?void 0:t.status)===p.EThemeStatus.Development)return{id:t.id,name:t.name,status:t.status,themeTypeVersion:t.themeTypeVersion};return null}catch(e){return null}}static async chooseThemeList(e){let t=P.addDevelopmentTheme(await (0,m.getThemes)()),i=t.map(e=>({name:W(e,"short"),value:e.id})).filter(e=>e.value),{themeId:a}=await N([{type:"list",name:"themeId",message:{pull:"Select a theme to pull from",push:"Select theme to push to"}[e],pageSize:i.length,default:i[0].value,loop:!1,choices:i}]),{status:r,name:s,themeTypeVersion:l}=t.find(e=>e.id===a);return{id:a,name:s,status:r,themeTypeVersion:l}}static addDevelopmentTheme(e){let t=o.default.developmentThemeId,i=o.default.developmentThemeName;return t?e.concat({name:i,status:p.EThemeStatus.Development,id:t,themeTypeVersion:""}):e}static async package(e,t=(0,u.cwd)()){try{let e=new w.default({cwd:t});await e.pack()}catch(e){(0,f.handleError)(e)}}static async list(){try{c.default.log("Checking login..."),o.default.isLogin(),console.log((0,h.getMessage)("theme.list.title",{store:o.default.currentStore})),c.default.log("Printing theme list...");let e=await (0,m.getThemes)();e.forEach(e=>{console.log(W(e))}),c.default.log("Print theme list succeed!")}catch(e){(0,f.handleError)(e)}}static async getLiveThemeInfo(){let e=await (0,m.getThemes)(),{id:t,name:i,status:a,themeTypeVersion:r}=e.find(e=>e.status===p.EThemeStatus.Published);return{id:t,name:i,status:a,themeTypeVersion:r}}static async getDevelopmentThemeInfo(){let e=o.default.developmentThemeId,t=o.default.developmentThemeName,i=await P.isValidDevTheme(e);return i?{id:e,name:t,status:i.status,themeTypeVersion:i.themeTypeVersion}:{id:"",name:"",status:"",themeTypeVersion:""}}static checkThemeStandardStructure(e){if(0===e.length)throw new v.AbortError(E.ERRORS.NOT_STANDARD_DIRECTORY);let t=(0,l.difference)(f.standardThemeDirectories3,e);t.length>0&&Error(`
2
+ The presence of ${F.default.bold(null==t?void 0:t[0])} in the directory structure isn't supported.
3
3
 
4
4
  Move any files to a parent folder, then delete unsupported subdirectories.
5
5
 
6
6
  • Required directory structure: https://developer.myshopline.com/docs/introduce/bGgYARTh
7
- `)}constructor({themeId:e,mode:t,cwd:a,sse:i,includeFilter:r,ignoreFilter:s,editorSync:l}){super("theme:theme"),I(this,"cwd",""),I(this,"themeId",""),I(this,"sse",void 0),I(this,"includeFilter",void 0),I(this,"ignoreFilter",void 0),I(this,"editorSync",void 0),I(this,"remoteWatcher",void 0),I(this,"mode",void 0),this.themeId=e||"",this.sse=i,this.cwd=a,this.mode=t||"hot-reload",this.includeFilter=r,this.ignoreFilter=s,this.editorSync=l,this.remoteWatcher=null}}async function O({mode:e,cwd:t,sse:a,includeFilter:i,ignoreFilter:r,editorSync:s}){try{let l=d.default.developmentThemeId,n=new N({themeId:l,mode:e,cwd:t,sse:a,includeFilter:i,ignoreFilter:r,editorSync:s}).watch();return{themeId:l,themeInstance:n}}catch(e){var l,n;return g.error((null==e?void 0:null===(l=e.response)||void 0===l?void 0:null===(n=l.data)||void 0===n?void 0:n.msg)||(null==e?void 0:e.stack)),(0,h.reportAndExit)(e)}}const $={[f.EThemeStatus.Published]:"green",[f.EThemeStatus.Unpublished]:"yellow",[f.EThemeStatus.Development]:"magenta"},P={[f.EThemeStatus.Published]:"live",[f.EThemeStatus.Unpublished]:"unpublished",[f.EThemeStatus.Development]:"development"};function W(e,t="long"){let a=$[e.status],i=[`${S.default[a](`[${P[e.status]}]`)}`];if(e.id===d.default.developmentThemeId&&i.push(S.default.cyan("[yours]")),e.themeTypeVersion&&i.push(S.default.bold.italic.cyan(e.themeTypeVersion)),"long"===t){let t=(0,u.getMessage)("theme.list.long",{id:e.id,name:e.name,tags:i.join(" ")});return t}let r=(0,u.getMessage)("theme.list.short",{name:e.name,tags:i.join(" ")});return r}
7
+ `)}constructor({themeId:e,mode:t,cwd:i,sse:a,includeFilter:r,ignoreFilter:s,editorSync:l,zipLifecycle:n="persistent"}){super("theme:theme"),O(this,"cwd",""),O(this,"themeId",""),O(this,"sse",void 0),O(this,"includeFilter",void 0),O(this,"ignoreFilter",void 0),O(this,"editorSync",void 0),O(this,"remoteWatcher",void 0),O(this,"mode",void 0),O(this,"zipLifecycle",void 0),O(this,"queue",void 0),O(this,"bufferBrowserUpdates",!1),O(this,"pendingReloadPage",!1),O(this,"pendingModifiedFiles",new Set),this.themeId=e||"",this.sse=a,this.cwd=i,this.mode=t||"hot-reload",this.includeFilter=r,this.ignoreFilter=s,this.editorSync=l,this.remoteWatcher=null,this.zipLifecycle=n,this.queue=new q.default,this.queue.on("all-done",()=>this.flushBrowserUpdates())}}async function U({themeId:e,mode:t,cwd:i,sse:a,includeFilter:r,ignoreFilter:s,editorSync:l}){try{let n=new P({themeId:e,mode:t,cwd:i,sse:a,includeFilter:r,ignoreFilter:s,editorSync:l}).watch();return{themeId:e,themeInstance:n}}catch(e){var n,o;return g.error((null==e?void 0:null===(n=e.response)||void 0===n?void 0:null===(o=n.data)||void 0===o?void 0:o.msg)||(null==e?void 0:e.stack)),(0,d.reportAndExit)(e)}}const C={[p.EThemeStatus.Published]:"green",[p.EThemeStatus.Unpublished]:"yellow",[p.EThemeStatus.Development]:"magenta"},$={[p.EThemeStatus.Published]:"live",[p.EThemeStatus.Unpublished]:"unpublished",[p.EThemeStatus.Development]:"development"};function W(e,t="long"){let i=C[e.status],a=[`${F.default[i](`[${$[e.status]}]`)}`];if(e.id===o.default.developmentThemeId&&a.push(F.default.cyan("[yours]")),e.themeTypeVersion&&a.push(F.default.bold.italic.cyan(e.themeTypeVersion)),"long"===t){let t=(0,h.getMessage)("theme.list.long",{id:e.id,name:e.name,tags:a.join(" ")});return t}let r=(0,h.getMessage)("theme.list.short",{name:e.name,tags:a.join(" ")});return r}
8
+ //# sourceMappingURL=theme.js.map