@fnet/cli 0.58.1 → 0.58.3
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/builder/lib-cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var e=require("child_process"),t=require("@fnet/config"),a=require("path"),o=require("yargs/yargs"),s=require("fs"),n=require("yaml"),r=require("shelljs"),i=require("@fnet/yaml"),c=require("@fnet/object-from-schema"),p=require("@flownet/lib-render-templates-dir"),l=require("node:fs"),d=require("node:path"),m=require("nunjucks"),u=require("redis"),f=require("@flownet/lib-is-redis-online"),g=require("nanoid"),y=require("@flownet/lib-atom-api-js"),h=require("axios"),w=require("qs"),b=require("lodash.merge"),v=require("@flownet/lib-parse-imports-js"),_=require("@flownet/lib-list-npm-versions"),j=require("@fnet/yargs-options-from-schema"),k=require("@fnet/shell"),D=require("semver"),x=require("node:os"),A=require("@node-red/util"),S=require("@flownet/lib-to-ios-app"),P=require("lodash.clonedeep"),I=require("@flownet/lib-to-macos-app"),E=require("@flownet/lib-to-electron"),T=require("@flownet/lib-to-webos"),$=require("@flownet/lib-to-nextjs"),O=require("@flownet/lib-to-docker"),C=require("form-data"),R=require("@fnet/to-rust"),M=require("@flownet/lib-parse-node-url"),F=require("@flownet/lib-pick-npm-versions"),q=require("chalk");const L=u,N=f;const{Api:U}=y,B=h.default,z=w;var J=({feature:e,features:t,packageDevDependencies:a})=>{const{name:o,packages:s,options:n}=e,r=`${o}_enabled`,i=t.rollup_output||{},c=Object.keys(i),p=n||{};c.forEach((e=>{const a=t.rollup_output[e];if(Reflect.has(a,o)){if(!a[o]||!1===a[o]?.enabled)return void delete a[o];!0===a[o]&&(a[o]={enabled:!0,options:p})}else{if(!t[o]||!1===t[r])return;a[o]={enabled:!0}}a[o]=a[o]||{},a[o].options={...p,...a[o].options}}));const l=c.some((e=>!0===t.rollup_output[e][o]?.enabled));t[r]=l,l&&s.forEach((e=>a.push({package:e[0],version:e[1]})))};const W=J;const K=J;const G=J;const H=J;const X=J;const Y=J;const Z=J;const Q=J;const V=J;const ee=J;const te=J;const ae=b,oe=l,se=d,ne=v,re=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;W({feature:{name:"workbox",packages:[["rollup-plugin-workbox","^8"]],options:{generate:{swDest:"dist/app/esm/sw.js",globDirectory:"dist/app/esm",globPatterns:["**/*.{html,js,css,png,jpg}"],skipWaiting:!0,clientsClaim:!0}}},features:o,packageDevDependencies:a})},ie=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;K({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]]},features:o,packageDevDependencies:a})},ce=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;G({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.3"]]},features:o,packageDevDependencies:a})},pe=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;H({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:o,packageDevDependencies:a})},le=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;X({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]]},features:o,packageDevDependencies:a})},de=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;Y({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12}},features:o,packageDevDependencies:a})},me=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;Z({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:o,packageDevDependencies:a})},ue=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;Q({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:o,packageDevDependencies:a})},fe=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;V({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:o,packageDevDependencies:a})},ge=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;ee({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:o,packageDevDependencies:a})},ye=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;te({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:o,packageDevDependencies:a})};function he({dir:e,name:t="index"}){let a=se.resolve(e,`./${t}.tsx`);if(oe.existsSync(a)||(a=se.resolve(e,`./${t}.ts`)),oe.existsSync(a)||(a=se.resolve(e,`./${t}.jsx`)),oe.existsSync(a)||(a=se.resolve(e,`./${t}.js`)),!oe.existsSync(a))return{};const o=a,s=se.extname(a);return{file:o,ext:s,ts:".ts"===s||".tsx"===s,name:t}}const we=_;const be=l,ve=d,_e=p;const je=m,ke=l,De=d,xe=v,Ae=_;const Se=l,Pe=d,Ie=p;const Ee=l,Te=d,$e=m,Oe=v;const Ce=l,Re=d,Me=m,Fe=j;const qe=l,Le=d,Ne=m;const Ue=l,Be=d,ze=m;const Je=m,We=l,Ke=d,Ge=i;const He=r,Xe=a;const Ye=r;const Ze=r;const Qe=r;const Ve=k,et=t;const tt=l,at=d,ot=D,st=k,nt=t;const rt=l,it=d,ct=D,pt=r,lt=t;const dt=l,mt=d,ut=x,ft=m,gt=A,yt=t;const ht=s,wt=a,bt=t;const vt=t,_t=S,jt=P,kt=D;const Dt=t,xt=I,At=P,St=D;const Pt=t,It=E,Et=P,Tt=D;const $t=t,Ot=T,Ct=P,Rt=D;const Mt=t,Ft=$,qt=P,Lt=D;const Nt=t,Ut=O,Bt=P,zt=D;const Jt=l,Wt=d,Kt=D,Gt=k,Ht=t,Xt=h.default;const Yt=D,Zt=t,Qt=h.default;const Vt=D,ea=t,ta=h.default,aa=s,oa=k,sa=C;const na=D,ra=t,ia=h.default,ca=s,pa=k,la=C;const da=t,ma=R,ua=P,fa=D;const ga=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,buildId:s})=>{await e({message:"Deploying it as gitlab project."});const n=t.projectDir;let r="fnet-to-gitlab";const i=o.params.config||"gitlab",c=await et({name:i,dir:t.projectDir,tags:t.tags});if(!c)throw new Error(`Couldnt load config ${i}`);const{data:p}=c.data;r+=` --projectGroupId=${p.projectGroupId}`,r+=` --projectPath='${n}'`,r+=` --projectName='${o.params.name}'`,r+=` --projectBranch='${o.params.branch||"main"}'`,r+=` --gitlabHost='${p.gitlabHost}'`,r+=` --gitlabToken='${p.gitlabToken}'`,r+=` --gitlabUsername='${p.gitlabUsername}'`,r+=` --gitlabUserEmail='${p.gitlabUserEmail}'`,!0!==o.dryRun&&(await Ve({cmd:r}),a.isDirty=!0)},ya=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,registerToPackageManager:s,yamlTarget:n})=>{await e({message:"Deploying it as gcs package."});const r=t.projectDir,i=at.resolve(r,"package.json"),c=tt.readFileSync(i),p=JSON.parse(c);p.name=o.params.name,p.version=ot.inc(o.params.version,"patch"),delete p.scripts,delete p.devDependencies,tt.writeFileSync(i,JSON.stringify(p,null,"\t"));const{file:l,data:d}=await nt({name:o.config||"gcs",dir:t.projectDir,tags:t.tags});let m="fnet-files-to-gcs";m+=` --projectId='${d.env.GCS_PROJECT_ID}'`,m+=` --bucketName='${d.env.GCS_BUCKET_NAME}'`,m+=` --keyFilename='${at.resolve(at.dirname(l),d.env.GCS_UPLOADER_KEY_FILE)}'`,m+=` --dir='${r}'`,m+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",m+=` --destDir='${p.name}/${p.version}'`,m+=" --metadata.cacheControl='public, max-age=31536000, immutable'",d.env.DOMAIN&&(m+=` --domain='${d.env.DOMAIN}'`),!0!==o.dry_run&&!0!==o.params.dry_run||(m+=" --dryRun"),await st({cmd:m}),tt.writeFileSync(i,c),!0!==o.dryRun&&(a.isDirty=!0,o.params.version=p.version,n.get("params").set("version",p.version),await s({target:o,packageJSON:p}))},ha=async({atom:e,setInProgress:t,context:a,deploymentProject:o,deploymentProjectTarget:s,yamlTarget:n})=>{await t({message:"Deploying it as npm package."});const r=a.projectDir,i=it.resolve(r,"package.json"),c=rt.readFileSync(i),p=JSON.parse(c);p.name=s.params.name,p.version=ct.inc(s.params.version,"patch");const l=s.params.bin?.name||s.params.bin;!1!==s.params.bin?.enabled&&l&&"string"==typeof l&&(p.bin={[l]:"dist/cli/esm/index.js",[e.doc.name]:"dist/cli/esm/index.js"}),delete p.scripts,delete p.devDependencies,p.scripts={serve:"npx serve ."},rt.writeFileSync(i,JSON.stringify(p,null,"\t"));const d=(await lt({name:a.npmConfig||"npm",dir:a.projectDir,tags:a.tags}))?.data;if(rt.writeFileSync(it.resolve(r,".npmrc"),`//registry.npmjs.org/:_authToken=${d.env.NPM_TOKEN}`),!0===s.dryRun)return;if(0!==pt.exec("npm publish --access public",{cwd:r}).code)throw new Error("Couldnt publish to npm");rt.writeFileSync(i,c),o.isDirty=!0,s.params.version=p.version,n.get("params").set("version",p.version)},wa=async({atom:e,setInProgress:t,context:a,deploymentProject:o,deploymentProjectTarget:s,buildId:n,packageDependencies:r,njEnv:i})=>{await t({message:"Deploying it as node-red flow."});const c=a.projectDir,p=a.templateDir,l="workflow"===e.type?"WF":"LIB";let d;if("simple"===s.deploy.template)d={atom:e,packageDependencies:r,red:{tab:{id:s.deploy.id||gt.util.generateId(),label:`${l}/${e.id?e.id:ut.hostname()}/${e.name}/${s.deploy.name||s.deploy.template}`},function:{id:gt.util.generateId(),name:e.doc.name,initialize:{content:dt.readFileSync(mt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},inject:{id:gt.util.generateId(),...s.params?.inject,payload:"json"===s.params?.inject?.payloadType?`'${JSON.stringify(s.params?.inject?.payload)}'`:s.params?.inject?.payload},debug:{id:gt.util.generateId()}}};else if("cronjob"===s.deploy.template){let t=s.params?.schedules?cloneDeep(s.params?.schedules):void 0;t?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),d={atom:e,packageDependencies:r,red:{tab:{id:s.deploy.id||gt.util.generateId(),label:`${l}/${e.id?e.id:ut.hostname()}/${s.deploy.name||s.deploy.template}`},function:{id:gt.util.generateId(),name:e.doc.name,initialize:{content:dt.readFileSync(mt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},cronjob:{id:gt.util.generateId(),schedules:t},debug:{id:gt.util.generateId()}}}}else{if("http"!==s.deploy.template)return;d={atom:e,packageDependencies:r,red:{tab:{id:s.deploy.id||gt.util.generateId(),label:`${l}/${e.id?e.id:ut.hostname()}/${s.deploy.name||s.deploy.template}`},function:{id:gt.util.generateId(),name:e.doc.name,initialize:{content:dt.readFileSync(mt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},httpin:{id:gt.util.generateId(),method:s.params.method||"get",url:s.params.url},httpout:{id:gt.util.generateId()},debug:{id:gt.util.generateId()}}}}let m=ft.compile(dt.readFileSync(mt.resolve(p,`deploy/node-red/${s.deploy.template}.yaml.njk`),"utf8"),i).render(d);if(dt.writeFileSync(mt.resolve(c,"node-red.yaml"),m),m=yaml.load(m),!0===s.dryRun)return;o.isDirty=!0;const u=(await yt({name:a.redConfig||"red",dir:a.projectDir,tags:a.tags}))?.data,f=s.deploy.url||u.env.RED_URL,g={};if(!1!==s.deploy.auth&&(g.Authorization="Bearer "+atomAccessToken),s.deploy.id)!0===s.actions?.delete?(await axios({method:"DELETE",url:`${f}/flow/${s.deploy.id}`,headers:g}),delete s.actions.delete,delete s.deploy.id,s.enabled=!1):await axios({method:"PUT",url:`${f}/flow/${s.deploy.id}`,data:m,headers:g});else{const e=await axios({method:"POST",url:`${f}/flow`,data:m,headers:g});s.deploy.id=e.data.id}},ba=async({atom:e,Atom:t,setInProgress:a,context:o,packageDependencies:s,deploymentProject:n,deploymentProjectTarget:r})=>{await a({message:"Deploying it as workflow lib."});const i=(await bt({name:"atom",dir:o.projectDir,tags:o.tags}))?.data;let c,p,l,d=r.deploy.name.split("/");if(1===d.length)p=i.env.ATOM_LIBRARIES_ID,l=r.deploy.name;else{if(2!==d.length)throw new Error("Wrong name path.");{const e=await t.first({where:{name:d[0],parent_id:i.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");p=e.id,l=d[1]}}if(!0===r.dryRun)return;if(n.isDirty=!0,r.deploy.id){if(c=await t.get({id:r.deploy.id}),!c)return}else{if(c=await t.create({parent_id:p,doc:{name:l,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!c)return;r.deploy.id=c.id}const m=o.projectDir;c.doc.contents=[{content:ht.readFileSync(wt.resolve(m,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:ht.readFileSync(wt.resolve(m,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:ht.readFileSync(wt.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],c.doc.name=l,c.doc.dependencies=s,"workflow.lib"===e.type?c.doc.subtype="library":"workflow"===e.type&&(c.doc.subtype="workflow"),c=await t.update(c,{id:c.id})},va=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as ios-app package."});const i=t?.config?await vt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=kt.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=jt(t.params);p.dependencies=jt(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await _t(l)}},_a=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as macos-app package."});const i=t?.config?await Dt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=St.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=At(t.params);p.dependencies=At(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await xt(l)}},ja=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as electron package."});const i=t?.config?await Pt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=Tt.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=Et(t.params);p.dependencies=Et(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await It(l)}},ka=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as webos package."});const i=t?.config?await $t({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=Rt.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=Ct(t.params);p.dependencies=Ct(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Ot(l)}},Da=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as nextjs package."});const i=t?.config?await Mt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=Lt.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=qt(t.params);p.dependencies=qt(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Ft(l)}},xa=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as docker package."});const i=t?.config?await Nt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=zt.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=Bt(t.params);p.dependencies=Bt(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Ut(l)}},Aa=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:s})=>{await e({message:"Deploying it as fnet package."});const n=t.projectDir,r=Wt.resolve(n,"package.json"),i=Jt.readFileSync(r),c=JSON.parse(i);c.name=o.params.name,c.version=Kt.inc(o.params.version,"patch"),delete c.scripts,delete c.devDependencies,Jt.writeFileSync(r,JSON.stringify(c,null,"\t"));const{file:p,data:l}=await Ht({name:o.config||"fnet-package",dir:t.projectDir,tags:t.tags});if(!l.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${p}`);if(!l.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${p}`);if(!l.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${p}`);const d=`${l.env.ATOM_API_URL}/v1/auth/token`,m=l.env.ATOM_API_USERNAME,u=l.env.ATOM_API_PASSWORD;let f=await Xt({method:"POST",url:d,data:{username:m,password:u},headers:{"Content-Type":"application/json"}});const g=f.data?.access_token;if(!g)throw new Error(`Invalid access_token from ${d}`);let y="fnet-files-to-gcs";if(y+=` --projectId='${l.env.GCS_PROJECT_ID}'`,y+=` --bucketName='${l.env.GCS_BUCKET_NAME}'`,y+=` --keyFilename='${Wt.resolve(Wt.dirname(p),l.env.GCS_UPLOADER_KEY_FILE)}'`,y+=` --dir='${n}'`,y+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",y+=` --destDir='${c.name}/${c.version}'`,y+=" --metadata.cacheControl='public, max-age=31536000, immutable'",l.env.DOMAIN&&(y+=` --domain='${l.env.DOMAIN}'`),!0!==o.dry_run&&!0!==o.params.dry_run||(y+=" --dryRun"),await Gt({cmd:y}),Jt.writeFileSync(r,i),!0===o.dryRun)return;a.isDirty=!0,o.params.version=c.version,s.get("params").set("version",c.version);const h=`${l.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(f=await Xt({method:"POST",url:h,data:{name:c.name,version:c.version,version_domain:l.env.DOMAIN,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${g}`}}),f.data?.error)throw new Error("Failed to publish fnet package.")},Sa=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:s})=>{await e({message:"Deploying it as fnet form."});const n=Yt.inc(o.params.version,"patch"),{file:r,data:i}=await Zt({name:o.config||"fnet-form",dir:t.projectDir,tags:t.tags});if(!i.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${r}`);if(!i.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${r}`);if(!i.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${r}`);const c=`${i.env.ATOM_API_URL}/v1/auth/token`,p=i.env.ATOM_API_USERNAME,l=i.env.ATOM_API_PASSWORD;let d=await Qt({method:"POST",url:c,data:{username:p,password:l},headers:{"Content-Type":"application/json"}});const m=d.data?.access_token;if(!m)throw new Error(`Invalid access_token from ${c}`);a.isDirty=!0,o.params.version=n,s.get("params").set("version",n);const u=`${i.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(d=await Qt({method:"POST",url:u,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`}}),d.data?.error)throw new Error("Error publishing fnet form.")},Pa=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:s})=>{await e({message:"Deploying it as fnet flow."});const n=Vt.inc(o.params.version,"patch"),{file:r,data:i}=await ea({name:o.config||"fnet-flow",dir:t.project.projectDir,tags:t.tags});if(!i.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${r}`);if(!i.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${r}`);if(!i.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${r}`);const c=`${i.env.ATOM_API_URL}/v1/auth/token`,p=i.env.ATOM_API_USERNAME,l=i.env.ATOM_API_PASSWORD;let d=await ta({method:"POST",url:c,data:{username:p,password:l},headers:{"Content-Type":"application/json"}});const m=d.data?.access_token;if(!m)throw new Error(`Invalid access_token from ${c}`);a.isDirty=!0,o.params.version=n,s.get("params").set("version",n);const u=`${i.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(d=await ta({method:"POST",url:u,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`}}),d.data?.error)throw new Error("Error publishing fnet flow.");const f=d.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const y=await oa({cmd:g});if(0!==y.code)throw new Error(y.stderr);const h=JSON.parse(y.stdout).path;let w=new sa;w.append("file",aa.createReadStream(h));const b=await ta.request({method:"POST",maxBodyLength:1/0,url:`${i.env.ATOM_API_URL}/v1/service/upload/single/${f}`,headers:{...w.getHeaders(),Authorization:`Bearer ${m}`},data:w});if(b.data?.error)throw new Error("Error uploading fnet flow.")},Ia=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:s})=>{await e({message:"Deploying it as fnet node."});const n=na.inc(o.params.version,"patch"),{file:r,data:i}=await ra({name:o.config||"fnet-node",dir:t.project.projectDir,tags:t.tags});if(!i.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${r}`);if(!i.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${r}`);if(!i.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${r}`);const c=`${i.env.ATOM_API_URL}/v1/auth/token`,p=i.env.ATOM_API_USERNAME,l=i.env.ATOM_API_PASSWORD;let d=await ia({method:"POST",url:c,data:{username:p,password:l},headers:{"Content-Type":"application/json"}});const m=d.data?.access_token;if(!m)throw new Error(`Invalid access_token from ${c}`);a.isDirty=!0,o.params.version=n,s.get("params").set("version",n);const u=`${i.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(d=await ia({method:"POST",url:u,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`}}),d.data?.error)throw new Error("Error publishing fnet node.");const f=d.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const y=await pa({cmd:g});if(0!==y.code)throw new Error(y.stderr);const h=JSON.parse(y.stdout).path;let w=new la;w.append("file",ca.createReadStream(h));const b=await ia.request({method:"POST",maxBodyLength:1/0,url:`${i.env.ATOM_API_URL}/v1/service/upload/single/${f}`,headers:{...w.getHeaders(),Authorization:`Bearer ${m}`},data:w});if(b.data?.error)throw new Error("Error uploading fnet node.")},Ea=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as Rust package."});const i=t?.config?await da({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=fa.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=ua(t.params);p.dependencies=ua(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await ma(l)}};const Ta=l,$a=d,Oa=n,Ca=r,Ra=m,Ma=async()=>{if(!await N({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=L.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e},{nanoid:Fa}=g,qa=class{init({config:e,accessToken:t}){return new Promise(((a,o)=>{if(U.set_api_url(e.data.url),t)return U.set_req_token(t),void a(t);B({method:"POST",url:`${e.data.issuer}/protocol/openid-connect/token`,data:z.stringify(e.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((e=>{U.set_req_token(e.data.access_token),a(e.data.access_token)})).catch((e=>{U.set_req_token(),o(e)}))}))}},La=async e=>{const{atom:t,context:a,packageDevDependencies:o}=e;t.doc.features=t.doc.features||{};const s=t.doc.features;s.project=s.project||{},s.project.format=s.project.format||s.project_format||"esm",s.project_format=s.project.format,s.dts_enabled=!0===s.dts||void 0!==s.dts&&!1!==s.dts,s.hasOwnProperty("all_parsed_imports")||(s.all_parsed_imports=!0);const n=se.resolve(a.project.projectDir),r=he({dir:se.resolve(n,"./app")});if(r.file){let e=await ne({file:r.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));s.app_uses_jsx=t,s.app_has_entry=!0,e=await ne({file:r.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),s.app_entry_uses_jsx=t,s.app_entry_is_ts=r.ts,s.app_entry_ext=r.ext}const i=he({dir:se.resolve(n,"./cli")});if(i.file){let e=await ne({file:i.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));s.cli_uses_jsx=t,s.cli_has_entry=!0,e=await ne({file:i.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),s.cli_entry_uses_jsx=t,s.cli_entry_is_ts=i.ts,s.cli_entry_ext=i.ext}if("workflow.lib"===t.type){const e=he({dir:se.resolve(n,"./src")});if(e.file){let t=await ne({file:e.file,recursive:!0}),a=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));s.src_uses_jsx=a,s.src_has_entry=!0,t=await ne({file:e.file}),a=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),s.src_entry_uses_jsx=a,s.src_entry_is_ts=e.ts,s.src_entry_ext=e.ext}}const c=!0===s.app_entry_uses_jsx,p=!0===s.cli_entry_uses_jsx;s.form_enabled=!0===t.doc.form||!0===t.doc.form?.enabled||!0===s.form||!0===s.form?.enabled,s.multiple_enabled=s.multiple_enabled||!0===s.multiple||!0===s.multiple?.enabled,!1===s.app?s.app={enabled:!1}:!0===s.app?s.app={enabled:!0,extend:!0===s.app_has_entry,export:!0,react:c}:s.app={enabled:!0,extend:!0===s.app_has_entry,export:!0,react:c,...s.app||{}},s.app.enabled=!0===s.app.enabled&&(!0===t.doc.features.form_enabled||!0===s.app.extend||!0===s.app.enabled),s.app.format=s.app.format||"esm",s.app.folder=s.app.folder||s.app.format||"default",!1===s.cli?s.cli={enabled:!1}:!0===s.cli?s.cli={enabled:!0,extend:!0===s.cli_has_entry,export:!0,react:p}:s.cli={enabled:!0,extend:!0===s.cli_has_entry,export:!0,react:p,...s.cli||{}},s.cli.enabled=!0===s.cli.enabled&&(!1===t.doc.features.form_enabled||!0===s.cli.extend||!0===s.cli.enabled),s.cli.format=s.cli.format||"esm",s.cli.folder=s.cli.folder||s.cli.folder||"esm",s.cli.node_options=s.cli.node?.options||s.cli.node_options||"";const l={cjs:{format:"cjs",context:s.form_enabled?"window":"global",babel:!0===s.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!0},esm:{format:"esm",context:s.form_enabled?"window":"global",babel:!0===s.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!0,copy:!0},iife:{format:"iife",context:s.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==s.iife,terser:!0}},d={};!0===s.webos&&(l.webos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/webos",babel_options:{targets:{chrome:"79"}}}),!0===s.electron&&(l.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===s.nextjs&&(l.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===s.ios&&(l.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===s.macos&&(l.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===s.app.enabled&&(s.app.dir=`./dist/app/${s.app.folder}`,l.app={format:s.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:s.app.dir,terser:!0,output_exports:!1===s.app.export?"none":"auto"},d.targets=d.targets||[],d.targets.push({src:"./src/app/index.html",dest:s.app.dir})),!0===s.cli.enabled&&(s.cli.dir=`./dist/cli/${s.cli.folder}`,l.cli={format:s.cli.format,context:"global",babel:!0===s.src_uses_jsx||!0===s.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:s.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===s.cli.export?"none":"auto"});const m={server:".",startPath:`${se.normalize(s.app.dir||".")}`,files:[se.normalize("./dist/**/*")],cors:!0,open:!1};s.babel_options=ae({targets:{browsers:"last 9 versions, not dead",node:"18"}},s.babel_options||s.babel?.options),s.browsersync_options=ae(m,s.browsersync_options||s.browsersync?.options||{}),s.replace_options=ae({},s.replace_options||s.replace?.options||{}),s.css_options=ae({},s.css_options||s.css?.options||{}),s.copy_options=ae(d,s.copy_options||s.copy?.options||{}),Reflect.has(s.browsersync_options,"proxy")&&delete s.browsersync_options.server,s.rollup=s.rollup||{},s.rollup_output=ae(l,s.rollup_output||s.rollup?.output||{}),s.preact_enabled=!0===s.preact||s.preact&&!1!==s.preact?.enabled;let u=Object.keys(l);for(const e of u){const t=l[e];t&&(!1!==s.rollup[e]?(t.babel_options=t.babel_options||s.babel_options,t.browsersync_options=ae(s.browsersync_options,t.browsersync_options),t.replace_options=ae(s.replace_options,t.replace_options),t.css_options=ae(s.css_options,t.css_options),t.copy_options=ae(s.copy_options,t.copy_options),t.nunjucks_options=ae(s.nunjucks_options,t.nunjucks_options),s.preact_enabled&&(t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{},t.alias.entries.react="preact/compat",t.alias.entries["react-dom"]="preact/compat"),s.form_enabled&&(t.babel=!0)):delete s.rollup_output[e])}u=Object.keys(s.rollup_output),s.babel_enabled=u.some((e=>!0===s.rollup_output[e].babel)),s.browser_enabled=u.some((e=>!0===s.rollup_output[e].babel)),s.browsersync_enabled=!1!==s.browsersync&&u.some((e=>!0===s.rollup_output[e].browsersync)),s.browsersync_enabled=s.browsersync_enabled&&s.app.enabled,s.css_enabled=!0===s.css||s.css&&!1!==s.css?.enabled,s.copy_enabled=s.app.enabled||s.copy_enabled||s.copy&&!1!==s.copy?.enabled,s.dependency_auto_enabled=!1!==s.dependency_auto&&!1!==s.dependency_auto?.enabled,s.npm_install_flags=s.npm_install_flags||"",s.react_version=s.react_version||s.react?.version||18,ye(e),ge(e),fe(e),me(e),ue(e),de(e),le(e),pe(e),ce(e),re(e),ie(e)},Na=async({atom:e,packageDependencies:t,packageDevDependencies:a})=>{if("workflow"===e.type&&(t.push({package:"get-value",version:"^3"}),t.push({package:"set-value",version:"^4"})),e.doc.features.form_enabled&&e.doc.features.dependency_auto_enabled){let a="^18.2";a=`^${(await we({name:"react",groupBy:{major:!0}})).find((t=>t[0]===e.doc.features.react_version.toString()))[0]}`,t.push({package:"react",version:a}),t.push({package:"react-dom",version:a}),"workflow"===e.type&&(t.push({package:"@flownet/react-app",version:"^0.1"}),t.push({package:"@flownet/react-app-state",version:"^0.1"}))}if(e.doc.features.preact_enabled&&t.push({package:"preact",version:"^10"}),!0===e.doc.features.cli.enabled&&(t.push({package:"yargs",version:"^17"}),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled&&t.push({package:"@fnet/config",version:"0.2.19"})),e.doc.features.render&&!1!==e.doc.features.render.enabled&&t.push({package:"@flownet/lib-render-templates-dir",version:"0.1.17"}),a.push({package:"@babel/core",version:"^7"}),a.push({package:"@rollup/plugin-commonjs",version:"^26"}),a.push({package:"@rollup/plugin-node-resolve",version:"^15"}),a.push({package:"@rollup/plugin-replace",version:"^5"}),a.push({package:"rollup",version:"^4"}),e.doc.features.dts_enabled&&a.push({package:"rollup-plugin-dts",version:"^6"}),a.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),a.push({package:"@rollup/plugin-alias",version:"^5"}),a.push({package:"fs-extra",version:"^11"}),e.doc.features.babel_enabled&&(a.push({package:"@rollup/plugin-babel",version:"^6"}),a.push({package:"@babel/preset-env",version:"^7"}),a.push({package:"@babel/preset-react",version:"^7"}),e.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":a.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":a.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":a.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":a.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":a.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),a.push({package:"@fnet/rollup-plugin-delete",version:"0.1.3"}),e.doc.features.browsersync_enabled&&a.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.4"}),e.doc.features.css_enabled){a.push({package:"rollup-plugin-postcss",version:"^4"}),a.push({package:"sass",version:"^1.66"});(e.doc.features.css_options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":a.push({package:"postcss-import",version:"^15"});break;case"postcss-url":a.push({package:"postcss-url",version:"^10"});break;case"postcss-preset-env":a.push({package:"postcss-preset-env",version:"^9"});break;case"autoprefixer":a.push({package:"autoprefixer",version:"^10"});break;case"cssnano":a.push({package:"cssnano",version:"^6"})}}))}e.doc.features.copy_enabled&&(a.push({package:"rollup-plugin-copy",version:"^3"}),a.push({package:"chokidar",version:"^3"}))},Ua=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{if(!0!==e.doc.features.app.enabled)return;await t({message:"Creating app folder"});const s={atom:e,packageDependencies:o,ts:Date.now()},n=a.templateDir,r=ve.resolve(a.projectDir,"src/app");be.existsSync(r)||be.mkdirSync(r,{recursive:!0});let i=["index.js.njk"];!1!==e.doc.features.app.html&&i.push("index.html.njk"),await _e({pattern:i,dir:ve.resolve(n,"src/app"),outDir:r,context:s})},Ba=async({atom:e,context:t,packageDependencies:a,packageDevDependencies:o,setInProgress:s})=>{await s({message:"Creating package.json."});a.filter((e=>!0===e.dev)).forEach((e=>{o.find((t=>t.package===e.package))||o.push(e);const t=a.findIndex((t=>t.package===e.package));a.splice(t,1)}));const n=a.find((e=>"react"===e.package)),r=a.find((e=>"react-dom"===e.package));n&&!r?a.push({package:"react-dom",version:n.version}):n&&r&&(r.version=n.version),n&&e.doc.features.react_version>=17&&(a.find((e=>"@emotion/react"===e.package))||a.push({package:"@emotion/react",version:"^11"}),a.find((e=>"@emotion/styled"===e.package))||a.push({package:"@emotion/styled",version:"^11"}));const i=[];!0===e.doc.features.app.enabled&&i.push({file:De.resolve(t.projectDir,"src/app/index.js"),dev:!1!==e.doc.features.app.dev}),!0===e.doc.features.cli.enabled&&i.push({file:De.resolve(t.projectDir,"src/cli/index.js"),dev:!1!==e.doc.features.cli.dev});for await(const t of i){const s=t.file;if(!ke.existsSync(s))throw new Error(`App file not found: ${s}`);const n=await xe({file:s,recursive:!0}),r=!0===e.doc.features.all_parsed_imports?n.all:n.required;for await(const e of r){if("npm"!==e.type)continue;if(a.find((t=>t.package===e.package)))continue;if(o.find((t=>t.package===e.package)))continue;const s=(await Ae({name:e.package,groupBy:{minor:!0}}))[0][0];(!0===t.dev?o:a).push({package:e.package,subpath:e.subpath,version:`^${s}`,type:"npm"})}}const c={atom:e,packageDependencies:a,packageDevDependencies:o},p=t.templateCommonDir,l=je.compile(ke.readFileSync(De.resolve(p,"package.json.njk"),"utf8"),je.configure(p)).render(c),d=t.projectDir,m=De.resolve(d,"package.json");ke.writeFileSync(m,l,"utf8")},za=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating cli."});const s={atom:e,packageDependencies:o},n=a.templateDir,r=Pe.resolve(a.projectDir,"src/cli");Se.existsSync(r)||Se.mkdirSync(r,{recursive:!0}),await Ie({pattern:["index.js.njk"],dir:Pe.resolve(n,"src/cli"),outDir:r,context:s})},Ja=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{await t({message:"Creating rollup file."});const s={atom:e,packageDependencies:o},n=Te.resolve(a.projectDir,"src","default/index.js");if(!Ee.existsSync(n))throw new Error(`Entry file not found: ${n}`);const r=(await Oe({file:n,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),i=e.doc.features.rollup_output,c=Object.keys(i);for(let e=0;e<c.length;e++){const t=i[c[e]];if(!0===t.browser&&r.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(r.map((e=>({key:e,value:e})))),t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{};for(let e=0;e<r.length;e++){const a=r[e];t.alias.entries[a]=`node:${a}`,t.alias.entries[`node:${a}`]=a}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(r)}}const p=a.templateCommonDir;let l=$e.compile(Ee.readFileSync(Te.resolve(p,"rollup.config.mjs.njk"),"utf8"),$e.configure(p)).render(s);const d=a.projectDir;let m=Te.resolve(d,"rollup.config.mjs");Ee.writeFileSync(m,l,"utf8")},Wa=async({atom:e,setInProgress:t,context:a,njEnv:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating yargs."});let s={};const n=e.doc.inputs||[],r=[],i=e.doc.input;if(i?s=await Fe({schema:i}):n.forEach((e=>{if(!1===e.cli||!e.name)return;e.import&&r.push(e);const t={};Reflect.has(e,"type")&&(t.type=e.type),Reflect.has(e,"default")&&(t.default=e.default),Reflect.has(e,"choices")&&(t.choices=e.choices),(Reflect.has(e,"describe")||Reflect.has(e,"description"))&&(t.describe=e.describe||e.description),Reflect.has(e,"alias")&&(t.alias=e.alias),Reflect.has(e,"required")&&!0===e.required&&(t.required=!0),Reflect.has(e,"hidden")&&!0===e.hidden&&(t.hidden=!0),Reflect.has(e,"array")&&!0===e.array&&(t.array=!0),Reflect.has(e,"normalize")&&!0===e.normalize&&(t.normalize=!0),Reflect.has(e,"nargs")&&(t.nargs=e.nargs),s[e.name]=t})),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled){const t=e.doc.features.cli.fargs,a={type:"string",describe:"Config name to load args",hidden:!1},o={type:"array",describe:"Tags to filter the config",hidden:!1};Reflect.has(t,"default")&&(a.default=t.default),(Reflect.has(t,"describe")||Reflect.has(t,"description"))&&(a.describe=t.describe||t.description),Reflect.has(t,"choices")&&(a.choices=t.choices),s.fargs=a,s.ftag=o}const c={options:s,imports:r,atom:e},p=a.templateDir,l=Me.compile(Ce.readFileSync(Re.resolve(p,"src/default/to.args.js.njk"),"utf8"),o).render(c),d=a.projectDir,m=Re.resolve(d,"src/default/to.args.js");Ce.writeFileSync(m,l,"utf8")},Ka=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{await t({message:"Creating .gitignore"});const s={atom:e,packageDependencies:o},n=a.templateCommonDir,r=Ne.compile(qe.readFileSync(Le.resolve(n,".gitignore.njk"),"utf8"),Ne.configure(n)).render(s),i=a.projectDir,c=Le.resolve(i,".gitignore");qe.writeFileSync(c,r,"utf8")},Ga=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{await t({message:"Creating tsconfig.json."});const s={atom:e,packageDependencies:o},n=a.templateCommonDir,r=ze.compile(Ue.readFileSync(Be.resolve(n,"tsconfig.json.njk"),"utf8"),ze.configure(n)).render(s),i=a.projectDir,c=Be.resolve(i,"tsconfig.json");Ue.writeFileSync(c,r,"utf8")},Ha=async({atom:e,context:t,setInProgress:a,Atom:o})=>{const s="readme.md",n=`Creating ${s}`;if(await a({message:n}),t.project?.readme){const e=t.projectDir,a={content:t.project.readme.doc.content},o=Ke.resolve(t.project.projectDir,"fnet/how-to.md");if(We.existsSync(o)){const e=We.readFileSync(o,"utf8");a.howto=e}const n=Ke.resolve(t.project.projectDir,"fnet/input.yaml");if(We.existsSync(n)){const e=await Ge({file:n,tags:t.tags});a.input=e.content}const r=t.templateCommonDir,i=Je.compile(We.readFileSync(Ke.resolve(r,`${s}.njk`),"utf8"),Je.configure(r)).render(a),c=Ke.resolve(e,`${s}`);We.writeFileSync(c,i,"utf8")}else if(e.id){const a=await o.first({type:"wiki",parent_id:e.id});if(!a||"markdown"!==a.doc?.["content-type"])return;const{content:n,...r}=a.doc,i={content:n},c=t.templateCommonDir,p=Je.compile(We.readFileSync(Ke.resolve(c,`${s}.njk`),"utf8"),Je.configure(c)).render(i),l=t.projectDir,d=Ke.resolve(l,`${s}`);We.writeFileSync(d,p,"utf8")}},Xa=async({setInProgress:e,context:t})=>{const a=t.projectDir;await e({message:"Prettifiying source files."});let o=Xe.join("src","**","*");if(0!==He.exec(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:a}).code)throw new Error("Couldnt format files.")},Ya=async({atom:e,setInProgress:t,context:a})=>{if(!e.doc.features.dts_enabled)return;const o=a.projectDir;await t({message:"Creating .d.ts"});if(0!==Ye.exec("tsc",{cwd:o}).code)throw new Error("Couldnt create .d.ts files.")},Za=async({setInProgress:e,atom:t,context:a})=>{const o=a.projectDir;await e({message:"Installing npm packages."});if(0!==Ze.exec(`npm install ${t.doc.features.npm_install_flags}`,{cwd:o}).code)throw new Error("Couldnt install npm packages.")},Qa=async({setInProgress:e,context:t})=>{const a=t.projectDir;await e({message:"Building main project."});if(0!==Qe.exec("npm run build",{cwd:a}).code)throw new Error("Couldnt build project.")},Va=async e=>{const{atom:t,packageDependencies:a,context:o,deploymentProjectTarget:s,setInProgress:n,deploymentProject:r,yamlTarget:i}=e;if(!0===s.enabled)if("lib"===s.name)await ba({...e});else if("red"===s.name)await wa({...e});else if("npm"===s.name)await ha({...e});else if("gcs"===s.name)await ya({...e});else if("gitlab"===s.name)await ga({...e});else if("fnet-package"===s.name)await Aa({...e});else if("fnet-form"===s.name)await Sa({...e});else if("fnet-node"===s.name)await Ia({...e});else if("fnet-flow"===s.name)await Pa({...e});else{let e;if("nextjs"===s.name?e=Da:"webos"===s.name?e=ka:"electron"===s.name?e=ja:"docker"===s.name?e=xa:"ios"===s.name?e=va:"macos"===s.name?e=_a:"rust"===s.name&&(e=Ea),!e)return;await e({atom:t,target:s,onProgress:n,projectDir:o.projectDir,dependencies:a,context:o,yamlTarget:i}),r.isDirty=!0}},{Atom:eo}=y,to=M,ao=t,oo=v,so=F,no=q;var ro=class{#e;#t;#a;#o;#s;#n;#r;#i;#c;#p;#l;#d;#m;#u;#f;#g;#y;constructor(e){this.#e=new qa,this.#t=e,this.#n=[],this.#r=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#n,packageDevDependencies:this.#r,setInProgress:this.setInProgress.bind(this),context:this.#t,Atom:eo,registerToPackageManager:this.registerToPackageManager.bind(this)}}async _cache_set(e,t,a){this._redis_client&&await this._redis_client.SETEX(e,a||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async init(){this._redis_client=await Ma(),this.#c=this.#t.buildId||Fa(24),this.#y.buildId=this.#c,this.#m=this.#t.mode,this.#u=["all","deploy","build","file"].includes(this.#m),this.#f=["all","deploy","build"].includes(this.#m),this.#g=["all","deploy"].includes(this.#m),this.#l=this.#t.protocol,this.#p="BUILD:"+this.#c,this.#d=(await ao({optional:!0,name:this.#t.atomConfig||"atom",dir:this.#t.projectDir,tags:this.#t.tags}))?.data;try{await this.setInProgress({message:"Initialization started."}),await this.initAuth(),await this.initLibrary(),await La(this.#y),await Na(this.#y),await this.initLibraryDir(),await this.initNunjucks(),await this.initLibs()}catch(e){throw await this._cache_set(this.#p,{status:"FAILED",message:e?.message||e}),e}}async initAuth(){this.#t.id&&(this.#i=await this.#e.init({config:this.#d}),this.#y.atomAccessToken=this.#i)}async initLibrary(){const e=this.#t.id;this.#a=this.#t.project?.libraryAtom||await eo.get({id:e});let t=this.#a.doc.bundleName;t=t||(this.#a.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#a.doc.bundleName=t,this.#a.type=this.#a.type||"workflow.lib",this.#y.atom=this.#a}async initLibraryDir(){const e=this.#t.projectDir;let t;const a=["node_modules"];Ta.existsSync(e)&&Ta.readdirSync(e).forEach((o=>{a.includes(o)||(t=Ca.rm("-rf",$a.join(e,o)))}));let o=e;if(!Ta.existsSync(o)&&(t=Ca.exec(`mkdir "${e}"`),0!==t.code))throw new Error("Couldnt create workflow dir.");if(o=$a.join(e,"src"),!Ta.existsSync(o)&&(t=Ca.exec(`mkdir "${o}"`),0!==t.code))throw new Error("Couldnt create library/src dir.");if(o=$a.join(e,"src","default"),!Ta.existsSync()&&(t=Ca.exec(`mkdir "${o}"`),0!==t.code))throw new Error("Couldnt create library/src/default dir.")}async initNunjucks(){const e=this.#t.templateDir;this.#o=Ra.configure(e,{watch:!1,dev:!0}),this.#y.njEnv=this.#o}async initLibs(){const e=[{name:this.#a.doc.name,type:"atom",parent_id:this.#a.parent_id}];this.#s=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.#n})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const a=e.filter((e=>"atom"===e.type));for(let e=0;e<a.length;e++){const o=a[e],s=await this.findAtomLibrary({url:o.name});o.atom=s;const n=s.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));n?.forEach((e=>{const a=t.find((t=>t.package===e.package));a?"string"==typeof e.path?(a.path||[]).some((t=>t===e.path))||(a.path=a.path||[],a.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(a.path||[]).some((t=>t===e))||(a.path=a.path||[],a.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const t=to({url:e});if(!t)throw new Error(`Invalid package name: ${e}`);if(t.protocol||(t.protocol=this.#l),"ac:"===t.protocol){const a=t.pathname.split("/");if(1===a.length)return await eo.first({where:{name:e,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===a.length){const e=await eo.first({where:{name:a[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await eo.first({where:{name:a[1],parent_id:e.id,type:"workflow.lib"}})}}else if("local:"===t.protocol){const e=this.#a;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=$a.resolve(this.#t.projectSrcDir,"index.js"),a=await oo({file:t,recursive:!0}),o=e.doc.dependencies,s=!0===this.#a.doc.features.all_parsed_imports?a.all:a.required;for await(const e of s){if("npm"!==e.type)continue;if(o.find((t=>t.package===e.package)))continue;const t=await so({name:e.package,count:1});o.push({package:e.package,subpath:e.subpath,version:t.minorRange,type:"npm"})}return e}}async createAtomLibFiles({libs:e}){await this.setInProgress({message:"Creating external lib files."}),this.#a.typesDir="./types";const t=e.filter((e=>"atom"===e.type));for(let e=0;e<t.length;e++){const a=t[e].atom,o=this.#t.projectDir;if("local:"===a.protocol){const e=$a.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.js`),t=$a.relative($a.join(this.#t.projectDir,"src","default"),e);if(!Ta.existsSync(e)){Ta.mkdirSync($a.dirname(e),{recursive:!0});let t="export default async (args)=>{\n";t+="}",Ta.writeFileSync(e,t,"utf8")}a.relativePath=t.split($a.sep).join("/"),this.#a.typesDir=`./types/${$a.basename(o)}/src`}else{const e=$a.join(o,"src","libs",`${a.id}.js`),t=a.doc.contents?.find((e=>"esm"===e.format))||a.doc;Ta.writeFileSync(e,t.content,"utf8")}}}async createEngine(){await this.setInProgress({message:"Creating engine file."});const e={libs:this.#s.filter((e=>"atom"===e.type)),libraryAtom:this.#a,atom:this.#a},t=this.#t.templateDir,a=Ra.compile(Ta.readFileSync($a.resolve(t,$a.join("src","default","engine.js.njk")),"utf8"),this.#o).render(e),o=this.#t.projectDir,s=$a.resolve(o,$a.join("src","default","index.js"));Ta.writeFileSync(s,a,"utf8")}async createProjectYaml(){const e="node.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const{content:a,...o}=this.#a.doc,s={content:Oa.stringify(o)},n=this.#t.templateDir,r=Ra.compile(Ta.readFileSync($a.resolve(n,`${e}.njk`),"utf8"),this.#o).render(s),i=this.#t.projectDir,c=$a.resolve(i,`${e}`);Ta.writeFileSync(c,r,"utf8")}async deploy(){if(await this.setInProgress({message:"Deploying."}),this.#t.project?.devops){const e=[this.#t.project?.devops];for(let t=0;t<e.length;t++){let a=e[t];await this.deployProject({deploymentProject:a}),!0===a.isDirty&&await a.save()}}else if(this.#a.id){const e=await eo.list({type:"library.deploy",parent_id:this.#a.id});for(let t=0;t<e.length;t++){let a=e[t];await this.deployProject({deploymentProject:a}),!0===a.isDirty&&(a=await eo.update(a,{id:a.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:a}=t,o=a.get("targets")||[],s=t.doc.targets||[];for(let e=0;e<s.length;e++){const a=s[e],n=o.items[e];await Va({...this.#y,deploymentProject:t,deploymentProjectTarget:a,yamlTarget:n})}}async registerToPackageManager(e){const{target:t,packageJSON:a}=e;if(!this.#t.id)return;let o=await eo.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:a.version}),await eo.update(o,{id:o.id})):o=await eo.create({parent_id:this.#d.env.ATOM_PACKAGES_ID,doc:{name:t.params.name,type:"pm",versions:[{v:a.version}]}})}async setInProgress({message:e}){console.log(no.blue(e)),await this._cache_set(this.#p,{status:"IN_PROGRESS",message:e})}async build(){try{this.#u&&(await this.createAtomLibFiles({libs:this.#s}),await this.createEngine(),await this.createProjectYaml(),await Ha(this.#y),await Ga(this.#y),await Ka(this.#y),await Wa(this.#y),await za(this.#y),await Ua(this.#y),await Ja(this.#y),await Ba(this.#y),await Xa(this.#y),await Ya(this.#y),this.#f&&(await Za(this.#y),await Qa(this.#y),this.#g&&await this.deploy())),await this._cache_set(this.#p,{status:"COMPLETED"})}catch(e){throw await this._cache_set(this.#p,{status:"FAILED",message:e.message||e}),console.log(e),e}}};const io=l,co=d;var po=function({baseDir:e=__dirname}){let t=e;for(;t!==co.parse(t).root;){const e=co.join(t,"node_modules");if(io.existsSync(e))return e;t=co.dirname(t)}return null};const lo=process.cwd(),{spawn:mo}=e;t({name:["redis"],dir:lo,optional:!0});const uo=a,fo=o,go=s,yo=n,ho=r,wo=i,bo=t,vo=c,_o=p,jo=ro,ko=po({baseDir:__dirname}),Do="win32"===process.platform?";":":";process.env.PATH=`${uo.join(ko,"/.bin")}${Do}${process.env.PATH}`;let xo=fo(process.argv.slice(2)).command("create","Create flow node project",(e=>e.option("name",{type:"Project name",demandOption:!0}).option("vscode",{type:"boolean",default:!0,alias:"vs"})),(async e=>{try{const t=uo.resolve(ko,"@fnet/cli-project-node/dist/template/project"),a=uo.resolve(lo,e.name);go.existsSync(a)||go.mkdirSync(a),await _o({dir:t,outDir:a,context:e,copyUnmatchedAlso:!0});let o=ho.exec("fnode build",{cwd:a});if(0!==o.code)throw new Error("Failed to build project.");if(ho.which("git")&&(o=ho.exec("git init --initial-branch=main",{cwd:a}),0!==o.code))throw new Error("Failed to initialize git.");if(ho.which("code")&&e.vscode&&(o=ho.exec(`cd ${a} && code .`),0!==o.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})).command("project","Flow node project",(e=>e.option("update",{type:"boolean",default:!1,alias:"-u"})),(async e=>{try{const t=uo.resolve(ko,"@fnet/cli-project-node/dist/template/project"),a=process.cwd();if(e.name=uo.basename(a),e.update){if(await _o({dir:t,outDir:a,context:e,copyUnmatchedAlso:!0}),0!==ho.exec("fnode build",{cwd:a}).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(e){console.error("Project failed.",e.message),process.exit(1)}})).command("build","Build flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"]}).option("ftag",{type:"array"})),(async e=>{try{const t=await So(e),a=new jo(t);await a.init(),await a.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})).command("deploy","Build and deploy flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await So({...e,mode:"all"}),a=new jo(t);await a.init(),await a.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})).command("file","Just create files",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await So({...e,mode:"file"}),a=new jo(t);await a.init(),await a.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}}));function Ao(e,{name:t,bin:a,preArgs:o=[]}){return e.command(`${t||a} [commands..]`,`${a} ${o.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const t=await So(e),{projectDir:s}=t,n=process.argv.slice(3);mo(a,[...o,...n],{cwd:s,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function So(e){if(e.id)return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",templateDir:uo.resolve(ko,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:uo.resolve(ko,"./@fnet/cli-project-common/dist/template/default"),projectDir:uo.resolve(lo,`./.output/${e.id}`),tags:e.ftag};{const t=await async function({tags:e}){const t=uo.resolve(lo,"node.yaml");if(!go.existsSync(t))throw new Error("node.yaml file not found in current directory.");const{raw:a,parsed:o}=await wo({file:t,tags:e}),s=uo.dirname(t),n={libraryAtom:{doc:{...o},fileName:"index"},projectDir:s,projectFilePath:t,projectFileContent:a,projectFileParsed:o};let r=uo.resolve(s,"fnet/targets.yaml");if(!go.existsSync(r)&&(r=uo.resolve(s,"node.devops.yaml"),go.existsSync(r))){const e=uo.resolve(s,"fnet");go.existsSync(e)||go.mkdirSync(e),go.copyFileSync(r,uo.resolve(s,"fnet/targets.yaml")),go.unlinkSync(r)}if(go.existsSync(r)){const{raw:t,parsed:a}=await wo({file:r,tags:e}),o=yo.parseDocument(t);n.devops={filePath:r,fileContent:t,yamlDocument:o,doc:{...a},type:"library.deploy",save:async()=>{go.writeFileSync(n.devops.filePath,o.toString())}}}const i=uo.resolve(s,"readme.md");if(go.existsSync(i)){const e=go.readFileSync(i,"utf8");n.readme={filePath:i,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return n}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:uo.resolve(ko,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:uo.resolve(ko,"./@fnet/cli-project-common/dist/template/default"),projectDir:uo.resolve(t.projectDir,"./.workspace"),projectSrcDir:uo.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}xo=xo.command("create-input <name>","Create an input config file",(e=>e.positional("name",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await So(e),{project:a}=t,{projectDir:o,projectFileParsed:s}=a,n=s.input;if(!n)throw new Error("Config schema not found in project file.");const r=await vo({schema:n,format:"yaml"}),i=uo.resolve(o,".fnet");go.existsSync(i)||go.mkdirSync(i);const c=uo.resolve(i,`${e.name}.fnet`);go.writeFileSync(c,r)}catch(e){console.error(e.message),process.exit(1)}})),xo=function(e){return e.command("update-input <name>","Update an input config file",(e=>e.positional("name",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await So(e),{project:a}=t,{projectDir:o,projectFileParsed:s}=a,n=s.input;if(!n)throw new Error("Config schema not found in project file.");const r=uo.resolve(o,".fnet"),i=uo.resolve(r,`${e.name}.fnet`),c=await vo({schema:n,format:"yaml",ref:i});go.existsSync(r)||go.mkdirSync(r),go.writeFileSync(i,c)}catch(e){console.error(e.message),process.exit(1)}}))}(xo),xo=Ao(xo,{bin:"npm"}),xo=Ao(xo,{bin:"node"}),xo=Ao(xo,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),xo=Ao(xo,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),xo=Ao(xo,{name:"app",bin:"npm",preArgs:["run","app","--"]}),xo=Ao(xo,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),xo=Ao(xo,{bin:"npx"}),xo=Ao(xo,{bin:"cdk"}),xo=Ao(xo,{bin:"aws"}),xo=function(e,{name:t,preArgs:a=[]}){return e.command(`${t} <config> <command> [options..]`,"Run a command with a config context",(e=>e.positional("config",{type:"string"}).positional("command",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await So(e),{projectDir:o}=t,s=e.config,n=await bo({name:s,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),r=n?.data?.env||void 0,i=e.command,c=process.argv.slice(5);mo(i,[...a,...c],{cwd:o,stdio:"inherit",shell:!0,env:{...process.env,...r}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(xo,{name:"with"}),xo.demandCommand(1,"You need at least one command before moving on").help().argv,module.exports={};
|
|
2
|
+
"use strict";var e=require("child_process"),t=require("@fnet/config"),a=require("path"),o=require("yargs/yargs"),s=require("fs"),n=require("yaml"),r=require("shelljs"),i=require("@fnet/yaml"),c=require("@fnet/object-from-schema"),p=require("@flownet/lib-render-templates-dir"),l=require("node:fs"),d=require("node:path"),m=require("nunjucks"),u=require("redis"),f=require("@flownet/lib-is-redis-online"),g=require("nanoid"),y=require("@flownet/lib-atom-api-js"),h=require("axios"),w=require("qs"),b=require("lodash.merge"),v=require("@flownet/lib-parse-imports-js"),_=require("@flownet/lib-list-npm-versions"),j=require("@fnet/yargs-options-from-schema"),k=require("@fnet/shell"),D=require("semver"),x=require("node:os"),A=require("@node-red/util"),S=require("@flownet/lib-to-ios-app"),P=require("lodash.clonedeep"),I=require("@flownet/lib-to-macos-app"),E=require("@flownet/lib-to-electron"),T=require("@flownet/lib-to-webos"),$=require("@flownet/lib-to-nextjs"),O=require("@flownet/lib-to-docker"),C=require("form-data"),R=require("@fnet/to-rust"),M=require("@flownet/lib-parse-node-url"),F=require("@flownet/lib-pick-npm-versions"),q=require("chalk");const L=u,N=f;const{Api:U}=y,B=h.default,z=w;var J=({feature:e,features:t,packageDevDependencies:a})=>{const{name:o,packages:s,options:n}=e,r=`${o}_enabled`,i=t.rollup_output||{},c=Object.keys(i),p=n||{};c.forEach((e=>{const a=t.rollup_output[e];if(Reflect.has(a,o)){if(!a[o]||!1===a[o]?.enabled)return void delete a[o];!0===a[o]&&(a[o]={enabled:!0,options:p})}else{if(!t[o]||!1===t[r])return;a[o]={enabled:!0}}a[o]=a[o]||{},a[o].options={...p,...a[o].options}}));const l=c.some((e=>!0===t.rollup_output[e][o]?.enabled));t[r]=l,l&&s.forEach((e=>a.push({package:e[0],version:e[1]})))};const W=J;const K=J;const G=J;const H=J;const X=J;const Y=J;const Z=J;const Q=J;const V=J;const ee=J;const te=J;const ae=b,oe=l,se=d,ne=v,re=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;W({feature:{name:"workbox",packages:[["rollup-plugin-workbox","^8"]],options:{generate:{swDest:"dist/app/esm/sw.js",globDirectory:"dist/app/esm",globPatterns:["**/*.{html,js,css,png,jpg}"],skipWaiting:!0,clientsClaim:!0}}},features:o,packageDevDependencies:a})},ie=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;K({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]]},features:o,packageDevDependencies:a})},ce=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;G({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.3"]]},features:o,packageDevDependencies:a})},pe=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;H({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:o,packageDevDependencies:a})},le=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;X({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]]},features:o,packageDevDependencies:a})},de=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;Y({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12}},features:o,packageDevDependencies:a})},me=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;Z({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:o,packageDevDependencies:a})},ue=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;Q({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:o,packageDevDependencies:a})},fe=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;V({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:o,packageDevDependencies:a})},ge=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;ee({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:o,packageDevDependencies:a})},ye=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;te({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:o,packageDevDependencies:a})};function he({dir:e,name:t="index"}){let a=se.resolve(e,`./${t}.tsx`);if(oe.existsSync(a)||(a=se.resolve(e,`./${t}.ts`)),oe.existsSync(a)||(a=se.resolve(e,`./${t}.jsx`)),oe.existsSync(a)||(a=se.resolve(e,`./${t}.js`)),!oe.existsSync(a))return{};const o=a,s=se.extname(a);return{file:o,ext:s,ts:".ts"===s||".tsx"===s,name:t}}const we=_;const be=l,ve=d,_e=p;const je=m,ke=l,De=d,xe=v,Ae=_;const Se=l,Pe=d,Ie=p;const Ee=l,Te=d,$e=m,Oe=v;const Ce=l,Re=d,Me=m,Fe=j;const qe=l,Le=d,Ne=m;const Ue=l,Be=d,ze=m;const Je=m,We=l,Ke=d,Ge=i;const He=r,Xe=a;const Ye=r;const Ze=r;const Qe=r;const Ve=k,et=t;const tt=l,at=d,ot=D,st=k,nt=t;const rt=l,it=d,ct=D,pt=r,lt=t;const dt=l,mt=d,ut=x,ft=m,gt=A,yt=t;const ht=s,wt=a,bt=t;const vt=t,_t=S,jt=P,kt=D;const Dt=t,xt=I,At=P,St=D;const Pt=t,It=E,Et=P,Tt=D;const $t=t,Ot=T,Ct=P,Rt=D;const Mt=t,Ft=$,qt=P,Lt=D;const Nt=t,Ut=O,Bt=P,zt=D;const Jt=l,Wt=d,Kt=D,Gt=k,Ht=t,Xt=h.default;const Yt=D,Zt=t,Qt=h.default;const Vt=D,ea=t,ta=h.default,aa=s,oa=k,sa=C;const na=D,ra=t,ia=h.default,ca=s,pa=k,la=C;const da=t,ma=R,ua=P,fa=D;const ga=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,buildId:s})=>{await e({message:"Deploying it as gitlab project."});const n=t.projectDir;let r="fnet-to-gitlab";const i=o.params.config||"gitlab",c=await et({name:i,dir:t.projectDir,tags:t.tags});if(!c)throw new Error(`Couldnt load config ${i}`);const{data:p}=c.data;r+=` --projectGroupId=${p.projectGroupId}`,r+=` --projectPath='${n}'`,r+=` --projectName='${o.params.name}'`,r+=` --projectBranch='${o.params.branch||"main"}'`,r+=` --gitlabHost='${p.gitlabHost}'`,r+=` --gitlabToken='${p.gitlabToken}'`,r+=` --gitlabUsername='${p.gitlabUsername}'`,r+=` --gitlabUserEmail='${p.gitlabUserEmail}'`,!0!==o.dryRun&&(await Ve({cmd:r}),a.isDirty=!0)},ya=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,registerToPackageManager:s,yamlTarget:n})=>{await e({message:"Deploying it as gcs package."});const r=t.projectDir,i=at.resolve(r,"package.json"),c=tt.readFileSync(i),p=JSON.parse(c);p.name=o.params.name,p.version=ot.inc(o.params.version,"patch"),delete p.scripts,delete p.devDependencies,tt.writeFileSync(i,JSON.stringify(p,null,"\t"));const{file:l,data:d}=await nt({name:o.config||"gcs",dir:t.projectDir,tags:t.tags});let m="fnet-files-to-gcs";m+=` --projectId='${d.env.GCS_PROJECT_ID}'`,m+=` --bucketName='${d.env.GCS_BUCKET_NAME}'`,m+=` --keyFilename='${at.resolve(at.dirname(l),d.env.GCS_UPLOADER_KEY_FILE)}'`,m+=` --dir='${r}'`,m+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",m+=` --destDir='${p.name}/${p.version}'`,m+=" --metadata.cacheControl='public, max-age=31536000, immutable'",d.env.DOMAIN&&(m+=` --domain='${d.env.DOMAIN}'`),!0!==o.dry_run&&!0!==o.params.dry_run||(m+=" --dryRun"),await st({cmd:m}),tt.writeFileSync(i,c),!0!==o.dryRun&&(a.isDirty=!0,o.params.version=p.version,n.get("params").set("version",p.version),await s({target:o,packageJSON:p}))},ha=async({atom:e,setInProgress:t,context:a,deploymentProject:o,deploymentProjectTarget:s,yamlTarget:n})=>{await t({message:"Deploying it as npm package."});const r=a.projectDir,i=it.resolve(r,"package.json"),c=rt.readFileSync(i),p=JSON.parse(c);p.name=s.params.name,p.version=ct.inc(s.params.version,"patch");const l=s.params.bin?.name||s.params.bin;!1!==s.params.bin?.enabled&&l&&"string"==typeof l&&(p.bin={[l]:"dist/cli/esm/index.js",[e.doc.name]:"dist/cli/esm/index.js"}),delete p.scripts,delete p.devDependencies,p.scripts={serve:"npx serve ."},rt.writeFileSync(i,JSON.stringify(p,null,"\t"));const d=(await lt({name:a.npmConfig||"npm",dir:a.projectDir,tags:a.tags}))?.data;if(rt.writeFileSync(it.resolve(r,".npmrc"),`//registry.npmjs.org/:_authToken=${d.env.NPM_TOKEN}`),!0===s.dryRun)return;if(0!==pt.exec("npm publish --access public",{cwd:r}).code)throw new Error("Couldnt publish to npm");rt.writeFileSync(i,c),o.isDirty=!0,s.params.version=p.version,n.get("params").set("version",p.version)},wa=async({atom:e,setInProgress:t,context:a,deploymentProject:o,deploymentProjectTarget:s,buildId:n,packageDependencies:r,njEnv:i})=>{await t({message:"Deploying it as node-red flow."});const c=a.projectDir,p=a.templateDir,l="workflow"===e.type?"WF":"LIB";let d;if("simple"===s.deploy.template)d={atom:e,packageDependencies:r,red:{tab:{id:s.deploy.id||gt.util.generateId(),label:`${l}/${e.id?e.id:ut.hostname()}/${e.name}/${s.deploy.name||s.deploy.template}`},function:{id:gt.util.generateId(),name:e.doc.name,initialize:{content:dt.readFileSync(mt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},inject:{id:gt.util.generateId(),...s.params?.inject,payload:"json"===s.params?.inject?.payloadType?`'${JSON.stringify(s.params?.inject?.payload)}'`:s.params?.inject?.payload},debug:{id:gt.util.generateId()}}};else if("cronjob"===s.deploy.template){let t=s.params?.schedules?cloneDeep(s.params?.schedules):void 0;t?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),d={atom:e,packageDependencies:r,red:{tab:{id:s.deploy.id||gt.util.generateId(),label:`${l}/${e.id?e.id:ut.hostname()}/${s.deploy.name||s.deploy.template}`},function:{id:gt.util.generateId(),name:e.doc.name,initialize:{content:dt.readFileSync(mt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},cronjob:{id:gt.util.generateId(),schedules:t},debug:{id:gt.util.generateId()}}}}else{if("http"!==s.deploy.template)return;d={atom:e,packageDependencies:r,red:{tab:{id:s.deploy.id||gt.util.generateId(),label:`${l}/${e.id?e.id:ut.hostname()}/${s.deploy.name||s.deploy.template}`},function:{id:gt.util.generateId(),name:e.doc.name,initialize:{content:dt.readFileSync(mt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},httpin:{id:gt.util.generateId(),method:s.params.method||"get",url:s.params.url},httpout:{id:gt.util.generateId()},debug:{id:gt.util.generateId()}}}}let m=ft.compile(dt.readFileSync(mt.resolve(p,`deploy/node-red/${s.deploy.template}.yaml.njk`),"utf8"),i).render(d);if(dt.writeFileSync(mt.resolve(c,"node-red.yaml"),m),m=yaml.load(m),!0===s.dryRun)return;o.isDirty=!0;const u=(await yt({name:a.redConfig||"red",dir:a.projectDir,tags:a.tags}))?.data,f=s.deploy.url||u.env.RED_URL,g={};if(!1!==s.deploy.auth&&(g.Authorization="Bearer "+atomAccessToken),s.deploy.id)!0===s.actions?.delete?(await axios({method:"DELETE",url:`${f}/flow/${s.deploy.id}`,headers:g}),delete s.actions.delete,delete s.deploy.id,s.enabled=!1):await axios({method:"PUT",url:`${f}/flow/${s.deploy.id}`,data:m,headers:g});else{const e=await axios({method:"POST",url:`${f}/flow`,data:m,headers:g});s.deploy.id=e.data.id}},ba=async({atom:e,Atom:t,setInProgress:a,context:o,packageDependencies:s,deploymentProject:n,deploymentProjectTarget:r})=>{await a({message:"Deploying it as workflow lib."});const i=(await bt({name:"atom",dir:o.projectDir,tags:o.tags}))?.data;let c,p,l,d=r.deploy.name.split("/");if(1===d.length)p=i.env.ATOM_LIBRARIES_ID,l=r.deploy.name;else{if(2!==d.length)throw new Error("Wrong name path.");{const e=await t.first({where:{name:d[0],parent_id:i.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");p=e.id,l=d[1]}}if(!0===r.dryRun)return;if(n.isDirty=!0,r.deploy.id){if(c=await t.get({id:r.deploy.id}),!c)return}else{if(c=await t.create({parent_id:p,doc:{name:l,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!c)return;r.deploy.id=c.id}const m=o.projectDir;c.doc.contents=[{content:ht.readFileSync(wt.resolve(m,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:ht.readFileSync(wt.resolve(m,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:ht.readFileSync(wt.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],c.doc.name=l,c.doc.dependencies=s,"workflow.lib"===e.type?c.doc.subtype="library":"workflow"===e.type&&(c.doc.subtype="workflow"),c=await t.update(c,{id:c.id})},va=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as ios-app package."});const i=t?.config?await vt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=kt.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=jt(t.params);p.dependencies=jt(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await _t(l)}},_a=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as macos-app package."});const i=t?.config?await Dt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=St.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=At(t.params);p.dependencies=At(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await xt(l)}},ja=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as electron package."});const i=t?.config?await Pt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=Tt.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=Et(t.params);p.dependencies=Et(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await It(l)}},ka=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as webos package."});const i=t?.config?await $t({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=Rt.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=Ct(t.params);p.dependencies=Ct(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Ot(l)}},Da=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as nextjs package."});const i=t?.config?await Mt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=Lt.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=qt(t.params);p.dependencies=qt(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Ft(l)}},xa=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as docker package."});const i=t?.config?await Nt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=zt.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=Bt(t.params);p.dependencies=Bt(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Ut(l)}},Aa=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:s})=>{await e({message:"Deploying it as fnet package."});const n=t.projectDir,r=Wt.resolve(n,"package.json"),i=Jt.readFileSync(r),c=JSON.parse(i);c.name=o.params.name,c.version=Kt.inc(o.params.version,"patch"),delete c.scripts,delete c.devDependencies,Jt.writeFileSync(r,JSON.stringify(c,null,"\t"));const{file:p,data:l}=await Ht({name:o.config||"fnet-package",dir:t.projectDir,tags:t.tags});if(!l.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${p}`);if(!l.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${p}`);if(!l.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${p}`);const d=`${l.env.ATOM_API_URL}/v1/auth/token`,m=l.env.ATOM_API_USERNAME,u=l.env.ATOM_API_PASSWORD;let f=await Xt({method:"POST",url:d,data:{username:m,password:u},headers:{"Content-Type":"application/json"}});const g=f.data?.access_token;if(!g)throw new Error(`Invalid access_token from ${d}`);let y="fnet-files-to-gcs";if(y+=` --projectId='${l.env.GCS_PROJECT_ID}'`,y+=` --bucketName='${l.env.GCS_BUCKET_NAME}'`,y+=` --keyFilename='${Wt.resolve(Wt.dirname(p),l.env.GCS_UPLOADER_KEY_FILE)}'`,y+=` --dir='${n}'`,y+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",y+=` --destDir='${c.name}/${c.version}'`,y+=" --metadata.cacheControl='public, max-age=31536000, immutable'",l.env.DOMAIN&&(y+=` --domain='${l.env.DOMAIN}'`),!0!==o.dry_run&&!0!==o.params.dry_run||(y+=" --dryRun"),await Gt({cmd:y}),Jt.writeFileSync(r,i),!0===o.dryRun)return;a.isDirty=!0,o.params.version=c.version,s.get("params").set("version",c.version);const h=`${l.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(f=await Xt({method:"POST",url:h,data:{name:c.name,version:c.version,version_domain:l.env.DOMAIN,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${g}`}}),f.data?.error)throw new Error("Failed to publish fnet package.")},Sa=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:s})=>{await e({message:"Deploying it as fnet form."});const n=Yt.inc(o.params.version,"patch"),{file:r,data:i}=await Zt({name:o.config||"fnet-form",dir:t.projectDir,tags:t.tags});if(!i.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${r}`);if(!i.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${r}`);if(!i.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${r}`);const c=`${i.env.ATOM_API_URL}/v1/auth/token`,p=i.env.ATOM_API_USERNAME,l=i.env.ATOM_API_PASSWORD;let d=await Qt({method:"POST",url:c,data:{username:p,password:l},headers:{"Content-Type":"application/json"}});const m=d.data?.access_token;if(!m)throw new Error(`Invalid access_token from ${c}`);a.isDirty=!0,o.params.version=n,s.get("params").set("version",n);const u=`${i.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(d=await Qt({method:"POST",url:u,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`}}),d.data?.error)throw new Error("Error publishing fnet form.")},Pa=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:s})=>{await e({message:"Deploying it as fnet flow."});const n=Vt.inc(o.params.version,"patch"),{file:r,data:i}=await ea({name:o.config||"fnet-flow",dir:t.project.projectDir,tags:t.tags});if(!i.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${r}`);if(!i.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${r}`);if(!i.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${r}`);const c=`${i.env.ATOM_API_URL}/v1/auth/token`,p=i.env.ATOM_API_USERNAME,l=i.env.ATOM_API_PASSWORD;let d=await ta({method:"POST",url:c,data:{username:p,password:l},headers:{"Content-Type":"application/json"}});const m=d.data?.access_token;if(!m)throw new Error(`Invalid access_token from ${c}`);a.isDirty=!0,o.params.version=n,s.get("params").set("version",n);const u=`${i.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(d=await ta({method:"POST",url:u,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`}}),d.data?.error)throw new Error("Error publishing fnet flow.");const f=d.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const y=await oa({cmd:g});if(0!==y.code)throw new Error(y.stderr);const h=JSON.parse(y.stdout).path;let w=new sa;w.append("file",aa.createReadStream(h));const b=await ta.request({method:"POST",maxBodyLength:1/0,url:`${i.env.ATOM_API_URL}/v1/service/upload/single/${f}`,headers:{...w.getHeaders(),Authorization:`Bearer ${m}`},data:w});if(b.data?.error)throw new Error("Error uploading fnet flow.")},Ia=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:s})=>{await e({message:"Deploying it as fnet node."});const n=na.inc(o.params.version,"patch"),{file:r,data:i}=await ra({name:o.config||"fnet-node",dir:t.project.projectDir,tags:t.tags});if(!i.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${r}`);if(!i.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${r}`);if(!i.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${r}`);const c=`${i.env.ATOM_API_URL}/v1/auth/token`,p=i.env.ATOM_API_USERNAME,l=i.env.ATOM_API_PASSWORD;let d=await ia({method:"POST",url:c,data:{username:p,password:l},headers:{"Content-Type":"application/json"}});const m=d.data?.access_token;if(!m)throw new Error(`Invalid access_token from ${c}`);a.isDirty=!0,o.params.version=n,s.get("params").set("version",n);const u=`${i.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(d=await ia({method:"POST",url:u,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`}}),d.data?.error)throw new Error("Error publishing fnet node.");const f=d.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const y=await pa({cmd:g});if(0!==y.code)throw new Error(y.stderr);const h=JSON.parse(y.stdout).path;let w=new la;w.append("file",ca.createReadStream(h));const b=await ia.request({method:"POST",maxBodyLength:1/0,url:`${i.env.ATOM_API_URL}/v1/service/upload/single/${f}`,headers:{...w.getHeaders(),Authorization:`Bearer ${m}`},data:w});if(b.data?.error)throw new Error("Error uploading fnet node.")},Ea=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:s,context:n,yamlTarget:r})=>{a&&await a({message:"Deploying it as Rust package."});const i=t?.config?await da({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:n.tags}):void 0,c=fa.inc(t.params.version||"0.1.0","patch");t.params.version=c,r.get("params").set("version",c);const p=ua(t.params);p.dependencies=ua(s);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await ma(l)}};const Ta=l,$a=d,Oa=n,Ca=r,Ra=m,Ma=async()=>{if(!await N({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=L.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e},{nanoid:Fa}=g,qa=class{init({config:e,accessToken:t}){return new Promise(((a,o)=>{if(U.set_api_url(e.data.url),t)return U.set_req_token(t),void a(t);B({method:"POST",url:`${e.data.issuer}/protocol/openid-connect/token`,data:z.stringify(e.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((e=>{U.set_req_token(e.data.access_token),a(e.data.access_token)})).catch((e=>{U.set_req_token(),o(e)}))}))}},La=async e=>{const{atom:t,context:a,packageDevDependencies:o}=e;t.doc.features=t.doc.features||{};const s=t.doc.features;s.project=s.project||{},s.project.format=s.project.format||s.project_format||"esm",s.project_format=s.project.format,s.dts_enabled=!0===s.dts||void 0!==s.dts&&!1!==s.dts,s.hasOwnProperty("all_parsed_imports")||(s.all_parsed_imports=!0);const n=se.resolve(a.project.projectDir),r=he({dir:se.resolve(n,"./app")});if(r.file){let e=await ne({file:r.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));s.app_uses_jsx=t,s.app_has_entry=!0,e=await ne({file:r.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),s.app_entry_uses_jsx=t,s.app_entry_is_ts=r.ts,s.app_entry_ext=r.ext}const i=he({dir:se.resolve(n,"./cli")});if(i.file){let e=await ne({file:i.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));s.cli_uses_jsx=t,s.cli_has_entry=!0,e=await ne({file:i.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),s.cli_entry_uses_jsx=t,s.cli_entry_is_ts=i.ts,s.cli_entry_ext=i.ext}if("workflow.lib"===t.type){const e=he({dir:se.resolve(n,"./src")});if(e.file){let t=await ne({file:e.file,recursive:!0}),a=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));s.src_uses_jsx=a,s.src_has_entry=!0,t=await ne({file:e.file}),a=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),s.src_entry_uses_jsx=a,s.src_entry_is_ts=e.ts,s.src_entry_ext=e.ext}}const c=!0===s.app_entry_uses_jsx,p=!0===s.cli_entry_uses_jsx;s.form_enabled=!0===t.doc.form||!0===t.doc.form?.enabled||!0===s.form||!0===s.form?.enabled,s.multiple_enabled=s.multiple_enabled||!0===s.multiple||!0===s.multiple?.enabled,!1===s.app?s.app={enabled:!1}:!0===s.app?s.app={enabled:!0,extend:!0===s.app_has_entry,export:!0,react:c}:s.app={enabled:!0,extend:!0===s.app_has_entry,export:!0,react:c,...s.app||{}},s.app.enabled=!0===s.app.enabled&&(!0===t.doc.features.form_enabled||!0===s.app.extend||!0===s.app.enabled),s.app.format=s.app.format||"esm",s.app.folder=s.app.folder||s.app.format||"default",!1===s.cli?s.cli={enabled:!1}:!0===s.cli?s.cli={enabled:!0,extend:!0===s.cli_has_entry,export:!0,react:p}:s.cli={enabled:!0,extend:!0===s.cli_has_entry,export:!0,react:p,...s.cli||{}},s.cli.enabled=!0===s.cli.enabled&&(!1===t.doc.features.form_enabled||!0===s.cli.extend||!0===s.cli.enabled),s.cli.format=s.cli.format||"esm",s.cli.folder=s.cli.folder||s.cli.folder||"esm",s.cli.node_options=s.cli.node?.options||s.cli.node_options||"";const l={cjs:{format:"cjs",context:s.form_enabled?"window":"global",babel:!0===s.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!0},esm:{format:"esm",context:s.form_enabled?"window":"global",babel:!0===s.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!0,copy:!0},iife:{format:"iife",context:s.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==s.iife,terser:!0}},d={};!0===s.webos&&(l.webos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/webos",babel_options:{targets:{chrome:"79"}}}),!0===s.electron&&(l.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===s.nextjs&&(l.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===s.ios&&(l.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===s.macos&&(l.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===s.app.enabled&&(s.app.dir=`./dist/app/${s.app.folder}`,l.app={format:s.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:s.app.dir,terser:!0,output_exports:!1===s.app.export?"none":"auto"},d.targets=d.targets||[],d.targets.push({src:"./src/app/index.html",dest:s.app.dir})),!0===s.cli.enabled&&(s.cli.dir=`./dist/cli/${s.cli.folder}`,l.cli={format:s.cli.format,context:"global",babel:!0===s.src_uses_jsx||!0===s.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:s.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===s.cli.export?"none":"auto"});const m={server:".",startPath:`${se.normalize(s.app.dir||".")}`,files:[se.normalize("./dist/**/*")],cors:!0,open:!1};s.babel_options=ae({targets:{browsers:"last 9 versions, not dead",node:"18"}},s.babel_options||s.babel?.options),s.browsersync_options=ae(m,s.browsersync_options||s.browsersync?.options||{}),s.replace_options=ae({},s.replace_options||s.replace?.options||{}),s.css_options=ae({},s.css_options||s.css?.options||{}),s.copy_options=ae(d,s.copy_options||s.copy?.options||{}),Reflect.has(s.browsersync_options,"proxy")&&delete s.browsersync_options.server,s.rollup=s.rollup||{},s.rollup_output=ae(l,s.rollup_output||s.rollup?.output||{}),s.preact_enabled=!0===s.preact||s.preact&&!1!==s.preact?.enabled;let u=Object.keys(l);for(const e of u){const t=l[e];t&&(!1!==s.rollup[e]?(t.babel_options=t.babel_options||s.babel_options,t.browsersync_options=ae(s.browsersync_options,t.browsersync_options),t.replace_options=ae(s.replace_options,t.replace_options),t.css_options=ae(s.css_options,t.css_options),t.copy_options=ae(s.copy_options,t.copy_options),s.preact_enabled&&(t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{},t.alias.entries.react="preact/compat",t.alias.entries["react-dom"]="preact/compat"),s.form_enabled&&(t.babel=!0)):delete s.rollup_output[e])}u=Object.keys(s.rollup_output),s.babel_enabled=u.some((e=>!0===s.rollup_output[e].babel)),s.browser_enabled=u.some((e=>!0===s.rollup_output[e].babel)),s.browsersync_enabled=!1!==s.browsersync&&u.some((e=>!0===s.rollup_output[e].browsersync)),s.browsersync_enabled=s.browsersync_enabled&&s.app.enabled,s.css_enabled=!0===s.css||s.css&&!1!==s.css?.enabled,s.copy_enabled=s.app.enabled||s.copy_enabled||s.copy&&!1!==s.copy?.enabled,s.dependency_auto_enabled=!1!==s.dependency_auto&&!1!==s.dependency_auto?.enabled,s.npm_install_flags=s.npm_install_flags||"",s.react_version=s.react_version||s.react?.version||18,ye(e),ge(e),fe(e),me(e),ue(e),de(e),le(e),pe(e),ce(e),re(e),ie(e)},Na=async({atom:e,packageDependencies:t,packageDevDependencies:a})=>{if("workflow"===e.type&&(t.push({package:"get-value",version:"^3"}),t.push({package:"set-value",version:"^4"})),e.doc.features.form_enabled&&e.doc.features.dependency_auto_enabled){let a="^18.2";a=`^${(await we({name:"react",groupBy:{major:!0}})).find((t=>t[0]===e.doc.features.react_version.toString()))[0]}`,t.push({package:"react",version:a}),t.push({package:"react-dom",version:a}),"workflow"===e.type&&(t.push({package:"@flownet/react-app",version:"^0.1"}),t.push({package:"@flownet/react-app-state",version:"^0.1"}))}if(e.doc.features.preact_enabled&&t.push({package:"preact",version:"^10"}),!0===e.doc.features.cli.enabled&&(t.push({package:"yargs",version:"^17"}),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled&&t.push({package:"@fnet/config",version:"0.2.19"})),e.doc.features.render&&!1!==e.doc.features.render.enabled&&t.push({package:"@flownet/lib-render-templates-dir",version:"0.1.17"}),a.push({package:"@babel/core",version:"^7"}),a.push({package:"@rollup/plugin-commonjs",version:"^26"}),a.push({package:"@rollup/plugin-node-resolve",version:"^15"}),a.push({package:"@rollup/plugin-replace",version:"^5"}),a.push({package:"rollup",version:"^4"}),e.doc.features.dts_enabled&&a.push({package:"rollup-plugin-dts",version:"^6"}),a.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),a.push({package:"@rollup/plugin-alias",version:"^5"}),a.push({package:"fs-extra",version:"^11"}),e.doc.features.babel_enabled&&(a.push({package:"@rollup/plugin-babel",version:"^6"}),a.push({package:"@babel/preset-env",version:"^7"}),a.push({package:"@babel/preset-react",version:"^7"}),e.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":a.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":a.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":a.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":a.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":a.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),a.push({package:"@fnet/rollup-plugin-delete",version:"0.1.3"}),e.doc.features.browsersync_enabled&&a.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.4"}),e.doc.features.css_enabled){a.push({package:"rollup-plugin-postcss",version:"^4"}),a.push({package:"sass",version:"^1.66"});(e.doc.features.css_options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":a.push({package:"postcss-import",version:"^15"});break;case"postcss-url":a.push({package:"postcss-url",version:"^10"});break;case"postcss-preset-env":a.push({package:"postcss-preset-env",version:"^9"});break;case"autoprefixer":a.push({package:"autoprefixer",version:"^10"});break;case"cssnano":a.push({package:"cssnano",version:"^6"})}}))}e.doc.features.copy_enabled&&(a.push({package:"rollup-plugin-copy",version:"^3"}),a.push({package:"chokidar",version:"^3"}))},Ua=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{if(!0!==e.doc.features.app.enabled)return;await t({message:"Creating app folder"});const s={atom:e,packageDependencies:o,ts:Date.now()},n=a.templateDir,r=ve.resolve(a.projectDir,"src/app");be.existsSync(r)||be.mkdirSync(r,{recursive:!0});let i=["index.js.njk"];!1!==e.doc.features.app.html&&i.push("index.html.njk"),await _e({pattern:i,dir:ve.resolve(n,"src/app"),outDir:r,context:s})},Ba=async({atom:e,context:t,packageDependencies:a,packageDevDependencies:o,setInProgress:s})=>{await s({message:"Creating package.json."});a.filter((e=>!0===e.dev)).forEach((e=>{o.find((t=>t.package===e.package))||o.push(e);const t=a.findIndex((t=>t.package===e.package));a.splice(t,1)}));const n=a.find((e=>"react"===e.package)),r=a.find((e=>"react-dom"===e.package));n&&!r?a.push({package:"react-dom",version:n.version}):n&&r&&(r.version=n.version),n&&e.doc.features.react_version>=17&&(a.find((e=>"@emotion/react"===e.package))||a.push({package:"@emotion/react",version:"^11"}),a.find((e=>"@emotion/styled"===e.package))||a.push({package:"@emotion/styled",version:"^11"}));const i=[];!0===e.doc.features.app.enabled&&i.push({file:De.resolve(t.projectDir,"src/app/index.js"),dev:!1!==e.doc.features.app.dev}),!0===e.doc.features.cli.enabled&&i.push({file:De.resolve(t.projectDir,"src/cli/index.js"),dev:!1!==e.doc.features.cli.dev});for await(const t of i){const s=t.file;if(!ke.existsSync(s))throw new Error(`App file not found: ${s}`);const n=await xe({file:s,recursive:!0}),r=!0===e.doc.features.all_parsed_imports?n.all:n.required;for await(const e of r){if("npm"!==e.type)continue;if(a.find((t=>t.package===e.package)))continue;if(o.find((t=>t.package===e.package)))continue;const s=(await Ae({name:e.package,groupBy:{minor:!0}}))[0][0];(!0===t.dev?o:a).push({package:e.package,subpath:e.subpath,version:`^${s}`,type:"npm"})}}const c={atom:e,packageDependencies:a,packageDevDependencies:o},p=t.templateCommonDir,l=je.compile(ke.readFileSync(De.resolve(p,"package.json.njk"),"utf8"),je.configure(p)).render(c),d=t.projectDir,m=De.resolve(d,"package.json");ke.writeFileSync(m,l,"utf8")},za=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating cli."});const s={atom:e,packageDependencies:o},n=a.templateDir,r=Pe.resolve(a.projectDir,"src/cli");Se.existsSync(r)||Se.mkdirSync(r,{recursive:!0}),await Ie({pattern:["index.js.njk"],dir:Pe.resolve(n,"src/cli"),outDir:r,context:s})},Ja=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{await t({message:"Creating rollup file."});const s={atom:e,packageDependencies:o},n=Te.resolve(a.projectDir,"src","default/index.js");if(!Ee.existsSync(n))throw new Error(`Entry file not found: ${n}`);const r=(await Oe({file:n,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),i=e.doc.features.rollup_output,c=Object.keys(i);for(let e=0;e<c.length;e++){const t=i[c[e]];if(!0===t.browser&&r.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(r.map((e=>({key:e,value:e})))),t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{};for(let e=0;e<r.length;e++){const a=r[e];t.alias.entries[a]=`node:${a}`,t.alias.entries[`node:${a}`]=a}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(r)}}const p=a.templateCommonDir;let l=$e.compile(Ee.readFileSync(Te.resolve(p,"rollup.config.mjs.njk"),"utf8"),$e.configure(p)).render(s);const d=a.projectDir;let m=Te.resolve(d,"rollup.config.mjs");Ee.writeFileSync(m,l,"utf8")},Wa=async({atom:e,setInProgress:t,context:a,njEnv:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating yargs."});let s={};const n=e.doc.inputs||[],r=[],i=e.doc.input;if(i?s=await Fe({schema:i}):n.forEach((e=>{if(!1===e.cli||!e.name)return;e.import&&r.push(e);const t={};Reflect.has(e,"type")&&(t.type=e.type),Reflect.has(e,"default")&&(t.default=e.default),Reflect.has(e,"choices")&&(t.choices=e.choices),(Reflect.has(e,"describe")||Reflect.has(e,"description"))&&(t.describe=e.describe||e.description),Reflect.has(e,"alias")&&(t.alias=e.alias),Reflect.has(e,"required")&&!0===e.required&&(t.required=!0),Reflect.has(e,"hidden")&&!0===e.hidden&&(t.hidden=!0),Reflect.has(e,"array")&&!0===e.array&&(t.array=!0),Reflect.has(e,"normalize")&&!0===e.normalize&&(t.normalize=!0),Reflect.has(e,"nargs")&&(t.nargs=e.nargs),s[e.name]=t})),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled){const t=e.doc.features.cli.fargs,a={type:"string",describe:"Config name to load args",hidden:!1},o={type:"array",describe:"Tags to filter the config",hidden:!1};Reflect.has(t,"default")&&(a.default=t.default),(Reflect.has(t,"describe")||Reflect.has(t,"description"))&&(a.describe=t.describe||t.description),Reflect.has(t,"choices")&&(a.choices=t.choices),s.fargs=a,s.ftag=o}const c={options:s,imports:r,atom:e},p=a.templateDir,l=Me.compile(Ce.readFileSync(Re.resolve(p,"src/default/to.args.js.njk"),"utf8"),o).render(c),d=a.projectDir,m=Re.resolve(d,"src/default/to.args.js");Ce.writeFileSync(m,l,"utf8")},Ka=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{await t({message:"Creating .gitignore"});const s={atom:e,packageDependencies:o},n=a.templateCommonDir,r=Ne.compile(qe.readFileSync(Le.resolve(n,".gitignore.njk"),"utf8"),Ne.configure(n)).render(s),i=a.projectDir,c=Le.resolve(i,".gitignore");qe.writeFileSync(c,r,"utf8")},Ga=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{await t({message:"Creating tsconfig.json."});const s={atom:e,packageDependencies:o},n=a.templateCommonDir,r=ze.compile(Ue.readFileSync(Be.resolve(n,"tsconfig.json.njk"),"utf8"),ze.configure(n)).render(s),i=a.projectDir,c=Be.resolve(i,"tsconfig.json");Ue.writeFileSync(c,r,"utf8")},Ha=async({atom:e,context:t,setInProgress:a,Atom:o})=>{const s="readme.md",n=`Creating ${s}`;if(await a({message:n}),t.project?.readme){const e=t.projectDir,a={content:t.project.readme.doc.content},o=Ke.resolve(t.project.projectDir,"fnet/how-to.md");if(We.existsSync(o)){const e=We.readFileSync(o,"utf8");a.howto=e}const n=Ke.resolve(t.project.projectDir,"fnet/input.yaml");if(We.existsSync(n)){const e=await Ge({file:n,tags:t.tags});a.input=e.content}const r=t.templateCommonDir,i=Je.compile(We.readFileSync(Ke.resolve(r,`${s}.njk`),"utf8"),Je.configure(r)).render(a),c=Ke.resolve(e,`${s}`);We.writeFileSync(c,i,"utf8")}else if(e.id){const a=await o.first({type:"wiki",parent_id:e.id});if(!a||"markdown"!==a.doc?.["content-type"])return;const{content:n,...r}=a.doc,i={content:n},c=t.templateCommonDir,p=Je.compile(We.readFileSync(Ke.resolve(c,`${s}.njk`),"utf8"),Je.configure(c)).render(i),l=t.projectDir,d=Ke.resolve(l,`${s}`);We.writeFileSync(d,p,"utf8")}},Xa=async({setInProgress:e,context:t})=>{const a=t.projectDir;await e({message:"Prettifiying source files."});let o=Xe.join("src","**","*");if(0!==He.exec(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:a}).code)throw new Error("Couldnt format files.")},Ya=async({atom:e,setInProgress:t,context:a})=>{if(!e.doc.features.dts_enabled)return;const o=a.projectDir;await t({message:"Creating .d.ts"});if(0!==Ye.exec("tsc",{cwd:o}).code)throw new Error("Couldnt create .d.ts files.")},Za=async({setInProgress:e,atom:t,context:a})=>{const o=a.projectDir;await e({message:"Installing npm packages."});if(0!==Ze.exec(`npm install ${t.doc.features.npm_install_flags}`,{cwd:o}).code)throw new Error("Couldnt install npm packages.")},Qa=async({setInProgress:e,context:t})=>{const a=t.projectDir;await e({message:"Building main project."});if(0!==Qe.exec("npm run build",{cwd:a}).code)throw new Error("Couldnt build project.")},Va=async e=>{const{atom:t,packageDependencies:a,context:o,deploymentProjectTarget:s,setInProgress:n,deploymentProject:r,yamlTarget:i}=e;if(!0===s.enabled)if("lib"===s.name)await ba({...e});else if("red"===s.name)await wa({...e});else if("npm"===s.name)await ha({...e});else if("gcs"===s.name)await ya({...e});else if("gitlab"===s.name)await ga({...e});else if("fnet-package"===s.name)await Aa({...e});else if("fnet-form"===s.name)await Sa({...e});else if("fnet-node"===s.name)await Ia({...e});else if("fnet-flow"===s.name)await Pa({...e});else{let e;if("nextjs"===s.name?e=Da:"webos"===s.name?e=ka:"electron"===s.name?e=ja:"docker"===s.name?e=xa:"ios"===s.name?e=va:"macos"===s.name?e=_a:"rust"===s.name&&(e=Ea),!e)return;await e({atom:t,target:s,onProgress:n,projectDir:o.projectDir,dependencies:a,context:o,yamlTarget:i}),r.isDirty=!0}},{Atom:eo}=y,to=M,ao=t,oo=v,so=F,no=q;var ro=class{#e;#t;#a;#o;#s;#n;#r;#i;#c;#p;#l;#d;#m;#u;#f;#g;#y;constructor(e){this.#e=new qa,this.#t=e,this.#n=[],this.#r=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#n,packageDevDependencies:this.#r,setInProgress:this.setInProgress.bind(this),context:this.#t,Atom:eo,registerToPackageManager:this.registerToPackageManager.bind(this)}}async _cache_set(e,t,a){this._redis_client&&await this._redis_client.SETEX(e,a||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async init(){this._redis_client=await Ma(),this.#c=this.#t.buildId||Fa(24),this.#y.buildId=this.#c,this.#m=this.#t.mode,this.#u=["all","deploy","build","file"].includes(this.#m),this.#f=["all","deploy","build"].includes(this.#m),this.#g=["all","deploy"].includes(this.#m),this.#l=this.#t.protocol,this.#p="BUILD:"+this.#c,this.#d=(await ao({optional:!0,name:this.#t.atomConfig||"atom",dir:this.#t.projectDir,tags:this.#t.tags}))?.data;try{await this.setInProgress({message:"Initialization started."}),await this.initAuth(),await this.initLibrary(),await La(this.#y),await Na(this.#y),await this.initLibraryDir(),await this.initNunjucks(),await this.initLibs()}catch(e){throw await this._cache_set(this.#p,{status:"FAILED",message:e?.message||e}),e}}async initAuth(){this.#t.id&&(this.#i=await this.#e.init({config:this.#d}),this.#y.atomAccessToken=this.#i)}async initLibrary(){const e=this.#t.id;this.#a=this.#t.project?.libraryAtom||await eo.get({id:e});let t=this.#a.doc.bundleName;t=t||(this.#a.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#a.doc.bundleName=t,this.#a.type=this.#a.type||"workflow.lib",this.#y.atom=this.#a}async initLibraryDir(){const e=this.#t.projectDir;let t;const a=["node_modules"];Ta.existsSync(e)&&Ta.readdirSync(e).forEach((o=>{a.includes(o)||(t=Ca.rm("-rf",$a.join(e,o)))}));let o=e;if(!Ta.existsSync(o)&&(t=Ca.exec(`mkdir "${e}"`),0!==t.code))throw new Error("Couldnt create workflow dir.");if(o=$a.join(e,"src"),!Ta.existsSync(o)&&(t=Ca.exec(`mkdir "${o}"`),0!==t.code))throw new Error("Couldnt create library/src dir.");if(o=$a.join(e,"src","default"),!Ta.existsSync()&&(t=Ca.exec(`mkdir "${o}"`),0!==t.code))throw new Error("Couldnt create library/src/default dir.")}async initNunjucks(){const e=this.#t.templateDir;this.#o=Ra.configure(e,{watch:!1,dev:!0}),this.#y.njEnv=this.#o}async initLibs(){const e=[{name:this.#a.doc.name,type:"atom",parent_id:this.#a.parent_id}];this.#s=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.#n})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const a=e.filter((e=>"atom"===e.type));for(let e=0;e<a.length;e++){const o=a[e],s=await this.findAtomLibrary({url:o.name});o.atom=s;const n=s.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));n?.forEach((e=>{const a=t.find((t=>t.package===e.package));a?"string"==typeof e.path?(a.path||[]).some((t=>t===e.path))||(a.path=a.path||[],a.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(a.path||[]).some((t=>t===e))||(a.path=a.path||[],a.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const t=to({url:e});if(!t)throw new Error(`Invalid package name: ${e}`);if(t.protocol||(t.protocol=this.#l),"ac:"===t.protocol){const a=t.pathname.split("/");if(1===a.length)return await eo.first({where:{name:e,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===a.length){const e=await eo.first({where:{name:a[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await eo.first({where:{name:a[1],parent_id:e.id,type:"workflow.lib"}})}}else if("local:"===t.protocol){const e=this.#a;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=$a.resolve(this.#t.projectSrcDir,"index.js"),a=await oo({file:t,recursive:!0}),o=e.doc.dependencies,s=!0===this.#a.doc.features.all_parsed_imports?a.all:a.required;for await(const e of s){if("npm"!==e.type)continue;if(o.find((t=>t.package===e.package)))continue;const t=await so({name:e.package,count:1});o.push({package:e.package,subpath:e.subpath,version:t.minorRange,type:"npm"})}return e}}async createAtomLibFiles({libs:e}){await this.setInProgress({message:"Creating external lib files."}),this.#a.typesDir="./types";const t=e.filter((e=>"atom"===e.type));for(let e=0;e<t.length;e++){const a=t[e].atom,o=this.#t.projectDir;if("local:"===a.protocol){const e=$a.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.js`),t=$a.relative($a.join(this.#t.projectDir,"src","default"),e);if(!Ta.existsSync(e)){Ta.mkdirSync($a.dirname(e),{recursive:!0});let t="export default async (args)=>{\n";t+="}",Ta.writeFileSync(e,t,"utf8")}a.relativePath=t.split($a.sep).join("/"),this.#a.typesDir=`./types/${$a.basename(o)}/src`}else{const e=$a.join(o,"src","libs",`${a.id}.js`),t=a.doc.contents?.find((e=>"esm"===e.format))||a.doc;Ta.writeFileSync(e,t.content,"utf8")}}}async createEngine(){await this.setInProgress({message:"Creating engine file."});const e={libs:this.#s.filter((e=>"atom"===e.type)),libraryAtom:this.#a,atom:this.#a},t=this.#t.templateDir,a=Ra.compile(Ta.readFileSync($a.resolve(t,$a.join("src","default","engine.js.njk")),"utf8"),this.#o).render(e),o=this.#t.projectDir,s=$a.resolve(o,$a.join("src","default","index.js"));Ta.writeFileSync(s,a,"utf8")}async createProjectYaml(){const e="node.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const{content:a,...o}=this.#a.doc,s={content:Oa.stringify(o)},n=this.#t.templateDir,r=Ra.compile(Ta.readFileSync($a.resolve(n,`${e}.njk`),"utf8"),this.#o).render(s),i=this.#t.projectDir,c=$a.resolve(i,`${e}`);Ta.writeFileSync(c,r,"utf8")}async deploy(){if(await this.setInProgress({message:"Deploying."}),this.#t.project?.devops){const e=[this.#t.project?.devops];for(let t=0;t<e.length;t++){let a=e[t];await this.deployProject({deploymentProject:a}),!0===a.isDirty&&await a.save()}}else if(this.#a.id){const e=await eo.list({type:"library.deploy",parent_id:this.#a.id});for(let t=0;t<e.length;t++){let a=e[t];await this.deployProject({deploymentProject:a}),!0===a.isDirty&&(a=await eo.update(a,{id:a.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:a}=t,o=a.get("targets")||[],s=t.doc.targets||[];for(let e=0;e<s.length;e++){const a=s[e],n=o.items[e];await Va({...this.#y,deploymentProject:t,deploymentProjectTarget:a,yamlTarget:n})}}async registerToPackageManager(e){const{target:t,packageJSON:a}=e;if(!this.#t.id)return;let o=await eo.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:a.version}),await eo.update(o,{id:o.id})):o=await eo.create({parent_id:this.#d.env.ATOM_PACKAGES_ID,doc:{name:t.params.name,type:"pm",versions:[{v:a.version}]}})}async setInProgress({message:e}){console.log(no.blue(e)),await this._cache_set(this.#p,{status:"IN_PROGRESS",message:e})}async build(){try{this.#u&&(await this.createAtomLibFiles({libs:this.#s}),await this.createEngine(),await this.createProjectYaml(),await Ha(this.#y),await Ga(this.#y),await Ka(this.#y),await Wa(this.#y),await za(this.#y),await Ua(this.#y),await Ja(this.#y),await Ba(this.#y),await Xa(this.#y),await Ya(this.#y),this.#f&&(await Za(this.#y),await Qa(this.#y),this.#g&&await this.deploy())),await this._cache_set(this.#p,{status:"COMPLETED"})}catch(e){throw await this._cache_set(this.#p,{status:"FAILED",message:e.message||e}),console.log(e),e}}};const io=l,co=d;var po=function({baseDir:e=__dirname}){let t=e;for(;t!==co.parse(t).root;){const e=co.join(t,"node_modules");if(io.existsSync(e))return e;t=co.dirname(t)}return null};const lo=process.cwd(),{spawn:mo}=e;t({name:["redis"],dir:lo,optional:!0});const uo=a,fo=o,go=s,yo=n,ho=r,wo=i,bo=t,vo=c,_o=p,jo=ro,ko=po({baseDir:__dirname}),Do="win32"===process.platform?";":":";process.env.PATH=`${uo.join(ko,"/.bin")}${Do}${process.env.PATH}`;let xo=fo(process.argv.slice(2)).command("create","Create flow node project",(e=>e.option("name",{type:"Project name",demandOption:!0}).option("vscode",{type:"boolean",default:!0,alias:"vs"})),(async e=>{try{const t=uo.resolve(ko,"@fnet/cli-project-node/dist/template/project"),a=uo.resolve(lo,e.name);go.existsSync(a)||go.mkdirSync(a),await _o({dir:t,outDir:a,context:e,copyUnmatchedAlso:!0});let o=ho.exec("fnode build",{cwd:a});if(0!==o.code)throw new Error("Failed to build project.");if(ho.which("git")&&(o=ho.exec("git init --initial-branch=main",{cwd:a}),0!==o.code))throw new Error("Failed to initialize git.");if(ho.which("code")&&e.vscode&&(o=ho.exec(`cd ${a} && code .`),0!==o.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})).command("project","Flow node project",(e=>e.option("update",{type:"boolean",default:!1,alias:"-u"})),(async e=>{try{const t=uo.resolve(ko,"@fnet/cli-project-node/dist/template/project"),a=process.cwd();if(e.name=uo.basename(a),e.update){if(await _o({dir:t,outDir:a,context:e,copyUnmatchedAlso:!0}),0!==ho.exec("fnode build",{cwd:a}).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(e){console.error("Project failed.",e.message),process.exit(1)}})).command("build","Build flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"]}).option("ftag",{type:"array"})),(async e=>{try{const t=await So(e),a=new jo(t);await a.init(),await a.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})).command("deploy","Build and deploy flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await So({...e,mode:"all"}),a=new jo(t);await a.init(),await a.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})).command("file","Just create files",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await So({...e,mode:"file"}),a=new jo(t);await a.init(),await a.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}}));function Ao(e,{name:t,bin:a,preArgs:o=[]}){return e.command(`${t||a} [commands..]`,`${a} ${o.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const t=await So(e),{projectDir:s}=t,n=process.argv.slice(3);mo(a,[...o,...n],{cwd:s,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function So(e){if(e.id)return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",templateDir:uo.resolve(ko,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:uo.resolve(ko,"./@fnet/cli-project-common/dist/template/default"),projectDir:uo.resolve(lo,`./.output/${e.id}`),tags:e.ftag};{const t=await async function({tags:e}){const t=uo.resolve(lo,"node.yaml");if(!go.existsSync(t))throw new Error("node.yaml file not found in current directory.");const{raw:a,parsed:o}=await wo({file:t,tags:e}),s=uo.dirname(t),n={libraryAtom:{doc:{...o},fileName:"index"},projectDir:s,projectFilePath:t,projectFileContent:a,projectFileParsed:o};let r=uo.resolve(s,"fnet/targets.yaml");if(!go.existsSync(r)&&(r=uo.resolve(s,"node.devops.yaml"),go.existsSync(r))){const e=uo.resolve(s,"fnet");go.existsSync(e)||go.mkdirSync(e),go.copyFileSync(r,uo.resolve(s,"fnet/targets.yaml")),go.unlinkSync(r)}if(go.existsSync(r)){const{raw:t,parsed:a}=await wo({file:r,tags:e}),o=yo.parseDocument(t);n.devops={filePath:r,fileContent:t,yamlDocument:o,doc:{...a},type:"library.deploy",save:async()=>{go.writeFileSync(n.devops.filePath,o.toString())}}}const i=uo.resolve(s,"readme.md");if(go.existsSync(i)){const e=go.readFileSync(i,"utf8");n.readme={filePath:i,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return n}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:uo.resolve(ko,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:uo.resolve(ko,"./@fnet/cli-project-common/dist/template/default"),projectDir:uo.resolve(t.projectDir,"./.workspace"),projectSrcDir:uo.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}xo=xo.command("create-input <name>","Create an input config file",(e=>e.positional("name",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await So(e),{project:a}=t,{projectDir:o,projectFileParsed:s}=a,n=s.input;if(!n)throw new Error("Config schema not found in project file.");const r=await vo({schema:n,format:"yaml"}),i=uo.resolve(o,".fnet");go.existsSync(i)||go.mkdirSync(i);const c=uo.resolve(i,`${e.name}.fnet`);go.writeFileSync(c,r)}catch(e){console.error(e.message),process.exit(1)}})),xo=function(e){return e.command("update-input <name>","Update an input config file",(e=>e.positional("name",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await So(e),{project:a}=t,{projectDir:o,projectFileParsed:s}=a,n=s.input;if(!n)throw new Error("Config schema not found in project file.");const r=uo.resolve(o,".fnet"),i=uo.resolve(r,`${e.name}.fnet`),c=await vo({schema:n,format:"yaml",ref:i});go.existsSync(r)||go.mkdirSync(r),go.writeFileSync(i,c)}catch(e){console.error(e.message),process.exit(1)}}))}(xo),xo=Ao(xo,{bin:"npm"}),xo=Ao(xo,{bin:"node"}),xo=Ao(xo,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),xo=Ao(xo,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),xo=Ao(xo,{name:"app",bin:"npm",preArgs:["run","app","--"]}),xo=Ao(xo,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),xo=Ao(xo,{bin:"npx"}),xo=Ao(xo,{bin:"cdk"}),xo=Ao(xo,{bin:"aws"}),xo=function(e,{name:t,preArgs:a=[]}){return e.command(`${t} <config> <command> [options..]`,"Run a command with a config context",(e=>e.positional("config",{type:"string"}).positional("command",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await So(e),{projectDir:o}=t,s=e.config,n=await bo({name:s,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),r=n?.data?.env||void 0,i=e.command,c=process.argv.slice(5);mo(i,[...a,...c],{cwd:o,stdio:"inherit",shell:!0,env:{...process.env,...r}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(xo,{name:"with"}),xo.demandCommand(1,"You need at least one command before moving on").help().argv,module.exports={};
|
package/dist/builder/wf-cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var e=require("child_process"),t=require("@fnet/config"),n=require("path"),o=require("yargs/yargs"),a=require("fs"),i=require("yaml"),s=require("shelljs"),r=require("@fnet/yaml"),c=require("@fnet/object-from-schema"),l=require("@flownet/lib-render-templates-dir"),p=require("node:fs"),d=require("node:path"),f=require("nunjucks"),m=require("lodash.clonedeep"),u=require("isobject"),g=require("redis"),h=require("@flownet/lib-is-redis-online"),w=require("nanoid"),y=require("@flownet/lib-atom-api-js"),v=require("axios"),b=require("qs"),x=require("lodash.merge"),k=require("@flownet/lib-parse-imports-js"),_=require("@flownet/lib-list-npm-versions"),j=require("@fnet/yargs-options-from-schema"),D=require("@fnet/shell"),P=require("semver"),S=require("node:os"),A=require("@node-red/util"),T=require("@flownet/lib-to-ios-app"),E=require("@flownet/lib-to-macos-app"),$=require("@flownet/lib-to-electron"),O=require("@flownet/lib-to-webos"),I=require("@flownet/lib-to-nextjs"),C=require("@flownet/lib-to-docker"),N=require("form-data"),R=require("@fnet/to-rust"),M=require("@flownet/lib-parse-node-url"),F=require("@flownet/lib-bpmn-from-flow"),q=require("@fnet/expression"),U=require("chalk"),L=require("lodash.pick"),B=require("lodash.omit");const J=g,z=h;const{Api:W}=y,K=v.default,G=b;var H=({feature:e,features:t,packageDevDependencies:n})=>{const{name:o,packages:a,options:i}=e,s=`${o}_enabled`,r=t.rollup_output||{},c=Object.keys(r),l=i||{};c.forEach((e=>{const n=t.rollup_output[e];if(Reflect.has(n,o)){if(!n[o]||!1===n[o]?.enabled)return void delete n[o];!0===n[o]&&(n[o]={enabled:!0,options:l})}else{if(!t[o]||!1===t[s])return;n[o]={enabled:!0}}n[o]=n[o]||{},n[o].options={...l,...n[o].options}}));const p=c.some((e=>!0===t.rollup_output[e][o]?.enabled));t[s]=p,p&&a.forEach((e=>n.push({package:e[0],version:e[1]})))};const V=H;const X=H;const Y=H;const Z=H;const Q=H;const ee=H;const te=H;const ne=H;const oe=H;const ae=H;const ie=H;const se=x,re=p,ce=d,le=k,pe=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;V({feature:{name:"workbox",packages:[["rollup-plugin-workbox","^8"]],options:{generate:{swDest:"dist/app/esm/sw.js",globDirectory:"dist/app/esm",globPatterns:["**/*.{html,js,css,png,jpg}"],skipWaiting:!0,clientsClaim:!0}}},features:o,packageDevDependencies:n})},de=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;X({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]]},features:o,packageDevDependencies:n})},fe=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;Y({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.3"]]},features:o,packageDevDependencies:n})},me=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;Z({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:o,packageDevDependencies:n})},ue=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;Q({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]]},features:o,packageDevDependencies:n})},ge=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ee({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12}},features:o,packageDevDependencies:n})},he=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;te({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:o,packageDevDependencies:n})},we=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ne({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:o,packageDevDependencies:n})},ye=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;oe({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:o,packageDevDependencies:n})},ve=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ae({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:o,packageDevDependencies:n})},be=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ie({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:o,packageDevDependencies:n})};function xe({dir:e,name:t="index"}){let n=ce.resolve(e,`./${t}.tsx`);if(re.existsSync(n)||(n=ce.resolve(e,`./${t}.ts`)),re.existsSync(n)||(n=ce.resolve(e,`./${t}.jsx`)),re.existsSync(n)||(n=ce.resolve(e,`./${t}.js`)),!re.existsSync(n))return{};const o=n,a=ce.extname(n);return{file:o,ext:a,ts:".ts"===a||".tsx"===a,name:t}}const ke=_;const _e=p,je=d,De=l;const Pe=f,Se=p,Ae=d,Te=k,Ee=_;const $e=p,Oe=d,Ie=l;const Ce=p,Ne=d,Re=f,Me=k;const Fe=p,qe=d,Ue=f,Le=j;const Be=p,Je=d,ze=f;const We=p,Ke=d,Ge=f;const He=f,Ve=p,Xe=d,Ye=r;const Ze=s,Qe=n;const et=s;const tt=s;const nt=s;const ot=D,at=t;const it=p,st=d,rt=P,ct=D,lt=t;const pt=p,dt=d,ft=P,mt=s,ut=t;const gt=p,ht=d,wt=S,yt=f,vt=A,bt=t;const xt=a,kt=n,_t=t;const jt=t,Dt=T,Pt=m,St=P;const At=t,Tt=E,Et=m,$t=P;const Ot=t,It=$,Ct=m,Nt=P;const Rt=t,Mt=O,Ft=m,qt=P;const Ut=t,Lt=I,Bt=m,Jt=P;const zt=t,Wt=C,Kt=m,Gt=P;const Ht=p,Vt=d,Xt=P,Yt=D,Zt=t,Qt=v.default;const en=P,tn=t,nn=v.default;const on=P,an=t,sn=v.default,rn=a,cn=D,ln=N;const pn=P,dn=t,fn=v.default,mn=a,un=D,gn=N;const hn=t,wn=R,yn=m,vn=P;const bn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,buildId:a})=>{await e({message:"Deploying it as gitlab project."});const i=t.projectDir;let s="fnet-to-gitlab";const r=o.params.config||"gitlab",c=await at({name:r,dir:t.projectDir,tags:t.tags});if(!c)throw new Error(`Couldnt load config ${r}`);const{data:l}=c.data;s+=` --projectGroupId=${l.projectGroupId}`,s+=` --projectPath='${i}'`,s+=` --projectName='${o.params.name}'`,s+=` --projectBranch='${o.params.branch||"main"}'`,s+=` --gitlabHost='${l.gitlabHost}'`,s+=` --gitlabToken='${l.gitlabToken}'`,s+=` --gitlabUsername='${l.gitlabUsername}'`,s+=` --gitlabUserEmail='${l.gitlabUserEmail}'`,!0!==o.dryRun&&(await ot({cmd:s}),n.isDirty=!0)},xn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,registerToPackageManager:a,yamlTarget:i})=>{await e({message:"Deploying it as gcs package."});const s=t.projectDir,r=st.resolve(s,"package.json"),c=it.readFileSync(r),l=JSON.parse(c);l.name=o.params.name,l.version=rt.inc(o.params.version,"patch"),delete l.scripts,delete l.devDependencies,it.writeFileSync(r,JSON.stringify(l,null,"\t"));const{file:p,data:d}=await lt({name:o.config||"gcs",dir:t.projectDir,tags:t.tags});let f="fnet-files-to-gcs";f+=` --projectId='${d.env.GCS_PROJECT_ID}'`,f+=` --bucketName='${d.env.GCS_BUCKET_NAME}'`,f+=` --keyFilename='${st.resolve(st.dirname(p),d.env.GCS_UPLOADER_KEY_FILE)}'`,f+=` --dir='${s}'`,f+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",f+=` --destDir='${l.name}/${l.version}'`,f+=" --metadata.cacheControl='public, max-age=31536000, immutable'",d.env.DOMAIN&&(f+=` --domain='${d.env.DOMAIN}'`),!0!==o.dry_run&&!0!==o.params.dry_run||(f+=" --dryRun"),await ct({cmd:f}),it.writeFileSync(r,c),!0!==o.dryRun&&(n.isDirty=!0,o.params.version=l.version,i.get("params").set("version",l.version),await a({target:o,packageJSON:l}))},kn=async({atom:e,setInProgress:t,context:n,deploymentProject:o,deploymentProjectTarget:a,yamlTarget:i})=>{await t({message:"Deploying it as npm package."});const s=n.projectDir,r=dt.resolve(s,"package.json"),c=pt.readFileSync(r),l=JSON.parse(c);l.name=a.params.name,l.version=ft.inc(a.params.version,"patch");const p=a.params.bin?.name||a.params.bin;!1!==a.params.bin?.enabled&&p&&"string"==typeof p&&(l.bin={[p]:"dist/cli/esm/index.js",[e.doc.name]:"dist/cli/esm/index.js"}),delete l.scripts,delete l.devDependencies,l.scripts={serve:"npx serve ."},pt.writeFileSync(r,JSON.stringify(l,null,"\t"));const d=(await ut({name:n.npmConfig||"npm",dir:n.projectDir,tags:n.tags}))?.data;if(pt.writeFileSync(dt.resolve(s,".npmrc"),`//registry.npmjs.org/:_authToken=${d.env.NPM_TOKEN}`),!0===a.dryRun)return;if(0!==mt.exec("npm publish --access public",{cwd:s}).code)throw new Error("Couldnt publish to npm");pt.writeFileSync(r,c),o.isDirty=!0,a.params.version=l.version,i.get("params").set("version",l.version)},_n=async({atom:e,setInProgress:t,context:n,deploymentProject:o,deploymentProjectTarget:a,buildId:i,packageDependencies:s,njEnv:r})=>{await t({message:"Deploying it as node-red flow."});const c=n.projectDir,l=n.templateDir,p="workflow"===e.type?"WF":"LIB";let d;if("simple"===a.deploy.template)d={atom:e,packageDependencies:s,red:{tab:{id:a.deploy.id||vt.util.generateId(),label:`${p}/${e.id?e.id:wt.hostname()}/${e.name}/${a.deploy.name||a.deploy.template}`},function:{id:vt.util.generateId(),name:e.doc.name,initialize:{content:gt.readFileSync(ht.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},inject:{id:vt.util.generateId(),...a.params?.inject,payload:"json"===a.params?.inject?.payloadType?`'${JSON.stringify(a.params?.inject?.payload)}'`:a.params?.inject?.payload},debug:{id:vt.util.generateId()}}};else if("cronjob"===a.deploy.template){let t=a.params?.schedules?cloneDeep(a.params?.schedules):void 0;t?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),d={atom:e,packageDependencies:s,red:{tab:{id:a.deploy.id||vt.util.generateId(),label:`${p}/${e.id?e.id:wt.hostname()}/${a.deploy.name||a.deploy.template}`},function:{id:vt.util.generateId(),name:e.doc.name,initialize:{content:gt.readFileSync(ht.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},cronjob:{id:vt.util.generateId(),schedules:t},debug:{id:vt.util.generateId()}}}}else{if("http"!==a.deploy.template)return;d={atom:e,packageDependencies:s,red:{tab:{id:a.deploy.id||vt.util.generateId(),label:`${p}/${e.id?e.id:wt.hostname()}/${a.deploy.name||a.deploy.template}`},function:{id:vt.util.generateId(),name:e.doc.name,initialize:{content:gt.readFileSync(ht.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},httpin:{id:vt.util.generateId(),method:a.params.method||"get",url:a.params.url},httpout:{id:vt.util.generateId()},debug:{id:vt.util.generateId()}}}}let f=yt.compile(gt.readFileSync(ht.resolve(l,`deploy/node-red/${a.deploy.template}.yaml.njk`),"utf8"),r).render(d);if(gt.writeFileSync(ht.resolve(c,"node-red.yaml"),f),f=yaml.load(f),!0===a.dryRun)return;o.isDirty=!0;const m=(await bt({name:n.redConfig||"red",dir:n.projectDir,tags:n.tags}))?.data,u=a.deploy.url||m.env.RED_URL,g={};if(!1!==a.deploy.auth&&(g.Authorization="Bearer "+atomAccessToken),a.deploy.id)!0===a.actions?.delete?(await axios({method:"DELETE",url:`${u}/flow/${a.deploy.id}`,headers:g}),delete a.actions.delete,delete a.deploy.id,a.enabled=!1):await axios({method:"PUT",url:`${u}/flow/${a.deploy.id}`,data:f,headers:g});else{const e=await axios({method:"POST",url:`${u}/flow`,data:f,headers:g});a.deploy.id=e.data.id}},jn=async({atom:e,Atom:t,setInProgress:n,context:o,packageDependencies:a,deploymentProject:i,deploymentProjectTarget:s})=>{await n({message:"Deploying it as workflow lib."});const r=(await _t({name:"atom",dir:o.projectDir,tags:o.tags}))?.data;let c,l,p,d=s.deploy.name.split("/");if(1===d.length)l=r.env.ATOM_LIBRARIES_ID,p=s.deploy.name;else{if(2!==d.length)throw new Error("Wrong name path.");{const e=await t.first({where:{name:d[0],parent_id:r.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");l=e.id,p=d[1]}}if(!0===s.dryRun)return;if(i.isDirty=!0,s.deploy.id){if(c=await t.get({id:s.deploy.id}),!c)return}else{if(c=await t.create({parent_id:l,doc:{name:p,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!c)return;s.deploy.id=c.id}const f=o.projectDir;c.doc.contents=[{content:xt.readFileSync(kt.resolve(f,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:xt.readFileSync(kt.resolve(f,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:xt.readFileSync(kt.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],c.doc.name=p,c.doc.dependencies=a,"workflow.lib"===e.type?c.doc.subtype="library":"workflow"===e.type&&(c.doc.subtype="workflow"),c=await t.update(c,{id:c.id})},Dn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as ios-app package."});const r=t?.config?await jt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=St.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=Pt(t.params);l.dependencies=Pt(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Dt(p)}},Pn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as macos-app package."});const r=t?.config?await At({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=$t.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=Et(t.params);l.dependencies=Et(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Tt(p)}},Sn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as electron package."});const r=t?.config?await Ot({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=Nt.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=Ct(t.params);l.dependencies=Ct(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await It(p)}},An=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as webos package."});const r=t?.config?await Rt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=qt.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=Ft(t.params);l.dependencies=Ft(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Mt(p)}},Tn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as nextjs package."});const r=t?.config?await Ut({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=Jt.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=Bt(t.params);l.dependencies=Bt(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Lt(p)}},En=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as docker package."});const r=t?.config?await zt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=Gt.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=Kt(t.params);l.dependencies=Kt(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Wt(p)}},$n=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:a})=>{await e({message:"Deploying it as fnet package."});const i=t.projectDir,s=Vt.resolve(i,"package.json"),r=Ht.readFileSync(s),c=JSON.parse(r);c.name=o.params.name,c.version=Xt.inc(o.params.version,"patch"),delete c.scripts,delete c.devDependencies,Ht.writeFileSync(s,JSON.stringify(c,null,"\t"));const{file:l,data:p}=await Zt({name:o.config||"fnet-package",dir:t.projectDir,tags:t.tags});if(!p.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${l}`);if(!p.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${l}`);if(!p.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${l}`);const d=`${p.env.ATOM_API_URL}/v1/auth/token`,f=p.env.ATOM_API_USERNAME,m=p.env.ATOM_API_PASSWORD;let u=await Qt({method:"POST",url:d,data:{username:f,password:m},headers:{"Content-Type":"application/json"}});const g=u.data?.access_token;if(!g)throw new Error(`Invalid access_token from ${d}`);let h="fnet-files-to-gcs";if(h+=` --projectId='${p.env.GCS_PROJECT_ID}'`,h+=` --bucketName='${p.env.GCS_BUCKET_NAME}'`,h+=` --keyFilename='${Vt.resolve(Vt.dirname(l),p.env.GCS_UPLOADER_KEY_FILE)}'`,h+=` --dir='${i}'`,h+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",h+=` --destDir='${c.name}/${c.version}'`,h+=" --metadata.cacheControl='public, max-age=31536000, immutable'",p.env.DOMAIN&&(h+=` --domain='${p.env.DOMAIN}'`),!0!==o.dry_run&&!0!==o.params.dry_run||(h+=" --dryRun"),await Yt({cmd:h}),Ht.writeFileSync(s,r),!0===o.dryRun)return;n.isDirty=!0,o.params.version=c.version,a.get("params").set("version",c.version);const w=`${p.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(u=await Qt({method:"POST",url:w,data:{name:c.name,version:c.version,version_domain:p.env.DOMAIN,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${g}`}}),u.data?.error)throw new Error("Failed to publish fnet package.")},On=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:a})=>{await e({message:"Deploying it as fnet form."});const i=en.inc(o.params.version,"patch"),{file:s,data:r}=await tn({name:o.config||"fnet-form",dir:t.projectDir,tags:t.tags});if(!r.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${s}`);if(!r.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${s}`);if(!r.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${s}`);const c=`${r.env.ATOM_API_URL}/v1/auth/token`,l=r.env.ATOM_API_USERNAME,p=r.env.ATOM_API_PASSWORD;let d=await nn({method:"POST",url:c,data:{username:l,password:p},headers:{"Content-Type":"application/json"}});const f=d.data?.access_token;if(!f)throw new Error(`Invalid access_token from ${c}`);n.isDirty=!0,o.params.version=i,a.get("params").set("version",i);const m=`${r.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(d=await nn({method:"POST",url:m,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${f}`}}),d.data?.error)throw new Error("Error publishing fnet form.")},In=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:a})=>{await e({message:"Deploying it as fnet flow."});const i=on.inc(o.params.version,"patch"),{file:s,data:r}=await an({name:o.config||"fnet-flow",dir:t.project.projectDir,tags:t.tags});if(!r.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${s}`);if(!r.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${s}`);if(!r.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${s}`);const c=`${r.env.ATOM_API_URL}/v1/auth/token`,l=r.env.ATOM_API_USERNAME,p=r.env.ATOM_API_PASSWORD;let d=await sn({method:"POST",url:c,data:{username:l,password:p},headers:{"Content-Type":"application/json"}});const f=d.data?.access_token;if(!f)throw new Error(`Invalid access_token from ${c}`);n.isDirty=!0,o.params.version=i,a.get("params").set("version",i);const m=`${r.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(d=await sn({method:"POST",url:m,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${f}`}}),d.data?.error)throw new Error("Error publishing fnet flow.");const u=d.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const h=await cn({cmd:g});if(0!==h.code)throw new Error(h.stderr);const w=JSON.parse(h.stdout).path;let y=new ln;y.append("file",rn.createReadStream(w));const v=await sn.request({method:"POST",maxBodyLength:1/0,url:`${r.env.ATOM_API_URL}/v1/service/upload/single/${u}`,headers:{...y.getHeaders(),Authorization:`Bearer ${f}`},data:y});if(v.data?.error)throw new Error("Error uploading fnet flow.")},Cn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:a})=>{await e({message:"Deploying it as fnet node."});const i=pn.inc(o.params.version,"patch"),{file:s,data:r}=await dn({name:o.config||"fnet-node",dir:t.project.projectDir,tags:t.tags});if(!r.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${s}`);if(!r.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${s}`);if(!r.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${s}`);const c=`${r.env.ATOM_API_URL}/v1/auth/token`,l=r.env.ATOM_API_USERNAME,p=r.env.ATOM_API_PASSWORD;let d=await fn({method:"POST",url:c,data:{username:l,password:p},headers:{"Content-Type":"application/json"}});const f=d.data?.access_token;if(!f)throw new Error(`Invalid access_token from ${c}`);n.isDirty=!0,o.params.version=i,a.get("params").set("version",i);const m=`${r.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(d=await fn({method:"POST",url:m,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${f}`}}),d.data?.error)throw new Error("Error publishing fnet node.");const u=d.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const h=await un({cmd:g});if(0!==h.code)throw new Error(h.stderr);const w=JSON.parse(h.stdout).path;let y=new gn;y.append("file",mn.createReadStream(w));const v=await fn.request({method:"POST",maxBodyLength:1/0,url:`${r.env.ATOM_API_URL}/v1/service/upload/single/${u}`,headers:{...y.getHeaders(),Authorization:`Bearer ${f}`},data:y});if(v.data?.error)throw new Error("Error uploading fnet node.")},Nn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as Rust package."});const r=t?.config?await hn({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=vn.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=yn(t.params);l.dependencies=yn(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await wn(p)}};const Rn=m;async function Mn({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||Rn(e.definition);for(const t of e.childs)t.context.transform=t.context.transform||Rn(t.definition),t.definition.hasOwnProperty("condition")&&(t.context.transform.condition=await o(t.definition.condition));await t({node:e}),n({node:e})}var Fn={hits:async function({node:e}){if(!e.definition.hasOwnProperty("switch"))return!1;const t=e.definition.switch||[];if(!t.every((e=>e.hasOwnProperty("condition")||e.hasOwnProperty("default"))))throw new Error("Switch must have condition or default");if(0===t.filter((e=>e.hasOwnProperty("condition"))).length)throw new Error("Switch must have at least one condition");const n=t.filter((e=>e.hasOwnProperty("default")));if(n.length>1)throw new Error("Switch must have only one default");if(1===n.length&&!t[t.length-1].hasOwnProperty("default"))throw new Error("Switch default must be the last child");return!0},init:async function({node:e,initNode:t}){e.type="switch",e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0;for(let n=0;n<e.definition.switch.length;n++){let o=e.definition.switch[n],a=`${n}`;o.hasOwnProperty("default")&&(a="default",o=o.default);const i={name:o.condition||a,childs:[],parent:e,definition:o,index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=Mn},resolve:Mn};const qn=q,Un=Fn;var Ln={hits:async function({node:e}){const t=Object.keys(e.definition);return 1===(await Promise.all(t.map((e=>qn({expression:e}))))).filter((e=>"if"===e?.processor)).length},init:async function(e){const{node:t}=e,n=Object.keys(t.definition),o=await Promise.all(n.map((e=>qn({expression:e})))),a=[],i=o.find((e=>"if"===e?.processor)),s=t.definition[i.expression];a.push({name:`${t.name}_if`,definition:s,processor:i}),delete t.definition[i.expression];const r=o.filter((e=>"elseif"===e?.processor));let c=0;for(const e of r){const n=t.definition[e.expression];a.push({name:`${t.name}_elseif_${c++}`,definition:n,processor:e}),delete t.definition[e.expression]}t.definition.switch=[];for(const e of a)t.definition.switch.push({condition:e.processor.statement,...e.definition});await Un.init(e)}};const Bn=m;async function Jn({node:e,resolveTypeCommon:t,resolveNextBlock:n}){if(e.context.transform=e.context.transform||Bn(e.definition),e.context.transform,e.context.try=e.childs.find((e=>"try"===e.name)),e.context.except=e.childs.find((e=>"except"===e.name)),e.context.except){const t=e.context.except;t.context.transform=t.context.transform||Bn(t.definition),t.context.transform.hasOwnProperty("as")||(t.context.transform.as="error")}await t({node:e}),n({node:e})}var zn={hits:async function({node:e}){return e.definition.hasOwnProperty("try")&&e.definition.hasOwnProperty("except")},init:async function({node:e,initNode:t}){if(e.type="tryexcept",e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0,e.definition.try){const n="try",o={name:n,childs:[],parent:e,definition:e.definition[n],index:e.childs.length,context:{}};e.childs.push(o),await t({node:o})}if(e.definition.except){const n="except",o={name:n,childs:[],parent:e,definition:e.definition[n],index:e.childs.length,context:{}};e.childs.push(o),await t({node:o})}e.resolve=Jn},resolve:Jn};const Wn=m;async function Kn({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=Wn(e.definition);const a=e.context.transform;for(let e=0;e<a.assign?.length;e++){let t=a.assign[e],n=Object.keys(t)[0],i=t[n],s={key:await o(n),value:await o(i)};a.assign[e]=s}await t({node:e}),n({node:e})}var Gn={hits:async function({node:e}){return e.definition.hasOwnProperty("assign")},init:async function({node:e,initNode:t}){e.type="assign",e.resolve=Kn},resolve:Kn};const Hn=m,Vn=L,Xn=B;async function Yn({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||Hn(e.definition);e.context.transform.for.in=await o(e.definition.for.in),await t({node:e}),n({node:e})}var Zn={hits:async function({node:e}){return e.definition.hasOwnProperty("for")},init:async function({node:e,initNode:t}){if(e.type="for",e.blockAutoJumpToParent=!0,e.blockAutoJumpToSibling=!1,!e.definition.for.hasOwnProperty("steps")){const t=["value","in"],[n,o]=[Vn(e.definition.for,t),Xn(e.definition.for,t)];e.definition.for=n,e.definition.for.steps=[{[`${e.name}_step`]:o}]}Array.isArray(e.definition.for.steps)||(e.definition.for.steps=[{[`${e.name}_step`]:e.definition.for.steps}]);for(let n=0;n<e.definition.for.steps.length;n++){const o=e.definition.for.steps[n],a=Object.keys(o)[0],i={name:a,childs:[],parent:e,definition:o[a],index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=Yn},resolve:Yn};var Qn={hits:async function({node:e}){return!1},init:async function({node:e,initNode:t}){},resolve:async function({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o,transformValue:a}){}};const eo=m;async function to({node:e,resolveTypeCommon:t,transformExpression:n}){e.context.transform=e.context.transform||eo(e.definition);const o=e.context.transform;o.raise=await n(o.raise),await t({node:e})}var no={hits:async function({node:e}){return e.definition.hasOwnProperty("raise")},init:async function({node:e,initNode:t}){e.type="raise",e.resolve=to},resolve:to};const oo=m;async function ao({node:e,resolveTypeCommon:t,transformExpression:n}){e.context.transform=e.context.transform||oo(e.definition);const o=e.context.transform;o.return=await n(o.return),await t({node:e})}var io={hits:async function({node:e}){return e.definition.hasOwnProperty("return")},init:async function({node:e,initNode:t}){e.type="return",e.resolve=ao},resolve:ao};const so=m;async function ro({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||so(e.definition);const a=e.context.transform;a.args&&(a.args=await o(a.args)),a.result&&(a.result=await o(a.result));const i=e.workflow.parent;e.context.lib=i.context.libs.find((e=>e.name===a.call)),await t({node:e}),n({node:e})}var co={hits:async function({node:e}){return e.definition.hasOwnProperty("call")},init:async function({node:e,initNode:t}){e.type="call";for(let n=0;n<e.definition.modules?.length;n++){const o=e.definition.modules[n],a=Object.keys(o)[0],i={name:a,childs:[],parent:e,definition:o[a],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=ro},resolve:ro};const lo=co;var po={hits:async function({node:e}){return e.definition.hasOwnProperty("shell")},init:async function(e){const{node:t}=e,n="shell",o=t.definition,a=typeof o[n];if("string"!==a&&"object"!==a)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/shell",o.args="string"===a?{...o.args,cmd:o[n]}:o[n],delete o[n],await lo.init(e)}};const fo=co;var mo={hits:async function({node:e}){return e.definition.hasOwnProperty("config")},init:async function(e){const{node:t}=e,n="config",o=t.definition,a=typeof o[n];if("string"!==a&&"object"!==a)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/config",o.args="string"===a?{...o.args,name:o[n]}:o[n],delete o[n],await fo.init(e)}};const uo=co;var go={hits:async function({node:e}){return e.definition.hasOwnProperty("yaml")},init:async function(e){const{node:t}=e,n="yaml",o=t.definition,a=typeof o[n];if("string"!==a&&"object"!==a)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/yaml",o.args="string"===a?{...o.args,file:o[n]}:o[n],delete o[n],await uo.init(e)}};async function ho({node:e}){e.context.next=e.childs[0]}var wo={hits:async function({node:e}){return e.definition.hasOwnProperty("steps")},init:async function({node:e,initNode:t}){e.type||(e.type="steps");const n=e.definition.steps||[];for await(const o of n){const n=Object.keys(o)[0],a={name:n,childs:[],parent:e,definition:o[n],index:e.childs.length,context:{}};e.childs.push(a),await t({node:a})}e.resolve=ho},resolve:ho};const yo=m;async function vo({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||yo(e.definition);const a=e.context.transform;a.props&&(a.props=await o(a.props));const i=e.workflow.parent;e.context.lib=i.context.libs.find((e=>e.name===a.form)),await t({node:e}),n({node:e})}var bo={hits:async function({node:e}){return e.definition.hasOwnProperty("form")},init:async function({node:e,initNode:t}){e.type="form";for(let n=0;n<e.definition.modules?.length;n++){const o=e.definition.modules[n],a=Object.keys(o)[0],i={name:a,childs:[],parent:e,definition:o[a],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=vo},resolve:vo};const xo=m;async function ko({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o,transformValue:a}){e.context.transform=e.context.transform||xo(e.definition),await t({node:e})}var _o={hits:async function({node:e}){return e.definition.hasOwnProperty("operation")},init:async function({node:e,initNode:t}){e.type="operation",e.resolve=ko},resolve:ko};const jo=m;async function Do({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||jo(e.definition);const a=e.context.transform;a.next=await o(a.next),await t({node:e}),n({node:e})}var Po={hits:async function({node:e}){return e.definition.hasOwnProperty("next")},init:async function({node:e,initNode:t}){e.type="jump",e.resolve=Do},resolve:Do};const So=co;var Ao={hits:async function({node:e}){return e.definition.hasOwnProperty("prompt")},init:async function(e){const{node:t}=e,n="prompt",o=t.definition,a=typeof o[n];if("string"!==a&&"object"!==a)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/prompt",o.args="string"===a?{...o.args,message:o[n]}:o[n],delete o[n],await So.init(e)}};const To=co;var Eo={hits:async function({node:e}){return e.definition.hasOwnProperty("html-script")},init:async function(e){const{node:t}=e,n="html-script",o=t.definition,a=typeof o[n];if("string"!==a&&"object"!==a)throw new Error(`Unsupported ${n} usage`);o.call="npm:@flownet/lib-load-browser-script-url",o.args="string"===a?{...o.args,src:o[n]}:o[n],delete o[n],await To.init(e)}};const $o=co;var Oo={hits:async function({node:e}){return e.definition.hasOwnProperty("html-link")},init:async function(e){const{node:t}=e,n="html-link",o=t.definition,a=typeof o[n];if("string"!==a&&"object"!==a)throw new Error(`Unsupported ${n} usage`);o.call="npm:@flownet/lib-load-browser-link-url",o.args="string"===a?{...o.args,src:o[n]}:o[n],delete o[n],await $o.init(e)}};const Io=p,Co=d,No=i,Ro=s,Mo=f,Fo=m,qo=u,Uo=async()=>{if(!await z({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=J.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e},{nanoid:Lo}=w,Bo=class{init({config:e,accessToken:t}){return new Promise(((n,o)=>{if(W.set_api_url(e.data.url),t)return W.set_req_token(t),void n(t);K({method:"POST",url:`${e.data.issuer}/protocol/openid-connect/token`,data:G.stringify(e.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((e=>{W.set_req_token(e.data.access_token),n(e.data.access_token)})).catch((e=>{W.set_req_token(),o(e)}))}))}},Jo=async e=>{const{atom:t,context:n,packageDevDependencies:o}=e;t.doc.features=t.doc.features||{};const a=t.doc.features;a.project=a.project||{},a.project.format=a.project.format||a.project_format||"esm",a.project_format=a.project.format,a.dts_enabled=!0===a.dts||void 0!==a.dts&&!1!==a.dts,a.hasOwnProperty("all_parsed_imports")||(a.all_parsed_imports=!0);const i=ce.resolve(n.project.projectDir),s=xe({dir:ce.resolve(i,"./app")});if(s.file){let e=await le({file:s.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));a.app_uses_jsx=t,a.app_has_entry=!0,e=await le({file:s.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),a.app_entry_uses_jsx=t,a.app_entry_is_ts=s.ts,a.app_entry_ext=s.ext}const r=xe({dir:ce.resolve(i,"./cli")});if(r.file){let e=await le({file:r.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));a.cli_uses_jsx=t,a.cli_has_entry=!0,e=await le({file:r.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),a.cli_entry_uses_jsx=t,a.cli_entry_is_ts=r.ts,a.cli_entry_ext=r.ext}if("workflow.lib"===t.type){const e=xe({dir:ce.resolve(i,"./src")});if(e.file){let t=await le({file:e.file,recursive:!0}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));a.src_uses_jsx=n,a.src_has_entry=!0,t=await le({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),a.src_entry_uses_jsx=n,a.src_entry_is_ts=e.ts,a.src_entry_ext=e.ext}}const c=!0===a.app_entry_uses_jsx,l=!0===a.cli_entry_uses_jsx;a.form_enabled=!0===t.doc.form||!0===t.doc.form?.enabled||!0===a.form||!0===a.form?.enabled,a.multiple_enabled=a.multiple_enabled||!0===a.multiple||!0===a.multiple?.enabled,!1===a.app?a.app={enabled:!1}:!0===a.app?a.app={enabled:!0,extend:!0===a.app_has_entry,export:!0,react:c}:a.app={enabled:!0,extend:!0===a.app_has_entry,export:!0,react:c,...a.app||{}},a.app.enabled=!0===a.app.enabled&&(!0===t.doc.features.form_enabled||!0===a.app.extend||!0===a.app.enabled),a.app.format=a.app.format||"esm",a.app.folder=a.app.folder||a.app.format||"default",!1===a.cli?a.cli={enabled:!1}:!0===a.cli?a.cli={enabled:!0,extend:!0===a.cli_has_entry,export:!0,react:l}:a.cli={enabled:!0,extend:!0===a.cli_has_entry,export:!0,react:l,...a.cli||{}},a.cli.enabled=!0===a.cli.enabled&&(!1===t.doc.features.form_enabled||!0===a.cli.extend||!0===a.cli.enabled),a.cli.format=a.cli.format||"esm",a.cli.folder=a.cli.folder||a.cli.folder||"esm",a.cli.node_options=a.cli.node?.options||a.cli.node_options||"";const p={cjs:{format:"cjs",context:a.form_enabled?"window":"global",babel:!0===a.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!0},esm:{format:"esm",context:a.form_enabled?"window":"global",babel:!0===a.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!0,copy:!0},iife:{format:"iife",context:a.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==a.iife,terser:!0}},d={};!0===a.webos&&(p.webos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/webos",babel_options:{targets:{chrome:"79"}}}),!0===a.electron&&(p.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===a.nextjs&&(p.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===a.ios&&(p.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===a.macos&&(p.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===a.app.enabled&&(a.app.dir=`./dist/app/${a.app.folder}`,p.app={format:a.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:a.app.dir,terser:!0,output_exports:!1===a.app.export?"none":"auto"},d.targets=d.targets||[],d.targets.push({src:"./src/app/index.html",dest:a.app.dir})),!0===a.cli.enabled&&(a.cli.dir=`./dist/cli/${a.cli.folder}`,p.cli={format:a.cli.format,context:"global",babel:!0===a.src_uses_jsx||!0===a.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:a.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===a.cli.export?"none":"auto"});const f={server:".",startPath:`${ce.normalize(a.app.dir||".")}`,files:[ce.normalize("./dist/**/*")],cors:!0,open:!1};a.babel_options=se({targets:{browsers:"last 9 versions, not dead",node:"18"}},a.babel_options||a.babel?.options),a.browsersync_options=se(f,a.browsersync_options||a.browsersync?.options||{}),a.replace_options=se({},a.replace_options||a.replace?.options||{}),a.css_options=se({},a.css_options||a.css?.options||{}),a.copy_options=se(d,a.copy_options||a.copy?.options||{}),Reflect.has(a.browsersync_options,"proxy")&&delete a.browsersync_options.server,a.rollup=a.rollup||{},a.rollup_output=se(p,a.rollup_output||a.rollup?.output||{}),a.preact_enabled=!0===a.preact||a.preact&&!1!==a.preact?.enabled;let m=Object.keys(p);for(const e of m){const t=p[e];t&&(!1!==a.rollup[e]?(t.babel_options=t.babel_options||a.babel_options,t.browsersync_options=se(a.browsersync_options,t.browsersync_options),t.replace_options=se(a.replace_options,t.replace_options),t.css_options=se(a.css_options,t.css_options),t.copy_options=se(a.copy_options,t.copy_options),t.nunjucks_options=se(a.nunjucks_options,t.nunjucks_options),a.preact_enabled&&(t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{},t.alias.entries.react="preact/compat",t.alias.entries["react-dom"]="preact/compat"),a.form_enabled&&(t.babel=!0)):delete a.rollup_output[e])}m=Object.keys(a.rollup_output),a.babel_enabled=m.some((e=>!0===a.rollup_output[e].babel)),a.browser_enabled=m.some((e=>!0===a.rollup_output[e].babel)),a.browsersync_enabled=!1!==a.browsersync&&m.some((e=>!0===a.rollup_output[e].browsersync)),a.browsersync_enabled=a.browsersync_enabled&&a.app.enabled,a.css_enabled=!0===a.css||a.css&&!1!==a.css?.enabled,a.copy_enabled=a.app.enabled||a.copy_enabled||a.copy&&!1!==a.copy?.enabled,a.dependency_auto_enabled=!1!==a.dependency_auto&&!1!==a.dependency_auto?.enabled,a.npm_install_flags=a.npm_install_flags||"",a.react_version=a.react_version||a.react?.version||18,be(e),ve(e),ye(e),he(e),we(e),ge(e),ue(e),me(e),fe(e),pe(e),de(e)},zo=async({atom:e,packageDependencies:t,packageDevDependencies:n})=>{if("workflow"===e.type&&(t.push({package:"get-value",version:"^3"}),t.push({package:"set-value",version:"^4"})),e.doc.features.form_enabled&&e.doc.features.dependency_auto_enabled){let n="^18.2";n=`^${(await ke({name:"react",groupBy:{major:!0}})).find((t=>t[0]===e.doc.features.react_version.toString()))[0]}`,t.push({package:"react",version:n}),t.push({package:"react-dom",version:n}),"workflow"===e.type&&(t.push({package:"@flownet/react-app",version:"^0.1"}),t.push({package:"@flownet/react-app-state",version:"^0.1"}))}if(e.doc.features.preact_enabled&&t.push({package:"preact",version:"^10"}),!0===e.doc.features.cli.enabled&&(t.push({package:"yargs",version:"^17"}),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled&&t.push({package:"@fnet/config",version:"0.2.19"})),e.doc.features.render&&!1!==e.doc.features.render.enabled&&t.push({package:"@flownet/lib-render-templates-dir",version:"0.1.17"}),n.push({package:"@babel/core",version:"^7"}),n.push({package:"@rollup/plugin-commonjs",version:"^26"}),n.push({package:"@rollup/plugin-node-resolve",version:"^15"}),n.push({package:"@rollup/plugin-replace",version:"^5"}),n.push({package:"rollup",version:"^4"}),e.doc.features.dts_enabled&&n.push({package:"rollup-plugin-dts",version:"^6"}),n.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),n.push({package:"@rollup/plugin-alias",version:"^5"}),n.push({package:"fs-extra",version:"^11"}),e.doc.features.babel_enabled&&(n.push({package:"@rollup/plugin-babel",version:"^6"}),n.push({package:"@babel/preset-env",version:"^7"}),n.push({package:"@babel/preset-react",version:"^7"}),e.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":n.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":n.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":n.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":n.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":n.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),n.push({package:"@fnet/rollup-plugin-delete",version:"0.1.3"}),e.doc.features.browsersync_enabled&&n.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.4"}),e.doc.features.css_enabled){n.push({package:"rollup-plugin-postcss",version:"^4"}),n.push({package:"sass",version:"^1.66"});(e.doc.features.css_options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":n.push({package:"postcss-import",version:"^15"});break;case"postcss-url":n.push({package:"postcss-url",version:"^10"});break;case"postcss-preset-env":n.push({package:"postcss-preset-env",version:"^9"});break;case"autoprefixer":n.push({package:"autoprefixer",version:"^10"});break;case"cssnano":n.push({package:"cssnano",version:"^6"})}}))}e.doc.features.copy_enabled&&(n.push({package:"rollup-plugin-copy",version:"^3"}),n.push({package:"chokidar",version:"^3"}))},Wo=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{if(!0!==e.doc.features.app.enabled)return;await t({message:"Creating app folder"});const a={atom:e,packageDependencies:o,ts:Date.now()},i=n.templateDir,s=je.resolve(n.projectDir,"src/app");_e.existsSync(s)||_e.mkdirSync(s,{recursive:!0});let r=["index.js.njk"];!1!==e.doc.features.app.html&&r.push("index.html.njk"),await De({pattern:r,dir:je.resolve(i,"src/app"),outDir:s,context:a})},Ko=async({atom:e,context:t,packageDependencies:n,packageDevDependencies:o,setInProgress:a})=>{await a({message:"Creating package.json."});n.filter((e=>!0===e.dev)).forEach((e=>{o.find((t=>t.package===e.package))||o.push(e);const t=n.findIndex((t=>t.package===e.package));n.splice(t,1)}));const i=n.find((e=>"react"===e.package)),s=n.find((e=>"react-dom"===e.package));i&&!s?n.push({package:"react-dom",version:i.version}):i&&s&&(s.version=i.version),i&&e.doc.features.react_version>=17&&(n.find((e=>"@emotion/react"===e.package))||n.push({package:"@emotion/react",version:"^11"}),n.find((e=>"@emotion/styled"===e.package))||n.push({package:"@emotion/styled",version:"^11"}));const r=[];!0===e.doc.features.app.enabled&&r.push({file:Ae.resolve(t.projectDir,"src/app/index.js"),dev:!1!==e.doc.features.app.dev}),!0===e.doc.features.cli.enabled&&r.push({file:Ae.resolve(t.projectDir,"src/cli/index.js"),dev:!1!==e.doc.features.cli.dev});for await(const t of r){const a=t.file;if(!Se.existsSync(a))throw new Error(`App file not found: ${a}`);const i=await Te({file:a,recursive:!0}),s=!0===e.doc.features.all_parsed_imports?i.all:i.required;for await(const e of s){if("npm"!==e.type)continue;if(n.find((t=>t.package===e.package)))continue;if(o.find((t=>t.package===e.package)))continue;const a=(await Ee({name:e.package,groupBy:{minor:!0}}))[0][0];(!0===t.dev?o:n).push({package:e.package,subpath:e.subpath,version:`^${a}`,type:"npm"})}}const c={atom:e,packageDependencies:n,packageDevDependencies:o},l=t.templateCommonDir,p=Pe.compile(Se.readFileSync(Ae.resolve(l,"package.json.njk"),"utf8"),Pe.configure(l)).render(c),d=t.projectDir,f=Ae.resolve(d,"package.json");Se.writeFileSync(f,p,"utf8")},Go=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating cli."});const a={atom:e,packageDependencies:o},i=n.templateDir,s=Oe.resolve(n.projectDir,"src/cli");$e.existsSync(s)||$e.mkdirSync(s,{recursive:!0}),await Ie({pattern:["index.js.njk"],dir:Oe.resolve(i,"src/cli"),outDir:s,context:a})},Ho=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{await t({message:"Creating rollup file."});const a={atom:e,packageDependencies:o},i=Ne.resolve(n.projectDir,"src","default/index.js");if(!Ce.existsSync(i))throw new Error(`Entry file not found: ${i}`);const s=(await Me({file:i,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),r=e.doc.features.rollup_output,c=Object.keys(r);for(let e=0;e<c.length;e++){const t=r[c[e]];if(!0===t.browser&&s.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(s.map((e=>({key:e,value:e})))),t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{};for(let e=0;e<s.length;e++){const n=s[e];t.alias.entries[n]=`node:${n}`,t.alias.entries[`node:${n}`]=n}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(s)}}const l=n.templateCommonDir;let p=Re.compile(Ce.readFileSync(Ne.resolve(l,"rollup.config.mjs.njk"),"utf8"),Re.configure(l)).render(a);const d=n.projectDir;let f=Ne.resolve(d,"rollup.config.mjs");Ce.writeFileSync(f,p,"utf8")},Vo=async({atom:e,setInProgress:t,context:n,njEnv:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating yargs."});let a={};const i=e.doc.inputs||[],s=[],r=e.doc.input;if(r?a=await Le({schema:r}):i.forEach((e=>{if(!1===e.cli||!e.name)return;e.import&&s.push(e);const t={};Reflect.has(e,"type")&&(t.type=e.type),Reflect.has(e,"default")&&(t.default=e.default),Reflect.has(e,"choices")&&(t.choices=e.choices),(Reflect.has(e,"describe")||Reflect.has(e,"description"))&&(t.describe=e.describe||e.description),Reflect.has(e,"alias")&&(t.alias=e.alias),Reflect.has(e,"required")&&!0===e.required&&(t.required=!0),Reflect.has(e,"hidden")&&!0===e.hidden&&(t.hidden=!0),Reflect.has(e,"array")&&!0===e.array&&(t.array=!0),Reflect.has(e,"normalize")&&!0===e.normalize&&(t.normalize=!0),Reflect.has(e,"nargs")&&(t.nargs=e.nargs),a[e.name]=t})),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled){const t=e.doc.features.cli.fargs,n={type:"string",describe:"Config name to load args",hidden:!1},o={type:"array",describe:"Tags to filter the config",hidden:!1};Reflect.has(t,"default")&&(n.default=t.default),(Reflect.has(t,"describe")||Reflect.has(t,"description"))&&(n.describe=t.describe||t.description),Reflect.has(t,"choices")&&(n.choices=t.choices),a.fargs=n,a.ftag=o}const c={options:a,imports:s,atom:e},l=n.templateDir,p=Ue.compile(Fe.readFileSync(qe.resolve(l,"src/default/to.args.js.njk"),"utf8"),o).render(c),d=n.projectDir,f=qe.resolve(d,"src/default/to.args.js");Fe.writeFileSync(f,p,"utf8")},Xo=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{await t({message:"Creating .gitignore"});const a={atom:e,packageDependencies:o},i=n.templateCommonDir,s=ze.compile(Be.readFileSync(Je.resolve(i,".gitignore.njk"),"utf8"),ze.configure(i)).render(a),r=n.projectDir,c=Je.resolve(r,".gitignore");Be.writeFileSync(c,s,"utf8")},Yo=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{await t({message:"Creating tsconfig.json."});const a={atom:e,packageDependencies:o},i=n.templateCommonDir,s=Ge.compile(We.readFileSync(Ke.resolve(i,"tsconfig.json.njk"),"utf8"),Ge.configure(i)).render(a),r=n.projectDir,c=Ke.resolve(r,"tsconfig.json");We.writeFileSync(c,s,"utf8")},Zo=async({atom:e,context:t,setInProgress:n,Atom:o})=>{const a="readme.md",i=`Creating ${a}`;if(await n({message:i}),t.project?.readme){const e=t.projectDir,n={content:t.project.readme.doc.content},o=Xe.resolve(t.project.projectDir,"fnet/how-to.md");if(Ve.existsSync(o)){const e=Ve.readFileSync(o,"utf8");n.howto=e}const i=Xe.resolve(t.project.projectDir,"fnet/input.yaml");if(Ve.existsSync(i)){const e=await Ye({file:i,tags:t.tags});n.input=e.content}const s=t.templateCommonDir,r=He.compile(Ve.readFileSync(Xe.resolve(s,`${a}.njk`),"utf8"),He.configure(s)).render(n),c=Xe.resolve(e,`${a}`);Ve.writeFileSync(c,r,"utf8")}else if(e.id){const n=await o.first({type:"wiki",parent_id:e.id});if(!n||"markdown"!==n.doc?.["content-type"])return;const{content:i,...s}=n.doc,r={content:i},c=t.templateCommonDir,l=He.compile(Ve.readFileSync(Xe.resolve(c,`${a}.njk`),"utf8"),He.configure(c)).render(r),p=t.projectDir,d=Xe.resolve(p,`${a}`);Ve.writeFileSync(d,l,"utf8")}},Qo=async({setInProgress:e,context:t})=>{const n=t.projectDir;await e({message:"Prettifiying source files."});let o=Qe.join("src","**","*");if(0!==Ze.exec(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:n}).code)throw new Error("Couldnt format files.")},ea=async({atom:e,setInProgress:t,context:n})=>{if(!e.doc.features.dts_enabled)return;const o=n.projectDir;await t({message:"Creating .d.ts"});if(0!==et.exec("tsc",{cwd:o}).code)throw new Error("Couldnt create .d.ts files.")},ta=async({setInProgress:e,atom:t,context:n})=>{const o=n.projectDir;await e({message:"Installing npm packages."});if(0!==tt.exec(`npm install ${t.doc.features.npm_install_flags}`,{cwd:o}).code)throw new Error("Couldnt install npm packages.")},na=async({setInProgress:e,context:t})=>{const n=t.projectDir;await e({message:"Building main project."});if(0!==nt.exec("npm run build",{cwd:n}).code)throw new Error("Couldnt build project.")},oa=async e=>{const{atom:t,packageDependencies:n,context:o,deploymentProjectTarget:a,setInProgress:i,deploymentProject:s,yamlTarget:r}=e;if(!0===a.enabled)if("lib"===a.name)await jn({...e});else if("red"===a.name)await _n({...e});else if("npm"===a.name)await kn({...e});else if("gcs"===a.name)await xn({...e});else if("gitlab"===a.name)await bn({...e});else if("fnet-package"===a.name)await $n({...e});else if("fnet-form"===a.name)await On({...e});else if("fnet-node"===a.name)await Cn({...e});else if("fnet-flow"===a.name)await In({...e});else{let e;if("nextjs"===a.name?e=Tn:"webos"===a.name?e=An:"electron"===a.name?e=Sn:"docker"===a.name?e=En:"ios"===a.name?e=Dn:"macos"===a.name?e=Pn:"rust"===a.name&&(e=Nn),!e)return;await e({atom:t,target:a,onProgress:i,projectDir:o.projectDir,dependencies:n,context:o,yamlTarget:r}),s.isDirty=!0}},{Atom:aa}=y,ia=M,sa=_,ra=F,ca=t,la=k,pa=q,da=r,fa=U,ma=Ln,ua=zn,ga=Gn,ha=Zn,wa=Fn,ya=Qn,va=no,ba=io,xa=co,ka=po,_a=mo,ja=go,Da=wo,Pa=bo,Sa=_o,Aa=Po,Ta=Ao,Ea=Eo,$a=Oo,Oa=({node:e})=>{const t=e.definition;if("end"===t.next);else if("stop"===t.next);else if("none"===t.next);else if(t.next){let n=e.parent;for(;n.parent;){const o=n.childs.find((e=>e.name===t.next));if(o){e.context.next=o;break}n=n.parent}}else{let t=e.parent,n=e.index+1;for(;t.parent&&(!t.blockAutoJumpToParent||!t.blockAutoJumpToSibling);)if(void 0!==t.blockAutoJumpToParent||void 0!==t.blockAutoJumpToSibling){if(t.blockAutoJumpToParent){const o=t.childs.find((e=>e.index===n));o&&(e.context.next=o);break}t.blockAutoJumpToParent||(n=t.index+1,t=t.parent)}else{const o=t.childs.find((e=>e.index===n));if(o){e.context.next=o;break}n=t.index+1,t=t.parent}}};var Ia=class{#e;#t;#n;#o;#a;#i;#s;#r;#c;#l;#p;#d;#f;#m;#u;#g;#h;#w;#y;#v;#b;constructor(e){this.#e=new Bo,this.#t=e,this.#i=[],this.#s=[],this.#r={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#v={packageDependencies:this.#i,packageDevDependencies:this.#s,setInProgress:this.setInProgress.bind(this),context:this.#t,Atom:aa,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#b={initNode:this.initNode.bind(this),cloneDeep:Fo,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:Oa,transformExpression:this.transformExpression.bind(this),transformValue:this.transformValue.bind(this)}}async _cache_set(e,t,n){this._redis_client&&await this._redis_client.SETEX(e,n||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async init(){this._redis_client=await Uo(),this.#p=this.#t.buildId||Lo(24),this.#v.buildId=this.#p,this.#u=this.#t.mode,this.#g=["all","deploy","build","file"].includes(this.#u),this.#h=["all","deploy","build"].includes(this.#u),this.#w=["all","deploy"].includes(this.#u),this.#y=["all","deploy","build","file","bpmn"].includes(this.#u),this.#f=this.#t.protocol,this.#d="BUILD:"+this.#p,this.#m=(await ca({optional:!0,name:"atom",dir:this.#t.projectDir,tags:this.#t.tags}))?.data;try{await this.setInProgress({message:"Initialization started."}),await this.initAuth(),await this.initWorkflow(),await Jo(this.#v),await zo(this.#v),await this.transformWorkflow({workflow:this.#o});const e=await this.initNodeTree({workflow:this.#o});await this.initNodeTreeIndex({root:e}),await this.initNodeCalls({root:e}),await this.initNodeCallLibs({root:e}),await this.initNodeForms({root:e}),await this.initNodeFormLibs({root:e}),await this.initAtomLibsAndDeps({libs:e.context.libs,packageDependencies:this.#i}),await this.resolveNodeTree({root:e}),this.#l=e}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e?.message||e}),e}}async initAuth(){this.#t.id&&(this.#c=await this.#e.init({config:this.#m}),this.#v.atomAccessToken=this.#c)}async initWorkflow(){const e=this.#t.id;this.#n=this.#t.project?.workflowAtom||await aa.get({id:e}),this.#o="string"==typeof this.#n.doc.content?(await da({content:this.#n.doc.content})).parsed:this.#n.doc.content;let t=this.#n.doc.bundleName;t=t||(this.#n.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#n.doc.bundleName=t,this.#n.type=this.#n.type||"workflow",this.#v.atom=this.#n}async initDependencies(){this.#i.push({package:"get-value",version:"^3.0"}),this.#i.push({package:"set-value",version:"^4.1"}),this.#n.doc.features.form_enabled?(this.#i.push({package:"react",version:"^18.2"}),this.#i.push({package:"react-dom",version:"^18.2"}),this.#i.push({package:"@flownet/react-app",version:"^0.1"}),this.#i.push({package:"@flownet/react-app-state",version:"^0.1"})):this.#i.push({package:"yargs",version:"^17"}),this.#i.push({package:"chalk",version:"^4"})}#x(e){console.log("filePath",e),Io.statSync(e).isDirectory()?(Io.readdirSync(e).forEach((t=>{const n=Co.join(e,t);this.#x(n)})),Io.rmSync(e)):Io.unlinkSync(e)}#k(e,t){const n=Io.existsSync(e),o=n&&Io.statSync(e);n&&o.isDirectory()?(Io.mkdirSync(t,{recursive:!0}),Io.readdirSync(e).forEach((n=>{this.#k(Co.join(e,n),Co.join(t,n))}))):Io.copyFileSync(e,t)}async initWorkflowDir(){const e=this.#t.projectDir,t=this.#t.coreDir,n=["node_modules"];if(Io.existsSync(e)){const t=Io.readdirSync(e);for(const o of t)if(!n.includes(o)){const t=Co.join(e,o);Io.rmSync(t,{recursive:!0})}}Io.existsSync(e)||Io.mkdirSync(e,{recursive:!0});const o=Co.join(e,"src");Io.existsSync(o)||Io.mkdirSync(o,{recursive:!0});const a=Co.join(o,"core");this.#k(t,a);const i=Co.join(o,"default","blocks");Io.existsSync(i)||Io.mkdirSync(i,{recursive:!0})}async initNunjucks(){const e=this.#t.templateDir;this.#a=Mo.configure(e,{watch:!1,dev:!0}),this.#v.njEnv=this.#a}transformWorkflow({workflow:e}){for(const t of Object.values(e))t.steps=t.steps||[],t.steps=t.steps.map((e=>this.transformStep({step:e})))}transformStep({step:e}){if(Array.isArray(e))throw new Error("Step must be an object.");const[t,n]=Object.entries(e)[0];if(n.hasOwnProperty("onerror")){const{onerror:o,...a}=n;e[t]={try:a,except:o}}if(e[t].hasOwnProperty("steps")){const n=e[t].steps;if(!Array.isArray(n))throw new Error("Steps must be an array.");e[t].steps=n.map((e=>this.transformStep({step:e})))}return e}async initNodeTree({workflow:e}){const t=Object.keys(e),n={definition:e,name:void 0,type:"root",parent:void 0,childs:[],blockAutoJumpToParent:!0,blockAutoJumpToSibling:!0,index:0,depth:0,context:{libs:[],atom:this.#n}};t.forEach((t=>{const o={name:t,type:"main"===t?"workflow":"subworkflow",childs:[],parent:n,definition:e[t],index:n.childs.length,depth:n.depth+1,context:{},blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1};n.childs.push(o)}));for await(const e of n.childs)await this.initNode({node:e});return n}async initNode({node:e}){const t={...this.#b,node:e};if(e.workflow=e.parent.workflow||e,e.depth=e.parent.depth+1,await ua.hits(t))await ua.init(t);else if(await ha.hits(t))await ha.init(t);else if(await wa.hits(t))await wa.init(t);else if(await ma.hits(t))await ma.init(t);else if(await ya.hits(t))await ya.init(t);else if(await ga.hits(t))await ga.init(t);else if(await va.hits(t))await va.init(t);else if(await ba.hits(t))await ba.init(t);else if(await xa.hits(t))await xa.init(t);else if(await ka.hits(t))await ka.init(t);else if(await _a.hits(t))await _a.init(t);else if(await ja.hits(t))await ja.init(t);else if(await Ea.hits(t))await Ea.init(t);else if(await $a.hits(t))await $a.init(t);else if(await Pa.hits(t))await Pa.init(t);else if(await Sa.hits(t))await Sa.init(t);else if(await Ta.hits(t))await Ta.init(t);else if(await Da.hits(t))await Da.init(t);else{if(!await Aa.hits(t))throw new Error("Undefined step type.");await Aa.init(t)}}async initNodeTreeIndex({root:e}){const t={};e.indexKey="/";for await(const n of e.childs)await this.initNodeIndex({node:n,index:t});return e.context.index=t,t}async initNodeIndex({node:e,index:t}){const n=Co.join(e.parent.indexKey,e.name);e.indexKey=n,t[n]=e;const o=[];let a=e;for(;a?.parent;)o.push(a.index),a=a.parent;o.reverse(),e.codeKey=`B_${o.join("_")}_${e.type}`,e.pathKey=`${o.join(".")}`,e.typeId=Lo(24);for await(const n of e.childs)await this.initNodeIndex({node:n,index:t})}async initNodeCalls({root:e}){const t=e.context.index,n=[];for await(const e of Object.keys(t)){const o=t[e];"call"===o.type&&n.push(o)}return e.context.calls=n,n}async initNodeCallLibs({root:e}){const t=[],n=e.context.calls;for await(const e of n){const n=e.definition.call,o=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:n,type:"atom"},a=t.find((e=>e.name===o.name&&e.type===o.type));a||t.push(o),e.target=a||o}return e.context.callLibs=t,e.context.libs=[...e.context.libs,...t],t}async findNodeCallTarget({refNode:e,curNode:t}){if(!t)return;const n=e.definition.call,o=t.childs.find((e=>e.name===n&&"subworkflow"===e.type));return o||await this.findNodeCallTarget({refNode:e,curNode:t.parent})}async initNodeForms({root:e}){const t=e.context.index,n=[];for await(const e of Object.keys(t)){const o=t[e];"form"===o.type&&n.push(o)}return e.context.forms=n,n}async initNodeFormLibs({root:e}){const t=[],n=e.context.forms;for await(const e of n){const n=e.definition.form,o=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:n,type:"atom"},a=t.find((e=>e.name===o.name&&e.type===o.type));a||t.push(o),e.target=a||o}return e.context.formLibs=t,e.context.libs=[...e.context.libs,...t],t}async findNodeFormTarget({refNode:e,curNode:t}){if(!t)return;const n=e.definition.form,o=t.childs.find((e=>e.name===n&&"subworkflow"===e.type));return o||await this.findNodeFormTarget({refNode:e,curNode:t.parent})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const n=e.filter((e=>"atom"===e.type));for(let e=0;e<n.length;e++){const o=n[e],a=await this.findAtomLibrary({url:o.name});o.atom=a;const i=a.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));i?.forEach((e=>{const n=t.find((t=>t.package===e.package));n?"string"==typeof e.path?(n.path||[]).some((t=>t===e.path))||(n.path=n.path||[],n.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(n.path||[]).some((t=>t===e))||(n.path=n.path||[],n.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const t=ia({url:e});if(!t)throw new Error(`Invalid package name: ${e}`);if(t.protocol||(t.protocol=this.#f),"ac:"===t.protocol){const n=t.pathname.split("/");if(1===n.length)return await aa.first({where:{name:e,parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===n.length){const e=await aa.first({where:{name:n[0],parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"folder"}});return await aa.first({where:{name:n[1],parent_id:e.id,type:"workflow.lib"}})}}else{if("local:"===t.protocol){const e=Co.resolve(this.#t.projectSrcDir,`${t.pathname}.js`),n=[],o=await la({file:e,recursive:!0}),a=!0===this.#n.doc.features.all_parsed_imports?o.all:o.required;for await(const e of a){if("npm"!==e.type)continue;if(n.find((t=>t.package===e.package)))continue;const t=(await sa({name:e.package,groupBy:{minor:!0}}))[0][0];n.push({package:e.package,subpath:e.subpath,version:`^${t}`,type:"npm"})}return{name:t.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:n},protocol:t.protocol}}if("npm:"===t.protocol){const e=(await sa({name:t.pathname,groupBy:{minor:!0}}))[0][0];return{name:t.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:[{package:t.pathname,version:`^${e}`,type:"npm"}]},protocol:t.protocol}}}}async resolveNodeTree({root:e}){for await(const t of e.childs)await this.resolveTypeWorkflow({node:t})}async resolveTypeWorkflow({node:e}){e.context.transform=Fo(e.definition);const t=e.context.transform;for(let e=0;e<t.params?.length;e++){const n=t.params[e];if("string"==typeof n)t.params[e]={key:n,hasDefault:!1};else{const o=Object.keys(n)[0];t.params[e]={key:o,hasDefault:!0,default:n[o]}}}e.context.next=e.childs[0];for await(const t of e.childs)await this.resolveType({node:t})}async resolveType({node:e}){const t={...this.#b,node:e};"function"==typeof e.resolve&&await e.resolve(t);for await(const t of e.childs)await this.resolveType({node:t})}async resolveTypeCommon({node:e}){const t=e.context.transform;t.hasOwnProperty("operation")&&(t.operation=await this.transformExpression(t.operation)),t.hasOwnProperty("page")&&(t.page=await this.transformExpression(t.page)),t.hasOwnProperty("print")&&(t.print=await this.transformExpression(t.print)),t.hasOwnProperty("sleep")&&(t.sleep=await this.transformExpression(t.sleep)),t.hasOwnProperty("assert")&&(t.assert=await this.transformExpression(t.assert))}async createAtomLibFiles({root:e}){await this.setInProgress({message:"Creating external lib files."}),this.#n.typesDir="./types";const t=e.context.libs.filter((e=>"atom"===e.type));for(let e=0;e<t.length;e++){const n=t[e].atom,o=this.#t.projectDir;if("local:"===n.protocol){const e=Co.resolve(this.#t.projectSrcDir,`${n.fileName||n.name}.js`),t=Co.relative(`${this.#t.projectDir}/src/default/blocks`,e);if(!Io.existsSync(e)){Io.mkdirSync(Co.dirname(e),{recursive:!0});let t="export default async (args)=>{\n";t+="}",Io.writeFileSync(e,t,"utf8")}n.relativePath=t.split(Co.sep).join("/"),this.#n.typesDir=`./types/${Co.basename(o)}/src`}else if("npm:"===n.protocol)n.relativePath=n.name;else{const e=`${o}/src/libs/${n.id}.js`,t=n.doc.contents?.find((e=>"esm"===e.format))||n.doc;Io.writeFileSync(Co.normalize(e),t.content,"utf8")}}}async createEngine({root:e}){await this.setInProgress({message:"Creating engine file."});const t=this.#t.templateDir,n=Mo.compile(Io.readFileSync(Co.resolve(t,"src/default/engine.js.njk"),"utf8"),this.#a).render({...e,ui:{package:"@flownet/react-app"}}),o=this.#t.projectDir,a=Co.resolve(o,"src/default/index.js");Io.writeFileSync(a,n,"utf8")}async createNodeTree({root:e}){await this.setInProgress({message:"Creating block files."});for await(const t of e.childs)await this.createTypeWorkflow({node:t})}async createTypeWorkflow({node:e}){const t=this.#t.templateDir,n=Mo.compile(Io.readFileSync(Co.resolve(t,"src/default/workflow.js.njk"),"utf8"),this.#a).render(e),o=this.#t.projectDir,a=Co.resolve(o,`src/default/${e.codeKey}.js`);Io.writeFileSync(a,n,"utf8");for await(const t of e.childs)await this.createType({node:t})}async createType({node:e}){switch(e.type){case"assign":case"steps":case"return":case"call":case"form":case"raise":case"switch":case"jump":case"tryexcept":case"for":case"operation":this.createBlockFromTemplate({node:e})}for await(const t of e.childs)await this.createType({node:t})}createBlockFromTemplate({node:e}){const t=this.getBlockTemplate({node:e});e.context.render=t.render(e),this.createStepFile({node:e})}getBlockTemplate({node:e}){let t=this.#r[e.type];if(t)return t;const n=this.#t.templateDir;return t=Mo.compile(Io.readFileSync(Co.resolve(n,`src/default/blocks/${e.type}.js.njk`),"utf8"),this.#a),this.#r[e.type]=t,t}createStepFile({node:e}){const t=this.#t.projectDir,n=`${e.codeKey}.js`,o=Co.resolve(t,`src/default/blocks/${n}`);Io.writeFileSync(o,e.context.render,"utf8"),e.context.fileName=n,e.context.filePath=o}async transformExpression(e){let t=await this.transformValue(e);return t=JSON.stringify(t),t=this.replaceSpecialPattern(t),t}async transformValue(e){if(Array.isArray(e))for(let t=0;t<e.length;t++)e[t]=await this.transformValue(e[t]);else if(qo(e)){const t=Object.keys(e);for(let n=0;n<t.length;n++)e[t[n]]=await this.transformValue(e[t[n]])}else if("string"==typeof e){const t=await pa({expression:e});if(t){const{processor:n,statement:o}=t;switch(n){case"v":e=`$::v.${o}::`;break;case"e":e=`$::${o}::`;break;case"m":e=`$::closure.module['${o}']::`;break;case"f":e=`$::closure.form.${o}::`;break;case"for":e=`$::caller.for.${o}::`}}}return e}replaceSpecialPattern(e){return e.replace(/"\$::(.*?)::"/g,"$1")}replaceExpressionLegacy(e){return e.replaceAll(/(?<outer>"\${(?<inner>[^{]*)}")/g,"$2")}async createProjectYaml(){const e="flow.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const{content:n,...o}=this.#n.doc,a={content:No.stringify(o)},i=this.#t.templateDir,s=Mo.compile(Io.readFileSync(Co.resolve(i,`${e}.njk`),"utf8"),this.#a).render(a),r=this.#t.projectDir,c=Co.resolve(r,`${e}`);Io.writeFileSync(c,s,"utf8")}async createProjectMainYaml(){const e="flow.main.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const n={content:No.stringify(this.#o)},o=this.#t.templateDir,a=Mo.compile(Io.readFileSync(Co.resolve(o,`${e}.njk`),"utf8"),this.#a).render(n),i=this.#t.projectDir,s=Co.resolve(i,`${e}`);Io.writeFileSync(s,a,"utf8")}async runPrettifier(){const e=this.#t.projectDir,t=Ro.exec("prettier --write .",{cwd:Co.resolve(e,"src")});if(0!==t.code)throw new Error(t.stderr)}async deploy(){if(await this.setInProgress({message:"Deploying."}),this.#t.project?.devops){const e=[this.#t.project?.devops];for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&await n.save()}}else if(this.#n.id){const e=await aa.list({type:"workflow.deploy",parent_id:this.#n.id});for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&(n=await aa.update(n,{id:n.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:n}=t,o=n.get("targets")||[],a=t.doc.targets||[];for(let e=0;e<a.length;e++){const n=a[e],i=o.items[e];await oa({...this.#v,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:i})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#t.id)return;let o=await aa.first({name:t.params.name,parent_id:this.#m.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:n.version}),await aa.update(o,{id:o.id})):o=await aa.create({parent_id:this.#m.env.ATOM_PACKAGES_ID,doc:{name:t.params.name,type:"pm",versions:[{v:n.version}]}})}async setInProgress({message:e}){console.log(fa.blue(e)),await this._cache_set(this.#d,{status:"IN_PROGRESS",message:e})}async build(){if(this.#y&&!this.#g)return await this.createNetwork();try{const e=this.#y?await ra({root:this.#l}):void 0;if(this.#g){if(await this.initWorkflowDir(),await this.initNunjucks(),this.#y){const t=this.#t.project?.projectDir||this.#t.projectDir;Io.writeFileSync(Co.resolve(t,"./fnet/flow.bpmn"),e.diagramXML,"utf8")}await this.createAtomLibFiles({root:this.#l}),await this.createEngine({root:this.#l}),await this.createNodeTree({root:this.#l}),await this.createProjectYaml(),await this.createProjectMainYaml(),await Zo(this.#v),await Yo(this.#v),await Xo(this.#v),await Vo(this.#v),await Go(this.#v),await Wo(this.#v),await Ho(this.#v),await Ko(this.#v),await Qo(this.#v),await ea(this.#v),this.#h&&(await ta(this.#v),await na(this.#v),this.#w&&await this.deploy())}await this._cache_set(this.#d,{status:"COMPLETED",data:{network:e}})}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e.message||e}),e}}async createNetwork(){try{const e=await ra({root:this.#l});await this._cache_set(this.#d,{status:"COMPLETED",data:{...e}})}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e.message||e}),e}}};const Ca=p,Na=d;var Ra=function({baseDir:e=__dirname}){let t=e;for(;t!==Na.parse(t).root;){const e=Na.join(t,"node_modules");if(Ca.existsSync(e))return e;t=Na.dirname(t)}return null};const Ma=process.cwd(),{spawn:Fa}=e;t({name:["redis"],dir:Ma,optional:!0});const qa=n,Ua=o,La=a,Ba=i,Ja=s,za=r,Wa=t,Ka=c,Ga=l,Ha=Ia,Va=Ra({baseDir:__dirname}),Xa="win32"===process.platform?";":":";process.env.PATH=`${qa.join(Va,"/.bin")}${Xa}${process.env.PATH}`;let Ya=Ua(process.argv.slice(2)).command("create","Initialize flow node project",(e=>e.option("name",{type:"string"}).option("vscode",{type:"boolean",default:!0,alias:"vs"})),(async e=>{try{const t=qa.resolve(Va,"./@fnet/cli-project-flow/dist/template/project"),n=qa.resolve(Ma,e.name);La.existsSync(n)||La.mkdirSync(n),await Ga({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let o=Ja.exec("fnet build",{cwd:n});if(0!==o.code)throw new Error("Failed to build project.");if(Ja.which("git")&&(o=Ja.exec("git init --initial-branch=main",{cwd:n}),0!==o.code))throw new Error("Failed to initialize git.");if(Ja.which("code")&&e.vscode&&(o=Ja.exec(`cd ${n} && code .`),0!==o.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})).command("project","Flow node project",(e=>e.option("update",{type:"boolean",default:!1,alias:"-u"})),(async e=>{try{const t=qa.resolve(Va,"@fnet/cli-project-flow/dist/template/project"),n=process.cwd();if(e.name=qa.basename(n),e.update){if(await Ga({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0}),0!==Ja.exec("fnet build",{cwd:n}).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(e){console.error("Project failed.",e.message),process.exit(1)}})).command("build","Build flownet project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"]}).option("ftag",{type:"array"})),(async e=>{try{const t=await Qa(e),n=new Ha(t);await n.init(),await n.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}})).command("deploy","Build and deploy flownet project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await Qa({...e,mode:"all"}),n=new Ha(t);await n.init(),await n.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}})).command("file","Just create files",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await Qa({...e,mode:"file"}),n=new Ha(t);await n.init(),await n.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}}));function Za(e,{name:t,bin:n,preArgs:o=[]}){return e.command(`${t||n} [commands..]`,`${n} ${o.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const t=await Qa(e),{projectDir:a}=t,i=process.argv.slice(3);Fa(n,[...o,...i],{cwd:a,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function Qa(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:qa.resolve(Ma,`./.output/${e.id}`),templateDir:qa.resolve(Va,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:qa.resolve(Va,"./@fnet/cli-project-common/dist/template/default"),coreDir:qa.resolve(Va,"./@fnet/cli-project-flow/dist/template/core"),tags:e.ftag}}{const t=await async function({tags:e}){const t=qa.resolve(Ma,"flow.yaml");if(!La.existsSync(t))throw new Error("flow.yaml file not found in current directory.");const{raw:n,parsed:o}=await za({file:t,tags:e}),a=qa.dirname(t),i=o.main||"flow.main.yaml";let s=qa.resolve(a,i);if(!La.existsSync(s)&&(s=qa.resolve(a,i+".yaml"),!La.existsSync(s)))throw new Error(`${i} file not found in ${s}.`);const{raw:r,parsed:c}=await za({file:s,tags:e}),l={workflowAtom:{doc:{...o,"content-type":"yaml",content:r}},projectDir:a,projectFilePath:t,projectFileContent:n,projectFileParsed:o,projectMainFilePath:s,projectMainFileContent:r,projectMainFileParsed:c};let p=qa.resolve(a,"fnet/targets.yaml");if(!La.existsSync(p)&&(p=qa.resolve(a,"flow.devops.yaml"),La.existsSync(p))){const e=qa.resolve(a,"fnet");La.existsSync(e)||La.mkdirSync(e),La.copyFileSync(p,qa.resolve(a,"fnet/targets.yaml")),La.unlinkSync(p)}if(La.existsSync(p)){const{raw:t,parsed:n}=await za({file:p,tags:e}),o=Ba.parseDocument(t);l.devops={filePath:p,fileContent:t,yamlDocument:o,doc:{...n},type:"workflow.deploy",save:async()=>{La.writeFileSync(l.devops.filePath,o.toString())}}}const d=qa.resolve(a,"readme.md");if(La.existsSync(d)){const e=La.readFileSync(d,"utf8");l.readme={filePath:d,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return l}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:qa.resolve(Va,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:qa.resolve(Va,"./@fnet/cli-project-common/dist/template/default"),coreDir:qa.resolve(Va,"./@fnet/cli-project-flow/dist/template/core"),projectDir:qa.resolve(t.projectDir,"./.workspace"),projectSrcDir:qa.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}Ya=Ya.command("create-input <name>","Create an input config file",(e=>e.positional("name",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await Qa(e),{project:n}=t,{projectDir:o,projectFileParsed:a}=n,i=a.input;if(!i)throw new Error("Config schema not found in project file.");const s=await Ka({schema:i,format:"yaml"}),r=qa.resolve(o,".fnet");La.existsSync(r)||La.mkdirSync(r);const c=qa.resolve(r,`${e.name}.fnet`);La.writeFileSync(c,s)}catch(e){console.error(e.message),process.exit(1)}})),Ya=function(e){return e.command("update-input <name>","Update an input config file",(e=>e.positional("name",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await Qa(e),{project:n}=t,{projectDir:o,projectFileParsed:a}=n,i=a.input;if(!i)throw new Error("Config schema not found in project file.");const s=qa.resolve(o,".fnet"),r=qa.resolve(s,`${e.name}.fnet`),c=await Ka({schema:i,format:"yaml",ref:r});La.existsSync(s)||La.mkdirSync(s),La.writeFileSync(r,c)}catch(e){console.error(e.message),process.exit(1)}}))}(Ya),Ya=Za(Ya,{bin:"npm"}),Ya=Za(Ya,{bin:"node"}),Ya=Za(Ya,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),Ya=Za(Ya,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),Ya=Za(Ya,{name:"app",bin:"npm",preArgs:["run","app","--"]}),Ya=Za(Ya,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),Ya=Za(Ya,{bin:"npx"}),Ya=Za(Ya,{bin:"cdk"}),Ya=Za(Ya,{bin:"aws"}),Ya=function(e,{name:t,preArgs:n=[]}){return e.command(`${t} <config> <command> [options..]`,"Run a command with a config context",(e=>e.positional("config",{type:"string"}).positional("command",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await Qa(e),{projectDir:o}=t,a=e.config,i=await Wa({name:a,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),s=i?.data?.env||void 0,r=e.command,c=process.argv.slice(5);Fa(r,[...n,...c],{cwd:o,stdio:"inherit",shell:!0,env:{...process.env,...s}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(Ya,{name:"with"}),Ya.demandCommand(1,"You need at least one command before moving on").help().argv,module.exports={};
|
|
2
|
+
"use strict";var e=require("child_process"),t=require("@fnet/config"),n=require("path"),o=require("yargs/yargs"),a=require("fs"),i=require("yaml"),s=require("shelljs"),r=require("@fnet/yaml"),c=require("@fnet/object-from-schema"),l=require("@flownet/lib-render-templates-dir"),p=require("node:fs"),d=require("node:path"),f=require("nunjucks"),m=require("lodash.clonedeep"),u=require("isobject"),g=require("redis"),h=require("@flownet/lib-is-redis-online"),w=require("nanoid"),y=require("@flownet/lib-atom-api-js"),v=require("axios"),b=require("qs"),x=require("lodash.merge"),k=require("@flownet/lib-parse-imports-js"),_=require("@flownet/lib-list-npm-versions"),j=require("@fnet/yargs-options-from-schema"),D=require("@fnet/shell"),P=require("semver"),S=require("node:os"),A=require("@node-red/util"),T=require("@flownet/lib-to-ios-app"),E=require("@flownet/lib-to-macos-app"),$=require("@flownet/lib-to-electron"),O=require("@flownet/lib-to-webos"),I=require("@flownet/lib-to-nextjs"),C=require("@flownet/lib-to-docker"),N=require("form-data"),R=require("@fnet/to-rust"),M=require("@flownet/lib-parse-node-url"),F=require("@flownet/lib-bpmn-from-flow"),q=require("@fnet/expression"),U=require("chalk"),L=require("lodash.pick"),B=require("lodash.omit");const J=g,z=h;const{Api:W}=y,K=v.default,G=b;var H=({feature:e,features:t,packageDevDependencies:n})=>{const{name:o,packages:a,options:i}=e,s=`${o}_enabled`,r=t.rollup_output||{},c=Object.keys(r),l=i||{};c.forEach((e=>{const n=t.rollup_output[e];if(Reflect.has(n,o)){if(!n[o]||!1===n[o]?.enabled)return void delete n[o];!0===n[o]&&(n[o]={enabled:!0,options:l})}else{if(!t[o]||!1===t[s])return;n[o]={enabled:!0}}n[o]=n[o]||{},n[o].options={...l,...n[o].options}}));const p=c.some((e=>!0===t.rollup_output[e][o]?.enabled));t[s]=p,p&&a.forEach((e=>n.push({package:e[0],version:e[1]})))};const V=H;const X=H;const Y=H;const Z=H;const Q=H;const ee=H;const te=H;const ne=H;const oe=H;const ae=H;const ie=H;const se=x,re=p,ce=d,le=k,pe=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;V({feature:{name:"workbox",packages:[["rollup-plugin-workbox","^8"]],options:{generate:{swDest:"dist/app/esm/sw.js",globDirectory:"dist/app/esm",globPatterns:["**/*.{html,js,css,png,jpg}"],skipWaiting:!0,clientsClaim:!0}}},features:o,packageDevDependencies:n})},de=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;X({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]]},features:o,packageDevDependencies:n})},fe=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;Y({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.3"]]},features:o,packageDevDependencies:n})},me=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;Z({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:o,packageDevDependencies:n})},ue=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;Q({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]]},features:o,packageDevDependencies:n})},ge=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ee({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12}},features:o,packageDevDependencies:n})},he=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;te({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:o,packageDevDependencies:n})},we=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ne({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:o,packageDevDependencies:n})},ye=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;oe({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:o,packageDevDependencies:n})},ve=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ae({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:o,packageDevDependencies:n})},be=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ie({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:o,packageDevDependencies:n})};function xe({dir:e,name:t="index"}){let n=ce.resolve(e,`./${t}.tsx`);if(re.existsSync(n)||(n=ce.resolve(e,`./${t}.ts`)),re.existsSync(n)||(n=ce.resolve(e,`./${t}.jsx`)),re.existsSync(n)||(n=ce.resolve(e,`./${t}.js`)),!re.existsSync(n))return{};const o=n,a=ce.extname(n);return{file:o,ext:a,ts:".ts"===a||".tsx"===a,name:t}}const ke=_;const _e=p,je=d,De=l;const Pe=f,Se=p,Ae=d,Te=k,Ee=_;const $e=p,Oe=d,Ie=l;const Ce=p,Ne=d,Re=f,Me=k;const Fe=p,qe=d,Ue=f,Le=j;const Be=p,Je=d,ze=f;const We=p,Ke=d,Ge=f;const He=f,Ve=p,Xe=d,Ye=r;const Ze=s,Qe=n;const et=s;const tt=s;const nt=s;const ot=D,at=t;const it=p,st=d,rt=P,ct=D,lt=t;const pt=p,dt=d,ft=P,mt=s,ut=t;const gt=p,ht=d,wt=S,yt=f,vt=A,bt=t;const xt=a,kt=n,_t=t;const jt=t,Dt=T,Pt=m,St=P;const At=t,Tt=E,Et=m,$t=P;const Ot=t,It=$,Ct=m,Nt=P;const Rt=t,Mt=O,Ft=m,qt=P;const Ut=t,Lt=I,Bt=m,Jt=P;const zt=t,Wt=C,Kt=m,Gt=P;const Ht=p,Vt=d,Xt=P,Yt=D,Zt=t,Qt=v.default;const en=P,tn=t,nn=v.default;const on=P,an=t,sn=v.default,rn=a,cn=D,ln=N;const pn=P,dn=t,fn=v.default,mn=a,un=D,gn=N;const hn=t,wn=R,yn=m,vn=P;const bn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,buildId:a})=>{await e({message:"Deploying it as gitlab project."});const i=t.projectDir;let s="fnet-to-gitlab";const r=o.params.config||"gitlab",c=await at({name:r,dir:t.projectDir,tags:t.tags});if(!c)throw new Error(`Couldnt load config ${r}`);const{data:l}=c.data;s+=` --projectGroupId=${l.projectGroupId}`,s+=` --projectPath='${i}'`,s+=` --projectName='${o.params.name}'`,s+=` --projectBranch='${o.params.branch||"main"}'`,s+=` --gitlabHost='${l.gitlabHost}'`,s+=` --gitlabToken='${l.gitlabToken}'`,s+=` --gitlabUsername='${l.gitlabUsername}'`,s+=` --gitlabUserEmail='${l.gitlabUserEmail}'`,!0!==o.dryRun&&(await ot({cmd:s}),n.isDirty=!0)},xn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,registerToPackageManager:a,yamlTarget:i})=>{await e({message:"Deploying it as gcs package."});const s=t.projectDir,r=st.resolve(s,"package.json"),c=it.readFileSync(r),l=JSON.parse(c);l.name=o.params.name,l.version=rt.inc(o.params.version,"patch"),delete l.scripts,delete l.devDependencies,it.writeFileSync(r,JSON.stringify(l,null,"\t"));const{file:p,data:d}=await lt({name:o.config||"gcs",dir:t.projectDir,tags:t.tags});let f="fnet-files-to-gcs";f+=` --projectId='${d.env.GCS_PROJECT_ID}'`,f+=` --bucketName='${d.env.GCS_BUCKET_NAME}'`,f+=` --keyFilename='${st.resolve(st.dirname(p),d.env.GCS_UPLOADER_KEY_FILE)}'`,f+=` --dir='${s}'`,f+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",f+=` --destDir='${l.name}/${l.version}'`,f+=" --metadata.cacheControl='public, max-age=31536000, immutable'",d.env.DOMAIN&&(f+=` --domain='${d.env.DOMAIN}'`),!0!==o.dry_run&&!0!==o.params.dry_run||(f+=" --dryRun"),await ct({cmd:f}),it.writeFileSync(r,c),!0!==o.dryRun&&(n.isDirty=!0,o.params.version=l.version,i.get("params").set("version",l.version),await a({target:o,packageJSON:l}))},kn=async({atom:e,setInProgress:t,context:n,deploymentProject:o,deploymentProjectTarget:a,yamlTarget:i})=>{await t({message:"Deploying it as npm package."});const s=n.projectDir,r=dt.resolve(s,"package.json"),c=pt.readFileSync(r),l=JSON.parse(c);l.name=a.params.name,l.version=ft.inc(a.params.version,"patch");const p=a.params.bin?.name||a.params.bin;!1!==a.params.bin?.enabled&&p&&"string"==typeof p&&(l.bin={[p]:"dist/cli/esm/index.js",[e.doc.name]:"dist/cli/esm/index.js"}),delete l.scripts,delete l.devDependencies,l.scripts={serve:"npx serve ."},pt.writeFileSync(r,JSON.stringify(l,null,"\t"));const d=(await ut({name:n.npmConfig||"npm",dir:n.projectDir,tags:n.tags}))?.data;if(pt.writeFileSync(dt.resolve(s,".npmrc"),`//registry.npmjs.org/:_authToken=${d.env.NPM_TOKEN}`),!0===a.dryRun)return;if(0!==mt.exec("npm publish --access public",{cwd:s}).code)throw new Error("Couldnt publish to npm");pt.writeFileSync(r,c),o.isDirty=!0,a.params.version=l.version,i.get("params").set("version",l.version)},_n=async({atom:e,setInProgress:t,context:n,deploymentProject:o,deploymentProjectTarget:a,buildId:i,packageDependencies:s,njEnv:r})=>{await t({message:"Deploying it as node-red flow."});const c=n.projectDir,l=n.templateDir,p="workflow"===e.type?"WF":"LIB";let d;if("simple"===a.deploy.template)d={atom:e,packageDependencies:s,red:{tab:{id:a.deploy.id||vt.util.generateId(),label:`${p}/${e.id?e.id:wt.hostname()}/${e.name}/${a.deploy.name||a.deploy.template}`},function:{id:vt.util.generateId(),name:e.doc.name,initialize:{content:gt.readFileSync(ht.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},inject:{id:vt.util.generateId(),...a.params?.inject,payload:"json"===a.params?.inject?.payloadType?`'${JSON.stringify(a.params?.inject?.payload)}'`:a.params?.inject?.payload},debug:{id:vt.util.generateId()}}};else if("cronjob"===a.deploy.template){let t=a.params?.schedules?cloneDeep(a.params?.schedules):void 0;t?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),d={atom:e,packageDependencies:s,red:{tab:{id:a.deploy.id||vt.util.generateId(),label:`${p}/${e.id?e.id:wt.hostname()}/${a.deploy.name||a.deploy.template}`},function:{id:vt.util.generateId(),name:e.doc.name,initialize:{content:gt.readFileSync(ht.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},cronjob:{id:vt.util.generateId(),schedules:t},debug:{id:vt.util.generateId()}}}}else{if("http"!==a.deploy.template)return;d={atom:e,packageDependencies:s,red:{tab:{id:a.deploy.id||vt.util.generateId(),label:`${p}/${e.id?e.id:wt.hostname()}/${a.deploy.name||a.deploy.template}`},function:{id:vt.util.generateId(),name:e.doc.name,initialize:{content:gt.readFileSync(ht.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},httpin:{id:vt.util.generateId(),method:a.params.method||"get",url:a.params.url},httpout:{id:vt.util.generateId()},debug:{id:vt.util.generateId()}}}}let f=yt.compile(gt.readFileSync(ht.resolve(l,`deploy/node-red/${a.deploy.template}.yaml.njk`),"utf8"),r).render(d);if(gt.writeFileSync(ht.resolve(c,"node-red.yaml"),f),f=yaml.load(f),!0===a.dryRun)return;o.isDirty=!0;const m=(await bt({name:n.redConfig||"red",dir:n.projectDir,tags:n.tags}))?.data,u=a.deploy.url||m.env.RED_URL,g={};if(!1!==a.deploy.auth&&(g.Authorization="Bearer "+atomAccessToken),a.deploy.id)!0===a.actions?.delete?(await axios({method:"DELETE",url:`${u}/flow/${a.deploy.id}`,headers:g}),delete a.actions.delete,delete a.deploy.id,a.enabled=!1):await axios({method:"PUT",url:`${u}/flow/${a.deploy.id}`,data:f,headers:g});else{const e=await axios({method:"POST",url:`${u}/flow`,data:f,headers:g});a.deploy.id=e.data.id}},jn=async({atom:e,Atom:t,setInProgress:n,context:o,packageDependencies:a,deploymentProject:i,deploymentProjectTarget:s})=>{await n({message:"Deploying it as workflow lib."});const r=(await _t({name:"atom",dir:o.projectDir,tags:o.tags}))?.data;let c,l,p,d=s.deploy.name.split("/");if(1===d.length)l=r.env.ATOM_LIBRARIES_ID,p=s.deploy.name;else{if(2!==d.length)throw new Error("Wrong name path.");{const e=await t.first({where:{name:d[0],parent_id:r.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");l=e.id,p=d[1]}}if(!0===s.dryRun)return;if(i.isDirty=!0,s.deploy.id){if(c=await t.get({id:s.deploy.id}),!c)return}else{if(c=await t.create({parent_id:l,doc:{name:p,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!c)return;s.deploy.id=c.id}const f=o.projectDir;c.doc.contents=[{content:xt.readFileSync(kt.resolve(f,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:xt.readFileSync(kt.resolve(f,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:xt.readFileSync(kt.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],c.doc.name=p,c.doc.dependencies=a,"workflow.lib"===e.type?c.doc.subtype="library":"workflow"===e.type&&(c.doc.subtype="workflow"),c=await t.update(c,{id:c.id})},Dn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as ios-app package."});const r=t?.config?await jt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=St.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=Pt(t.params);l.dependencies=Pt(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Dt(p)}},Pn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as macos-app package."});const r=t?.config?await At({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=$t.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=Et(t.params);l.dependencies=Et(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Tt(p)}},Sn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as electron package."});const r=t?.config?await Ot({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=Nt.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=Ct(t.params);l.dependencies=Ct(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await It(p)}},An=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as webos package."});const r=t?.config?await Rt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=qt.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=Ft(t.params);l.dependencies=Ft(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Mt(p)}},Tn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as nextjs package."});const r=t?.config?await Ut({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=Jt.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=Bt(t.params);l.dependencies=Bt(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Lt(p)}},En=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as docker package."});const r=t?.config?await zt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=Gt.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=Kt(t.params);l.dependencies=Kt(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Wt(p)}},$n=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:a})=>{await e({message:"Deploying it as fnet package."});const i=t.projectDir,s=Vt.resolve(i,"package.json"),r=Ht.readFileSync(s),c=JSON.parse(r);c.name=o.params.name,c.version=Xt.inc(o.params.version,"patch"),delete c.scripts,delete c.devDependencies,Ht.writeFileSync(s,JSON.stringify(c,null,"\t"));const{file:l,data:p}=await Zt({name:o.config||"fnet-package",dir:t.projectDir,tags:t.tags});if(!p.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${l}`);if(!p.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${l}`);if(!p.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${l}`);const d=`${p.env.ATOM_API_URL}/v1/auth/token`,f=p.env.ATOM_API_USERNAME,m=p.env.ATOM_API_PASSWORD;let u=await Qt({method:"POST",url:d,data:{username:f,password:m},headers:{"Content-Type":"application/json"}});const g=u.data?.access_token;if(!g)throw new Error(`Invalid access_token from ${d}`);let h="fnet-files-to-gcs";if(h+=` --projectId='${p.env.GCS_PROJECT_ID}'`,h+=` --bucketName='${p.env.GCS_BUCKET_NAME}'`,h+=` --keyFilename='${Vt.resolve(Vt.dirname(l),p.env.GCS_UPLOADER_KEY_FILE)}'`,h+=` --dir='${i}'`,h+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",h+=` --destDir='${c.name}/${c.version}'`,h+=" --metadata.cacheControl='public, max-age=31536000, immutable'",p.env.DOMAIN&&(h+=` --domain='${p.env.DOMAIN}'`),!0!==o.dry_run&&!0!==o.params.dry_run||(h+=" --dryRun"),await Yt({cmd:h}),Ht.writeFileSync(s,r),!0===o.dryRun)return;n.isDirty=!0,o.params.version=c.version,a.get("params").set("version",c.version);const w=`${p.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(u=await Qt({method:"POST",url:w,data:{name:c.name,version:c.version,version_domain:p.env.DOMAIN,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${g}`}}),u.data?.error)throw new Error("Failed to publish fnet package.")},On=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:a})=>{await e({message:"Deploying it as fnet form."});const i=en.inc(o.params.version,"patch"),{file:s,data:r}=await tn({name:o.config||"fnet-form",dir:t.projectDir,tags:t.tags});if(!r.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${s}`);if(!r.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${s}`);if(!r.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${s}`);const c=`${r.env.ATOM_API_URL}/v1/auth/token`,l=r.env.ATOM_API_USERNAME,p=r.env.ATOM_API_PASSWORD;let d=await nn({method:"POST",url:c,data:{username:l,password:p},headers:{"Content-Type":"application/json"}});const f=d.data?.access_token;if(!f)throw new Error(`Invalid access_token from ${c}`);n.isDirty=!0,o.params.version=i,a.get("params").set("version",i);const m=`${r.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(d=await nn({method:"POST",url:m,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${f}`}}),d.data?.error)throw new Error("Error publishing fnet form.")},In=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:a})=>{await e({message:"Deploying it as fnet flow."});const i=on.inc(o.params.version,"patch"),{file:s,data:r}=await an({name:o.config||"fnet-flow",dir:t.project.projectDir,tags:t.tags});if(!r.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${s}`);if(!r.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${s}`);if(!r.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${s}`);const c=`${r.env.ATOM_API_URL}/v1/auth/token`,l=r.env.ATOM_API_USERNAME,p=r.env.ATOM_API_PASSWORD;let d=await sn({method:"POST",url:c,data:{username:l,password:p},headers:{"Content-Type":"application/json"}});const f=d.data?.access_token;if(!f)throw new Error(`Invalid access_token from ${c}`);n.isDirty=!0,o.params.version=i,a.get("params").set("version",i);const m=`${r.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(d=await sn({method:"POST",url:m,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${f}`}}),d.data?.error)throw new Error("Error publishing fnet flow.");const u=d.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const h=await cn({cmd:g});if(0!==h.code)throw new Error(h.stderr);const w=JSON.parse(h.stdout).path;let y=new ln;y.append("file",rn.createReadStream(w));const v=await sn.request({method:"POST",maxBodyLength:1/0,url:`${r.env.ATOM_API_URL}/v1/service/upload/single/${u}`,headers:{...y.getHeaders(),Authorization:`Bearer ${f}`},data:y});if(v.data?.error)throw new Error("Error uploading fnet flow.")},Cn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:a})=>{await e({message:"Deploying it as fnet node."});const i=pn.inc(o.params.version,"patch"),{file:s,data:r}=await dn({name:o.config||"fnet-node",dir:t.project.projectDir,tags:t.tags});if(!r.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${s}`);if(!r.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${s}`);if(!r.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${s}`);const c=`${r.env.ATOM_API_URL}/v1/auth/token`,l=r.env.ATOM_API_USERNAME,p=r.env.ATOM_API_PASSWORD;let d=await fn({method:"POST",url:c,data:{username:l,password:p},headers:{"Content-Type":"application/json"}});const f=d.data?.access_token;if(!f)throw new Error(`Invalid access_token from ${c}`);n.isDirty=!0,o.params.version=i,a.get("params").set("version",i);const m=`${r.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(d=await fn({method:"POST",url:m,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${f}`}}),d.data?.error)throw new Error("Error publishing fnet node.");const u=d.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const h=await un({cmd:g});if(0!==h.code)throw new Error(h.stderr);const w=JSON.parse(h.stdout).path;let y=new gn;y.append("file",mn.createReadStream(w));const v=await fn.request({method:"POST",maxBodyLength:1/0,url:`${r.env.ATOM_API_URL}/v1/service/upload/single/${u}`,headers:{...y.getHeaders(),Authorization:`Bearer ${f}`},data:y});if(v.data?.error)throw new Error("Error uploading fnet node.")},Nn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:a,context:i,yamlTarget:s})=>{n&&await n({message:"Deploying it as Rust package."});const r=t?.config?await hn({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:i.tags}):void 0,c=vn.inc(t.params.version||"0.1.0","patch");t.params.version=c,s.get("params").set("version",c);const l=yn(t.params);l.dependencies=yn(a);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await wn(p)}};const Rn=m;async function Mn({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||Rn(e.definition);for(const t of e.childs)t.context.transform=t.context.transform||Rn(t.definition),t.definition.hasOwnProperty("condition")&&(t.context.transform.condition=await o(t.definition.condition));await t({node:e}),n({node:e})}var Fn={hits:async function({node:e}){if(!e.definition.hasOwnProperty("switch"))return!1;const t=e.definition.switch||[];if(!t.every((e=>e.hasOwnProperty("condition")||e.hasOwnProperty("default"))))throw new Error("Switch must have condition or default");if(0===t.filter((e=>e.hasOwnProperty("condition"))).length)throw new Error("Switch must have at least one condition");const n=t.filter((e=>e.hasOwnProperty("default")));if(n.length>1)throw new Error("Switch must have only one default");if(1===n.length&&!t[t.length-1].hasOwnProperty("default"))throw new Error("Switch default must be the last child");return!0},init:async function({node:e,initNode:t}){e.type="switch",e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0;for(let n=0;n<e.definition.switch.length;n++){let o=e.definition.switch[n],a=`${n}`;o.hasOwnProperty("default")&&(a="default",o=o.default);const i={name:o.condition||a,childs:[],parent:e,definition:o,index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=Mn},resolve:Mn};const qn=q,Un=Fn;var Ln={hits:async function({node:e}){const t=Object.keys(e.definition);return 1===(await Promise.all(t.map((e=>qn({expression:e}))))).filter((e=>"if"===e?.processor)).length},init:async function(e){const{node:t}=e,n=Object.keys(t.definition),o=await Promise.all(n.map((e=>qn({expression:e})))),a=[],i=o.find((e=>"if"===e?.processor)),s=t.definition[i.expression];a.push({name:`${t.name}_if`,definition:s,processor:i}),delete t.definition[i.expression];const r=o.filter((e=>"elseif"===e?.processor));let c=0;for(const e of r){const n=t.definition[e.expression];a.push({name:`${t.name}_elseif_${c++}`,definition:n,processor:e}),delete t.definition[e.expression]}t.definition.switch=[];for(const e of a)t.definition.switch.push({condition:e.processor.statement,...e.definition});await Un.init(e)}};const Bn=m;async function Jn({node:e,resolveTypeCommon:t,resolveNextBlock:n}){if(e.context.transform=e.context.transform||Bn(e.definition),e.context.transform,e.context.try=e.childs.find((e=>"try"===e.name)),e.context.except=e.childs.find((e=>"except"===e.name)),e.context.except){const t=e.context.except;t.context.transform=t.context.transform||Bn(t.definition),t.context.transform.hasOwnProperty("as")||(t.context.transform.as="error")}await t({node:e}),n({node:e})}var zn={hits:async function({node:e}){return e.definition.hasOwnProperty("try")&&e.definition.hasOwnProperty("except")},init:async function({node:e,initNode:t}){if(e.type="tryexcept",e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0,e.definition.try){const n="try",o={name:n,childs:[],parent:e,definition:e.definition[n],index:e.childs.length,context:{}};e.childs.push(o),await t({node:o})}if(e.definition.except){const n="except",o={name:n,childs:[],parent:e,definition:e.definition[n],index:e.childs.length,context:{}};e.childs.push(o),await t({node:o})}e.resolve=Jn},resolve:Jn};const Wn=m;async function Kn({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=Wn(e.definition);const a=e.context.transform;for(let e=0;e<a.assign?.length;e++){let t=a.assign[e],n=Object.keys(t)[0],i=t[n],s={key:await o(n),value:await o(i)};a.assign[e]=s}await t({node:e}),n({node:e})}var Gn={hits:async function({node:e}){return e.definition.hasOwnProperty("assign")},init:async function({node:e,initNode:t}){e.type="assign",e.resolve=Kn},resolve:Kn};const Hn=m,Vn=L,Xn=B;async function Yn({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||Hn(e.definition);e.context.transform.for.in=await o(e.definition.for.in),await t({node:e}),n({node:e})}var Zn={hits:async function({node:e}){return e.definition.hasOwnProperty("for")},init:async function({node:e,initNode:t}){if(e.type="for",e.blockAutoJumpToParent=!0,e.blockAutoJumpToSibling=!1,!e.definition.for.hasOwnProperty("steps")){const t=["value","in"],[n,o]=[Vn(e.definition.for,t),Xn(e.definition.for,t)];e.definition.for=n,e.definition.for.steps=[{[`${e.name}_step`]:o}]}Array.isArray(e.definition.for.steps)||(e.definition.for.steps=[{[`${e.name}_step`]:e.definition.for.steps}]);for(let n=0;n<e.definition.for.steps.length;n++){const o=e.definition.for.steps[n],a=Object.keys(o)[0],i={name:a,childs:[],parent:e,definition:o[a],index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=Yn},resolve:Yn};var Qn={hits:async function({node:e}){return!1},init:async function({node:e,initNode:t}){},resolve:async function({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o,transformValue:a}){}};const eo=m;async function to({node:e,resolveTypeCommon:t,transformExpression:n}){e.context.transform=e.context.transform||eo(e.definition);const o=e.context.transform;o.raise=await n(o.raise),await t({node:e})}var no={hits:async function({node:e}){return e.definition.hasOwnProperty("raise")},init:async function({node:e,initNode:t}){e.type="raise",e.resolve=to},resolve:to};const oo=m;async function ao({node:e,resolveTypeCommon:t,transformExpression:n}){e.context.transform=e.context.transform||oo(e.definition);const o=e.context.transform;o.return=await n(o.return),await t({node:e})}var io={hits:async function({node:e}){return e.definition.hasOwnProperty("return")},init:async function({node:e,initNode:t}){e.type="return",e.resolve=ao},resolve:ao};const so=m;async function ro({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||so(e.definition);const a=e.context.transform;a.args&&(a.args=await o(a.args)),a.result&&(a.result=await o(a.result));const i=e.workflow.parent;e.context.lib=i.context.libs.find((e=>e.name===a.call)),await t({node:e}),n({node:e})}var co={hits:async function({node:e}){return e.definition.hasOwnProperty("call")},init:async function({node:e,initNode:t}){e.type="call";for(let n=0;n<e.definition.modules?.length;n++){const o=e.definition.modules[n],a=Object.keys(o)[0],i={name:a,childs:[],parent:e,definition:o[a],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=ro},resolve:ro};const lo=co;var po={hits:async function({node:e}){return e.definition.hasOwnProperty("shell")},init:async function(e){const{node:t}=e,n="shell",o=t.definition,a=typeof o[n];if("string"!==a&&"object"!==a)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/shell",o.args="string"===a?{...o.args,cmd:o[n]}:o[n],delete o[n],await lo.init(e)}};const fo=co;var mo={hits:async function({node:e}){return e.definition.hasOwnProperty("config")},init:async function(e){const{node:t}=e,n="config",o=t.definition,a=typeof o[n];if("string"!==a&&"object"!==a)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/config",o.args="string"===a?{...o.args,name:o[n]}:o[n],delete o[n],await fo.init(e)}};const uo=co;var go={hits:async function({node:e}){return e.definition.hasOwnProperty("yaml")},init:async function(e){const{node:t}=e,n="yaml",o=t.definition,a=typeof o[n];if("string"!==a&&"object"!==a)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/yaml",o.args="string"===a?{...o.args,file:o[n]}:o[n],delete o[n],await uo.init(e)}};async function ho({node:e}){e.context.next=e.childs[0]}var wo={hits:async function({node:e}){return e.definition.hasOwnProperty("steps")},init:async function({node:e,initNode:t}){e.type||(e.type="steps");const n=e.definition.steps||[];for await(const o of n){const n=Object.keys(o)[0],a={name:n,childs:[],parent:e,definition:o[n],index:e.childs.length,context:{}};e.childs.push(a),await t({node:a})}e.resolve=ho},resolve:ho};const yo=m;async function vo({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||yo(e.definition);const a=e.context.transform;a.props&&(a.props=await o(a.props));const i=e.workflow.parent;e.context.lib=i.context.libs.find((e=>e.name===a.form)),await t({node:e}),n({node:e})}var bo={hits:async function({node:e}){return e.definition.hasOwnProperty("form")},init:async function({node:e,initNode:t}){e.type="form";for(let n=0;n<e.definition.modules?.length;n++){const o=e.definition.modules[n],a=Object.keys(o)[0],i={name:a,childs:[],parent:e,definition:o[a],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=vo},resolve:vo};const xo=m;async function ko({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o,transformValue:a}){e.context.transform=e.context.transform||xo(e.definition),await t({node:e})}var _o={hits:async function({node:e}){return e.definition.hasOwnProperty("operation")},init:async function({node:e,initNode:t}){e.type="operation",e.resolve=ko},resolve:ko};const jo=m;async function Do({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||jo(e.definition);const a=e.context.transform;a.next=await o(a.next),await t({node:e}),n({node:e})}var Po={hits:async function({node:e}){return e.definition.hasOwnProperty("next")},init:async function({node:e,initNode:t}){e.type="jump",e.resolve=Do},resolve:Do};const So=co;var Ao={hits:async function({node:e}){return e.definition.hasOwnProperty("prompt")},init:async function(e){const{node:t}=e,n="prompt",o=t.definition,a=typeof o[n];if("string"!==a&&"object"!==a)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/prompt",o.args="string"===a?{...o.args,message:o[n]}:o[n],delete o[n],await So.init(e)}};const To=co;var Eo={hits:async function({node:e}){return e.definition.hasOwnProperty("html-script")},init:async function(e){const{node:t}=e,n="html-script",o=t.definition,a=typeof o[n];if("string"!==a&&"object"!==a)throw new Error(`Unsupported ${n} usage`);o.call="npm:@flownet/lib-load-browser-script-url",o.args="string"===a?{...o.args,src:o[n]}:o[n],delete o[n],await To.init(e)}};const $o=co;var Oo={hits:async function({node:e}){return e.definition.hasOwnProperty("html-link")},init:async function(e){const{node:t}=e,n="html-link",o=t.definition,a=typeof o[n];if("string"!==a&&"object"!==a)throw new Error(`Unsupported ${n} usage`);o.call="npm:@flownet/lib-load-browser-link-url",o.args="string"===a?{...o.args,src:o[n]}:o[n],delete o[n],await $o.init(e)}};const Io=p,Co=d,No=i,Ro=s,Mo=f,Fo=m,qo=u,Uo=async()=>{if(!await z({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=J.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e},{nanoid:Lo}=w,Bo=class{init({config:e,accessToken:t}){return new Promise(((n,o)=>{if(W.set_api_url(e.data.url),t)return W.set_req_token(t),void n(t);K({method:"POST",url:`${e.data.issuer}/protocol/openid-connect/token`,data:G.stringify(e.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((e=>{W.set_req_token(e.data.access_token),n(e.data.access_token)})).catch((e=>{W.set_req_token(),o(e)}))}))}},Jo=async e=>{const{atom:t,context:n,packageDevDependencies:o}=e;t.doc.features=t.doc.features||{};const a=t.doc.features;a.project=a.project||{},a.project.format=a.project.format||a.project_format||"esm",a.project_format=a.project.format,a.dts_enabled=!0===a.dts||void 0!==a.dts&&!1!==a.dts,a.hasOwnProperty("all_parsed_imports")||(a.all_parsed_imports=!0);const i=ce.resolve(n.project.projectDir),s=xe({dir:ce.resolve(i,"./app")});if(s.file){let e=await le({file:s.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));a.app_uses_jsx=t,a.app_has_entry=!0,e=await le({file:s.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),a.app_entry_uses_jsx=t,a.app_entry_is_ts=s.ts,a.app_entry_ext=s.ext}const r=xe({dir:ce.resolve(i,"./cli")});if(r.file){let e=await le({file:r.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));a.cli_uses_jsx=t,a.cli_has_entry=!0,e=await le({file:r.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),a.cli_entry_uses_jsx=t,a.cli_entry_is_ts=r.ts,a.cli_entry_ext=r.ext}if("workflow.lib"===t.type){const e=xe({dir:ce.resolve(i,"./src")});if(e.file){let t=await le({file:e.file,recursive:!0}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));a.src_uses_jsx=n,a.src_has_entry=!0,t=await le({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),a.src_entry_uses_jsx=n,a.src_entry_is_ts=e.ts,a.src_entry_ext=e.ext}}const c=!0===a.app_entry_uses_jsx,l=!0===a.cli_entry_uses_jsx;a.form_enabled=!0===t.doc.form||!0===t.doc.form?.enabled||!0===a.form||!0===a.form?.enabled,a.multiple_enabled=a.multiple_enabled||!0===a.multiple||!0===a.multiple?.enabled,!1===a.app?a.app={enabled:!1}:!0===a.app?a.app={enabled:!0,extend:!0===a.app_has_entry,export:!0,react:c}:a.app={enabled:!0,extend:!0===a.app_has_entry,export:!0,react:c,...a.app||{}},a.app.enabled=!0===a.app.enabled&&(!0===t.doc.features.form_enabled||!0===a.app.extend||!0===a.app.enabled),a.app.format=a.app.format||"esm",a.app.folder=a.app.folder||a.app.format||"default",!1===a.cli?a.cli={enabled:!1}:!0===a.cli?a.cli={enabled:!0,extend:!0===a.cli_has_entry,export:!0,react:l}:a.cli={enabled:!0,extend:!0===a.cli_has_entry,export:!0,react:l,...a.cli||{}},a.cli.enabled=!0===a.cli.enabled&&(!1===t.doc.features.form_enabled||!0===a.cli.extend||!0===a.cli.enabled),a.cli.format=a.cli.format||"esm",a.cli.folder=a.cli.folder||a.cli.folder||"esm",a.cli.node_options=a.cli.node?.options||a.cli.node_options||"";const p={cjs:{format:"cjs",context:a.form_enabled?"window":"global",babel:!0===a.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!0},esm:{format:"esm",context:a.form_enabled?"window":"global",babel:!0===a.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!0,copy:!0},iife:{format:"iife",context:a.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==a.iife,terser:!0}},d={};!0===a.webos&&(p.webos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/webos",babel_options:{targets:{chrome:"79"}}}),!0===a.electron&&(p.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===a.nextjs&&(p.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===a.ios&&(p.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===a.macos&&(p.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===a.app.enabled&&(a.app.dir=`./dist/app/${a.app.folder}`,p.app={format:a.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:a.app.dir,terser:!0,output_exports:!1===a.app.export?"none":"auto"},d.targets=d.targets||[],d.targets.push({src:"./src/app/index.html",dest:a.app.dir})),!0===a.cli.enabled&&(a.cli.dir=`./dist/cli/${a.cli.folder}`,p.cli={format:a.cli.format,context:"global",babel:!0===a.src_uses_jsx||!0===a.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:a.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===a.cli.export?"none":"auto"});const f={server:".",startPath:`${ce.normalize(a.app.dir||".")}`,files:[ce.normalize("./dist/**/*")],cors:!0,open:!1};a.babel_options=se({targets:{browsers:"last 9 versions, not dead",node:"18"}},a.babel_options||a.babel?.options),a.browsersync_options=se(f,a.browsersync_options||a.browsersync?.options||{}),a.replace_options=se({},a.replace_options||a.replace?.options||{}),a.css_options=se({},a.css_options||a.css?.options||{}),a.copy_options=se(d,a.copy_options||a.copy?.options||{}),Reflect.has(a.browsersync_options,"proxy")&&delete a.browsersync_options.server,a.rollup=a.rollup||{},a.rollup_output=se(p,a.rollup_output||a.rollup?.output||{}),a.preact_enabled=!0===a.preact||a.preact&&!1!==a.preact?.enabled;let m=Object.keys(p);for(const e of m){const t=p[e];t&&(!1!==a.rollup[e]?(t.babel_options=t.babel_options||a.babel_options,t.browsersync_options=se(a.browsersync_options,t.browsersync_options),t.replace_options=se(a.replace_options,t.replace_options),t.css_options=se(a.css_options,t.css_options),t.copy_options=se(a.copy_options,t.copy_options),a.preact_enabled&&(t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{},t.alias.entries.react="preact/compat",t.alias.entries["react-dom"]="preact/compat"),a.form_enabled&&(t.babel=!0)):delete a.rollup_output[e])}m=Object.keys(a.rollup_output),a.babel_enabled=m.some((e=>!0===a.rollup_output[e].babel)),a.browser_enabled=m.some((e=>!0===a.rollup_output[e].babel)),a.browsersync_enabled=!1!==a.browsersync&&m.some((e=>!0===a.rollup_output[e].browsersync)),a.browsersync_enabled=a.browsersync_enabled&&a.app.enabled,a.css_enabled=!0===a.css||a.css&&!1!==a.css?.enabled,a.copy_enabled=a.app.enabled||a.copy_enabled||a.copy&&!1!==a.copy?.enabled,a.dependency_auto_enabled=!1!==a.dependency_auto&&!1!==a.dependency_auto?.enabled,a.npm_install_flags=a.npm_install_flags||"",a.react_version=a.react_version||a.react?.version||18,be(e),ve(e),ye(e),he(e),we(e),ge(e),ue(e),me(e),fe(e),pe(e),de(e)},zo=async({atom:e,packageDependencies:t,packageDevDependencies:n})=>{if("workflow"===e.type&&(t.push({package:"get-value",version:"^3"}),t.push({package:"set-value",version:"^4"})),e.doc.features.form_enabled&&e.doc.features.dependency_auto_enabled){let n="^18.2";n=`^${(await ke({name:"react",groupBy:{major:!0}})).find((t=>t[0]===e.doc.features.react_version.toString()))[0]}`,t.push({package:"react",version:n}),t.push({package:"react-dom",version:n}),"workflow"===e.type&&(t.push({package:"@flownet/react-app",version:"^0.1"}),t.push({package:"@flownet/react-app-state",version:"^0.1"}))}if(e.doc.features.preact_enabled&&t.push({package:"preact",version:"^10"}),!0===e.doc.features.cli.enabled&&(t.push({package:"yargs",version:"^17"}),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled&&t.push({package:"@fnet/config",version:"0.2.19"})),e.doc.features.render&&!1!==e.doc.features.render.enabled&&t.push({package:"@flownet/lib-render-templates-dir",version:"0.1.17"}),n.push({package:"@babel/core",version:"^7"}),n.push({package:"@rollup/plugin-commonjs",version:"^26"}),n.push({package:"@rollup/plugin-node-resolve",version:"^15"}),n.push({package:"@rollup/plugin-replace",version:"^5"}),n.push({package:"rollup",version:"^4"}),e.doc.features.dts_enabled&&n.push({package:"rollup-plugin-dts",version:"^6"}),n.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),n.push({package:"@rollup/plugin-alias",version:"^5"}),n.push({package:"fs-extra",version:"^11"}),e.doc.features.babel_enabled&&(n.push({package:"@rollup/plugin-babel",version:"^6"}),n.push({package:"@babel/preset-env",version:"^7"}),n.push({package:"@babel/preset-react",version:"^7"}),e.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":n.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":n.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":n.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":n.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":n.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),n.push({package:"@fnet/rollup-plugin-delete",version:"0.1.3"}),e.doc.features.browsersync_enabled&&n.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.4"}),e.doc.features.css_enabled){n.push({package:"rollup-plugin-postcss",version:"^4"}),n.push({package:"sass",version:"^1.66"});(e.doc.features.css_options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":n.push({package:"postcss-import",version:"^15"});break;case"postcss-url":n.push({package:"postcss-url",version:"^10"});break;case"postcss-preset-env":n.push({package:"postcss-preset-env",version:"^9"});break;case"autoprefixer":n.push({package:"autoprefixer",version:"^10"});break;case"cssnano":n.push({package:"cssnano",version:"^6"})}}))}e.doc.features.copy_enabled&&(n.push({package:"rollup-plugin-copy",version:"^3"}),n.push({package:"chokidar",version:"^3"}))},Wo=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{if(!0!==e.doc.features.app.enabled)return;await t({message:"Creating app folder"});const a={atom:e,packageDependencies:o,ts:Date.now()},i=n.templateDir,s=je.resolve(n.projectDir,"src/app");_e.existsSync(s)||_e.mkdirSync(s,{recursive:!0});let r=["index.js.njk"];!1!==e.doc.features.app.html&&r.push("index.html.njk"),await De({pattern:r,dir:je.resolve(i,"src/app"),outDir:s,context:a})},Ko=async({atom:e,context:t,packageDependencies:n,packageDevDependencies:o,setInProgress:a})=>{await a({message:"Creating package.json."});n.filter((e=>!0===e.dev)).forEach((e=>{o.find((t=>t.package===e.package))||o.push(e);const t=n.findIndex((t=>t.package===e.package));n.splice(t,1)}));const i=n.find((e=>"react"===e.package)),s=n.find((e=>"react-dom"===e.package));i&&!s?n.push({package:"react-dom",version:i.version}):i&&s&&(s.version=i.version),i&&e.doc.features.react_version>=17&&(n.find((e=>"@emotion/react"===e.package))||n.push({package:"@emotion/react",version:"^11"}),n.find((e=>"@emotion/styled"===e.package))||n.push({package:"@emotion/styled",version:"^11"}));const r=[];!0===e.doc.features.app.enabled&&r.push({file:Ae.resolve(t.projectDir,"src/app/index.js"),dev:!1!==e.doc.features.app.dev}),!0===e.doc.features.cli.enabled&&r.push({file:Ae.resolve(t.projectDir,"src/cli/index.js"),dev:!1!==e.doc.features.cli.dev});for await(const t of r){const a=t.file;if(!Se.existsSync(a))throw new Error(`App file not found: ${a}`);const i=await Te({file:a,recursive:!0}),s=!0===e.doc.features.all_parsed_imports?i.all:i.required;for await(const e of s){if("npm"!==e.type)continue;if(n.find((t=>t.package===e.package)))continue;if(o.find((t=>t.package===e.package)))continue;const a=(await Ee({name:e.package,groupBy:{minor:!0}}))[0][0];(!0===t.dev?o:n).push({package:e.package,subpath:e.subpath,version:`^${a}`,type:"npm"})}}const c={atom:e,packageDependencies:n,packageDevDependencies:o},l=t.templateCommonDir,p=Pe.compile(Se.readFileSync(Ae.resolve(l,"package.json.njk"),"utf8"),Pe.configure(l)).render(c),d=t.projectDir,f=Ae.resolve(d,"package.json");Se.writeFileSync(f,p,"utf8")},Go=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating cli."});const a={atom:e,packageDependencies:o},i=n.templateDir,s=Oe.resolve(n.projectDir,"src/cli");$e.existsSync(s)||$e.mkdirSync(s,{recursive:!0}),await Ie({pattern:["index.js.njk"],dir:Oe.resolve(i,"src/cli"),outDir:s,context:a})},Ho=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{await t({message:"Creating rollup file."});const a={atom:e,packageDependencies:o},i=Ne.resolve(n.projectDir,"src","default/index.js");if(!Ce.existsSync(i))throw new Error(`Entry file not found: ${i}`);const s=(await Me({file:i,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),r=e.doc.features.rollup_output,c=Object.keys(r);for(let e=0;e<c.length;e++){const t=r[c[e]];if(!0===t.browser&&s.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(s.map((e=>({key:e,value:e})))),t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{};for(let e=0;e<s.length;e++){const n=s[e];t.alias.entries[n]=`node:${n}`,t.alias.entries[`node:${n}`]=n}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(s)}}const l=n.templateCommonDir;let p=Re.compile(Ce.readFileSync(Ne.resolve(l,"rollup.config.mjs.njk"),"utf8"),Re.configure(l)).render(a);const d=n.projectDir;let f=Ne.resolve(d,"rollup.config.mjs");Ce.writeFileSync(f,p,"utf8")},Vo=async({atom:e,setInProgress:t,context:n,njEnv:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating yargs."});let a={};const i=e.doc.inputs||[],s=[],r=e.doc.input;if(r?a=await Le({schema:r}):i.forEach((e=>{if(!1===e.cli||!e.name)return;e.import&&s.push(e);const t={};Reflect.has(e,"type")&&(t.type=e.type),Reflect.has(e,"default")&&(t.default=e.default),Reflect.has(e,"choices")&&(t.choices=e.choices),(Reflect.has(e,"describe")||Reflect.has(e,"description"))&&(t.describe=e.describe||e.description),Reflect.has(e,"alias")&&(t.alias=e.alias),Reflect.has(e,"required")&&!0===e.required&&(t.required=!0),Reflect.has(e,"hidden")&&!0===e.hidden&&(t.hidden=!0),Reflect.has(e,"array")&&!0===e.array&&(t.array=!0),Reflect.has(e,"normalize")&&!0===e.normalize&&(t.normalize=!0),Reflect.has(e,"nargs")&&(t.nargs=e.nargs),a[e.name]=t})),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled){const t=e.doc.features.cli.fargs,n={type:"string",describe:"Config name to load args",hidden:!1},o={type:"array",describe:"Tags to filter the config",hidden:!1};Reflect.has(t,"default")&&(n.default=t.default),(Reflect.has(t,"describe")||Reflect.has(t,"description"))&&(n.describe=t.describe||t.description),Reflect.has(t,"choices")&&(n.choices=t.choices),a.fargs=n,a.ftag=o}const c={options:a,imports:s,atom:e},l=n.templateDir,p=Ue.compile(Fe.readFileSync(qe.resolve(l,"src/default/to.args.js.njk"),"utf8"),o).render(c),d=n.projectDir,f=qe.resolve(d,"src/default/to.args.js");Fe.writeFileSync(f,p,"utf8")},Xo=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{await t({message:"Creating .gitignore"});const a={atom:e,packageDependencies:o},i=n.templateCommonDir,s=ze.compile(Be.readFileSync(Je.resolve(i,".gitignore.njk"),"utf8"),ze.configure(i)).render(a),r=n.projectDir,c=Je.resolve(r,".gitignore");Be.writeFileSync(c,s,"utf8")},Yo=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{await t({message:"Creating tsconfig.json."});const a={atom:e,packageDependencies:o},i=n.templateCommonDir,s=Ge.compile(We.readFileSync(Ke.resolve(i,"tsconfig.json.njk"),"utf8"),Ge.configure(i)).render(a),r=n.projectDir,c=Ke.resolve(r,"tsconfig.json");We.writeFileSync(c,s,"utf8")},Zo=async({atom:e,context:t,setInProgress:n,Atom:o})=>{const a="readme.md",i=`Creating ${a}`;if(await n({message:i}),t.project?.readme){const e=t.projectDir,n={content:t.project.readme.doc.content},o=Xe.resolve(t.project.projectDir,"fnet/how-to.md");if(Ve.existsSync(o)){const e=Ve.readFileSync(o,"utf8");n.howto=e}const i=Xe.resolve(t.project.projectDir,"fnet/input.yaml");if(Ve.existsSync(i)){const e=await Ye({file:i,tags:t.tags});n.input=e.content}const s=t.templateCommonDir,r=He.compile(Ve.readFileSync(Xe.resolve(s,`${a}.njk`),"utf8"),He.configure(s)).render(n),c=Xe.resolve(e,`${a}`);Ve.writeFileSync(c,r,"utf8")}else if(e.id){const n=await o.first({type:"wiki",parent_id:e.id});if(!n||"markdown"!==n.doc?.["content-type"])return;const{content:i,...s}=n.doc,r={content:i},c=t.templateCommonDir,l=He.compile(Ve.readFileSync(Xe.resolve(c,`${a}.njk`),"utf8"),He.configure(c)).render(r),p=t.projectDir,d=Xe.resolve(p,`${a}`);Ve.writeFileSync(d,l,"utf8")}},Qo=async({setInProgress:e,context:t})=>{const n=t.projectDir;await e({message:"Prettifiying source files."});let o=Qe.join("src","**","*");if(0!==Ze.exec(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:n}).code)throw new Error("Couldnt format files.")},ea=async({atom:e,setInProgress:t,context:n})=>{if(!e.doc.features.dts_enabled)return;const o=n.projectDir;await t({message:"Creating .d.ts"});if(0!==et.exec("tsc",{cwd:o}).code)throw new Error("Couldnt create .d.ts files.")},ta=async({setInProgress:e,atom:t,context:n})=>{const o=n.projectDir;await e({message:"Installing npm packages."});if(0!==tt.exec(`npm install ${t.doc.features.npm_install_flags}`,{cwd:o}).code)throw new Error("Couldnt install npm packages.")},na=async({setInProgress:e,context:t})=>{const n=t.projectDir;await e({message:"Building main project."});if(0!==nt.exec("npm run build",{cwd:n}).code)throw new Error("Couldnt build project.")},oa=async e=>{const{atom:t,packageDependencies:n,context:o,deploymentProjectTarget:a,setInProgress:i,deploymentProject:s,yamlTarget:r}=e;if(!0===a.enabled)if("lib"===a.name)await jn({...e});else if("red"===a.name)await _n({...e});else if("npm"===a.name)await kn({...e});else if("gcs"===a.name)await xn({...e});else if("gitlab"===a.name)await bn({...e});else if("fnet-package"===a.name)await $n({...e});else if("fnet-form"===a.name)await On({...e});else if("fnet-node"===a.name)await Cn({...e});else if("fnet-flow"===a.name)await In({...e});else{let e;if("nextjs"===a.name?e=Tn:"webos"===a.name?e=An:"electron"===a.name?e=Sn:"docker"===a.name?e=En:"ios"===a.name?e=Dn:"macos"===a.name?e=Pn:"rust"===a.name&&(e=Nn),!e)return;await e({atom:t,target:a,onProgress:i,projectDir:o.projectDir,dependencies:n,context:o,yamlTarget:r}),s.isDirty=!0}},{Atom:aa}=y,ia=M,sa=_,ra=F,ca=t,la=k,pa=q,da=r,fa=U,ma=Ln,ua=zn,ga=Gn,ha=Zn,wa=Fn,ya=Qn,va=no,ba=io,xa=co,ka=po,_a=mo,ja=go,Da=wo,Pa=bo,Sa=_o,Aa=Po,Ta=Ao,Ea=Eo,$a=Oo,Oa=({node:e})=>{const t=e.definition;if("end"===t.next);else if("stop"===t.next);else if("none"===t.next);else if(t.next){let n=e.parent;for(;n.parent;){const o=n.childs.find((e=>e.name===t.next));if(o){e.context.next=o;break}n=n.parent}}else{let t=e.parent,n=e.index+1;for(;t.parent&&(!t.blockAutoJumpToParent||!t.blockAutoJumpToSibling);)if(void 0!==t.blockAutoJumpToParent||void 0!==t.blockAutoJumpToSibling){if(t.blockAutoJumpToParent){const o=t.childs.find((e=>e.index===n));o&&(e.context.next=o);break}t.blockAutoJumpToParent||(n=t.index+1,t=t.parent)}else{const o=t.childs.find((e=>e.index===n));if(o){e.context.next=o;break}n=t.index+1,t=t.parent}}};var Ia=class{#e;#t;#n;#o;#a;#i;#s;#r;#c;#l;#p;#d;#f;#m;#u;#g;#h;#w;#y;#v;#b;constructor(e){this.#e=new Bo,this.#t=e,this.#i=[],this.#s=[],this.#r={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#v={packageDependencies:this.#i,packageDevDependencies:this.#s,setInProgress:this.setInProgress.bind(this),context:this.#t,Atom:aa,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#b={initNode:this.initNode.bind(this),cloneDeep:Fo,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:Oa,transformExpression:this.transformExpression.bind(this),transformValue:this.transformValue.bind(this)}}async _cache_set(e,t,n){this._redis_client&&await this._redis_client.SETEX(e,n||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async init(){this._redis_client=await Uo(),this.#p=this.#t.buildId||Lo(24),this.#v.buildId=this.#p,this.#u=this.#t.mode,this.#g=["all","deploy","build","file"].includes(this.#u),this.#h=["all","deploy","build"].includes(this.#u),this.#w=["all","deploy"].includes(this.#u),this.#y=["all","deploy","build","file","bpmn"].includes(this.#u),this.#f=this.#t.protocol,this.#d="BUILD:"+this.#p,this.#m=(await ca({optional:!0,name:"atom",dir:this.#t.projectDir,tags:this.#t.tags}))?.data;try{await this.setInProgress({message:"Initialization started."}),await this.initAuth(),await this.initWorkflow(),await Jo(this.#v),await zo(this.#v),await this.transformWorkflow({workflow:this.#o});const e=await this.initNodeTree({workflow:this.#o});await this.initNodeTreeIndex({root:e}),await this.initNodeCalls({root:e}),await this.initNodeCallLibs({root:e}),await this.initNodeForms({root:e}),await this.initNodeFormLibs({root:e}),await this.initAtomLibsAndDeps({libs:e.context.libs,packageDependencies:this.#i}),await this.resolveNodeTree({root:e}),this.#l=e}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e?.message||e}),e}}async initAuth(){this.#t.id&&(this.#c=await this.#e.init({config:this.#m}),this.#v.atomAccessToken=this.#c)}async initWorkflow(){const e=this.#t.id;this.#n=this.#t.project?.workflowAtom||await aa.get({id:e}),this.#o="string"==typeof this.#n.doc.content?(await da({content:this.#n.doc.content})).parsed:this.#n.doc.content;let t=this.#n.doc.bundleName;t=t||(this.#n.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#n.doc.bundleName=t,this.#n.type=this.#n.type||"workflow",this.#v.atom=this.#n}async initDependencies(){this.#i.push({package:"get-value",version:"^3.0"}),this.#i.push({package:"set-value",version:"^4.1"}),this.#n.doc.features.form_enabled?(this.#i.push({package:"react",version:"^18.2"}),this.#i.push({package:"react-dom",version:"^18.2"}),this.#i.push({package:"@flownet/react-app",version:"^0.1"}),this.#i.push({package:"@flownet/react-app-state",version:"^0.1"})):this.#i.push({package:"yargs",version:"^17"}),this.#i.push({package:"chalk",version:"^4"})}#x(e){console.log("filePath",e),Io.statSync(e).isDirectory()?(Io.readdirSync(e).forEach((t=>{const n=Co.join(e,t);this.#x(n)})),Io.rmSync(e)):Io.unlinkSync(e)}#k(e,t){const n=Io.existsSync(e),o=n&&Io.statSync(e);n&&o.isDirectory()?(Io.mkdirSync(t,{recursive:!0}),Io.readdirSync(e).forEach((n=>{this.#k(Co.join(e,n),Co.join(t,n))}))):Io.copyFileSync(e,t)}async initWorkflowDir(){const e=this.#t.projectDir,t=this.#t.coreDir,n=["node_modules"];if(Io.existsSync(e)){const t=Io.readdirSync(e);for(const o of t)if(!n.includes(o)){const t=Co.join(e,o);Io.rmSync(t,{recursive:!0})}}Io.existsSync(e)||Io.mkdirSync(e,{recursive:!0});const o=Co.join(e,"src");Io.existsSync(o)||Io.mkdirSync(o,{recursive:!0});const a=Co.join(o,"core");this.#k(t,a);const i=Co.join(o,"default","blocks");Io.existsSync(i)||Io.mkdirSync(i,{recursive:!0})}async initNunjucks(){const e=this.#t.templateDir;this.#a=Mo.configure(e,{watch:!1,dev:!0}),this.#v.njEnv=this.#a}transformWorkflow({workflow:e}){for(const t of Object.values(e))t.steps=t.steps||[],t.steps=t.steps.map((e=>this.transformStep({step:e})))}transformStep({step:e}){if(Array.isArray(e))throw new Error("Step must be an object.");const[t,n]=Object.entries(e)[0];if(n.hasOwnProperty("onerror")){const{onerror:o,...a}=n;e[t]={try:a,except:o}}if(e[t].hasOwnProperty("steps")){const n=e[t].steps;if(!Array.isArray(n))throw new Error("Steps must be an array.");e[t].steps=n.map((e=>this.transformStep({step:e})))}return e}async initNodeTree({workflow:e}){const t=Object.keys(e),n={definition:e,name:void 0,type:"root",parent:void 0,childs:[],blockAutoJumpToParent:!0,blockAutoJumpToSibling:!0,index:0,depth:0,context:{libs:[],atom:this.#n}};t.forEach((t=>{const o={name:t,type:"main"===t?"workflow":"subworkflow",childs:[],parent:n,definition:e[t],index:n.childs.length,depth:n.depth+1,context:{},blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1};n.childs.push(o)}));for await(const e of n.childs)await this.initNode({node:e});return n}async initNode({node:e}){const t={...this.#b,node:e};if(e.workflow=e.parent.workflow||e,e.depth=e.parent.depth+1,await ua.hits(t))await ua.init(t);else if(await ha.hits(t))await ha.init(t);else if(await wa.hits(t))await wa.init(t);else if(await ma.hits(t))await ma.init(t);else if(await ya.hits(t))await ya.init(t);else if(await ga.hits(t))await ga.init(t);else if(await va.hits(t))await va.init(t);else if(await ba.hits(t))await ba.init(t);else if(await xa.hits(t))await xa.init(t);else if(await ka.hits(t))await ka.init(t);else if(await _a.hits(t))await _a.init(t);else if(await ja.hits(t))await ja.init(t);else if(await Ea.hits(t))await Ea.init(t);else if(await $a.hits(t))await $a.init(t);else if(await Pa.hits(t))await Pa.init(t);else if(await Sa.hits(t))await Sa.init(t);else if(await Ta.hits(t))await Ta.init(t);else if(await Da.hits(t))await Da.init(t);else{if(!await Aa.hits(t))throw new Error("Undefined step type.");await Aa.init(t)}}async initNodeTreeIndex({root:e}){const t={};e.indexKey="/";for await(const n of e.childs)await this.initNodeIndex({node:n,index:t});return e.context.index=t,t}async initNodeIndex({node:e,index:t}){const n=Co.join(e.parent.indexKey,e.name);e.indexKey=n,t[n]=e;const o=[];let a=e;for(;a?.parent;)o.push(a.index),a=a.parent;o.reverse(),e.codeKey=`B_${o.join("_")}_${e.type}`,e.pathKey=`${o.join(".")}`,e.typeId=Lo(24);for await(const n of e.childs)await this.initNodeIndex({node:n,index:t})}async initNodeCalls({root:e}){const t=e.context.index,n=[];for await(const e of Object.keys(t)){const o=t[e];"call"===o.type&&n.push(o)}return e.context.calls=n,n}async initNodeCallLibs({root:e}){const t=[],n=e.context.calls;for await(const e of n){const n=e.definition.call,o=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:n,type:"atom"},a=t.find((e=>e.name===o.name&&e.type===o.type));a||t.push(o),e.target=a||o}return e.context.callLibs=t,e.context.libs=[...e.context.libs,...t],t}async findNodeCallTarget({refNode:e,curNode:t}){if(!t)return;const n=e.definition.call,o=t.childs.find((e=>e.name===n&&"subworkflow"===e.type));return o||await this.findNodeCallTarget({refNode:e,curNode:t.parent})}async initNodeForms({root:e}){const t=e.context.index,n=[];for await(const e of Object.keys(t)){const o=t[e];"form"===o.type&&n.push(o)}return e.context.forms=n,n}async initNodeFormLibs({root:e}){const t=[],n=e.context.forms;for await(const e of n){const n=e.definition.form,o=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:n,type:"atom"},a=t.find((e=>e.name===o.name&&e.type===o.type));a||t.push(o),e.target=a||o}return e.context.formLibs=t,e.context.libs=[...e.context.libs,...t],t}async findNodeFormTarget({refNode:e,curNode:t}){if(!t)return;const n=e.definition.form,o=t.childs.find((e=>e.name===n&&"subworkflow"===e.type));return o||await this.findNodeFormTarget({refNode:e,curNode:t.parent})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const n=e.filter((e=>"atom"===e.type));for(let e=0;e<n.length;e++){const o=n[e],a=await this.findAtomLibrary({url:o.name});o.atom=a;const i=a.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));i?.forEach((e=>{const n=t.find((t=>t.package===e.package));n?"string"==typeof e.path?(n.path||[]).some((t=>t===e.path))||(n.path=n.path||[],n.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(n.path||[]).some((t=>t===e))||(n.path=n.path||[],n.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const t=ia({url:e});if(!t)throw new Error(`Invalid package name: ${e}`);if(t.protocol||(t.protocol=this.#f),"ac:"===t.protocol){const n=t.pathname.split("/");if(1===n.length)return await aa.first({where:{name:e,parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===n.length){const e=await aa.first({where:{name:n[0],parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"folder"}});return await aa.first({where:{name:n[1],parent_id:e.id,type:"workflow.lib"}})}}else{if("local:"===t.protocol){const e=Co.resolve(this.#t.projectSrcDir,`${t.pathname}.js`),n=[],o=await la({file:e,recursive:!0}),a=!0===this.#n.doc.features.all_parsed_imports?o.all:o.required;for await(const e of a){if("npm"!==e.type)continue;if(n.find((t=>t.package===e.package)))continue;const t=(await sa({name:e.package,groupBy:{minor:!0}}))[0][0];n.push({package:e.package,subpath:e.subpath,version:`^${t}`,type:"npm"})}return{name:t.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:n},protocol:t.protocol}}if("npm:"===t.protocol){const e=(await sa({name:t.pathname,groupBy:{minor:!0}}))[0][0];return{name:t.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:[{package:t.pathname,version:`^${e}`,type:"npm"}]},protocol:t.protocol}}}}async resolveNodeTree({root:e}){for await(const t of e.childs)await this.resolveTypeWorkflow({node:t})}async resolveTypeWorkflow({node:e}){e.context.transform=Fo(e.definition);const t=e.context.transform;for(let e=0;e<t.params?.length;e++){const n=t.params[e];if("string"==typeof n)t.params[e]={key:n,hasDefault:!1};else{const o=Object.keys(n)[0];t.params[e]={key:o,hasDefault:!0,default:n[o]}}}e.context.next=e.childs[0];for await(const t of e.childs)await this.resolveType({node:t})}async resolveType({node:e}){const t={...this.#b,node:e};"function"==typeof e.resolve&&await e.resolve(t);for await(const t of e.childs)await this.resolveType({node:t})}async resolveTypeCommon({node:e}){const t=e.context.transform;t.hasOwnProperty("operation")&&(t.operation=await this.transformExpression(t.operation)),t.hasOwnProperty("page")&&(t.page=await this.transformExpression(t.page)),t.hasOwnProperty("print")&&(t.print=await this.transformExpression(t.print)),t.hasOwnProperty("sleep")&&(t.sleep=await this.transformExpression(t.sleep)),t.hasOwnProperty("assert")&&(t.assert=await this.transformExpression(t.assert))}async createAtomLibFiles({root:e}){await this.setInProgress({message:"Creating external lib files."}),this.#n.typesDir="./types";const t=e.context.libs.filter((e=>"atom"===e.type));for(let e=0;e<t.length;e++){const n=t[e].atom,o=this.#t.projectDir;if("local:"===n.protocol){const e=Co.resolve(this.#t.projectSrcDir,`${n.fileName||n.name}.js`),t=Co.relative(`${this.#t.projectDir}/src/default/blocks`,e);if(!Io.existsSync(e)){Io.mkdirSync(Co.dirname(e),{recursive:!0});let t="export default async (args)=>{\n";t+="}",Io.writeFileSync(e,t,"utf8")}n.relativePath=t.split(Co.sep).join("/"),this.#n.typesDir=`./types/${Co.basename(o)}/src`}else if("npm:"===n.protocol)n.relativePath=n.name;else{const e=`${o}/src/libs/${n.id}.js`,t=n.doc.contents?.find((e=>"esm"===e.format))||n.doc;Io.writeFileSync(Co.normalize(e),t.content,"utf8")}}}async createEngine({root:e}){await this.setInProgress({message:"Creating engine file."});const t=this.#t.templateDir,n=Mo.compile(Io.readFileSync(Co.resolve(t,"src/default/engine.js.njk"),"utf8"),this.#a).render({...e,ui:{package:"@flownet/react-app"}}),o=this.#t.projectDir,a=Co.resolve(o,"src/default/index.js");Io.writeFileSync(a,n,"utf8")}async createNodeTree({root:e}){await this.setInProgress({message:"Creating block files."});for await(const t of e.childs)await this.createTypeWorkflow({node:t})}async createTypeWorkflow({node:e}){const t=this.#t.templateDir,n=Mo.compile(Io.readFileSync(Co.resolve(t,"src/default/workflow.js.njk"),"utf8"),this.#a).render(e),o=this.#t.projectDir,a=Co.resolve(o,`src/default/${e.codeKey}.js`);Io.writeFileSync(a,n,"utf8");for await(const t of e.childs)await this.createType({node:t})}async createType({node:e}){switch(e.type){case"assign":case"steps":case"return":case"call":case"form":case"raise":case"switch":case"jump":case"tryexcept":case"for":case"operation":this.createBlockFromTemplate({node:e})}for await(const t of e.childs)await this.createType({node:t})}createBlockFromTemplate({node:e}){const t=this.getBlockTemplate({node:e});e.context.render=t.render(e),this.createStepFile({node:e})}getBlockTemplate({node:e}){let t=this.#r[e.type];if(t)return t;const n=this.#t.templateDir;return t=Mo.compile(Io.readFileSync(Co.resolve(n,`src/default/blocks/${e.type}.js.njk`),"utf8"),this.#a),this.#r[e.type]=t,t}createStepFile({node:e}){const t=this.#t.projectDir,n=`${e.codeKey}.js`,o=Co.resolve(t,`src/default/blocks/${n}`);Io.writeFileSync(o,e.context.render,"utf8"),e.context.fileName=n,e.context.filePath=o}async transformExpression(e){let t=await this.transformValue(e);return t=JSON.stringify(t),t=this.replaceSpecialPattern(t),t}async transformValue(e){if(Array.isArray(e))for(let t=0;t<e.length;t++)e[t]=await this.transformValue(e[t]);else if(qo(e)){const t=Object.keys(e);for(let n=0;n<t.length;n++)e[t[n]]=await this.transformValue(e[t[n]])}else if("string"==typeof e){const t=await pa({expression:e});if(t){const{processor:n,statement:o}=t;switch(n){case"v":e=`$::v.${o}::`;break;case"e":e=`$::${o}::`;break;case"m":e=`$::closure.module['${o}']::`;break;case"f":e=`$::closure.form.${o}::`;break;case"for":e=`$::caller.for.${o}::`}}}return e}replaceSpecialPattern(e){return e.replace(/"\$::(.*?)::"/g,"$1")}replaceExpressionLegacy(e){return e.replaceAll(/(?<outer>"\${(?<inner>[^{]*)}")/g,"$2")}async createProjectYaml(){const e="flow.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const{content:n,...o}=this.#n.doc,a={content:No.stringify(o)},i=this.#t.templateDir,s=Mo.compile(Io.readFileSync(Co.resolve(i,`${e}.njk`),"utf8"),this.#a).render(a),r=this.#t.projectDir,c=Co.resolve(r,`${e}`);Io.writeFileSync(c,s,"utf8")}async createProjectMainYaml(){const e="flow.main.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const n={content:No.stringify(this.#o)},o=this.#t.templateDir,a=Mo.compile(Io.readFileSync(Co.resolve(o,`${e}.njk`),"utf8"),this.#a).render(n),i=this.#t.projectDir,s=Co.resolve(i,`${e}`);Io.writeFileSync(s,a,"utf8")}async runPrettifier(){const e=this.#t.projectDir,t=Ro.exec("prettier --write .",{cwd:Co.resolve(e,"src")});if(0!==t.code)throw new Error(t.stderr)}async deploy(){if(await this.setInProgress({message:"Deploying."}),this.#t.project?.devops){const e=[this.#t.project?.devops];for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&await n.save()}}else if(this.#n.id){const e=await aa.list({type:"workflow.deploy",parent_id:this.#n.id});for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&(n=await aa.update(n,{id:n.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:n}=t,o=n.get("targets")||[],a=t.doc.targets||[];for(let e=0;e<a.length;e++){const n=a[e],i=o.items[e];await oa({...this.#v,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:i})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#t.id)return;let o=await aa.first({name:t.params.name,parent_id:this.#m.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:n.version}),await aa.update(o,{id:o.id})):o=await aa.create({parent_id:this.#m.env.ATOM_PACKAGES_ID,doc:{name:t.params.name,type:"pm",versions:[{v:n.version}]}})}async setInProgress({message:e}){console.log(fa.blue(e)),await this._cache_set(this.#d,{status:"IN_PROGRESS",message:e})}async build(){if(this.#y&&!this.#g)return await this.createNetwork();try{const e=this.#y?await ra({root:this.#l}):void 0;if(this.#g){if(await this.initWorkflowDir(),await this.initNunjucks(),this.#y){const t=this.#t.project?.projectDir||this.#t.projectDir;Io.writeFileSync(Co.resolve(t,"./fnet/flow.bpmn"),e.diagramXML,"utf8")}await this.createAtomLibFiles({root:this.#l}),await this.createEngine({root:this.#l}),await this.createNodeTree({root:this.#l}),await this.createProjectYaml(),await this.createProjectMainYaml(),await Zo(this.#v),await Yo(this.#v),await Xo(this.#v),await Vo(this.#v),await Go(this.#v),await Wo(this.#v),await Ho(this.#v),await Ko(this.#v),await Qo(this.#v),await ea(this.#v),this.#h&&(await ta(this.#v),await na(this.#v),this.#w&&await this.deploy())}await this._cache_set(this.#d,{status:"COMPLETED",data:{network:e}})}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e.message||e}),e}}async createNetwork(){try{const e=await ra({root:this.#l});await this._cache_set(this.#d,{status:"COMPLETED",data:{...e}})}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e.message||e}),e}}};const Ca=p,Na=d;var Ra=function({baseDir:e=__dirname}){let t=e;for(;t!==Na.parse(t).root;){const e=Na.join(t,"node_modules");if(Ca.existsSync(e))return e;t=Na.dirname(t)}return null};const Ma=process.cwd(),{spawn:Fa}=e;t({name:["redis"],dir:Ma,optional:!0});const qa=n,Ua=o,La=a,Ba=i,Ja=s,za=r,Wa=t,Ka=c,Ga=l,Ha=Ia,Va=Ra({baseDir:__dirname}),Xa="win32"===process.platform?";":":";process.env.PATH=`${qa.join(Va,"/.bin")}${Xa}${process.env.PATH}`;let Ya=Ua(process.argv.slice(2)).command("create","Initialize flow node project",(e=>e.option("name",{type:"string"}).option("vscode",{type:"boolean",default:!0,alias:"vs"})),(async e=>{try{const t=qa.resolve(Va,"./@fnet/cli-project-flow/dist/template/project"),n=qa.resolve(Ma,e.name);La.existsSync(n)||La.mkdirSync(n),await Ga({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let o=Ja.exec("fnet build",{cwd:n});if(0!==o.code)throw new Error("Failed to build project.");if(Ja.which("git")&&(o=Ja.exec("git init --initial-branch=main",{cwd:n}),0!==o.code))throw new Error("Failed to initialize git.");if(Ja.which("code")&&e.vscode&&(o=Ja.exec(`cd ${n} && code .`),0!==o.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})).command("project","Flow node project",(e=>e.option("update",{type:"boolean",default:!1,alias:"-u"})),(async e=>{try{const t=qa.resolve(Va,"@fnet/cli-project-flow/dist/template/project"),n=process.cwd();if(e.name=qa.basename(n),e.update){if(await Ga({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0}),0!==Ja.exec("fnet build",{cwd:n}).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(e){console.error("Project failed.",e.message),process.exit(1)}})).command("build","Build flownet project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"]}).option("ftag",{type:"array"})),(async e=>{try{const t=await Qa(e),n=new Ha(t);await n.init(),await n.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}})).command("deploy","Build and deploy flownet project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await Qa({...e,mode:"all"}),n=new Ha(t);await n.init(),await n.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}})).command("file","Just create files",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await Qa({...e,mode:"file"}),n=new Ha(t);await n.init(),await n.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}}));function Za(e,{name:t,bin:n,preArgs:o=[]}){return e.command(`${t||n} [commands..]`,`${n} ${o.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const t=await Qa(e),{projectDir:a}=t,i=process.argv.slice(3);Fa(n,[...o,...i],{cwd:a,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function Qa(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:qa.resolve(Ma,`./.output/${e.id}`),templateDir:qa.resolve(Va,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:qa.resolve(Va,"./@fnet/cli-project-common/dist/template/default"),coreDir:qa.resolve(Va,"./@fnet/cli-project-flow/dist/template/core"),tags:e.ftag}}{const t=await async function({tags:e}){const t=qa.resolve(Ma,"flow.yaml");if(!La.existsSync(t))throw new Error("flow.yaml file not found in current directory.");const{raw:n,parsed:o}=await za({file:t,tags:e}),a=qa.dirname(t),i=o.main||"flow.main.yaml";let s=qa.resolve(a,i);if(!La.existsSync(s)&&(s=qa.resolve(a,i+".yaml"),!La.existsSync(s)))throw new Error(`${i} file not found in ${s}.`);const{raw:r,parsed:c}=await za({file:s,tags:e}),l={workflowAtom:{doc:{...o,"content-type":"yaml",content:r}},projectDir:a,projectFilePath:t,projectFileContent:n,projectFileParsed:o,projectMainFilePath:s,projectMainFileContent:r,projectMainFileParsed:c};let p=qa.resolve(a,"fnet/targets.yaml");if(!La.existsSync(p)&&(p=qa.resolve(a,"flow.devops.yaml"),La.existsSync(p))){const e=qa.resolve(a,"fnet");La.existsSync(e)||La.mkdirSync(e),La.copyFileSync(p,qa.resolve(a,"fnet/targets.yaml")),La.unlinkSync(p)}if(La.existsSync(p)){const{raw:t,parsed:n}=await za({file:p,tags:e}),o=Ba.parseDocument(t);l.devops={filePath:p,fileContent:t,yamlDocument:o,doc:{...n},type:"workflow.deploy",save:async()=>{La.writeFileSync(l.devops.filePath,o.toString())}}}const d=qa.resolve(a,"readme.md");if(La.existsSync(d)){const e=La.readFileSync(d,"utf8");l.readme={filePath:d,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return l}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:qa.resolve(Va,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:qa.resolve(Va,"./@fnet/cli-project-common/dist/template/default"),coreDir:qa.resolve(Va,"./@fnet/cli-project-flow/dist/template/core"),projectDir:qa.resolve(t.projectDir,"./.workspace"),projectSrcDir:qa.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}Ya=Ya.command("create-input <name>","Create an input config file",(e=>e.positional("name",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await Qa(e),{project:n}=t,{projectDir:o,projectFileParsed:a}=n,i=a.input;if(!i)throw new Error("Config schema not found in project file.");const s=await Ka({schema:i,format:"yaml"}),r=qa.resolve(o,".fnet");La.existsSync(r)||La.mkdirSync(r);const c=qa.resolve(r,`${e.name}.fnet`);La.writeFileSync(c,s)}catch(e){console.error(e.message),process.exit(1)}})),Ya=function(e){return e.command("update-input <name>","Update an input config file",(e=>e.positional("name",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await Qa(e),{project:n}=t,{projectDir:o,projectFileParsed:a}=n,i=a.input;if(!i)throw new Error("Config schema not found in project file.");const s=qa.resolve(o,".fnet"),r=qa.resolve(s,`${e.name}.fnet`),c=await Ka({schema:i,format:"yaml",ref:r});La.existsSync(s)||La.mkdirSync(s),La.writeFileSync(r,c)}catch(e){console.error(e.message),process.exit(1)}}))}(Ya),Ya=Za(Ya,{bin:"npm"}),Ya=Za(Ya,{bin:"node"}),Ya=Za(Ya,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),Ya=Za(Ya,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),Ya=Za(Ya,{name:"app",bin:"npm",preArgs:["run","app","--"]}),Ya=Za(Ya,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),Ya=Za(Ya,{bin:"npx"}),Ya=Za(Ya,{bin:"cdk"}),Ya=Za(Ya,{bin:"aws"}),Ya=function(e,{name:t,preArgs:n=[]}){return e.command(`${t} <config> <command> [options..]`,"Run a command with a config context",(e=>e.positional("config",{type:"string"}).positional("command",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await Qa(e),{projectDir:o}=t,a=e.config,i=await Wa({name:a,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),s=i?.data?.env||void 0,r=e.command,c=process.argv.slice(5);Fa(r,[...n,...c],{cwd:o,stdio:"inherit",shell:!0,env:{...process.env,...s}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(Ya,{name:"with"}),Ya.demandCommand(1,"You need at least one command before moving on").help().argv,module.exports={};
|