@shoplineos/cli 1.5.0 → 1.5.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(exports,{getSelectedPartner:()=>c,getPartnerName:()=>p,getSelectedApp:()=>d,getSelectedExts:()=>g,getAppLists:()=>f,getAppExts:()=>h,getSelectedShop:()=>w,handleNoStore:()=>y,getPartnerAccessToken:()=>
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(exports,{getSelectedPartner:()=>c,getPartnerName:()=>p,getSelectedApp:()=>d,getSelectedExts:()=>g,getAppLists:()=>f,getAppExts:()=>h,getSelectedShop:()=>w,handleNoStore:()=>y,getPartnerAccessToken:()=>m,getStoreId:()=>v,getAppName:()=>S,getAvailableProductSkuId:()=>b});const e=require("../../utils/ui/ui"),t=require("./api"),r=require("./utils"),a=require("../../utils/error"),n=require("../../utils/ui/render"),i=require("./openapi"),o=require("../../utils/output"),l=u(require("../../utils/winston")),s=u(require("../../helpers/config"));function u(e){return e&&e.__esModule?e:{default:e}}async function c(){let n=[];if(l.default.log("Loading partner list..."),await (0,e.renderTasks)([{title:"Loading available partner organizations",task:async()=>{n=await (0,t.getPartnerList)()}}]),!n.length)throw new a.AbortError("No partner in your account.");l.default.log("Selecting partner organization...");let i=await (0,e.renderSelectPrompt)({message:"Select partner organization?",choices:(0,r.buildPartnerChoice)(n)}),o=n.find(e=>e.id===i).partnerName;l.default.log(`Selected partner organization: ${o}`);let u={id:i,partnerName:o};return s.default.currentPartner=u,u}async function p(e){let r=await (0,t.getPartnerList)(),n=r.find(t=>t.id===e);if(null==n?void 0:n.partnerName)return n.partnerName;throw new a.AbortError((0,o.outputContent)`The partner id: ${o.outputToken.cyan(e)} does not exist in your account.`,(0,o.outputContent)`Please add the ${o.outputToken.magenta("--reset")} flag after your command.`)}async function d(t){let a=[];if(l.default.log("Loading your apps..."),await (0,e.renderTasks)([{title:"Loading your apps",task:async()=>{a=await f(t.id)}}]),!a.length)throw Error("No apps in your account.");l.default.log("Selecting app...");let n=await (0,e.renderSelectPrompt)({message:"Which app would like to register this extension with?",choices:(0,r.buildAppChoice)(a,t.partnerName)});return l.default.log(`Selected app: ${JSON.stringify(n)}`),n}async function g(t,a){let n=[];l.default.log("Loading your extensions..."),await (0,e.renderTasks)([{title:"Loading your extensions",task:async()=>{n=await h(t,a)}}]),l.default.log("Selecting extension...");let i=await (0,e.renderSelectPrompt)({message:"Which extension would like to register this extension with?",choices:(0,r.buildExtChoice)(n)});return l.default.log(`Selected app: ${JSON.stringify(i)}`),i}async function f(e){let{dataList:r=[]}=await (0,t.getAppList)({pageSize:300,partnerId:e});return r}async function h(e,r){let{dataList:a=[]}=await (0,t.getAppExtList)({appKey:e,pageSize:300,currentPage:1,types:[r]});return a}async function w(a,n){let i=[];if(await (0,e.renderTasks)([{title:"Loading your development store",task:async()=>{i=await (0,t.getStoreList)(a)}}]),i.length){if(1===i.length){let[e]=i;return e}{let t=await (0,e.renderSelectPrompt)({message:"Which development store would you like to use?",choices:(0,r.buildStoreChoice)(i)});return t}}await y(a,n)}async function y(t,a){(0,n.renderWarning)({headline:["This partner account does not have a development store."],body:["Please visit",{link:{label:"the developer platform",url:(0,r.getDeveloperPlatformLink)(a)}},"to create a development store and try again."]});let i=await (0,e.renderSelectPrompt)({message:"How will you proceed to the next step?",choices:[{label:"Developement store has been created, please retry!",value:1},{label:"Abort",value:0}]});i?await w(t,a):process.exit(1)}async function m(e,r){let a=await (0,t.getAccessToken)({storeId:e,appKey:r});return a.token||""}async function v(e,r){let a=await (0,t.getStoreInfo)(e,r);return a.storeId||""}async function S(e,r){let a=await (0,t.getAppInfo)(e,r);return a.appName||""}async function b(e,t,r,n){let l=new a.AbortError(n),s=await m(e,t),u=await (0,i.getOpenApiHttp)(s,r);try{let e=await u.get("/products/products.json",{params:{status:"active"}});if(e.products.length>0){var c,p,d;(0,o.outputDebug)((0,o.outputContent)`You have an available first product variants: ${o.outputToken.json(null===(c=e.products)||void 0===c?void 0:null===(p=c[0])||void 0===p?void 0:p.variants)}`);let t=null===(d=e.products.flatMap(e=>e.variants).find(e=>e.id&&e.inventory_quantity>0))||void 0===d?void 0:d.id;if(t)return t}}catch(e){throw l}throw l}
|
|
@@ -1 +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,{getShopperType:()=>
|
|
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,{getShopperType:()=>S,pushShopperExtension:()=>T});const e=P(require("fs")),t=P(require("archiver")),r=P(require("form-data")),n=P(require("fast-glob")),i=P(require("javascript-obfuscator")),o=require("../../../utils/error"),a=require("../api"),s=require("../../../utils/ui/ui"),u=require("../env"),p=require("../const"),l=require("../../../utils/path"),E=require("../zip"),d=require("../../../utils/ui/render"),c=require("../utils"),f=require("../../../utils/output"),g=P(require("../../../utils/winston"));function P(e){return e&&e.__esModule?e:{default:e}}function S(e){let t={1:a.ERegisterType.SHOPPER_CUSTOM_BLOCK,2:a.ERegisterType.SHOPPER_CUSTOM_WEB_PAGE},r=e.split("--")[1];return t[r]}async function T(r){var a;let s=r.readEnvContent(),d=S(r.type);g.default.log("Create web shopper extension instance...");let c=await h(s,d);(0,f.outputDebug)((0,f.outputContent)`Write ${f.outputToken.json(c)} content to ${f.outputToken.cyan(`.env.${r.env}`)} file to ${r.cwd}`),g.default.log(`Write .env.${r.env} file...`),(0,u.writeEnvFile)(r.env,c,r.cwd);let P=(0,l.joinPath)(r.cwd,`${s.EXTENSION_TITLE}.zip`);g.default.log("Compress shopper extension..."),await (a=r.cwd,new Promise((r,s)=>{(0,f.outputDebug)((0,f.outputContent)`Compressing to ${f.outputToken.path(P)}`);let u=(0,t.default)("zip",{zlib:{level:9}}),l=e.default.createWriteStream(P);l.on("close",()=>{}),l.on("finish",()=>{r({size:u.pointer()})}),u.on("error",()=>{s(new o.AbortError("Failed to compress!"))}),u.pipe(l),n.default.sync("assets/js/**/*.js",{cwd:a}).forEach(t=>{let r=e.default.readFileSync(t,"utf-8"),n=i.default.obfuscate(r,{compact:!0,controlFlowFlattening:!1,numbersToExpressions:!1,simplify:!0,stringArray:!0,stringArrayShuffle:!0,splitStrings:!1,stringArrayThreshold:.75,renameGlobals:!1});u.append(n.getObfuscatedCode(),{name:t})}),u.glob("previewImage.png",{cwd:a}).glob("index.html",{cwd:a}).glob("assets/css/**/*.css",{cwd:a}).glob("assets/images/**/*.{png,jpg,gif,svg,webp,lottie,apng}",{cwd:a}).glob(p.SHOPPER_CONFIG_FILE,{cwd:a}).finalize()})),g.default.log("Push shopper extension..."),await y(c,P,r,d),g.default.log("Push shopper extension success!"),(0,f.outputDebug)("Remove .zip file"),g.default.log("Remove .zip file..."),(0,E.removeZip)(P)}async function h(e,t){let r=e;return r.EXTENSION_ID&&r.EXTENSION_UUID?e:(await (0,s.renderTasks)([{title:"Registering with SHOPLINE",task:async()=>{let n=await (0,a.createExtensionInstance)({appKey:e.SHOPLINE_APP_KEY,appSecret:e.SHOPLINE_APP_SECRET,name:e.EXTENSION_TITLE,type:t,category:a.ECategory.SHOPPER}),{id:i,uuid:s}=n||{};if(!i||!s)throw new o.AbortError("Failed to register. Please retry again!");r.EXTENSION_ID=i,r.EXTENSION_UUID=s}}]),r)}async function y(e,t,r,n){(0,f.outputDebug)((0,f.outputContent)`Pushing ${f.outputToken.path(t)} file to remote`),await (0,s.renderTasks)([{title:"Pushing your extension to Shopline",task:async()=>{await I(e,t,r,n)}}])}async function I(t,n,i,s){let u=e.default.createReadStream(n),p=new r.default;p.append("extensionFile",u),p.append("appKey",t.SHOPLINE_APP_KEY),p.append("appSecret",t.SHOPLINE_APP_SECRET),p.append("extensionId",t.EXTENSION_ID),p.append("extensionUuid",t.EXTENSION_UUID),p.append("type",s),p.append("category",a.ECategory.SHOPPER);let l=await (0,a.pushExtension)(p);if(l){let e=(0,c.getAppVersionManageLink)({appKey:t.SHOPLINE_APP_KEY,env:i.env});(0,d.renderSuccess)({headline:["Pushed",{userInput:t.EXTENSION_TITLE},"to a draft on",(0,c.formatTime)(l.updateTime)],body:["Visit",{link:{label:e,url:e}},"to version and publish your extension",{char:"."}]})}else(0,d.renderFatalError)(new o.AbortError(`Pushed to SHOPLINE with errors on ${(0,c.formatTime)()}`))}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shoplineos/cli",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "A CLI tool to build for the Shopline platform",
|
|
5
5
|
"bin": {
|
|
6
6
|
"sl": "./bin/index.js"
|
|
@@ -76,6 +76,7 @@
|
|
|
76
76
|
"htmlparser2": "^9.0.0",
|
|
77
77
|
"ink": "^3.2.0",
|
|
78
78
|
"inquirer": "8.2.5",
|
|
79
|
+
"javascript-obfuscator": "5.1.0",
|
|
79
80
|
"jiti": "^1.18.2",
|
|
80
81
|
"js-yaml": "^4.1.0",
|
|
81
82
|
"killable": "^1.0.1",
|