@shoplineos/cli 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/theme/check.js +1 -1
- package/dist/services/extension/const.js +1 -1
- package/dist/services/extension/create/index.js +1 -1
- package/dist/services/theme/3.0/api.js +4 -2
- package/dist/services/theme/3.0/check.js +1 -0
- package/dist/services/theme/3.0/package.js +1 -1
- package/dist/services/theme/3.0/theme.js +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"default",{enumerable:!0,get:()=>d});const e=require("commander"),t=u(require("chalk")),i=require("./theme-common-options"),n=require("../../utils/parse-options"),r=u(require("../../services/theme/check")),o=u(require("../../services/theme/3.0/check")),c=require("../../services/theme/check/types"),a=require("../../services/theme/utils"),s=require("../../utils/check-theme-type-version");function u(e){return e&&e.__esModule?e:{default:e}}const p=t.default.red("\n(Unsupported for Theme OS 3.0)\n"),d=()=>{let t=new e.Command("check");return t.description("Validate the theme.").addOption(new e.Option("-C, --config <path>",`Use the config provided, overriding .theme-check.yml if present ${p}`).env("SHOPLINE_FLAG_CONFIG")).addOption(new e.Option("-c, --category <category...>",`Only run this category of checks, Runs checks matching all categories when specified more than once ${p}`).choices(Object.keys(c.ECheckCategory)).default([]).env("SHOPLINE_FLAG_CATEGORY")).addOption(new e.Option("--fail-level <level>",`Minimum severity for exit with error code ${p}`).choices(Object.values(c.EFailLevel)).default(c.EFailLevel.error).env("SHOPLINE_FLAG_FAIL_LEVEL")).addOption(new e.Option("--init",`Generate a .theme-check.yml file ${p}`).env("SHOPLINE_FLAG_INIT")).addOption(new e.Option("-o, --output <output>",`The output format to use ${p}`).choices(Object.values(c.ECheckOutput)).default(c.ECheckOutput.text).env("SHOPLINE_FLAG_OUTPUT")).addOption(new e.Option("--print",`Output active config to STDOUT ${p}`).env("SHOPLINE_FLAG_PRINT")).addOption(new e.Option("--list",`List enabled checks ${p}`).env("SHOPLINE_FLAG_LIST")).addOption((0,i.getPathOption)()).addOption((0,i.getEnvironmentOption)()).showHelpAfterError().action(async(e,t)=>{try{let i=await (0,n.parseOptions)(e,t),c=(0,s.getThemeTypeVersion)(i.path);3===c?await (0,o.default)(i):await (0,r.default)(i)}catch(e){(0,a.handleError)(e)}})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,s){for(var o in s)Object.defineProperty(e,o,{enumerable:!0,get:s[o]})}(exports,{EXTENSION_ENDPOINTS:()=>o,DEFAULT_EXTENSION_ENDPOINT:()=>t,DEFAULT_EXTENSION_NAME:()=>E,ENVS:()=>_,TARGETS:()=>n,EXTENSION_LINK_PATH:()=>i,APP_VERSION_MANAGE_LINK_PATH:()=>r,TAGS:()=>p,OPTION_TYPES:()=>c,EXTENSION_NAME_LENGTH_LIMIT:()=>l,MAX_ALL_FILE_SIZE:()=>T,MAX_BLOCKS_FILE_COUNT:()=>
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,s){for(var o in s)Object.defineProperty(e,o,{enumerable:!0,get:s[o]})}(exports,{EXTENSION_ENDPOINTS:()=>o,DEFAULT_EXTENSION_ENDPOINT:()=>t,DEFAULT_EXTENSION_NAME:()=>E,ENVS:()=>_,TARGETS:()=>n,EXTENSION_LINK_PATH:()=>i,APP_VERSION_MANAGE_LINK_PATH:()=>r,TAGS:()=>p,OPTION_TYPES:()=>c,EXTENSION_NAME_LENGTH_LIMIT:()=>l,MAX_ALL_FILE_SIZE:()=>T,MAX_BLOCKS_FILE_COUNT:()=>a,MAX_BLOCKS_FILE_SIZE:()=>N,MAX_BLOCKS_FILE_SIZE_3:()=>O,SUPPORTED_ASSET_EXTS:()=>I,SUPPORTED_ASSET_EXTS_3:()=>m,SUPPORTED_BUCKETS:()=>u,SUPPORTED_BUCKETS_3:()=>S,SUPPORTED_LOCALE_EXTS:()=>P,EXTENSION_CONFIG_FILE:()=>d,CHECKOUT_UI_CONFIG_FILE:()=>A,POST_PURCHASE_CONFIG_FILE:()=>L,PIXELS_CONFIG_FILE:()=>h,FUNCTION_CONFIG_FILE:()=>x,SHOPPER_CONFIG_FILE:()=>g,ERRORS:()=>C,ALL_TEMPLATES:()=>U,ALL_TEMPLATES_3:()=>F,EXTENSION_TYPES:()=>R,DEFAULT_EXTENSION_TYPE:()=>M,DEFAULT_CHECKOUT_UI_CUSTOMIZER_NAME:()=>v,DEFAULT_CHECKOUT_POST_PURCHASE_NAME:()=>y,DEFAULT_PIXELS_EXTENSION_NAME:()=>D,DEFAULT_SHOPPER_EXTENSION_NAME:()=>X});const e=require("../../utils/messages"),s=require("./types"),o={dev:"https://devcenter.myshoplinedev.com",test:"https://opendoc.myshoplinestg.com",pre:"https://devcenter-pre.myshopline.com",prod:"https://developer.myshopline.com"},t=o.prod,E="shopline-app-extension",_=["dev","test","pre","prod"],n=["section","head","body"],i="app/edit-extension",r="app/version-manage/add",p=["article","aside","div","footer","header","section"],c=["checkbox","radio","select"],l=50,T=10485760,a=25,N=102400,O=102400,I=[".jpg",".js",".css",".png",".svg",".hbs"],m=[".jpg",".js",".css",".png",".svg"],u=["assets","blocks","snippets","locales"],S=["blocks","components","i18n","public","compatibility"],P=[".json"],d=".shopline-cli.yml",A="shopline.ui.customizer.toml",L="shopline.post-purchase.customizer.toml",h="shopline.pixels.extension.toml",x="shopline.function.extension.toml",g="shopline.shopper.extension.toml",C={EXTENSION_NAME_LENGTH_LIMIT:(0,e.getMessage)("extension.create.invalid_name",{limit:l}),ENV_INVALID:(0,e.getMessage)("extension.invalid_env",{envs:_.join(", ")}),ENV_FILE_NOT_FOUND:(0,e.getMessage)("extension.no_env_file"),SHOPLINE_CONFIG_NOT_FOUND:(0,e.getMessage)("extension.no_config_file",{config_name:d}),UNSUPPORTED_PROJECT_TYPE:(0,e.getMessage)("extension.invalid_type"),REPEAT_DIR_NAME:"The theme app extension directory already exists. Please rename or use another name.",INVALID_INTERPOLATION:"must be of the form {{ apps.metafields.<namespace>.<key>.value }}",PARTNER_INFO_NOT_COMPLETE:"PARTNER_INFO_NOT_COMPLETE",USER_NOT_LOGIN:"USER_NOT_LOGIN",NOT_IN_PARTNER:"NOT_IN_PARTNER"},U=["index","collections_all","collection","products/detail","cart","blogs/list","blogs/detail","404","products/search","page","customers/login","customers/register","customers/account","customers/reset_password","customers/addresses","customers/order/list","customers/order/detail","password","app_proxy"],F=["index","collections_all","collection","product","cart","blog","article","404","search","page","policy","password","gift_card","customers/login","customers/register","customers/account","customers/addresses","customers/orders","customers/order","customers/activate_account","customers/forgot_password","customers/company","app_proxy"],R=[{label:"Theme App Extension",value:s.EExtensionTypes.themeAppExtension},{label:"Checkout UI Customizer",value:s.EExtensionTypes.checkoutUiCustomizer},{label:"Post Purchase Customizer",value:s.EExtensionTypes.postPurchaseCustomizer},{label:"Shopline Pixels Extension",value:s.EExtensionTypes.pixelsExtension},{label:"Shopline Shopper Extension",value:s.EExtensionTypes.shopperExtension}].filter(Boolean),M="themeAppExtension",v="checkout-ui-customizer",y="post-purchase-customizer",D="pixels-extension",X="shopper-extension";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{createEntry:()=>
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var n in t)Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}(exports,{createEntry:()=>x,beforeCreate:()=>g,getSelectedExtType:()=>E,buildGenerateOptions:()=>y,renderSuccessMessage:()=>m});const e=require("fs-extra"),t=require("../../../utils/ui/ui"),n=require("../env"),r=require("../extension"),i=require("../types"),o=require("../utils"),s=require("../api"),u=require("../generate"),a=require("../../../utils/error"),p=require("../const"),l=require("../../../utils/path"),c=require("../../../utils/output"),h=require("../../../utils/ui/render"),f=require("../functions/info"),d=function(e){return e&&e.__esModule?e:{default:e}}(require("../../../utils/winston"));async function x(e){let t=await g(e),n=await y(t),r=await (0,u.generateExtension)(n);await m(r),d.default.log(`Extension created: ${r.directory}`)}async function g(t){var i;let s=null==t?void 0:t.name,u=null!==(i=null==t?void 0:t.cwd)&&void 0!==i?i:process.cwd(),h=await (0,n.getEnv)();d.default.log(`Current store environment: ${h}`);let f=await E(),x=(0,o.getExtensionName)(s,f);d.default.log(`Current extension name: ${x}`),function(t,n){if(!t)throw new a.AbortError("Please specify an extension name");if(t.length>p.EXTENSION_NAME_LENGTH_LIMIT)throw new a.AbortError(p.ERRORS.EXTENSION_NAME_LENGTH_LIMIT);if((0,e.existsSync)((0,l.joinPath)(n,t)))throw new a.AbortError((0,c.outputContent)`${c.outputToken.cyan(t)} directory already exists.`.value)}(x,u);let g=await (0,r.getSelectedPartner)(),y=await (0,r.getSelectedApp)(g);return{extensionName:x,cwd:u,env:h,partnerInfo:g,appInfo:y,type:f}}async function E(){let e=[];d.default.log("Loading function extension templates..."),e=await (0,s.getFunctionTemplates)(),d.default.log("Choosing extension type to create...");let n=await (0,t.renderSelectPrompt)({message:"What type of extension are you creating?",choices:(0,o.buildExtensionTypeChoice)(e)});return d.default.log(`Current selected extension type: ${n}`),n}async function y(e){let{extensionName:t,appInfo:n,type:r,env:o,cwd:s,partnerInfo:u}=e,a=async()=>{if(r===i.EExtensionTypes.themeAppExtension)return"https://github.com/shoplineos/theme-app-extension-template.git";if(r===i.EExtensionTypes.checkoutUiCustomizer)return"https://github.com/shoplineos/checkout-ui-customizer-template.git";if(r===i.EExtensionTypes.postPurchaseCustomizer)return"https://github.com/shoplineos/post-purchase-customizer-template.git";if(r===i.EExtensionTypes.pixelsExtension)return"https://github.com/shoplineos/pixels-extension-template.git";if(r===i.EExtensionTypes.shopperExtension)return"https://github.com/shoplineos/shopper-app-template.git";let e=await (0,f.getFunctionInfo)(r);if(e)return e.templateGit},p=await a();return d.default.log(`Current clone url: ${p}`),{name:t,app:{appKey:n.appKey,appSecret:n.appSecret},partnerId:u.id,type:r,cloneUrl:p,env:o,cwd:s}}async function m(e){let{specification:t}=e,n={headline:["Your extension was created in",{filePath:e.directory},{char:"."}],nextSteps:[],reference:[]};t.type===i.EExtensionTypes.checkoutUiCustomizer&&n.nextSteps.push(["To preview this extension along with the rest of the project, run",{command:"sl extension serve"}]),(0,h.renderSuccess)(n)}
|
|
@@ -1,2 +1,4 @@
|
|
|
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,{createNewTheme:()=>
|
|
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,{createNewTheme:()=>m,getThemes:()=>R,getThemeInfo:()=>g,uploadTheme:()=>v,getThemeFileList:()=>_,deleteFiles:()=>T,updateFile:()=>O,createFile:()=>I,downloadTheme:()=>S,getThemeFileDetail:()=>b,themeCheck:()=>y});const e=f(require("axios")),t=f(require("form-data")),r=f(require("chalk")),o=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")),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:h}=o.default,p=e.default.create({baseURL:`${h}/api/website/admin/theme/cli`,maxContentLength:1/0,maxBodyLength:1/0});p.interceptors.request.use(e=>{if(E){let t=Object.keys(E).map(e=>`${e}=${E[e]}`).join(";"),r=o.default.dfpToken||"";Object.assign(e.headers,{cookie:t,"dfp-token":r,"User-Agent":i.CLI_USER_AGENT})}return(null==e?void 0:e.data)instanceof t.default&&Object.assign(e.headers,null==e?void 0:e.data.getHeaders()),e}),p.interceptors.response.use(async e=>{var t,o,i,f,E,h,p,m,R,g;if("stream"===e.config.responseType)return e;let v=null==e?void 0:null===(t=e.data)||void 0===t?void 0:t.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===(i=e.data)||void 0===i?void 0:i.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:t}=e.data.data;throw t.forEach(({filename:e,message:t})=>{(0,c.renderInfo)({headline:e,body:`${r.default.red("[error]: ")}${t}`})}),new l.AbortError(`Theme Check Summary.
|
|
2
|
+
|
|
3
|
+
${t.length} error${1===t.length?"":"s"} found.`)}if(!v)throw new l.AbortError(`${null!==(m=null==e?void 0:null===(h=e.config)||void 0===h?void 0:h.baseURL)&&void 0!==m?m:""}${null!==(R=null==e?void 0:null===(p=e.config)||void 0===p?void 0:p.url)&&void 0!==R?R:""}
|
|
4
|
+
${JSON.stringify(null!==(g=null==e?void 0:e.data)&&void 0!==g?g:{},null,2)}`);return null==e?void 0:null===(E=e.data)||void 0===E?void 0:E.data},e=>{let t=new l.AbortError(JSON.stringify(e.response.data,null,2));return Promise.reject(t)});const m=e=>p.post("/theme/upload",e),R=async()=>p.get("/themes"),g=e=>p.get(`/theme/${e}`),v=e=>p.post("/files/upload",e),_=e=>p.get("/files",{params:{themeId:e}}),T=(e,t)=>p.delete("/files",{data:{themeId:e,fileNames:t}}),O=e=>p.put("/file",e),I=e=>p.post("/file",e),S=e=>p.get(`/theme/${e}/download`,{responseType:"stream"}),b=(e,t)=>p.get("/files",{params:{themeId:e,fileNames:t.join(",")}}),y=e=>p.post("/theme/check",e);
|
|
@@ -0,0 +1 @@
|
|
|
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 +1 @@
|
|
|
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")),
|
|
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,7 +1,7 @@
|
|
|
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:()=>
|
|
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:()=>j});const e=k(require("fast-glob")),t=k(require("form-data")),a=k(require("fs")),r=k(require("inquirer")),i=k(require("chokidar")),s=k(require("ora")),l=require("lodash"),n=k(require("../../../utils/debug")),u=k(require("../../../helpers/config")),h=require("../../../utils/messages"),d=require("../../../helpers/sentry"),o=require("../../../utils/path"),c=k(require("../../../utils/winston")),m=require("./api"),p=require("../types"),f=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 r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var s in e)if("default"!==s&&Object.prototype.hasOwnProperty.call(e,s)){var l=i?Object.getOwnPropertyDescriptor(e,s):null;l&&(l.get||l.set)?Object.defineProperty(r,s,l):r[s]=e[s]}return r.default=e,a&&a.set(e,r),r}(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"),D=k(require("../../../utils/colors")),b=k(require("./remote-watcher")),S=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=r.default.createPromptModule();class N extends n.default{async watchRemote(){this.editorSync&&(this.remoteWatcher=new b.default(this),this.remoteWatcher.start())}watch(){this.watchRemote();let e=i.default.watch((0,f.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,f.parseFileName)(e,this.cwd);if(null===(t=this.remoteWatcher)||void 0===t?void 0:t.shouldUpdateToLocal(a)){this.remoteWatcher.removeUpdateToLocalFiles(a);return}let r=this.ignoreFilter.match(a),i=this.includeFilter.match(a);return!r&&i}async onAdd(e){let r=(0,f.parseFileName)(e,this.cwd),i=new t.default;i.append("file",a.default.createReadStream(e)),i.append("themeId",this.themeId),i.append("fileName",r);let l=(0,s.default)((0,h.getMessage)("theme.serve.syncer.create_strategy.success",{file_name:r})).start();try{var n;await (0,m.createFile)(i),null===(n=this.sse)||void 0===n||n.broadcast(this.getSseData(e,"add")),l.succeed()}catch(e){(0,S.renderFatalError)(e),l.fail()}}async onChange(e){let r=(0,f.parseFileName)(e,this.cwd),i=new t.default;i.append("file",a.default.createReadStream(e)),i.append("themeId",this.themeId),i.append("fileName",r);let l=(0,s.default)((0,h.getMessage)("theme.serve.syncer.update_strategy.success",{file_name:r})).start();try{var n;await (0,m.updateFile)(i),null===(n=this.sse)||void 0===n||n.broadcast(this.getSseData(e)),l.succeed()}catch(e){(0,S.renderFatalError)(e),l.fail()}}async onUnlink(e){var t;let a=(0,f.parseFileName)(e,this.cwd),r=(0,s.default)((0,h.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")),r.succeed()}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}){let t=(0,s.default)(`✨ Syncing theme #${this.themeId} on ${u.default.currentStore}`).start(),{name:a,status:r}=await this.findOrCreateTheme(),{local:i,remote:l}=await this.getFileChecksums(),n=await (0,y.default)(i,l);if(n.length){let t=[],i=[];if(n.forEach(e=>{switch(e.type){case"create":case"update":t.push(e);break;case"delete":i.push(e)}}),!e&&i.length){let e=i.map(e=>e.key);await (0,m.deleteFiles)(this.themeId,e)}if(t.length){let e=t.map(e=>e.key),i=this.getThemeZipFormData({fileList:e,name:a,status:r});await (0,m.uploadTheme)(i)}}t.succeed()}getThemeZipFormData({fileList:e,status:r,name:i}){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",r),l.append("name",i),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)),r=this.getFilterFileChecksums(e),i=this.getFilterFileChecksums(a);return{local:r,remote:i}}getFilterFileChecksums(e){let t=Object.keys(e).reduce((t,a)=>{let r=this.ignoreFilter.match(a),i=this.includeFilter.match(a);return!r&&i&&(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(f.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:r,themeTypeVersion:i}=await (0,m.getThemeInfo)(e);return{id:t,name:a,status:r,themeTypeVersion:i}}async findOrCreateTheme(){try{let{id:e,name:t,status:a}=await N.getThemeInfo(this.themeId);return{id:e,name:t,status:a}}catch(r){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:r}=await (0,m.createNewTheme)(a);return{id:r,name:e,status:t}}async createNewDevelopmentTheme(){let e=(0,f.generateDevThemeName)(),t=this.getThemeZipFormData({name:e,status:p.EThemeStatus.Development}),{themeId:a}=await (0,m.createNewTheme)(t);return this.themeId=a,u.default.developmentThemeId=a,u.default.developmentThemeName=e,{id:a,name:e,status:p.EThemeStatus.Development}}static async getValidDevelopmentInfo(){let e=u.default.developmentThemeId;return await N.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);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=N.addDevelopmentTheme(await (0,m.getThemes)()),a=t.map(e=>({name:j(e,"short"),value:e.id})).filter(e=>e.value),{themeId:r}=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:i,name:s,themeTypeVersion:l}=t.find(e=>e.id===r);return{id:r,name:s,status:i,themeTypeVersion:l}}static addDevelopmentTheme(e){let t=u.default.developmentThemeId,a=u.default.developmentThemeName;return t?e.concat({name:a,status:p.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,f.handleError)(e)}}static async list(){try{c.default.log("Checking login..."),u.default.isLogin(),console.log((0,h.getMessage)("theme.list.title",{store:u.default.currentStore})),c.default.log("Printing theme list...");let e=await (0,m.getThemes)();e.forEach(e=>{console.log(j(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:a,status:r,themeTypeVersion:i}=e.find(e=>e.status===p.EThemeStatus.Published);return{id:t,name:a,status:r,themeTypeVersion:i}}static async getDevelopmentThemeInfo(){let e=u.default.developmentThemeId,t=u.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)(f.standardThemeDirectories3,e);t.length>0&&Error(`
|
|
2
2
|
The presence of ${D.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:
|
|
7
|
+
`)}constructor({themeId:e,mode:t,cwd:a,sse:r,includeFilter:i,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=r,this.cwd=a,this.mode=t||"hot-reload",this.includeFilter=i,this.ignoreFilter=s,this.editorSync=l,this.remoteWatcher=null}}async function O({mode:e,cwd:t,sse:a,includeFilter:r,ignoreFilter:i,editorSync:s}){try{let l=u.default.developmentThemeId,n=new N({themeId:l,mode:e,cwd:t,sse:a,includeFilter:r,ignoreFilter:i,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,d.reportAndExit)(e)}}const P={[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 j(e,t="long"){let a=P[e.status],r=[`${D.default[a](`[${_[e.status]}]`)}`];if(e.id===u.default.developmentThemeId&&r.push(D.default.cyan("[yours]")),e.themeTypeVersion&&r.push(D.default.bold.italic.cyan(e.themeTypeVersion)),"long"===t){let t=(0,h.getMessage)("theme.list.long",{id:e.id,name:e.name,tags:r.join(" ")});return t}let i=(0,h.getMessage)("theme.list.short",{name:e.name,tags:r.join(" ")});return i}
|