@fnet/cli 0.64.7 → 0.64.9
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"),n=require("fs"),s=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"),v=require("lodash.merge"),b=require("@flownet/lib-parse-imports-js"),_=require("@flownet/lib-list-npm-versions"),j=require("ajv/dist/2020"),D=require("ajv/dist/standalone"),k=require("ajv-formats"),x=require("@fnet/shell"),S=require("semver"),A=require("@fnet/up-list-files"),P=require("node:os"),I=require("@node-red/util"),E=require("@flownet/lib-to-ios-app"),T=require("lodash.clonedeep"),$=require("@flownet/lib-to-macos-app"),O=require("@flownet/lib-to-electron"),C=require("@flownet/lib-to-webos"),R=require("@flownet/lib-to-nextjs"),M=require("@flownet/lib-to-docker"),F=require("form-data"),q=require("@fnet/to-rust"),L=require("@flownet/lib-parse-node-url"),N=require("@flownet/lib-pick-npm-versions"),U=require("chalk");const B=u,z=f;const{Api:J}=y,W=h.default,K=w;const G=v;var H=({feature:e,features:t,packageDevDependencies:a})=>{const{name:o,packages:n,options:s,extraCheck:r,explicit:i}=e,c=`${o}_enabled`,p=t.rollup_output||{},l=Object.keys(p);let d=s||{};const m=t[o]?.options;m&&(d=G(d,m));const u=!t[o]||!1===t[o]?.enabled;l.forEach((e=>{const a=t.rollup_output[e];if(a){if(Reflect.has(a,o)){if(u||!a[o]||!1===a[o]?.enabled)return void delete a[o];!0===a[o]&&(a[o]={enabled:!0,options:d})}else{if(u||i||!1===t[c])return;a[o]={enabled:!0}}a[o]=a[o]||{},a[o].options={...d,...a[o].options}}}));let f=l.some((e=>!0===t.rollup_output[e][o]?.enabled));r&&(f=r()&&f),t[c]=f,f&&n.forEach((e=>a.push({package:e[0],version:e[1]})))};const X=H;const Y=H;const Z=H;const Q=H;const V=H;const ee=H;const te=H;const ae=H;const oe=H;const ne=H;const se=H;const re=H;const ie=H;const ce=v,pe=l,le=d,de=b,me=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;X({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}},explicit:!0},features:o,packageDevDependencies:a})},ue=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;Y({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:o,packageDevDependencies:a})},fe=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;Z({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.3"]]},features:o,packageDevDependencies:a})},ge=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;Q({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:o,packageDevDependencies:a})},ye=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;V({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:o,packageDevDependencies:a})},he=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;ee({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:o,packageDevDependencies:a})},we=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;te({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:o,packageDevDependencies:a})},ve=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;ae({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:o,packageDevDependencies:a})},be=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;oe({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:o,packageDevDependencies:a})},_e=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;ne({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:o,packageDevDependencies:a})},je=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;se({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:o,packageDevDependencies:a})},De=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features,n={};!0===o.app?.enabled&&(n.targets=n.targets||[],n.targets.push({src:"./src/app/index.html",dest:o.app.dir}),Reflect.has(o.app,"copy")||Reflect.has(o,"copy")||(o.copy=!0)),re({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:n},features:o,packageDevDependencies:a})},ke=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features,n=o.css&&!1!==o.css.enabled;let s=[];if(n){s.push(["rollup-plugin-postcss","^4"]),s.push(["sass","^1.66"]);(o.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":s.push(["postcss-import","^15"]);break;case"postcss-url":s.push(["postcss-url","^10"]);break;case"postcss-preset-env":s.push(["postcss-preset-env","^9"]);break;case"autoprefixer":s.push(["autoprefixer","^10"]);break;case"cssnano":s.push(["cssnano","^6"])}}))}ie({feature:{name:"css",packages:s},features:o,packageDevDependencies:a})};function xe({dir:e,name:t="index"}){let a=le.resolve(e,`./${t}.tsx`);if(pe.existsSync(a)||(a=le.resolve(e,`./${t}.ts`)),pe.existsSync(a)||(a=le.resolve(e,`./${t}.jsx`)),pe.existsSync(a)||(a=le.resolve(e,`./${t}.js`)),!pe.existsSync(a))return{};const o=a,n=le.extname(a);return{file:o,ext:n,ts:".ts"===n||".tsx"===n,name:t}}const Se=_;const Ae=l,Pe=d,Ie=p;const Ee=m,Te=l,$e=d,Oe=b,Ce=_;const Re=l,Me=d,Fe=p;const qe=l,Le=d,Ne=m,Ue=b;const Be=l,ze=d,Je=m,We=j,Ke=D,Ge=k;const He=l,Xe=d,Ye=m;const Ze=l,Qe=d,Ve=m;const et=m,tt=l,at=d,ot=i;const nt=r,st=a;const rt=r;const it=r;const ct=r;const pt=x,lt=t;const dt=l,mt=d,ut=S,ft=x,gt=t;const yt=l,ht=d,wt=S,vt=r,bt=t,_t=A,jt=c,Dt=s;const kt=l,xt=d,St=P,At=m,Pt=I,It=t;const Et=n,Tt=a,$t=t;const Ot=t,Ct=E,Rt=T,Mt=S;const Ft=t,qt=$,Lt=T,Nt=S;const Ut=t,Bt=O,zt=T,Jt=S;const Wt=t,Kt=C,Gt=T,Ht=S;const Xt=t,Yt=R,Zt=T,Qt=S;const Vt=t,ea=M,ta=T,aa=S;const oa=l,na=d,sa=S,ra=x,ia=t,ca=h.default;const pa=S,la=t,da=h.default;const ma=S,ua=t,fa=h.default,ga=n,ya=x,ha=F;const wa=S,va=t,ba=h.default,_a=n,ja=x,Da=F;const ka=t,xa=q,Sa=T,Aa=S;const Pa=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,buildId:n})=>{await e({message:"Deploying it as gitlab project."});const s=t.projectDir;let r="fnet-to-gitlab";const i=o.params.config||"gitlab",c=await lt({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='${s}'`,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 pt({cmd:r}),a.isDirty=!0)},Ia=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,registerToPackageManager:n,yamlTarget:s})=>{await e({message:"Deploying it as gcs package."});const r=t.projectDir,i=mt.resolve(r,"package.json"),c=dt.readFileSync(i),p=JSON.parse(c);p.name=o.params.name,p.version=ut.inc(o.version,"patch"),delete p.scripts,delete p.devDependencies,dt.writeFileSync(i,JSON.stringify(p,null,"\t"));const{file:l,data:d}=await gt({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='${mt.resolve(mt.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 ft({cmd:m}),dt.writeFileSync(i,c),!0!==o.dryRun&&(a.isDirty=!0,o.version=p.version,s.set("version",p.version),await n({target:o,packageJSON:p}))},Ea=async({atom:e,setInProgress:t,context:a,deploymentProject:o,deploymentProjectTarget:n,yamlTarget:s})=>{await t({message:"Deploying it as npm package."});const r=a.projectDir,i=ht.resolve(r,"package.json"),c=yt.readFileSync(i),p=JSON.parse(c);p.name=n.params.name,p.version=wt.inc(n.version,"patch");const l=n.params.bin?.name||n.params.bin;!1!==n.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 ."},yt.writeFileSync(i,JSON.stringify(p,null,"\t"));const d=n.config||"npm";let m=(await bt({name:d,dir:a.projectDir,tags:a.tags,optional:!0}))?.data;if(!m){const e=_t({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===e.length)throw new Error("Couldnt find schema to create npm config");const t=await jt({schema:e[0],tags:a.tags}),o=a.project.projectDir,n=ht.resolve(o,".fnet");yt.existsSync(n)||yt.mkdirSync(n),yt.writeFileSync(ht.resolve(n,`${d}.fnet`),Dt.stringify(t)),m=t}if(yt.writeFileSync(ht.resolve(r,".npmrc"),`//registry.npmjs.org/:_authToken=${m.env.NPM_TOKEN}`),!0!==n.dryRun){if(0!==vt.exec("npm publish --access public",{cwd:r}).code)throw new Error("Couldnt publish to npm");yt.writeFileSync(i,c),o.isDirty=!0,n.version=p.version,s.set("version",p.version)}},Ta=async({atom:e,setInProgress:t,context:a,deploymentProject:o,deploymentProjectTarget:n,buildId:s,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"===n.deploy.template)d={atom:e,packageDependencies:r,red:{tab:{id:n.deploy.id||Pt.util.generateId(),label:`${l}/${e.id?e.id:St.hostname()}/${e.name}/${n.deploy.name||n.deploy.template}`},function:{id:Pt.util.generateId(),name:e.doc.name,initialize:{content:kt.readFileSync(xt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},inject:{id:Pt.util.generateId(),...n.params?.inject,payload:"json"===n.params?.inject?.payloadType?`'${JSON.stringify(n.params?.inject?.payload)}'`:n.params?.inject?.payload},debug:{id:Pt.util.generateId()}}};else if("cronjob"===n.deploy.template){let t=n.params?.schedules?cloneDeep(n.params?.schedules):void 0;t?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),d={atom:e,packageDependencies:r,red:{tab:{id:n.deploy.id||Pt.util.generateId(),label:`${l}/${e.id?e.id:St.hostname()}/${n.deploy.name||n.deploy.template}`},function:{id:Pt.util.generateId(),name:e.doc.name,initialize:{content:kt.readFileSync(xt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},cronjob:{id:Pt.util.generateId(),schedules:t},debug:{id:Pt.util.generateId()}}}}else{if("http"!==n.deploy.template)return;d={atom:e,packageDependencies:r,red:{tab:{id:n.deploy.id||Pt.util.generateId(),label:`${l}/${e.id?e.id:St.hostname()}/${n.deploy.name||n.deploy.template}`},function:{id:Pt.util.generateId(),name:e.doc.name,initialize:{content:kt.readFileSync(xt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},httpin:{id:Pt.util.generateId(),method:n.params.method||"get",url:n.params.url},httpout:{id:Pt.util.generateId()},debug:{id:Pt.util.generateId()}}}}let m=At.compile(kt.readFileSync(xt.resolve(p,`deploy/node-red/${n.deploy.template}.yaml.njk`),"utf8"),i).render(d);if(kt.writeFileSync(xt.resolve(c,"node-red.yaml"),m),m=yaml.load(m),!0===n.dryRun)return;o.isDirty=!0;const u=(await It({name:a.redConfig||"red",dir:a.projectDir,tags:a.tags}))?.data,f=n.deploy.url||u.env.RED_URL,g={};if(!1!==n.deploy.auth&&(g.Authorization="Bearer "+atomAccessToken),n.deploy.id)!0===n.actions?.delete?(await axios({method:"DELETE",url:`${f}/flow/${n.deploy.id}`,headers:g}),delete n.actions.delete,delete n.deploy.id,n.enabled=!1):await axios({method:"PUT",url:`${f}/flow/${n.deploy.id}`,data:m,headers:g});else{const e=await axios({method:"POST",url:`${f}/flow`,data:m,headers:g});n.deploy.id=e.data.id}},$a=async({atom:e,Atom:t,setInProgress:a,context:o,packageDependencies:n,deploymentProject:s,deploymentProjectTarget:r})=>{await a({message:"Deploying it as workflow lib."});const i=(await $t({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(s.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:Et.readFileSync(Tt.resolve(m,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:Et.readFileSync(Tt.resolve(m,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:Et.readFileSync(Tt.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],c.doc.name=l,c.doc.dependencies=n,"workflow.lib"===e.type?c.doc.subtype="library":"workflow"===e.type&&(c.doc.subtype="workflow"),c=await t.update(c,{id:c.id})},Oa=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as ios-app package."});const i=t?.config?await Ot({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=Mt.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=Rt(t.params);p.dependencies=Rt(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Ct(l)}},Ca=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as macos-app package."});const i=t?.config?await Ft({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=Nt.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=Lt(t.params);p.dependencies=Lt(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await qt(l)}},Ra=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as electron package."});const i=t?.config?await Ut({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=Jt.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=zt(t.params);p.dependencies=zt(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Bt(l)}},Ma=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as webos package."});const i=t?.config?await Wt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=Ht.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=Gt(t.params);p.dependencies=Gt(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Kt(l)}},Fa=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as nextjs package."});const i=t?.config?await Xt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=Qt.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=Zt(t.params);p.dependencies=Zt(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Yt(l)}},qa=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as docker package."});const i=t?.config?await Vt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=aa.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=ta(t.params);p.dependencies=ta(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await ea(l)}},La=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:n})=>{await e({message:"Deploying it as fnet package."});const s=t.projectDir,r=na.resolve(s,"package.json"),i=oa.readFileSync(r),c=JSON.parse(i);c.name=o.params.name,c.version=sa.inc(o.version,"patch"),delete c.scripts,delete c.devDependencies,oa.writeFileSync(r,JSON.stringify(c,null,"\t"));const{file:p,data:l}=await ia({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 ca({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='${na.resolve(na.dirname(p),l.env.GCS_UPLOADER_KEY_FILE)}'`,y+=` --dir='${s}'`,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 ra({cmd:y}),oa.writeFileSync(r,i),!0===o.dryRun)return;a.isDirty=!0,o.version=c.version,n.set("version",c.version);const h=`${l.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(f=await ca({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.")},Na=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:n})=>{await e({message:"Deploying it as fnet form."});const{file:s,data:r}=await la({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 i=`${r.env.ATOM_API_URL}/v1/auth/token`,c=r.env.ATOM_API_USERNAME,p=r.env.ATOM_API_PASSWORD;let l=await da({method:"POST",url:i,data:{username:c,password:p},headers:{"Content-Type":"application/json"}});const d=l.data?.access_token;if(!d)throw new Error(`Invalid access_token from ${i}`);a.isDirty=!0;const m=pa.inc(o.version,"patch");o.params.version=m,o.version=m,n.set("version",m);const u=`${r.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(l=await da({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 ${d}`}}),l.data?.error)throw new Error("Error publishing fnet form.")},Ua=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:n})=>{await e({message:"Deploying it as fnet flow."});const{file:s,data:r}=await ua({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 i=`${r.env.ATOM_API_URL}/v1/auth/token`,c=r.env.ATOM_API_USERNAME,p=r.env.ATOM_API_PASSWORD;let l=await fa({method:"POST",url:i,data:{username:c,password:p},headers:{"Content-Type":"application/json"}});const d=l.data?.access_token;if(!d)throw new Error(`Invalid access_token from ${i}`);a.isDirty=!0;const m=ma.inc(o.version,"patch");o.params.version=m,o.version=m,n.set("version",m);const u=`${r.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(l=await fa({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 ${d}`}}),l.data?.error)throw new Error("Error publishing fnet flow.");const f=l.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const y=await ya({cmd:g});if(0!==y.code)throw new Error(y.stderr);const h=JSON.parse(y.stdout).path;let w=new ha;w.append("file",ga.createReadStream(h));const v=await fa.request({method:"POST",maxBodyLength:1/0,url:`${r.env.ATOM_API_URL}/v1/service/upload/single/${f}`,headers:{...w.getHeaders(),Authorization:`Bearer ${d}`},data:w});if(v.data?.error)throw new Error("Error uploading fnet flow.")},Ba=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:n})=>{await e({message:"Deploying it as fnet node."});const{file:s,data:r}=await va({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 i=`${r.env.ATOM_API_URL}/v1/auth/token`,c=r.env.ATOM_API_USERNAME,p=r.env.ATOM_API_PASSWORD;let l=await ba({method:"POST",url:i,data:{username:c,password:p},headers:{"Content-Type":"application/json"}});const d=l.data?.access_token;if(!d)throw new Error(`Invalid access_token from ${i}`);a.isDirty=!0;const m=wa.inc(o.version,"patch");o.params.version=m,o.version=m,n.set("version",m);const u=`${r.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(l=await ba({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 ${d}`}}),l.data?.error)throw new Error("Error publishing fnet node.");const f=l.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const y=await ja({cmd:g});if(0!==y.code)throw new Error(y.stderr);const h=JSON.parse(y.stdout).path;let w=new Da;w.append("file",_a.createReadStream(h));const v=await ba.request({method:"POST",maxBodyLength:1/0,url:`${r.env.ATOM_API_URL}/v1/service/upload/single/${f}`,headers:{...w.getHeaders(),Authorization:`Bearer ${d}`},data:w});if(v.data?.error)throw new Error("Error uploading fnet node.")},za=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as Rust package."});const i=t?.config?await ka({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=Aa.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=Sa(t.params);p.dependencies=Sa(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await xa(l)}};const Ja=l,Wa=d,Ka=s,Ga=r,Ha=m,Xa=async()=>{if(!await z({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=B.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e},{nanoid:Ya}=g,Za=class{init({config:e,accessToken:t}){return new Promise(((a,o)=>{if(J.set_api_url(e.data.url),t)return J.set_req_token(t),void a(t);W({method:"POST",url:`${e.data.issuer}/protocol/openid-connect/token`,data:K.stringify(e.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((e=>{J.set_req_token(e.data.access_token),a(e.data.access_token)})).catch((e=>{J.set_req_token(),o(e)}))}))}},Qa=async e=>{const{atom:t,context:a,packageDevDependencies:o}=e;t.doc.features=t.doc.features||{};const n=t.doc.features;n.project=n.project||{},n.project.format=n.project.format||n.project_format||"esm",n.project_format=n.project.format,n.dts_enabled=!0===n.dts||void 0!==n.dts&&!1!==n.dts,n.hasOwnProperty("all_parsed_imports")||(n.all_parsed_imports=!0);const s=le.resolve(a.project.projectDir),r=xe({dir:le.resolve(s,"./app")});if(r.file){let e=await de({file:r.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));n.app_uses_jsx=t,n.app_has_entry=!0,e=await de({file:r.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),n.app_entry_uses_jsx=t,n.app_entry_is_ts=r.ts,n.app_entry_ext=r.ext}const i=xe({dir:le.resolve(s,"./cli")});if(i.file){let e=await de({file:i.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));n.cli_uses_jsx=t,n.cli_has_entry=!0,e=await de({file:i.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),n.cli_entry_uses_jsx=t,n.cli_entry_is_ts=i.ts,n.cli_entry_ext=i.ext}if("workflow.lib"===t.type){const e=xe({dir:le.resolve(s,"./src")});if(e.file){let t=await de({file:e.file,recursive:!0}),a=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));n.src_uses_jsx=a,n.src_has_entry=!0,t=await de({file:e.file}),a=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),n.src_entry_uses_jsx=a,n.src_entry_is_ts=e.ts,n.src_entry_ext=e.ext}}const c=Reflect.has(n,"app_entry_uses_jsx")?!0===n.app_entry_uses_jsx:!0===n.src_entry_uses_jsx,p=Reflect.has(n,"cli_entry_uses_jsx")?!0===n.cli_entry_uses_jsx:!0===n.src_entry_uses_jsx;n.form_enabled=!0===t.doc.form||!0===t.doc.form?.enabled||!0===n.form||!0===n.form?.enabled,n.multiple_enabled=n.multiple_enabled||!0===n.multiple||!0===n.multiple?.enabled,!1===n.app?n.app={enabled:!1}:!0===n.app?n.app={enabled:!0,extend:!0===n.app_has_entry,export:!0,react:c}:n.app={enabled:!0,extend:!0===n.app_has_entry,export:!0,react:c,...n.app||{}},n.app.enabled=!0===n.app.enabled&&(!0===t.doc.features.form_enabled||!0===n.app.extend||!0===n.app.enabled),n.app.format=n.app.format||"esm",n.app.folder=n.app.folder||n.app.format||"default",!1===n.cli?n.cli={enabled:!1}:!0===n.cli?n.cli={enabled:!0,extend:!0===n.cli_has_entry,export:!0,react:p}:n.cli={enabled:!0,extend:!0===n.cli_has_entry,export:!0,react:p,...n.cli||{}},n.cli.enabled=!0===n.cli.enabled&&(!1===t.doc.features.form_enabled||!0===n.cli.extend||!0===n.cli.enabled),n.cli.format=n.cli.format||"esm",n.cli.folder=n.cli.folder||n.cli.folder||"esm",n.cli.node_options=n.cli.node?.options||n.cli.node_options||"",n.json=n.cli.enabled||n.json;const l={cjs:{format:"cjs",context:n.form_enabled?"window":"global",babel:!0===n.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==n.cjs,copy:!1},esm:{format:"esm",context:n.form_enabled?"window":"global",babel:!0===n.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!1!==n.esm,copy:!0},iife:{format:"iife",context:n.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==n.iife,terser:!0,copy:!1}};!0===n.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",copy:!1,babel_options:{targets:{chrome:"79"}}}),!0===n.electron&&(l.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===n.nextjs&&(l.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===n.ios&&(l.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===n.macos&&(l.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===n.app.enabled&&(n.app.dir=`./dist/app/${n.app.folder}`,l.app={format:n.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:n.app.dir,terser:!0,output_exports:!1===n.app.export?"none":"auto"}),!0===n.cli.enabled&&(n.cli.dir=`./dist/cli/${n.cli.folder}`,l.cli={format:n.cli.format,context:"global",babel:!0===n.src_uses_jsx||!0===n.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:n.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===n.cli.export?"none":"auto"});const d={server:".",startPath:`${le.normalize(n.app.dir||".")}`,files:[le.normalize("./dist/**/*")],cors:!0,open:!1};n.babel_options=ce({targets:{browsers:"last 9 versions, not dead",node:"18"}},n.babel_options||n.babel?.options),n.browsersync_options=ce(d,n.browsersync_options||n.browsersync?.options||{}),n.replace_options=ce({},n.replace_options||n.replace?.options||{}),Reflect.has(n.browsersync_options,"proxy")&&delete n.browsersync_options.server,n.rollup=n.rollup||{},n.rollup_output=ce(l,n.rollup_output||n.rollup?.output||{}),n.preact_enabled=!0===n.preact||n.preact&&!1!==n.preact?.enabled;let m=Object.keys(l);for(const e of m){const t=l[e];t&&(!1!==n.rollup[e]?(t.babel_options=t.babel_options||n.babel_options,t.browsersync_options=ce(n.browsersync_options,t.browsersync_options),t.replace_options=ce(n.replace_options,t.replace_options),n.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"),n.form_enabled&&(t.babel=!0)):delete n.rollup_output[e])}m=Object.keys(n.rollup_output),n.babel_enabled=m.some((e=>!0===n.rollup_output[e].babel)),n.browser_enabled=m.some((e=>!0===n.rollup_output[e].babel)),n.browsersync_enabled=!1!==n.browsersync&&m.some((e=>!0===n.rollup_output[e].browsersync)),n.browsersync_enabled=n.browsersync_enabled&&n.app.enabled,n.dependency_auto_enabled=!1!==n.dependency_auto&&!1!==n.dependency_auto?.enabled,n.npm_install_flags=n.npm_install_flags||"",n.react_version=n.react_version||n.react?.version||18,ke(e),De(e),je(e),_e(e),be(e),we(e),ve(e),he(e),ye(e),ge(e),fe(e),me(e),ue(e)},Va=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 Se({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"}))}e.doc.features.preact_enabled&&t.push({package:"preact",version:"^10"}),!0===e.doc.features.cli.enabled&&(t.push({package:"@fnet/args",version:"^0.1"}),a.push({package:"ajv",version:"^8"}),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"})},eo=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{if(!0!==e.doc.features.app.enabled)return;await t({message:"Creating app folder"});const n={atom:e,packageDependencies:o,ts:Date.now()},s=a.templateDir,r=Pe.resolve(a.projectDir,"src/app");Ae.existsSync(r)||Ae.mkdirSync(r,{recursive:!0});let i=["index.js.njk"];!1!==e.doc.features.app.html&&i.push("index.html.njk"),await Ie({pattern:i,dir:Pe.resolve(s,"src/app"),outDir:r,context:n})},to=async({atom:e,context:t,packageDependencies:a,packageDevDependencies:o,setInProgress:n})=>{await n({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 s=a.find((e=>"react"===e.package)),r=a.find((e=>"react-dom"===e.package));s&&!r?a.push({package:"react-dom",version:s.version}):s&&r&&(r.version=s.version),s&&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:$e.resolve(t.projectDir,"src/app/index.js"),dev:!1!==e.doc.features.app.dev}),!0===e.doc.features.cli.enabled&&i.push({file:$e.resolve(t.projectDir,"src/cli/index.js"),dev:!1!==e.doc.features.cli.dev});for await(const t of i){const n=t.file;if(!Te.existsSync(n))throw new Error(`App file not found: ${n}`);const s=await Oe({file:n,recursive:!0}),r=!0===e.doc.features.all_parsed_imports?s.all:s.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 n=(await Ce({name:e.package,groupBy:{minor:!0}}))[0][0];(!0===t.dev?o:a).push({package:e.package,subpath:e.subpath,version:`^${n}`,type:"npm"})}}const c={atom:e,packageDependencies:a,packageDevDependencies:o},p=t.templateCommonDir,l=Ee.compile(Te.readFileSync($e.resolve(p,"package.json.njk"),"utf8"),Ee.configure(p)).render(c),d=t.projectDir,m=$e.resolve(d,"package.json");Te.writeFileSync(m,l,"utf8");const u=$e.resolve(t.project.projectDir,"fnet");if(Te.existsSync(u)){const e=$e.resolve(t.projectDir,"fnet");Te.existsSync(e)||Te.mkdirSync(e);const a=Te.readdirSync(u);for(const t of a){const a=$e.resolve(u,t);if(!Te.lstatSync(a).isFile())continue;const o=$e.resolve(e,t);Te.copyFileSync(a,o)}}},ao=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating cli."});const n={atom:e,packageDependencies:o},s=a.templateDir,r=Me.resolve(a.projectDir,"src/cli");Re.existsSync(r)||Re.mkdirSync(r,{recursive:!0}),await Fe({pattern:["index.js.njk"],dir:Me.resolve(s,"src/cli"),outDir:r,context:n})},oo=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{await t({message:"Creating rollup file."});const n={atom:e,packageDependencies:o},s=Le.resolve(a.projectDir,"src","default/index.js");if(!qe.existsSync(s))throw new Error(`Entry file not found: ${s}`);const r=(await Ue({file:s,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=Ne.compile(qe.readFileSync(Le.resolve(p,"rollup.config.mjs.njk"),"utf8"),Ne.configure(p)).render(n);const d=a.projectDir;let m=Le.resolve(d,"rollup.config.mjs");qe.writeFileSync(m,l,"utf8")},no=async({atom:e,setInProgress:t,context:a,njEnv:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating yargs."});let n={};if(n=e.doc.input?e.doc.input:{type:"object",properties:{},required:[]},e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled){const t=e.doc.features.cli.fargs,a={type:"string",description:"Config name to load args",hidden:!1},o={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(t,"default")&&(a.default=t.default),n.properties&&(n.properties.fargs=a,n.properties.ftag=o)}const s={options:n,imports:[],atom:e},r=a.templateDir,i=Je.compile(Be.readFileSync(ze.resolve(r,"src/default/to.args.js.njk"),"utf8"),o).render(s),c=a.projectDir,p=ze.resolve(c,"src/default/to.args.js");Be.writeFileSync(p,i,"utf8");const l=new We({allErrors:!0,useDefaults:!0,formats:{email:!0},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});Ge(l);const d=l.compile(n),m=Ke(l,d);Be.writeFileSync(ze.resolve(c,"src/default/validate_input.js"),m,"utf8")},so=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{await t({message:"Creating .gitignore"});const n={atom:e,packageDependencies:o},s=a.templateCommonDir,r=Ye.compile(He.readFileSync(Xe.resolve(s,".gitignore.njk"),"utf8"),Ye.configure(s)).render(n),i=a.projectDir,c=Xe.resolve(i,".gitignore");He.writeFileSync(c,r,"utf8")},ro=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{await t({message:"Creating tsconfig.json."});const n={atom:e,packageDependencies:o},s=a.templateCommonDir,r=Ve.compile(Ze.readFileSync(Qe.resolve(s,"tsconfig.json.njk"),"utf8"),Ve.configure(s)).render(n),i=a.projectDir,c=Qe.resolve(i,"tsconfig.json");Ze.writeFileSync(c,r,"utf8")},io=async({atom:e,context:t,setInProgress:a,Atom:o})=>{const n="readme.md",s=`Creating ${n}`;if(await a({message:s}),t.project?.readme){const e=t.projectDir,a={content:t.project.readme.doc.content},o=at.resolve(t.project.projectDir,"fnet/how-to.md");if(tt.existsSync(o)){const e=tt.readFileSync(o,"utf8");a.howto=e}const s=at.resolve(t.project.projectDir,"fnet/input.yaml");if(tt.existsSync(s)){const e=await ot({file:s,tags:t.tags});a.input=e.content}const r=t.templateCommonDir,i=et.compile(tt.readFileSync(at.resolve(r,`${n}.njk`),"utf8"),et.configure(r)).render(a),c=at.resolve(e,`${n}`);tt.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:s,...r}=a.doc,i={content:s},c=t.templateCommonDir,p=et.compile(tt.readFileSync(at.resolve(c,`${n}.njk`),"utf8"),et.configure(c)).render(i),l=t.projectDir,d=at.resolve(l,`${n}`);tt.writeFileSync(d,p,"utf8")}},co=async({setInProgress:e,context:t})=>{const a=t.projectDir;await e({message:"Prettifiying source files."});let o=st.join("src","**","*");if(0!==nt.exec(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:a}).code)throw new Error("Couldnt format files.")},po=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!==rt.exec("tsc",{cwd:o}).code)throw new Error("Couldnt create .d.ts files.")},lo=async({setInProgress:e,atom:t,context:a})=>{const o=a.projectDir;await e({message:"Installing npm packages."});if(0!==it.exec(`npm install ${t.doc.features.npm_install_flags}`,{cwd:o}).code)throw new Error("Couldnt install npm packages.")},mo=async({setInProgress:e,context:t})=>{const a=t.projectDir;await e({message:"Building main project."});if(0!==ct.exec("npm run build",{cwd:a}).code)throw new Error("Couldnt build project.")},uo=async e=>{const{atom:t,packageDependencies:a,context:o,deploymentProjectTarget:n,setInProgress:s,deploymentProject:r,yamlTarget:i}=e;if(!0===n.enabled)if("lib"===n.type)await $a({...e});else if("red"===n.type)await Ta({...e});else if("npm"===n.type)await Ea({...e});else if("gcs"===n.type)await Ia({...e});else if("gitlab"===n.type)await Pa({...e});else if("fnet-package"===n.type)await La({...e});else if("fnet-form"===n.type)await Na({...e});else if("fnet-node"===n.type)await Ba({...e});else if("fnet-flow"===n.type)await Ua({...e});else{let e;if("nextjs"===n.type?e=Fa:"webos"===n.type?e=Ma:"electron"===n.type?e=Ra:"docker"===n.type?e=qa:"ios"===n.type?e=Oa:"macos"===n.type?e=Ca:"rust"===n.type&&(e=za),!e)return;await e({atom:t,target:n,onProgress:s,projectDir:o.projectDir,dependencies:a,context:o,yamlTarget:i}),r.isDirty=!0}},{Atom:fo}=y,go=L,yo=t,ho=b,wo=N,vo=U;var bo=class{#e;#t;#a;#o;#n;#s;#r;#i;#c;#p;#l;#d;#m;#u;#f;#g;#y;constructor(e){this.#e=new Za,this.#t=e,this.#s=[],this.#r=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#s,packageDevDependencies:this.#r,setInProgress:this.setInProgress.bind(this),context:this.#t,Atom:fo,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 Xa(),this.#c=this.#t.buildId||Ya(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 yo({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 Qa(this.#y),await Va(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 fo.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"];Ja.existsSync(e)&&Ja.readdirSync(e).forEach((o=>{a.includes(o)||(t=Ga.rm("-rf",Wa.join(e,o)))}));let o=e;if(!Ja.existsSync(o)&&(t=Ga.exec(`mkdir "${e}"`),0!==t.code))throw new Error("Couldnt create workflow dir.");if(o=Wa.join(e,"src"),!Ja.existsSync(o)&&(t=Ga.exec(`mkdir "${o}"`),0!==t.code))throw new Error("Couldnt create library/src dir.");if(o=Wa.join(e,"src","default"),!Ja.existsSync()&&(t=Ga.exec(`mkdir "${o}"`),0!==t.code))throw new Error("Couldnt create library/src/default dir.")}async initNunjucks(){const e=this.#t.templateDir;this.#o=Ha.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.#n=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.#s})}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],n=await this.findAtomLibrary({url:o.name});o.atom=n;const s=n.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));s?.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=go({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 fo.first({where:{name:e,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===a.length){const e=await fo.first({where:{name:a[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await fo.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=Wa.resolve(this.#t.projectSrcDir,"index.js"),a=await ho({file:t,recursive:!0}),o=e.doc.dependencies,n=!0===this.#a.doc.features.all_parsed_imports?a.all:a.required;for await(const e of n){if("npm"!==e.type)continue;if(o.find((t=>t.package===e.package)))continue;const t=await wo({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=Wa.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.js`),t=Wa.relative(Wa.join(this.#t.projectDir,"src","default"),e);if(!Ja.existsSync(e)){Ja.mkdirSync(Wa.dirname(e),{recursive:!0});let t="export default async (args)=>{\n";t+="}",Ja.writeFileSync(e,t,"utf8")}a.relativePath=t.split(Wa.sep).join("/"),this.#a.typesDir=`./types/${Wa.basename(o)}/src`}else{const e=Wa.join(o,"src","libs",`${a.id}.js`),t=a.doc.contents?.find((e=>"esm"===e.format))||a.doc;Ja.writeFileSync(e,t.content,"utf8")}}}async createEngine(){await this.setInProgress({message:"Creating engine file."});const e={libs:this.#n.filter((e=>"atom"===e.type)),libraryAtom:this.#a,atom:this.#a},t=this.#t.templateDir,a=Ha.compile(Ja.readFileSync(Wa.resolve(t,Wa.join("src","default","engine.js.njk")),"utf8"),this.#o).render(e),o=this.#t.projectDir,n=Wa.resolve(o,Wa.join("src","default","index.js"));Ja.writeFileSync(n,a,"utf8")}async createProjectYaml(){const e="node.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const{content:a,...o}=this.#a.doc,n={content:Ka.stringify(o)},s=this.#t.templateDir,r=Ha.compile(Ja.readFileSync(Wa.resolve(s,`${e}.njk`),"utf8"),this.#o).render(n),i=this.#t.projectDir,c=Wa.resolve(i,`${e}`);Ja.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 fo.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 fo.update(a,{id:a.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:a}=t;if(t.doc.targets&&Array.isArray(t.doc.targets))throw new Error("Deployment project targets are deprecated. Please update targets in the yaml file.");const o=Object.keys(t.doc||{}),n=a||{};for(let e=0;e<o.length;e++){const a=t.doc[o[e]];a.name=o[e];const s=n.get(o[e]);await uo({...this.#y,deploymentProject:t,deploymentProjectTarget:a,yamlTarget:s})}}async registerToPackageManager(e){const{target:t,packageJSON:a}=e;if(!this.#t.id)return;let o=await fo.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:a.version}),await fo.update(o,{id:o.id})):o=await fo.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(vo.blue(e)),await this._cache_set(this.#p,{status:"IN_PROGRESS",message:e})}async build(){try{this.#u&&(await this.createAtomLibFiles({libs:this.#n}),await this.createEngine(),await this.createProjectYaml(),await io(this.#y),await ro(this.#y),await so(this.#y),await no(this.#y),await ao(this.#y),await eo(this.#y),await oo(this.#y),await to(this.#y),await co(this.#y),await po(this.#y),this.#f&&(await lo(this.#y),await mo(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 _o=l,jo=d;var Do=function({baseDir:e=__dirname}){let t=e;for(;t!==jo.parse(t).root;){const e=jo.join(t,"node_modules");if(_o.existsSync(e))return e;t=jo.dirname(t)}return null};const ko=process.cwd(),{spawn:xo}=e;t({name:["redis"],dir:ko,optional:!0});const So=a,Ao=o,Po=n,Io=s,Eo=r,To=i,$o=t,Oo=c,Co=p,Ro=bo,Mo=Do({baseDir:__dirname}),Fo="win32"===process.platform?";":":";process.env.PATH=`${So.join(Mo,"/.bin")}${Fo}${process.env.PATH}`;let qo=Ao(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=So.resolve(Mo,"@fnet/cli-project-node/dist/template/project"),a=So.resolve(ko,e.name);Po.existsSync(a)||Po.mkdirSync(a),await Co({dir:t,outDir:a,context:e,copyUnmatchedAlso:!0});let o=Eo.exec("fnode build",{cwd:a});if(0!==o.code)throw new Error("Failed to build project.");if(Eo.which("git")&&(o=Eo.exec("git init --initial-branch=main",{cwd:a}),0!==o.code))throw new Error("Failed to initialize git.");if(Eo.which("code")&&e.vscode&&(o=Eo.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=So.resolve(Mo,"@fnet/cli-project-node/dist/template/project"),a=process.cwd();if(e.name=So.basename(a),e.update){if(await Co({dir:t,outDir:a,context:e,copyUnmatchedAlso:!0}),0!==Eo.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 No(e),a=new Ro(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 No({...e,mode:"all"}),a=new Ro(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 No({...e,mode:"file"}),a=new Ro(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 Lo(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 No(e),{projectDir:n}=t,s=process.argv.slice(3);xo(a,[...o,...s],{cwd:n,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function No(e){if(e.id)return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",templateDir:So.resolve(Mo,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:So.resolve(Mo,"./@fnet/cli-project-common/dist/template/default"),projectDir:So.resolve(ko,`./.output/${e.id}`),tags:e.ftag};{const t=await async function({tags:e}){const t=So.resolve(ko,"node.yaml");if(!Po.existsSync(t))throw new Error("node.yaml file not found in current directory.");const{raw:a,parsed:o}=await To({file:t,tags:e}),n=So.dirname(t),s={libraryAtom:{doc:{...o},fileName:"index"},projectDir:n,projectFilePath:t,projectFileContent:a,projectFileParsed:o};let r=So.resolve(n,"fnet/targets.yaml");if(!Po.existsSync(r)&&(r=So.resolve(n,"node.devops.yaml"),Po.existsSync(r))){const e=So.resolve(n,"fnet");Po.existsSync(e)||Po.mkdirSync(e),Po.copyFileSync(r,So.resolve(n,"fnet/targets.yaml")),Po.unlinkSync(r)}if(Po.existsSync(r)){const{raw:t,parsed:a}=await To({file:r,tags:e}),o=Io.parseDocument(t);s.devops={filePath:r,fileContent:t,yamlDocument:o,doc:{...a},type:"library.deploy",save:async()=>{Po.writeFileSync(s.devops.filePath,o.toString())}}}const i=So.resolve(n,"readme.md");if(Po.existsSync(i)){const e=Po.readFileSync(i,"utf8");s.readme={filePath:i,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return s}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:So.resolve(Mo,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:So.resolve(Mo,"./@fnet/cli-project-common/dist/template/default"),projectDir:So.resolve(t.projectDir,"./.workspace"),projectSrcDir:So.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}qo=qo.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 No(e),{project:a}=t,{projectDir:o,projectFileParsed:n}=a,s=n.input;if(!s)throw new Error("Config schema not found in project file.");const r=await Oo({schema:s,format:"yaml"}),i=So.resolve(o,".fnet");Po.existsSync(i)||Po.mkdirSync(i);const c=So.resolve(i,`${e.name}.fnet`);Po.writeFileSync(c,r)}catch(e){console.error(e.message),process.exit(1)}})),qo=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 No(e),{project:a}=t,{projectDir:o,projectFileParsed:n}=a,s=n.input;if(!s)throw new Error("Config schema not found in project file.");const r=So.resolve(o,".fnet"),i=So.resolve(r,`${e.name}.fnet`),c=await Oo({schema:s,format:"yaml",ref:i});Po.existsSync(r)||Po.mkdirSync(r),Po.writeFileSync(i,c)}catch(e){console.error(e.message),process.exit(1)}}))}(qo),qo=Lo(qo,{bin:"npm"}),qo=Lo(qo,{bin:"node"}),qo=Lo(qo,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),qo=Lo(qo,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),qo=Lo(qo,{name:"app",bin:"npm",preArgs:["run","app","--"]}),qo=Lo(qo,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),qo=Lo(qo,{bin:"npx"}),qo=Lo(qo,{bin:"cdk"}),qo=Lo(qo,{bin:"aws"}),qo=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 No(e),{projectDir:o}=t,n=e.config,s=await $o({name:n,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),r=s?.data?.env||void 0,i=e.command,c=process.argv.slice(5);xo(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)}}))}(qo,{name:"with"}),qo.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"),n=require("fs"),s=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"),v=require("lodash.merge"),b=require("@flownet/lib-parse-imports-js"),_=require("@flownet/lib-list-npm-versions"),j=require("ajv/dist/2020"),D=require("ajv/dist/standalone"),k=require("ajv-formats"),x=require("@fnet/shell"),S=require("semver"),A=require("@fnet/up-list-files"),P=require("node:os"),I=require("@node-red/util"),E=require("@flownet/lib-to-ios-app"),T=require("lodash.clonedeep"),$=require("@flownet/lib-to-macos-app"),O=require("@flownet/lib-to-electron"),C=require("@flownet/lib-to-webos"),R=require("@flownet/lib-to-nextjs"),M=require("@flownet/lib-to-docker"),F=require("form-data"),q=require("@fnet/to-rust"),L=require("@flownet/lib-parse-node-url"),N=require("@flownet/lib-pick-npm-versions"),U=require("chalk");const B=u,z=f;const{Api:J}=y,W=h.default,K=w;const G=v;var H=({feature:e,features:t,packageDevDependencies:a})=>{const{name:o,packages:n,options:s,extraCheck:r,explicit:i}=e,c=`${o}_enabled`,p=t.rollup_output||{},l=Object.keys(p);let d=s||{};const m=t[o]?.options;m&&(d=G(d,m));const u=!t[o]||!1===t[o]?.enabled;l.forEach((e=>{const a=t.rollup_output[e];if(a){if(Reflect.has(a,o)){if(u||!a[o]||!1===a[o]?.enabled)return void delete a[o];!0===a[o]&&(a[o]={enabled:!0,options:d})}else{if(u||i||!1===t[c])return;a[o]={enabled:!0}}a[o]=a[o]||{},a[o].options={...d,...a[o].options}}}));let f=l.some((e=>!0===t.rollup_output[e][o]?.enabled));r&&(f=r()&&f),t[c]=f,f&&n.forEach((e=>a.push({package:e[0],version:e[1]})))};const X=H;const Y=H;const Z=H;const Q=H;const V=H;const ee=H;const te=H;const ae=H;const oe=H;const ne=H;const se=H;const re=H;const ie=H;const ce=v,pe=l,le=d,de=b,me=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;X({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}},explicit:!0},features:o,packageDevDependencies:a})},ue=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;Y({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:o,packageDevDependencies:a})},fe=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;Z({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.3"]]},features:o,packageDevDependencies:a})},ge=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;Q({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:o,packageDevDependencies:a})},ye=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;V({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:o,packageDevDependencies:a})},he=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;ee({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:o,packageDevDependencies:a})},we=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;te({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:o,packageDevDependencies:a})},ve=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;ae({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:o,packageDevDependencies:a})},be=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;oe({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:o,packageDevDependencies:a})},_e=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;ne({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:o,packageDevDependencies:a})},je=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features;se({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:o,packageDevDependencies:a})},De=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features,n={};!0===o.app?.enabled&&(n.targets=n.targets||[],n.targets.push({src:"./src/app/index.html",dest:o.app.dir}),Reflect.has(o.app,"copy")||Reflect.has(o,"copy")||(o.copy=!0)),re({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:n},features:o,packageDevDependencies:a})},ke=e=>{const{atom:t,packageDevDependencies:a}=e,o=t.doc.features,n=o.css&&!1!==o.css.enabled;let s=[];if(n){s.push(["rollup-plugin-postcss","^4"]),s.push(["sass","^1.66"]);(o.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":s.push(["postcss-import","^15"]);break;case"postcss-url":s.push(["postcss-url","^10"]);break;case"postcss-preset-env":s.push(["postcss-preset-env","^9"]);break;case"autoprefixer":s.push(["autoprefixer","^10"]);break;case"cssnano":s.push(["cssnano","^6"])}}))}ie({feature:{name:"css",packages:s},features:o,packageDevDependencies:a})};function xe({dir:e,name:t="index"}){let a=le.resolve(e,`./${t}.tsx`);if(pe.existsSync(a)||(a=le.resolve(e,`./${t}.ts`)),pe.existsSync(a)||(a=le.resolve(e,`./${t}.jsx`)),pe.existsSync(a)||(a=le.resolve(e,`./${t}.js`)),!pe.existsSync(a))return{};const o=a,n=le.extname(a);return{file:o,ext:n,ts:".ts"===n||".tsx"===n,name:t}}const Se=_;const Ae=l,Pe=d,Ie=p;const Ee=m,Te=l,$e=d,Oe=b,Ce=_;const Re=l,Me=d,Fe=p;const qe=l,Le=d,Ne=m,Ue=b;const Be=l,ze=d,Je=m,We=j,Ke=D,Ge=k;const He=l,Xe=d,Ye=m;const Ze=l,Qe=d,Ve=m;const et=m,tt=l,at=d,ot=i;const nt=r,st=a;const rt=r;const it=r;const ct=r;const pt=x,lt=t;const dt=l,mt=d,ut=S,ft=x,gt=t;const yt=l,ht=d,wt=S,vt=r,bt=t,_t=A,jt=c,Dt=s;const kt=l,xt=d,St=P,At=m,Pt=I,It=t;const Et=n,Tt=a,$t=t;const Ot=t,Ct=E,Rt=T,Mt=S;const Ft=t,qt=$,Lt=T,Nt=S;const Ut=t,Bt=O,zt=T,Jt=S;const Wt=t,Kt=C,Gt=T,Ht=S;const Xt=t,Yt=R,Zt=T,Qt=S;const Vt=t,ea=M,ta=T,aa=S;const oa=l,na=d,sa=S,ra=x,ia=t,ca=h.default;const pa=S,la=t,da=h.default;const ma=S,ua=t,fa=h.default,ga=n,ya=x,ha=F;const wa=S,va=t,ba=h.default,_a=n,ja=x,Da=F;const ka=t,xa=q,Sa=T,Aa=S;const Pa=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,buildId:n})=>{await e({message:"Deploying it as gitlab project."});const s=t.projectDir;let r="fnet-to-gitlab";const i=o.params.config||"gitlab",c=await lt({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='${s}'`,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 pt({cmd:r}),a.isDirty=!0)},Ia=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,registerToPackageManager:n,yamlTarget:s})=>{await e({message:"Deploying it as gcs package."});const r=t.projectDir,i=mt.resolve(r,"package.json"),c=dt.readFileSync(i),p=JSON.parse(c);p.name=o.params.name,p.version=ut.inc(o.version,"patch"),delete p.scripts,delete p.devDependencies,dt.writeFileSync(i,JSON.stringify(p,null,"\t"));const{file:l,data:d}=await gt({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='${mt.resolve(mt.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 ft({cmd:m}),dt.writeFileSync(i,c),!0!==o.dryRun&&(a.isDirty=!0,o.version=p.version,s.set("version",p.version),await n({target:o,packageJSON:p}))},Ea=async({atom:e,setInProgress:t,context:a,deploymentProject:o,deploymentProjectTarget:n,yamlTarget:s})=>{await t({message:"Deploying it as npm package."});const r=a.projectDir,i=ht.resolve(r,"package.json"),c=yt.readFileSync(i),p=JSON.parse(c);p.name=n.params.name,p.version=wt.inc(n.version,"patch");const l=n.params.bin?.name||n.params.bin;!1!==n.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 ."},yt.writeFileSync(i,JSON.stringify(p,null,"\t"));const d=n.config||"npm";let m=(await bt({name:d,dir:a.projectDir,tags:a.tags,optional:!0}))?.data;if(!m){const e=_t({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===e.length)throw new Error("Couldnt find schema to create npm config");const t=await jt({schema:e[0],tags:a.tags}),o=a.project.projectDir,n=ht.resolve(o,".fnet");yt.existsSync(n)||yt.mkdirSync(n),yt.writeFileSync(ht.resolve(n,`${d}.fnet`),Dt.stringify(t)),m=t}if(yt.writeFileSync(ht.resolve(r,".npmrc"),`//registry.npmjs.org/:_authToken=${m.env.NPM_TOKEN}`),!0!==n.dryRun){if(0!==vt.exec("npm publish --access public",{cwd:r}).code)throw new Error("Couldnt publish to npm");yt.writeFileSync(i,c),o.isDirty=!0,n.version=p.version,s.set("version",p.version)}},Ta=async({atom:e,setInProgress:t,context:a,deploymentProject:o,deploymentProjectTarget:n,buildId:s,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"===n.deploy.template)d={atom:e,packageDependencies:r,red:{tab:{id:n.deploy.id||Pt.util.generateId(),label:`${l}/${e.id?e.id:St.hostname()}/${e.name}/${n.deploy.name||n.deploy.template}`},function:{id:Pt.util.generateId(),name:e.doc.name,initialize:{content:kt.readFileSync(xt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},inject:{id:Pt.util.generateId(),...n.params?.inject,payload:"json"===n.params?.inject?.payloadType?`'${JSON.stringify(n.params?.inject?.payload)}'`:n.params?.inject?.payload},debug:{id:Pt.util.generateId()}}};else if("cronjob"===n.deploy.template){let t=n.params?.schedules?cloneDeep(n.params?.schedules):void 0;t?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),d={atom:e,packageDependencies:r,red:{tab:{id:n.deploy.id||Pt.util.generateId(),label:`${l}/${e.id?e.id:St.hostname()}/${n.deploy.name||n.deploy.template}`},function:{id:Pt.util.generateId(),name:e.doc.name,initialize:{content:kt.readFileSync(xt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},cronjob:{id:Pt.util.generateId(),schedules:t},debug:{id:Pt.util.generateId()}}}}else{if("http"!==n.deploy.template)return;d={atom:e,packageDependencies:r,red:{tab:{id:n.deploy.id||Pt.util.generateId(),label:`${l}/${e.id?e.id:St.hostname()}/${n.deploy.name||n.deploy.template}`},function:{id:Pt.util.generateId(),name:e.doc.name,initialize:{content:kt.readFileSync(xt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},httpin:{id:Pt.util.generateId(),method:n.params.method||"get",url:n.params.url},httpout:{id:Pt.util.generateId()},debug:{id:Pt.util.generateId()}}}}let m=At.compile(kt.readFileSync(xt.resolve(p,`deploy/node-red/${n.deploy.template}.yaml.njk`),"utf8"),i).render(d);if(kt.writeFileSync(xt.resolve(c,"node-red.yaml"),m),m=yaml.load(m),!0===n.dryRun)return;o.isDirty=!0;const u=(await It({name:a.redConfig||"red",dir:a.projectDir,tags:a.tags}))?.data,f=n.deploy.url||u.env.RED_URL,g={};if(!1!==n.deploy.auth&&(g.Authorization="Bearer "+atomAccessToken),n.deploy.id)!0===n.actions?.delete?(await axios({method:"DELETE",url:`${f}/flow/${n.deploy.id}`,headers:g}),delete n.actions.delete,delete n.deploy.id,n.enabled=!1):await axios({method:"PUT",url:`${f}/flow/${n.deploy.id}`,data:m,headers:g});else{const e=await axios({method:"POST",url:`${f}/flow`,data:m,headers:g});n.deploy.id=e.data.id}},$a=async({atom:e,Atom:t,setInProgress:a,context:o,packageDependencies:n,deploymentProject:s,deploymentProjectTarget:r})=>{await a({message:"Deploying it as workflow lib."});const i=(await $t({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(s.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:Et.readFileSync(Tt.resolve(m,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:Et.readFileSync(Tt.resolve(m,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:Et.readFileSync(Tt.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],c.doc.name=l,c.doc.dependencies=n,"workflow.lib"===e.type?c.doc.subtype="library":"workflow"===e.type&&(c.doc.subtype="workflow"),c=await t.update(c,{id:c.id})},Oa=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as ios-app package."});const i=t?.config?await Ot({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=Mt.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=Rt(t.params);p.dependencies=Rt(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Ct(l)}},Ca=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as macos-app package."});const i=t?.config?await Ft({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=Nt.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=Lt(t.params);p.dependencies=Lt(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await qt(l)}},Ra=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as electron package."});const i=t?.config?await Ut({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=Jt.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=zt(t.params);p.dependencies=zt(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Bt(l)}},Ma=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as webos package."});const i=t?.config?await Wt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=Ht.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=Gt(t.params);p.dependencies=Gt(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Kt(l)}},Fa=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as nextjs package."});const i=t?.config?await Xt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=Qt.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=Zt(t.params);p.dependencies=Zt(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await Yt(l)}},qa=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as docker package."});const i=t?.config?await Vt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=aa.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=ta(t.params);p.dependencies=ta(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await ea(l)}},La=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:n})=>{await e({message:"Deploying it as fnet package."});const s=t.projectDir,r=na.resolve(s,"package.json"),i=oa.readFileSync(r),c=JSON.parse(i);c.name=o.params.name,c.version=sa.inc(o.version,"patch"),delete c.scripts,delete c.devDependencies,oa.writeFileSync(r,JSON.stringify(c,null,"\t"));const{file:p,data:l}=await ia({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 ca({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='${na.resolve(na.dirname(p),l.env.GCS_UPLOADER_KEY_FILE)}'`,y+=` --dir='${s}'`,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 ra({cmd:y}),oa.writeFileSync(r,i),!0===o.dryRun)return;a.isDirty=!0,o.version=c.version,n.set("version",c.version);const h=`${l.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(f=await ca({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.")},Na=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:n})=>{await e({message:"Deploying it as fnet form."});const{file:s,data:r}=await la({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 i=`${r.env.ATOM_API_URL}/v1/auth/token`,c=r.env.ATOM_API_USERNAME,p=r.env.ATOM_API_PASSWORD;let l=await da({method:"POST",url:i,data:{username:c,password:p},headers:{"Content-Type":"application/json"}});const d=l.data?.access_token;if(!d)throw new Error(`Invalid access_token from ${i}`);a.isDirty=!0;const m=pa.inc(o.version,"patch");o.params.version=m,o.version=m,n.set("version",m);const u=`${r.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(l=await da({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 ${d}`}}),l.data?.error)throw new Error("Error publishing fnet form.")},Ua=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:n})=>{await e({message:"Deploying it as fnet flow."});const{file:s,data:r}=await ua({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 i=`${r.env.ATOM_API_URL}/v1/auth/token`,c=r.env.ATOM_API_USERNAME,p=r.env.ATOM_API_PASSWORD;let l=await fa({method:"POST",url:i,data:{username:c,password:p},headers:{"Content-Type":"application/json"}});const d=l.data?.access_token;if(!d)throw new Error(`Invalid access_token from ${i}`);a.isDirty=!0;const m=ma.inc(o.version,"patch");o.params.version=m,o.version=m,n.set("version",m);const u=`${r.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(l=await fa({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 ${d}`}}),l.data?.error)throw new Error("Error publishing fnet flow.");const f=l.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const y=await ya({cmd:g});if(0!==y.code)throw new Error(y.stderr);const h=JSON.parse(y.stdout).path;let w=new ha;w.append("file",ga.createReadStream(h));const v=await fa.request({method:"POST",maxBodyLength:1/0,url:`${r.env.ATOM_API_URL}/v1/service/upload/single/${f}`,headers:{...w.getHeaders(),Authorization:`Bearer ${d}`},data:w});if(v.data?.error)throw new Error("Error uploading fnet flow.")},Ba=async({setInProgress:e,context:t,deploymentProject:a,deploymentProjectTarget:o,yamlTarget:n})=>{await e({message:"Deploying it as fnet node."});const{file:s,data:r}=await va({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 i=`${r.env.ATOM_API_URL}/v1/auth/token`,c=r.env.ATOM_API_USERNAME,p=r.env.ATOM_API_PASSWORD;let l=await ba({method:"POST",url:i,data:{username:c,password:p},headers:{"Content-Type":"application/json"}});const d=l.data?.access_token;if(!d)throw new Error(`Invalid access_token from ${i}`);a.isDirty=!0;const m=wa.inc(o.version,"patch");o.params.version=m,o.version=m,n.set("version",m);const u=`${r.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(l=await ba({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 ${d}`}}),l.data?.error)throw new Error("Error publishing fnet node.");const f=l.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const y=await ja({cmd:g});if(0!==y.code)throw new Error(y.stderr);const h=JSON.parse(y.stdout).path;let w=new Da;w.append("file",_a.createReadStream(h));const v=await ba.request({method:"POST",maxBodyLength:1/0,url:`${r.env.ATOM_API_URL}/v1/service/upload/single/${f}`,headers:{...w.getHeaders(),Authorization:`Bearer ${d}`},data:w});if(v.data?.error)throw new Error("Error uploading fnet node.")},za=async({atom:e,target:t,onProgress:a,projectDir:o,dependencies:n,context:s,yamlTarget:r})=>{a&&await a({message:"Deploying it as Rust package."});const i=t?.config?await ka({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:s.tags}):void 0,c=Aa.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,r.set("version",c);const p=Sa(t.params);p.dependencies=Sa(n);const l={atom:e,params:p,config:i?.config,src:o,dest:o};return{deployer:await xa(l)}};const Ja=l,Wa=d,Ka=s,Ga=r,Ha=m,Xa=async()=>{if(!await z({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=B.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e},{nanoid:Ya}=g,Za=class{init({config:e,accessToken:t}){return new Promise(((a,o)=>{if(J.set_api_url(e.data.url),t)return J.set_req_token(t),void a(t);W({method:"POST",url:`${e.data.issuer}/protocol/openid-connect/token`,data:K.stringify(e.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((e=>{J.set_req_token(e.data.access_token),a(e.data.access_token)})).catch((e=>{J.set_req_token(),o(e)}))}))}},Qa=async e=>{const{atom:t,context:a,packageDevDependencies:o}=e;t.doc.features=t.doc.features||{};const n=t.doc.features;n.project=n.project||{},n.project.format=n.project.format||n.project_format||"esm",n.project_format=n.project.format,n.dts_enabled=!0===n.dts||void 0!==n.dts&&!1!==n.dts,n.hasOwnProperty("all_parsed_imports")||(n.all_parsed_imports=!0);const s=le.resolve(a.project.projectDir),r=xe({dir:le.resolve(s,"./app")});if(r.file){let e=await de({file:r.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));n.app_uses_jsx=t,n.app_has_entry=!0,e=await de({file:r.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),n.app_entry_uses_jsx=t,n.app_entry_is_ts=r.ts,n.app_entry_ext=r.ext}const i=xe({dir:le.resolve(s,"./cli")});if(i.file){let e=await de({file:i.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));n.cli_uses_jsx=t,n.cli_has_entry=!0,e=await de({file:i.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),n.cli_entry_uses_jsx=t,n.cli_entry_is_ts=i.ts,n.cli_entry_ext=i.ext}if("workflow.lib"===t.type){const e=xe({dir:le.resolve(s,"./src")});if(e.file){let t=await de({file:e.file,recursive:!0}),a=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));n.src_uses_jsx=a,n.src_has_entry=!0,t=await de({file:e.file}),a=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),n.src_entry_uses_jsx=a,n.src_entry_is_ts=e.ts,n.src_entry_ext=e.ext}}const c=Reflect.has(n,"app_entry_uses_jsx")?!0===n.app_entry_uses_jsx:!0===n.src_entry_uses_jsx,p=Reflect.has(n,"cli_entry_uses_jsx")?!0===n.cli_entry_uses_jsx:!0===n.src_entry_uses_jsx;n.form_enabled=!0===t.doc.form||!0===t.doc.form?.enabled||!0===n.form||!0===n.form?.enabled,n.multiple_enabled=n.multiple_enabled||!0===n.multiple||!0===n.multiple?.enabled,!1===n.app?n.app={enabled:!1}:!0===n.app?n.app={enabled:!0,extend:!0===n.app_has_entry,export:!0,react:c}:n.app={enabled:!0,extend:!0===n.app_has_entry,export:!0,react:c,...n.app||{}},n.app.enabled=!0===n.app.enabled&&(!0===t.doc.features.form_enabled||!0===n.app.extend||!0===n.app.enabled),n.app.format=n.app.format||"esm",n.app.folder=n.app.folder||n.app.format||"default",!1===n.cli?n.cli={enabled:!1}:!0===n.cli?n.cli={enabled:!0,extend:!0===n.cli_has_entry,export:!0,react:p}:n.cli={enabled:!0,extend:!0===n.cli_has_entry,export:!0,react:p,...n.cli||{}},n.cli.enabled=!0===n.cli.enabled&&(!1===t.doc.features.form_enabled||!0===n.cli.extend||!0===n.cli.enabled),n.cli.format=n.cli.format||"esm",n.cli.folder=n.cli.folder||n.cli.folder||"esm",n.cli.node_options=n.cli.node?.options||n.cli.node_options||"",n.json=n.cli.enabled||n.json;const l={cjs:{format:"cjs",context:n.form_enabled?"window":"global",babel:!0===n.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==n.cjs,copy:!1},esm:{format:"esm",context:n.form_enabled?"window":"global",babel:!0===n.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!1!==n.esm,copy:!0},iife:{format:"iife",context:n.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==n.iife,terser:!0,copy:!1}};!0===n.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",copy:!1,babel_options:{targets:{chrome:"79"}}}),!0===n.electron&&(l.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===n.nextjs&&(l.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===n.ios&&(l.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===n.macos&&(l.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===n.app.enabled&&(n.app.dir=`./dist/app/${n.app.folder}`,l.app={format:n.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:n.app.dir,terser:!0,output_exports:!1===n.app.export?"none":"auto"}),!0===n.cli.enabled&&(n.cli.dir=`./dist/cli/${n.cli.folder}`,l.cli={format:n.cli.format,context:"global",babel:!0===n.src_uses_jsx||!0===n.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:n.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===n.cli.export?"none":"auto"});const d={server:".",startPath:`${le.normalize(n.app.dir||".")}`,files:[le.normalize("./dist/**/*")],cors:!0,open:!1};n.babel_options=ce({targets:{browsers:"last 9 versions, not dead",node:"18"}},n.babel_options||n.babel?.options),n.browsersync_options=ce(d,n.browsersync_options||n.browsersync?.options||{}),n.replace_options=ce({},n.replace_options||n.replace?.options||{}),Reflect.has(n.browsersync_options,"proxy")&&delete n.browsersync_options.server,n.rollup=n.rollup||{},n.rollup_output=ce(l,n.rollup_output||n.rollup?.output||{}),n.preact_enabled=!0===n.preact||n.preact&&!1!==n.preact?.enabled;let m=Object.keys(l);for(const e of m){const t=l[e];t&&(!1!==n.rollup[e]?(t.babel_options=t.babel_options||n.babel_options,t.browsersync_options=ce(n.browsersync_options,t.browsersync_options),t.replace_options=ce(n.replace_options,t.replace_options),n.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"),n.form_enabled&&(t.babel=!0)):delete n.rollup_output[e])}m=Object.keys(n.rollup_output),n.babel_enabled=m.some((e=>!0===n.rollup_output[e].babel)),n.browser_enabled=m.some((e=>!0===n.rollup_output[e].babel)),n.browsersync_enabled=!1!==n.browsersync&&m.some((e=>!0===n.rollup_output[e].browsersync)),n.browsersync_enabled=n.browsersync_enabled&&n.app.enabled,n.dependency_auto_enabled=!1!==n.dependency_auto&&!1!==n.dependency_auto?.enabled,n.npm_install_flags=n.npm_install_flags||"",n.react_version=n.react_version||n.react?.version||18,ke(e),De(e),je(e),_e(e),be(e),we(e),ve(e),he(e),ye(e),ge(e),fe(e),me(e),ue(e)},Va=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 Se({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"}))}e.doc.features.preact_enabled&&t.push({package:"preact",version:"^10"}),!0===e.doc.features.cli.enabled&&(t.push({package:"@fnet/args",version:"^0.1"}),a.push({package:"ajv",version:"^8"}),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.11"})},eo=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{if(!0!==e.doc.features.app.enabled)return;await t({message:"Creating app folder"});const n={atom:e,packageDependencies:o,ts:Date.now()},s=a.templateDir,r=Pe.resolve(a.projectDir,"src/app");Ae.existsSync(r)||Ae.mkdirSync(r,{recursive:!0});let i=["index.js.njk"];!1!==e.doc.features.app.html&&i.push("index.html.njk"),await Ie({pattern:i,dir:Pe.resolve(s,"src/app"),outDir:r,context:n})},to=async({atom:e,context:t,packageDependencies:a,packageDevDependencies:o,setInProgress:n})=>{await n({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 s=a.find((e=>"react"===e.package)),r=a.find((e=>"react-dom"===e.package));s&&!r?a.push({package:"react-dom",version:s.version}):s&&r&&(r.version=s.version),s&&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:$e.resolve(t.projectDir,"src/app/index.js"),dev:!1!==e.doc.features.app.dev}),!0===e.doc.features.cli.enabled&&i.push({file:$e.resolve(t.projectDir,"src/cli/index.js"),dev:!1!==e.doc.features.cli.dev});for await(const t of i){const n=t.file;if(!Te.existsSync(n))throw new Error(`App file not found: ${n}`);const s=await Oe({file:n,recursive:!0}),r=!0===e.doc.features.all_parsed_imports?s.all:s.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 n=(await Ce({name:e.package,groupBy:{minor:!0}}))[0][0];(!0===t.dev?o:a).push({package:e.package,subpath:e.subpath,version:`^${n}`,type:"npm"})}}const c={atom:e,packageDependencies:a,packageDevDependencies:o},p=t.templateCommonDir,l=Ee.compile(Te.readFileSync($e.resolve(p,"package.json.njk"),"utf8"),Ee.configure(p)).render(c),d=t.projectDir,m=$e.resolve(d,"package.json");Te.writeFileSync(m,l,"utf8");const u=$e.resolve(t.project.projectDir,"fnet");if(Te.existsSync(u)){const e=$e.resolve(t.projectDir,"fnet");Te.existsSync(e)||Te.mkdirSync(e);const a=Te.readdirSync(u);for(const t of a){const a=$e.resolve(u,t);if(!Te.lstatSync(a).isFile())continue;const o=$e.resolve(e,t);Te.copyFileSync(a,o)}}},ao=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating cli."});const n={atom:e,packageDependencies:o},s=a.templateDir,r=Me.resolve(a.projectDir,"src/cli");Re.existsSync(r)||Re.mkdirSync(r,{recursive:!0}),await Fe({pattern:["index.js.njk"],dir:Me.resolve(s,"src/cli"),outDir:r,context:n})},oo=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{await t({message:"Creating rollup file."});const n={atom:e,packageDependencies:o},s=Le.resolve(a.projectDir,"src","default/index.js");if(!qe.existsSync(s))throw new Error(`Entry file not found: ${s}`);const r=(await Ue({file:s,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=Ne.compile(qe.readFileSync(Le.resolve(p,"rollup.config.mjs.njk"),"utf8"),Ne.configure(p)).render(n);const d=a.projectDir;let m=Le.resolve(d,"rollup.config.mjs");qe.writeFileSync(m,l,"utf8")},no=async({atom:e,setInProgress:t,context:a,njEnv:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating yargs."});let n={};if(n=e.doc.input?e.doc.input:{type:"object",properties:{},required:[]},e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled){const t=e.doc.features.cli.fargs,a={type:"string",description:"Config name to load args",hidden:!1},o={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(t,"default")&&(a.default=t.default),n.properties&&(n.properties.fargs=a,n.properties.ftag=o)}const s={options:n,imports:[],atom:e},r=a.templateDir,i=Je.compile(Be.readFileSync(ze.resolve(r,"src/default/to.args.js.njk"),"utf8"),o).render(s),c=a.projectDir,p=ze.resolve(c,"src/default/to.args.js");Be.writeFileSync(p,i,"utf8");const l=new We({allErrors:!0,useDefaults:!0,formats:{email:!0},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});Ge(l);const d=l.compile(n),m=Ke(l,d);Be.writeFileSync(ze.resolve(c,"src/default/validate_input.js"),m,"utf8")},so=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{await t({message:"Creating .gitignore"});const n={atom:e,packageDependencies:o},s=a.templateCommonDir,r=Ye.compile(He.readFileSync(Xe.resolve(s,".gitignore.njk"),"utf8"),Ye.configure(s)).render(n),i=a.projectDir,c=Xe.resolve(i,".gitignore");He.writeFileSync(c,r,"utf8")},ro=async({atom:e,setInProgress:t,context:a,packageDependencies:o})=>{await t({message:"Creating tsconfig.json."});const n={atom:e,packageDependencies:o},s=a.templateCommonDir,r=Ve.compile(Ze.readFileSync(Qe.resolve(s,"tsconfig.json.njk"),"utf8"),Ve.configure(s)).render(n),i=a.projectDir,c=Qe.resolve(i,"tsconfig.json");Ze.writeFileSync(c,r,"utf8")},io=async({atom:e,context:t,setInProgress:a,Atom:o})=>{const n="readme.md",s=`Creating ${n}`;if(await a({message:s}),t.project?.readme){const e=t.projectDir,a={content:t.project.readme.doc.content},o=at.resolve(t.project.projectDir,"fnet/how-to.md");if(tt.existsSync(o)){const e=tt.readFileSync(o,"utf8");a.howto=e}const s=at.resolve(t.project.projectDir,"fnet/input.yaml");if(tt.existsSync(s)){const e=await ot({file:s,tags:t.tags});a.input=e.content}const r=t.templateCommonDir,i=et.compile(tt.readFileSync(at.resolve(r,`${n}.njk`),"utf8"),et.configure(r)).render(a),c=at.resolve(e,`${n}`);tt.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:s,...r}=a.doc,i={content:s},c=t.templateCommonDir,p=et.compile(tt.readFileSync(at.resolve(c,`${n}.njk`),"utf8"),et.configure(c)).render(i),l=t.projectDir,d=at.resolve(l,`${n}`);tt.writeFileSync(d,p,"utf8")}},co=async({setInProgress:e,context:t})=>{const a=t.projectDir;await e({message:"Prettifiying source files."});let o=st.join("src","**","*");if(0!==nt.exec(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:a}).code)throw new Error("Couldnt format files.")},po=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!==rt.exec("tsc",{cwd:o}).code)throw new Error("Couldnt create .d.ts files.")},lo=async({setInProgress:e,atom:t,context:a})=>{const o=a.projectDir;await e({message:"Installing npm packages."});if(0!==it.exec(`npm install ${t.doc.features.npm_install_flags}`,{cwd:o}).code)throw new Error("Couldnt install npm packages.")},mo=async({setInProgress:e,context:t})=>{const a=t.projectDir;await e({message:"Building main project."});if(0!==ct.exec("npm run build",{cwd:a}).code)throw new Error("Couldnt build project.")},uo=async e=>{const{atom:t,packageDependencies:a,context:o,deploymentProjectTarget:n,setInProgress:s,deploymentProject:r,yamlTarget:i}=e;if(!0===n.enabled)if("lib"===n.type)await $a({...e});else if("red"===n.type)await Ta({...e});else if("npm"===n.type)await Ea({...e});else if("gcs"===n.type)await Ia({...e});else if("gitlab"===n.type)await Pa({...e});else if("fnet-package"===n.type)await La({...e});else if("fnet-form"===n.type)await Na({...e});else if("fnet-node"===n.type)await Ba({...e});else if("fnet-flow"===n.type)await Ua({...e});else{let e;if("nextjs"===n.type?e=Fa:"webos"===n.type?e=Ma:"electron"===n.type?e=Ra:"docker"===n.type?e=qa:"ios"===n.type?e=Oa:"macos"===n.type?e=Ca:"rust"===n.type&&(e=za),!e)return;await e({atom:t,target:n,onProgress:s,projectDir:o.projectDir,dependencies:a,context:o,yamlTarget:i}),r.isDirty=!0}},{Atom:fo}=y,go=L,yo=t,ho=b,wo=N,vo=U;var bo=class{#e;#t;#a;#o;#n;#s;#r;#i;#c;#p;#l;#d;#m;#u;#f;#g;#y;constructor(e){this.#e=new Za,this.#t=e,this.#s=[],this.#r=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#s,packageDevDependencies:this.#r,setInProgress:this.setInProgress.bind(this),context:this.#t,Atom:fo,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 Xa(),this.#c=this.#t.buildId||Ya(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 yo({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 Qa(this.#y),await Va(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 fo.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"];Ja.existsSync(e)&&Ja.readdirSync(e).forEach((o=>{a.includes(o)||(t=Ga.rm("-rf",Wa.join(e,o)))}));let o=e;if(!Ja.existsSync(o)&&(t=Ga.exec(`mkdir "${e}"`),0!==t.code))throw new Error("Couldnt create workflow dir.");if(o=Wa.join(e,"src"),!Ja.existsSync(o)&&(t=Ga.exec(`mkdir "${o}"`),0!==t.code))throw new Error("Couldnt create library/src dir.");if(o=Wa.join(e,"src","default"),!Ja.existsSync()&&(t=Ga.exec(`mkdir "${o}"`),0!==t.code))throw new Error("Couldnt create library/src/default dir.")}async initNunjucks(){const e=this.#t.templateDir;this.#o=Ha.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.#n=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.#s})}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],n=await this.findAtomLibrary({url:o.name});o.atom=n;const s=n.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));s?.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=go({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 fo.first({where:{name:e,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===a.length){const e=await fo.first({where:{name:a[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await fo.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=Wa.resolve(this.#t.projectSrcDir,"index.js"),a=await ho({file:t,recursive:!0}),o=e.doc.dependencies,n=!0===this.#a.doc.features.all_parsed_imports?a.all:a.required;for await(const e of n){if("npm"!==e.type)continue;if(o.find((t=>t.package===e.package)))continue;const t=await wo({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=Wa.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.js`),t=Wa.relative(Wa.join(this.#t.projectDir,"src","default"),e);if(!Ja.existsSync(e)){Ja.mkdirSync(Wa.dirname(e),{recursive:!0});let t="export default async (args)=>{\n";t+="}",Ja.writeFileSync(e,t,"utf8")}a.relativePath=t.split(Wa.sep).join("/"),this.#a.typesDir=`./types/${Wa.basename(o)}/src`}else{const e=Wa.join(o,"src","libs",`${a.id}.js`),t=a.doc.contents?.find((e=>"esm"===e.format))||a.doc;Ja.writeFileSync(e,t.content,"utf8")}}}async createEngine(){await this.setInProgress({message:"Creating engine file."});const e={libs:this.#n.filter((e=>"atom"===e.type)),libraryAtom:this.#a,atom:this.#a},t=this.#t.templateDir,a=Ha.compile(Ja.readFileSync(Wa.resolve(t,Wa.join("src","default","engine.js.njk")),"utf8"),this.#o).render(e),o=this.#t.projectDir,n=Wa.resolve(o,Wa.join("src","default","index.js"));Ja.writeFileSync(n,a,"utf8")}async createProjectYaml(){const e="node.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const{content:a,...o}=this.#a.doc,n={content:Ka.stringify(o)},s=this.#t.templateDir,r=Ha.compile(Ja.readFileSync(Wa.resolve(s,`${e}.njk`),"utf8"),this.#o).render(n),i=this.#t.projectDir,c=Wa.resolve(i,`${e}`);Ja.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 fo.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 fo.update(a,{id:a.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:a}=t;if(t.doc.targets&&Array.isArray(t.doc.targets))throw new Error("Deployment project targets are deprecated. Please update targets in the yaml file.");const o=Object.keys(t.doc||{}),n=a||{};for(let e=0;e<o.length;e++){const a=t.doc[o[e]];a.name=o[e];const s=n.get(o[e]);await uo({...this.#y,deploymentProject:t,deploymentProjectTarget:a,yamlTarget:s})}}async registerToPackageManager(e){const{target:t,packageJSON:a}=e;if(!this.#t.id)return;let o=await fo.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:a.version}),await fo.update(o,{id:o.id})):o=await fo.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(vo.blue(e)),await this._cache_set(this.#p,{status:"IN_PROGRESS",message:e})}async build(){try{this.#u&&(await this.createAtomLibFiles({libs:this.#n}),await this.createEngine(),await this.createProjectYaml(),await io(this.#y),await ro(this.#y),await so(this.#y),await no(this.#y),await ao(this.#y),await eo(this.#y),await oo(this.#y),await to(this.#y),await co(this.#y),await po(this.#y),this.#f&&(await lo(this.#y),await mo(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 _o=l,jo=d;var Do=function({baseDir:e=__dirname}){let t=e;for(;t!==jo.parse(t).root;){const e=jo.join(t,"node_modules");if(_o.existsSync(e))return e;t=jo.dirname(t)}return null};const ko=process.cwd(),{spawn:xo}=e;t({name:["redis"],dir:ko,optional:!0});const So=a,Ao=o,Po=n,Io=s,Eo=r,To=i,$o=t,Oo=c,Co=p,Ro=bo,Mo=Do({baseDir:__dirname}),Fo="win32"===process.platform?";":":";process.env.PATH=`${So.join(Mo,"/.bin")}${Fo}${process.env.PATH}`;let qo=Ao(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=So.resolve(Mo,"@fnet/cli-project-node/dist/template/project"),a=So.resolve(ko,e.name);Po.existsSync(a)||Po.mkdirSync(a),await Co({dir:t,outDir:a,context:e,copyUnmatchedAlso:!0});let o=Eo.exec("fnode build",{cwd:a});if(0!==o.code)throw new Error("Failed to build project.");if(Eo.which("git")&&(o=Eo.exec("git init --initial-branch=main",{cwd:a}),0!==o.code))throw new Error("Failed to initialize git.");if(Eo.which("code")&&e.vscode&&(o=Eo.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=So.resolve(Mo,"@fnet/cli-project-node/dist/template/project"),a=process.cwd();if(e.name=So.basename(a),e.update){if(await Co({dir:t,outDir:a,context:e,copyUnmatchedAlso:!0}),0!==Eo.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 No(e),a=new Ro(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 No({...e,mode:"all"}),a=new Ro(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 No({...e,mode:"file"}),a=new Ro(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 Lo(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 No(e),{projectDir:n}=t,s=process.argv.slice(3);xo(a,[...o,...s],{cwd:n,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function No(e){if(e.id)return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",templateDir:So.resolve(Mo,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:So.resolve(Mo,"./@fnet/cli-project-common/dist/template/default"),projectDir:So.resolve(ko,`./.output/${e.id}`),tags:e.ftag};{const t=await async function({tags:e}){const t=So.resolve(ko,"node.yaml");if(!Po.existsSync(t))throw new Error("node.yaml file not found in current directory.");const{raw:a,parsed:o}=await To({file:t,tags:e}),n=So.dirname(t),s={libraryAtom:{doc:{...o},fileName:"index"},projectDir:n,projectFilePath:t,projectFileContent:a,projectFileParsed:o};let r=So.resolve(n,"fnet/targets.yaml");if(!Po.existsSync(r)&&(r=So.resolve(n,"node.devops.yaml"),Po.existsSync(r))){const e=So.resolve(n,"fnet");Po.existsSync(e)||Po.mkdirSync(e),Po.copyFileSync(r,So.resolve(n,"fnet/targets.yaml")),Po.unlinkSync(r)}if(Po.existsSync(r)){const{raw:t,parsed:a}=await To({file:r,tags:e}),o=Io.parseDocument(t);s.devops={filePath:r,fileContent:t,yamlDocument:o,doc:{...a},type:"library.deploy",save:async()=>{Po.writeFileSync(s.devops.filePath,o.toString())}}}const i=So.resolve(n,"readme.md");if(Po.existsSync(i)){const e=Po.readFileSync(i,"utf8");s.readme={filePath:i,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return s}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:So.resolve(Mo,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:So.resolve(Mo,"./@fnet/cli-project-common/dist/template/default"),projectDir:So.resolve(t.projectDir,"./.workspace"),projectSrcDir:So.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}qo=qo.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 No(e),{project:a}=t,{projectDir:o,projectFileParsed:n}=a,s=n.input;if(!s)throw new Error("Config schema not found in project file.");const r=await Oo({schema:s,format:"yaml"}),i=So.resolve(o,".fnet");Po.existsSync(i)||Po.mkdirSync(i);const c=So.resolve(i,`${e.name}.fnet`);Po.writeFileSync(c,r)}catch(e){console.error(e.message),process.exit(1)}})),qo=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 No(e),{project:a}=t,{projectDir:o,projectFileParsed:n}=a,s=n.input;if(!s)throw new Error("Config schema not found in project file.");const r=So.resolve(o,".fnet"),i=So.resolve(r,`${e.name}.fnet`),c=await Oo({schema:s,format:"yaml",ref:i});Po.existsSync(r)||Po.mkdirSync(r),Po.writeFileSync(i,c)}catch(e){console.error(e.message),process.exit(1)}}))}(qo),qo=Lo(qo,{bin:"npm"}),qo=Lo(qo,{bin:"node"}),qo=Lo(qo,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),qo=Lo(qo,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),qo=Lo(qo,{name:"app",bin:"npm",preArgs:["run","app","--"]}),qo=Lo(qo,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),qo=Lo(qo,{bin:"npx"}),qo=Lo(qo,{bin:"cdk"}),qo=Lo(qo,{bin:"aws"}),qo=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 No(e),{projectDir:o}=t,n=e.config,s=await $o({name:n,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),r=s?.data?.env||void 0,i=e.command,c=process.argv.slice(5);xo(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)}}))}(qo,{name:"with"}),qo.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"),i=require("fs"),a=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"),y=require("nanoid"),w=require("@flownet/lib-atom-api-js"),v=require("axios"),b=require("qs"),x=require("lodash.merge"),k=require("@flownet/lib-parse-imports-js"),j=require("@flownet/lib-list-npm-versions"),_=require("ajv/dist/2020"),D=require("ajv/dist/standalone"),S=require("ajv-formats"),P=require("@fnet/shell"),A=require("semver"),T=require("@fnet/up-list-files"),E=require("node:os"),$=require("@node-red/util"),O=require("@flownet/lib-to-ios-app"),I=require("@flownet/lib-to-macos-app"),C=require("@flownet/lib-to-electron"),N=require("@flownet/lib-to-webos"),M=require("@flownet/lib-to-nextjs"),F=require("@flownet/lib-to-docker"),R=require("form-data"),q=require("@fnet/to-rust"),U=require("@flownet/lib-parse-node-url"),L=require("@flownet/lib-bpmn-from-flow"),B=require("@fnet/expression"),J=require("chalk"),z=require("lodash.pick"),W=require("lodash.omit");const K=g,G=h;const{Api:H}=w,V=v.default,X=b;const Y=x;var Z=({feature:e,features:t,packageDevDependencies:n})=>{const{name:o,packages:i,options:a,extraCheck:s,explicit:r}=e,c=`${o}_enabled`,l=t.rollup_output||{},p=Object.keys(l);let d=a||{};const f=t[o]?.options;f&&(d=Y(d,f));const m=!t[o]||!1===t[o]?.enabled;p.forEach((e=>{const n=t.rollup_output[e];if(n){if(Reflect.has(n,o)){if(m||!n[o]||!1===n[o]?.enabled)return void delete n[o];!0===n[o]&&(n[o]={enabled:!0,options:d})}else{if(m||r||!1===t[c])return;n[o]={enabled:!0}}n[o]=n[o]||{},n[o].options={...d,...n[o].options}}}));let u=p.some((e=>!0===t.rollup_output[e][o]?.enabled));s&&(u=s()&&u),t[c]=u,u&&i.forEach((e=>n.push({package:e[0],version:e[1]})))};const Q=Z;const ee=Z;const te=Z;const ne=Z;const oe=Z;const ie=Z;const ae=Z;const se=Z;const re=Z;const ce=Z;const le=Z;const pe=Z;const de=Z;const fe=x,me=p,ue=d,ge=k,he=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;Q({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}},explicit:!0},features:o,packageDevDependencies:n})},ye=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ee({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:o,packageDevDependencies:n})},we=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;te({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.3"]]},features:o,packageDevDependencies:n})},ve=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ne({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:o,packageDevDependencies:n})},be=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;oe({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:o,packageDevDependencies:n})},xe=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ie({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:o,packageDevDependencies:n})},ke=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ae({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:o,packageDevDependencies:n})},je=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;se({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:o,packageDevDependencies:n})},_e=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;re({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:o,packageDevDependencies:n})},De=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ce({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:o,packageDevDependencies:n})},Se=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;le({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:o,packageDevDependencies:n})},Pe=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features,i={};!0===o.app?.enabled&&(i.targets=i.targets||[],i.targets.push({src:"./src/app/index.html",dest:o.app.dir}),Reflect.has(o.app,"copy")||Reflect.has(o,"copy")||(o.copy=!0)),pe({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:i},features:o,packageDevDependencies:n})},Ae=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features,i=o.css&&!1!==o.css.enabled;let a=[];if(i){a.push(["rollup-plugin-postcss","^4"]),a.push(["sass","^1.66"]);(o.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":a.push(["postcss-import","^15"]);break;case"postcss-url":a.push(["postcss-url","^10"]);break;case"postcss-preset-env":a.push(["postcss-preset-env","^9"]);break;case"autoprefixer":a.push(["autoprefixer","^10"]);break;case"cssnano":a.push(["cssnano","^6"])}}))}de({feature:{name:"css",packages:a},features:o,packageDevDependencies:n})};function Te({dir:e,name:t="index"}){let n=ue.resolve(e,`./${t}.tsx`);if(me.existsSync(n)||(n=ue.resolve(e,`./${t}.ts`)),me.existsSync(n)||(n=ue.resolve(e,`./${t}.jsx`)),me.existsSync(n)||(n=ue.resolve(e,`./${t}.js`)),!me.existsSync(n))return{};const o=n,i=ue.extname(n);return{file:o,ext:i,ts:".ts"===i||".tsx"===i,name:t}}const Ee=j;const $e=p,Oe=d,Ie=l;const Ce=f,Ne=p,Me=d,Fe=k,Re=j;const qe=p,Ue=d,Le=l;const Be=p,Je=d,ze=f,We=k;const Ke=p,Ge=d,He=f,Ve=_,Xe=D,Ye=S;const Ze=p,Qe=d,et=f;const tt=p,nt=d,ot=f;const it=f,at=p,st=d,rt=r;const ct=s,lt=n;const pt=s;const dt=s;const ft=s;const mt=P,ut=t;const gt=p,ht=d,yt=A,wt=P,vt=t;const bt=p,xt=d,kt=A,jt=s,_t=t,Dt=T,St=c,Pt=a;const At=p,Tt=d,Et=E,$t=f,Ot=$,It=t;const Ct=i,Nt=n,Mt=t;const Ft=t,Rt=O,qt=m,Ut=A;const Lt=t,Bt=I,Jt=m,zt=A;const Wt=t,Kt=C,Gt=m,Ht=A;const Vt=t,Xt=N,Yt=m,Zt=A;const Qt=t,en=M,tn=m,nn=A;const on=t,an=F,sn=m,rn=A;const cn=p,ln=d,pn=A,dn=P,fn=t,mn=v.default;const un=A,gn=t,hn=v.default;const yn=A,wn=t,vn=v.default,bn=i,xn=P,kn=R;const jn=A,_n=t,Dn=v.default,Sn=i,Pn=P,An=R;const Tn=t,En=q,$n=m,On=A;const In=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,buildId:i})=>{await e({message:"Deploying it as gitlab project."});const a=t.projectDir;let s="fnet-to-gitlab";const r=o.params.config||"gitlab",c=await ut({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='${a}'`,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 mt({cmd:s}),n.isDirty=!0)},Cn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,registerToPackageManager:i,yamlTarget:a})=>{await e({message:"Deploying it as gcs package."});const s=t.projectDir,r=ht.resolve(s,"package.json"),c=gt.readFileSync(r),l=JSON.parse(c);l.name=o.params.name,l.version=yt.inc(o.version,"patch"),delete l.scripts,delete l.devDependencies,gt.writeFileSync(r,JSON.stringify(l,null,"\t"));const{file:p,data:d}=await vt({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='${ht.resolve(ht.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 wt({cmd:f}),gt.writeFileSync(r,c),!0!==o.dryRun&&(n.isDirty=!0,o.version=l.version,a.set("version",l.version),await i({target:o,packageJSON:l}))},Nn=async({atom:e,setInProgress:t,context:n,deploymentProject:o,deploymentProjectTarget:i,yamlTarget:a})=>{await t({message:"Deploying it as npm package."});const s=n.projectDir,r=xt.resolve(s,"package.json"),c=bt.readFileSync(r),l=JSON.parse(c);l.name=i.params.name,l.version=kt.inc(i.version,"patch");const p=i.params.bin?.name||i.params.bin;!1!==i.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 ."},bt.writeFileSync(r,JSON.stringify(l,null,"\t"));const d=i.config||"npm";let f=(await _t({name:d,dir:n.projectDir,tags:n.tags,optional:!0}))?.data;if(!f){const e=Dt({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===e.length)throw new Error("Couldnt find schema to create npm config");const t=await St({schema:e[0],tags:n.tags}),o=n.project.projectDir,i=xt.resolve(o,".fnet");bt.existsSync(i)||bt.mkdirSync(i),bt.writeFileSync(xt.resolve(i,`${d}.fnet`),Pt.stringify(t)),f=t}if(bt.writeFileSync(xt.resolve(s,".npmrc"),`//registry.npmjs.org/:_authToken=${f.env.NPM_TOKEN}`),!0!==i.dryRun){if(0!==jt.exec("npm publish --access public",{cwd:s}).code)throw new Error("Couldnt publish to npm");bt.writeFileSync(r,c),o.isDirty=!0,i.version=l.version,a.set("version",l.version)}},Mn=async({atom:e,setInProgress:t,context:n,deploymentProject:o,deploymentProjectTarget:i,buildId:a,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"===i.deploy.template)d={atom:e,packageDependencies:s,red:{tab:{id:i.deploy.id||Ot.util.generateId(),label:`${p}/${e.id?e.id:Et.hostname()}/${e.name}/${i.deploy.name||i.deploy.template}`},function:{id:Ot.util.generateId(),name:e.doc.name,initialize:{content:At.readFileSync(Tt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},inject:{id:Ot.util.generateId(),...i.params?.inject,payload:"json"===i.params?.inject?.payloadType?`'${JSON.stringify(i.params?.inject?.payload)}'`:i.params?.inject?.payload},debug:{id:Ot.util.generateId()}}};else if("cronjob"===i.deploy.template){let t=i.params?.schedules?cloneDeep(i.params?.schedules):void 0;t?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),d={atom:e,packageDependencies:s,red:{tab:{id:i.deploy.id||Ot.util.generateId(),label:`${p}/${e.id?e.id:Et.hostname()}/${i.deploy.name||i.deploy.template}`},function:{id:Ot.util.generateId(),name:e.doc.name,initialize:{content:At.readFileSync(Tt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},cronjob:{id:Ot.util.generateId(),schedules:t},debug:{id:Ot.util.generateId()}}}}else{if("http"!==i.deploy.template)return;d={atom:e,packageDependencies:s,red:{tab:{id:i.deploy.id||Ot.util.generateId(),label:`${p}/${e.id?e.id:Et.hostname()}/${i.deploy.name||i.deploy.template}`},function:{id:Ot.util.generateId(),name:e.doc.name,initialize:{content:At.readFileSync(Tt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},httpin:{id:Ot.util.generateId(),method:i.params.method||"get",url:i.params.url},httpout:{id:Ot.util.generateId()},debug:{id:Ot.util.generateId()}}}}let f=$t.compile(At.readFileSync(Tt.resolve(l,`deploy/node-red/${i.deploy.template}.yaml.njk`),"utf8"),r).render(d);if(At.writeFileSync(Tt.resolve(c,"node-red.yaml"),f),f=yaml.load(f),!0===i.dryRun)return;o.isDirty=!0;const m=(await It({name:n.redConfig||"red",dir:n.projectDir,tags:n.tags}))?.data,u=i.deploy.url||m.env.RED_URL,g={};if(!1!==i.deploy.auth&&(g.Authorization="Bearer "+atomAccessToken),i.deploy.id)!0===i.actions?.delete?(await axios({method:"DELETE",url:`${u}/flow/${i.deploy.id}`,headers:g}),delete i.actions.delete,delete i.deploy.id,i.enabled=!1):await axios({method:"PUT",url:`${u}/flow/${i.deploy.id}`,data:f,headers:g});else{const e=await axios({method:"POST",url:`${u}/flow`,data:f,headers:g});i.deploy.id=e.data.id}},Fn=async({atom:e,Atom:t,setInProgress:n,context:o,packageDependencies:i,deploymentProject:a,deploymentProjectTarget:s})=>{await n({message:"Deploying it as workflow lib."});const r=(await Mt({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(a.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:Ct.readFileSync(Nt.resolve(f,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:Ct.readFileSync(Nt.resolve(f,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:Ct.readFileSync(Nt.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],c.doc.name=p,c.doc.dependencies=i,"workflow.lib"===e.type?c.doc.subtype="library":"workflow"===e.type&&(c.doc.subtype="workflow"),c=await t.update(c,{id:c.id})},Rn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as ios-app package."});const r=t?.config?await Ft({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=Ut.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=qt(t.params);l.dependencies=qt(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Rt(p)}},qn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as macos-app package."});const r=t?.config?await Lt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=zt.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=Jt(t.params);l.dependencies=Jt(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Bt(p)}},Un=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as electron package."});const r=t?.config?await Wt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=Ht.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=Gt(t.params);l.dependencies=Gt(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Kt(p)}},Ln=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as webos package."});const r=t?.config?await Vt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=Zt.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=Yt(t.params);l.dependencies=Yt(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Xt(p)}},Bn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as nextjs package."});const r=t?.config?await Qt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=nn.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=tn(t.params);l.dependencies=tn(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await en(p)}},Jn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as docker package."});const r=t?.config?await on({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=rn.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=sn(t.params);l.dependencies=sn(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await an(p)}},zn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:i})=>{await e({message:"Deploying it as fnet package."});const a=t.projectDir,s=ln.resolve(a,"package.json"),r=cn.readFileSync(s),c=JSON.parse(r);c.name=o.params.name,c.version=pn.inc(o.version,"patch"),delete c.scripts,delete c.devDependencies,cn.writeFileSync(s,JSON.stringify(c,null,"\t"));const{file:l,data:p}=await fn({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 mn({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='${ln.resolve(ln.dirname(l),p.env.GCS_UPLOADER_KEY_FILE)}'`,h+=` --dir='${a}'`,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 dn({cmd:h}),cn.writeFileSync(s,r),!0===o.dryRun)return;n.isDirty=!0,o.version=c.version,i.set("version",c.version);const y=`${p.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(u=await mn({method:"POST",url:y,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.")},Wn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:i})=>{await e({message:"Deploying it as fnet form."});const{file:a,data:s}=await gn({name:o.config||"fnet-form",dir:t.projectDir,tags:t.tags});if(!s.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${a}`);if(!s.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${a}`);if(!s.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${a}`);const r=`${s.env.ATOM_API_URL}/v1/auth/token`,c=s.env.ATOM_API_USERNAME,l=s.env.ATOM_API_PASSWORD;let p=await hn({method:"POST",url:r,data:{username:c,password:l},headers:{"Content-Type":"application/json"}});const d=p.data?.access_token;if(!d)throw new Error(`Invalid access_token from ${r}`);n.isDirty=!0;const f=un.inc(o.version,"patch");o.params.version=f,o.version=f,i.set("version",f);const m=`${s.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(p=await hn({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 ${d}`}}),p.data?.error)throw new Error("Error publishing fnet form.")},Kn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:i})=>{await e({message:"Deploying it as fnet flow."});const{file:a,data:s}=await wn({name:o.config||"fnet-flow",dir:t.project.projectDir,tags:t.tags});if(!s.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${a}`);if(!s.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${a}`);if(!s.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${a}`);const r=`${s.env.ATOM_API_URL}/v1/auth/token`,c=s.env.ATOM_API_USERNAME,l=s.env.ATOM_API_PASSWORD;let p=await vn({method:"POST",url:r,data:{username:c,password:l},headers:{"Content-Type":"application/json"}});const d=p.data?.access_token;if(!d)throw new Error(`Invalid access_token from ${r}`);n.isDirty=!0;const f=yn.inc(o.version,"patch");o.params.version=f,o.version=f,i.set("version",f);const m=`${s.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(p=await vn({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 ${d}`}}),p.data?.error)throw new Error("Error publishing fnet flow.");const u=p.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const h=await xn({cmd:g});if(0!==h.code)throw new Error(h.stderr);const y=JSON.parse(h.stdout).path;let w=new kn;w.append("file",bn.createReadStream(y));const v=await vn.request({method:"POST",maxBodyLength:1/0,url:`${s.env.ATOM_API_URL}/v1/service/upload/single/${u}`,headers:{...w.getHeaders(),Authorization:`Bearer ${d}`},data:w});if(v.data?.error)throw new Error("Error uploading fnet flow.")},Gn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:i})=>{await e({message:"Deploying it as fnet node."});const{file:a,data:s}=await _n({name:o.config||"fnet-node",dir:t.project.projectDir,tags:t.tags});if(!s.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${a}`);if(!s.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${a}`);if(!s.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${a}`);const r=`${s.env.ATOM_API_URL}/v1/auth/token`,c=s.env.ATOM_API_USERNAME,l=s.env.ATOM_API_PASSWORD;let p=await Dn({method:"POST",url:r,data:{username:c,password:l},headers:{"Content-Type":"application/json"}});const d=p.data?.access_token;if(!d)throw new Error(`Invalid access_token from ${r}`);n.isDirty=!0;const f=jn.inc(o.version,"patch");o.params.version=f,o.version=f,i.set("version",f);const m=`${s.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(p=await Dn({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 ${d}`}}),p.data?.error)throw new Error("Error publishing fnet node.");const u=p.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const h=await Pn({cmd:g});if(0!==h.code)throw new Error(h.stderr);const y=JSON.parse(h.stdout).path;let w=new An;w.append("file",Sn.createReadStream(y));const v=await Dn.request({method:"POST",maxBodyLength:1/0,url:`${s.env.ATOM_API_URL}/v1/service/upload/single/${u}`,headers:{...w.getHeaders(),Authorization:`Bearer ${d}`},data:w});if(v.data?.error)throw new Error("Error uploading fnet node.")},Hn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as Rust package."});const r=t?.config?await Tn({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=On.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=$n(t.params);l.dependencies=$n(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await En(p)}};const Vn=m;async function Xn({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||Vn(e.definition);for(const t of e.childs)t.context.transform=t.context.transform||Vn(t.definition),t.definition.hasOwnProperty("condition")&&(t.context.transform.condition=await o(t.definition.condition));await t({node:e}),n({node:e})}var Yn={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],i=`${n}`;o.hasOwnProperty("default")&&(i="default",o=o.default);const a={name:o.condition||i,childs:[],parent:e,definition:o,index:e.childs.length,context:{}};e.childs.push(a),await t({node:a})}e.resolve=Xn},resolve:Xn};const Zn=B,Qn=Yn;var eo={hits:async function({node:e}){const t=Object.keys(e.definition);return 1===(await Promise.all(t.map((e=>Zn({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=>Zn({expression:e})))),i=[],a=o.find((e=>"if"===e?.processor)),s=t.definition[a.expression];i.push({name:`${t.name}_if`,definition:s,processor:a}),delete t.definition[a.expression];const r=o.filter((e=>"elseif"===e?.processor));let c=0;for(const e of r){const n=t.definition[e.expression];i.push({name:`${t.name}_elseif_${c++}`,definition:n,processor:e}),delete t.definition[e.expression]}t.definition.switch=[];for(const e of i)t.definition.switch.push({condition:e.processor.statement,...e.definition});await Qn.init(e)}};const to=m;async function no({node:e,resolveTypeCommon:t,resolveNextBlock:n}){if(e.context.transform=e.context.transform||to(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||to(t.definition),t.context.transform.hasOwnProperty("as")||(t.context.transform.as="error")}await t({node:e}),n({node:e})}var oo={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=no},resolve:no};const io=m;async function ao({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=io(e.definition);const i=e.context.transform;for(let e=0;e<i.assign?.length;e++){let t=i.assign[e],n=Object.keys(t)[0],a=t[n],s={key:await o(n),value:await o(a)};i.assign[e]=s}await t({node:e}),n({node:e})}var so={hits:async function({node:e}){return e.definition.hasOwnProperty("assign")},init:async function({node:e,initNode:t}){e.type="assign",e.resolve=ao},resolve:ao};const ro=m,co=z,lo=W;async function po({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||ro(e.definition);e.context.transform.for.in=await o(e.definition.for.in),await t({node:e}),n({node:e})}var fo={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]=[co(e.definition.for,t),lo(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],i=Object.keys(o)[0],a={name:i,childs:[],parent:e,definition:o[i],index:e.childs.length,context:{}};e.childs.push(a),await t({node:a})}e.resolve=po},resolve:po};var mo={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:i}){}};const uo=m;async function go({node:e,resolveTypeCommon:t,transformExpression:n}){e.context.transform=e.context.transform||uo(e.definition);const o=e.context.transform;o.raise=await n(o.raise),await t({node:e})}var ho={hits:async function({node:e}){return e.definition.hasOwnProperty("raise")},init:async function({node:e,initNode:t}){e.type="raise",e.resolve=go},resolve:go};const yo=m;async function wo({node:e,resolveTypeCommon:t,transformExpression:n}){e.context.transform=e.context.transform||yo(e.definition);const o=e.context.transform;o.return=await n(o.return),await t({node:e})}var vo={hits:async function({node:e}){return e.definition.hasOwnProperty("return")},init:async function({node:e,initNode:t}){e.type="return",e.resolve=wo},resolve:wo};const bo=m;async function xo({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||bo(e.definition);const i=e.context.transform;i.args&&(i.args=await o(i.args)),i.result&&(i.result=await o(i.result));const a=e.workflow.parent;e.context.lib=a.context.libs.find((e=>e.name===i.call)),await t({node:e}),n({node:e})}var ko={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],i=Object.keys(o)[0],a={name:i,childs:[],parent:e,definition:o[i],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(a),await t({node:a})}e.resolve=xo},resolve:xo};const jo=ko;var _o={hits:async function({node:e}){return e.definition.hasOwnProperty("shell")},init:async function(e){const{node:t}=e,n="shell",o=t.definition,i=typeof o[n];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/shell",o.args="string"===i?{...o.args,cmd:o[n]}:o[n],delete o[n],await jo.init(e)}};const Do=ko;var So={hits:async function({node:e}){return e.definition.hasOwnProperty("config")},init:async function(e){const{node:t}=e,n="config",o=t.definition,i=typeof o[n];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/config",o.args="string"===i?{...o.args,name:o[n]}:o[n],delete o[n],await Do.init(e)}};const Po=ko;var Ao={hits:async function({node:e}){return e.definition.hasOwnProperty("yaml")},init:async function(e){const{node:t}=e,n="yaml",o=t.definition,i=typeof o[n];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/yaml",o.args="string"===i?{...o.args,file:o[n]}:o[n],delete o[n],await Po.init(e)}};async function To({node:e}){e.context.next=e.childs[0]}var Eo={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],i={name:n,childs:[],parent:e,definition:o[n],index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=To},resolve:To};const $o=m;async function Oo({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||$o(e.definition);const i=e.context.transform;i.props&&(i.props=await o(i.props));const a=e.workflow.parent;e.context.lib=a.context.libs.find((e=>e.name===i.form)),await t({node:e}),n({node:e})}var Io={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],i=Object.keys(o)[0],a={name:i,childs:[],parent:e,definition:o[i],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(a),await t({node:a})}e.resolve=Oo},resolve:Oo};const Co=m;async function No({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o,transformValue:i}){e.context.transform=e.context.transform||Co(e.definition),await t({node:e})}var Mo={hits:async function({node:e}){return e.definition.hasOwnProperty("operation")},init:async function({node:e,initNode:t}){e.type="operation",e.resolve=No},resolve:No};const Fo=m;async function Ro({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||Fo(e.definition);const i=e.context.transform;i.next=await o(i.next),await t({node:e}),n({node:e})}var qo={hits:async function({node:e}){return e.definition.hasOwnProperty("next")},init:async function({node:e,initNode:t}){e.type="jump",e.resolve=Ro},resolve:Ro};const Uo=ko;var Lo={hits:async function({node:e}){return e.definition.hasOwnProperty("prompt")},init:async function(e){const{node:t}=e,n="prompt",o=t.definition,i=typeof o[n];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/prompt",o.args="string"===i?{...o.args,message:o[n]}:o[n],delete o[n],await Uo.init(e)}};const Bo=ko;var Jo={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,i=typeof o[n];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${n} usage`);o.call="npm:@flownet/lib-load-browser-script-url",o.args="string"===i?{...o.args,src:o[n]}:o[n],delete o[n],await Bo.init(e)}};const zo=ko;var Wo={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,i=typeof o[n];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${n} usage`);o.call="npm:@flownet/lib-load-browser-link-url",o.args="string"===i?{...o.args,src:o[n]}:o[n],delete o[n],await zo.init(e)}};const Ko=p,Go=d,Ho=a,Vo=s,Xo=f,Yo=m,Zo=u,Qo=async()=>{if(!await G({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=K.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e},{nanoid:ei}=y,ti=class{init({config:e,accessToken:t}){return new Promise(((n,o)=>{if(H.set_api_url(e.data.url),t)return H.set_req_token(t),void n(t);V({method:"POST",url:`${e.data.issuer}/protocol/openid-connect/token`,data:X.stringify(e.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((e=>{H.set_req_token(e.data.access_token),n(e.data.access_token)})).catch((e=>{H.set_req_token(),o(e)}))}))}},ni=async e=>{const{atom:t,context:n,packageDevDependencies:o}=e;t.doc.features=t.doc.features||{};const i=t.doc.features;i.project=i.project||{},i.project.format=i.project.format||i.project_format||"esm",i.project_format=i.project.format,i.dts_enabled=!0===i.dts||void 0!==i.dts&&!1!==i.dts,i.hasOwnProperty("all_parsed_imports")||(i.all_parsed_imports=!0);const a=ue.resolve(n.project.projectDir),s=Te({dir:ue.resolve(a,"./app")});if(s.file){let e=await ge({file:s.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));i.app_uses_jsx=t,i.app_has_entry=!0,e=await ge({file:s.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),i.app_entry_uses_jsx=t,i.app_entry_is_ts=s.ts,i.app_entry_ext=s.ext}const r=Te({dir:ue.resolve(a,"./cli")});if(r.file){let e=await ge({file:r.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));i.cli_uses_jsx=t,i.cli_has_entry=!0,e=await ge({file:r.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),i.cli_entry_uses_jsx=t,i.cli_entry_is_ts=r.ts,i.cli_entry_ext=r.ext}if("workflow.lib"===t.type){const e=Te({dir:ue.resolve(a,"./src")});if(e.file){let t=await ge({file:e.file,recursive:!0}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));i.src_uses_jsx=n,i.src_has_entry=!0,t=await ge({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),i.src_entry_uses_jsx=n,i.src_entry_is_ts=e.ts,i.src_entry_ext=e.ext}}const c=Reflect.has(i,"app_entry_uses_jsx")?!0===i.app_entry_uses_jsx:!0===i.src_entry_uses_jsx,l=Reflect.has(i,"cli_entry_uses_jsx")?!0===i.cli_entry_uses_jsx:!0===i.src_entry_uses_jsx;i.form_enabled=!0===t.doc.form||!0===t.doc.form?.enabled||!0===i.form||!0===i.form?.enabled,i.multiple_enabled=i.multiple_enabled||!0===i.multiple||!0===i.multiple?.enabled,!1===i.app?i.app={enabled:!1}:!0===i.app?i.app={enabled:!0,extend:!0===i.app_has_entry,export:!0,react:c}:i.app={enabled:!0,extend:!0===i.app_has_entry,export:!0,react:c,...i.app||{}},i.app.enabled=!0===i.app.enabled&&(!0===t.doc.features.form_enabled||!0===i.app.extend||!0===i.app.enabled),i.app.format=i.app.format||"esm",i.app.folder=i.app.folder||i.app.format||"default",!1===i.cli?i.cli={enabled:!1}:!0===i.cli?i.cli={enabled:!0,extend:!0===i.cli_has_entry,export:!0,react:l}:i.cli={enabled:!0,extend:!0===i.cli_has_entry,export:!0,react:l,...i.cli||{}},i.cli.enabled=!0===i.cli.enabled&&(!1===t.doc.features.form_enabled||!0===i.cli.extend||!0===i.cli.enabled),i.cli.format=i.cli.format||"esm",i.cli.folder=i.cli.folder||i.cli.folder||"esm",i.cli.node_options=i.cli.node?.options||i.cli.node_options||"",i.json=i.cli.enabled||i.json;const p={cjs:{format:"cjs",context:i.form_enabled?"window":"global",babel:!0===i.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==i.cjs,copy:!1},esm:{format:"esm",context:i.form_enabled?"window":"global",babel:!0===i.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!1!==i.esm,copy:!0},iife:{format:"iife",context:i.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==i.iife,terser:!0,copy:!1}};!0===i.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",copy:!1,babel_options:{targets:{chrome:"79"}}}),!0===i.electron&&(p.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===i.nextjs&&(p.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===i.ios&&(p.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===i.macos&&(p.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===i.app.enabled&&(i.app.dir=`./dist/app/${i.app.folder}`,p.app={format:i.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:i.app.dir,terser:!0,output_exports:!1===i.app.export?"none":"auto"}),!0===i.cli.enabled&&(i.cli.dir=`./dist/cli/${i.cli.folder}`,p.cli={format:i.cli.format,context:"global",babel:!0===i.src_uses_jsx||!0===i.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:i.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===i.cli.export?"none":"auto"});const d={server:".",startPath:`${ue.normalize(i.app.dir||".")}`,files:[ue.normalize("./dist/**/*")],cors:!0,open:!1};i.babel_options=fe({targets:{browsers:"last 9 versions, not dead",node:"18"}},i.babel_options||i.babel?.options),i.browsersync_options=fe(d,i.browsersync_options||i.browsersync?.options||{}),i.replace_options=fe({},i.replace_options||i.replace?.options||{}),Reflect.has(i.browsersync_options,"proxy")&&delete i.browsersync_options.server,i.rollup=i.rollup||{},i.rollup_output=fe(p,i.rollup_output||i.rollup?.output||{}),i.preact_enabled=!0===i.preact||i.preact&&!1!==i.preact?.enabled;let f=Object.keys(p);for(const e of f){const t=p[e];t&&(!1!==i.rollup[e]?(t.babel_options=t.babel_options||i.babel_options,t.browsersync_options=fe(i.browsersync_options,t.browsersync_options),t.replace_options=fe(i.replace_options,t.replace_options),i.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"),i.form_enabled&&(t.babel=!0)):delete i.rollup_output[e])}f=Object.keys(i.rollup_output),i.babel_enabled=f.some((e=>!0===i.rollup_output[e].babel)),i.browser_enabled=f.some((e=>!0===i.rollup_output[e].babel)),i.browsersync_enabled=!1!==i.browsersync&&f.some((e=>!0===i.rollup_output[e].browsersync)),i.browsersync_enabled=i.browsersync_enabled&&i.app.enabled,i.dependency_auto_enabled=!1!==i.dependency_auto&&!1!==i.dependency_auto?.enabled,i.npm_install_flags=i.npm_install_flags||"",i.react_version=i.react_version||i.react?.version||18,Ae(e),Pe(e),Se(e),De(e),_e(e),ke(e),je(e),xe(e),be(e),ve(e),we(e),he(e),ye(e)},oi=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 Ee({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"}))}e.doc.features.preact_enabled&&t.push({package:"preact",version:"^10"}),!0===e.doc.features.cli.enabled&&(t.push({package:"@fnet/args",version:"^0.1"}),n.push({package:"ajv",version:"^8"}),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"})},ii=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{if(!0!==e.doc.features.app.enabled)return;await t({message:"Creating app folder"});const i={atom:e,packageDependencies:o,ts:Date.now()},a=n.templateDir,s=Oe.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 Ie({pattern:r,dir:Oe.resolve(a,"src/app"),outDir:s,context:i})},ai=async({atom:e,context:t,packageDependencies:n,packageDevDependencies:o,setInProgress:i})=>{await i({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 a=n.find((e=>"react"===e.package)),s=n.find((e=>"react-dom"===e.package));a&&!s?n.push({package:"react-dom",version:a.version}):a&&s&&(s.version=a.version),a&&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:Me.resolve(t.projectDir,"src/app/index.js"),dev:!1!==e.doc.features.app.dev}),!0===e.doc.features.cli.enabled&&r.push({file:Me.resolve(t.projectDir,"src/cli/index.js"),dev:!1!==e.doc.features.cli.dev});for await(const t of r){const i=t.file;if(!Ne.existsSync(i))throw new Error(`App file not found: ${i}`);const a=await Fe({file:i,recursive:!0}),s=!0===e.doc.features.all_parsed_imports?a.all:a.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 i=(await Re({name:e.package,groupBy:{minor:!0}}))[0][0];(!0===t.dev?o:n).push({package:e.package,subpath:e.subpath,version:`^${i}`,type:"npm"})}}const c={atom:e,packageDependencies:n,packageDevDependencies:o},l=t.templateCommonDir,p=Ce.compile(Ne.readFileSync(Me.resolve(l,"package.json.njk"),"utf8"),Ce.configure(l)).render(c),d=t.projectDir,f=Me.resolve(d,"package.json");Ne.writeFileSync(f,p,"utf8");const m=Me.resolve(t.project.projectDir,"fnet");if(Ne.existsSync(m)){const e=Me.resolve(t.projectDir,"fnet");Ne.existsSync(e)||Ne.mkdirSync(e);const n=Ne.readdirSync(m);for(const t of n){const n=Me.resolve(m,t);if(!Ne.lstatSync(n).isFile())continue;const o=Me.resolve(e,t);Ne.copyFileSync(n,o)}}},si=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating cli."});const i={atom:e,packageDependencies:o},a=n.templateDir,s=Ue.resolve(n.projectDir,"src/cli");qe.existsSync(s)||qe.mkdirSync(s,{recursive:!0}),await Le({pattern:["index.js.njk"],dir:Ue.resolve(a,"src/cli"),outDir:s,context:i})},ri=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{await t({message:"Creating rollup file."});const i={atom:e,packageDependencies:o},a=Je.resolve(n.projectDir,"src","default/index.js");if(!Be.existsSync(a))throw new Error(`Entry file not found: ${a}`);const s=(await We({file:a,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=ze.compile(Be.readFileSync(Je.resolve(l,"rollup.config.mjs.njk"),"utf8"),ze.configure(l)).render(i);const d=n.projectDir;let f=Je.resolve(d,"rollup.config.mjs");Be.writeFileSync(f,p,"utf8")},ci=async({atom:e,setInProgress:t,context:n,njEnv:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating yargs."});let i={};if(i=e.doc.input?e.doc.input:{type:"object",properties:{},required:[]},e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled){const t=e.doc.features.cli.fargs,n={type:"string",description:"Config name to load args",hidden:!1},o={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(t,"default")&&(n.default=t.default),i.properties&&(i.properties.fargs=n,i.properties.ftag=o)}const a={options:i,imports:[],atom:e},s=n.templateDir,r=He.compile(Ke.readFileSync(Ge.resolve(s,"src/default/to.args.js.njk"),"utf8"),o).render(a),c=n.projectDir,l=Ge.resolve(c,"src/default/to.args.js");Ke.writeFileSync(l,r,"utf8");const p=new Ve({allErrors:!0,useDefaults:!0,formats:{email:!0},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});Ye(p);const d=p.compile(i),f=Xe(p,d);Ke.writeFileSync(Ge.resolve(c,"src/default/validate_input.js"),f,"utf8")},li=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{await t({message:"Creating .gitignore"});const i={atom:e,packageDependencies:o},a=n.templateCommonDir,s=et.compile(Ze.readFileSync(Qe.resolve(a,".gitignore.njk"),"utf8"),et.configure(a)).render(i),r=n.projectDir,c=Qe.resolve(r,".gitignore");Ze.writeFileSync(c,s,"utf8")},pi=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{await t({message:"Creating tsconfig.json."});const i={atom:e,packageDependencies:o},a=n.templateCommonDir,s=ot.compile(tt.readFileSync(nt.resolve(a,"tsconfig.json.njk"),"utf8"),ot.configure(a)).render(i),r=n.projectDir,c=nt.resolve(r,"tsconfig.json");tt.writeFileSync(c,s,"utf8")},di=async({atom:e,context:t,setInProgress:n,Atom:o})=>{const i="readme.md",a=`Creating ${i}`;if(await n({message:a}),t.project?.readme){const e=t.projectDir,n={content:t.project.readme.doc.content},o=st.resolve(t.project.projectDir,"fnet/how-to.md");if(at.existsSync(o)){const e=at.readFileSync(o,"utf8");n.howto=e}const a=st.resolve(t.project.projectDir,"fnet/input.yaml");if(at.existsSync(a)){const e=await rt({file:a,tags:t.tags});n.input=e.content}const s=t.templateCommonDir,r=it.compile(at.readFileSync(st.resolve(s,`${i}.njk`),"utf8"),it.configure(s)).render(n),c=st.resolve(e,`${i}`);at.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:a,...s}=n.doc,r={content:a},c=t.templateCommonDir,l=it.compile(at.readFileSync(st.resolve(c,`${i}.njk`),"utf8"),it.configure(c)).render(r),p=t.projectDir,d=st.resolve(p,`${i}`);at.writeFileSync(d,l,"utf8")}},fi=async({setInProgress:e,context:t})=>{const n=t.projectDir;await e({message:"Prettifiying source files."});let o=lt.join("src","**","*");if(0!==ct.exec(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:n}).code)throw new Error("Couldnt format files.")},mi=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!==pt.exec("tsc",{cwd:o}).code)throw new Error("Couldnt create .d.ts files.")},ui=async({setInProgress:e,atom:t,context:n})=>{const o=n.projectDir;await e({message:"Installing npm packages."});if(0!==dt.exec(`npm install ${t.doc.features.npm_install_flags}`,{cwd:o}).code)throw new Error("Couldnt install npm packages.")},gi=async({setInProgress:e,context:t})=>{const n=t.projectDir;await e({message:"Building main project."});if(0!==ft.exec("npm run build",{cwd:n}).code)throw new Error("Couldnt build project.")},hi=async e=>{const{atom:t,packageDependencies:n,context:o,deploymentProjectTarget:i,setInProgress:a,deploymentProject:s,yamlTarget:r}=e;if(!0===i.enabled)if("lib"===i.type)await Fn({...e});else if("red"===i.type)await Mn({...e});else if("npm"===i.type)await Nn({...e});else if("gcs"===i.type)await Cn({...e});else if("gitlab"===i.type)await In({...e});else if("fnet-package"===i.type)await zn({...e});else if("fnet-form"===i.type)await Wn({...e});else if("fnet-node"===i.type)await Gn({...e});else if("fnet-flow"===i.type)await Kn({...e});else{let e;if("nextjs"===i.type?e=Bn:"webos"===i.type?e=Ln:"electron"===i.type?e=Un:"docker"===i.type?e=Jn:"ios"===i.type?e=Rn:"macos"===i.type?e=qn:"rust"===i.type&&(e=Hn),!e)return;await e({atom:t,target:i,onProgress:a,projectDir:o.projectDir,dependencies:n,context:o,yamlTarget:r}),s.isDirty=!0}},{Atom:yi}=w,wi=U,vi=j,bi=L,xi=t,ki=k,ji=B,_i=r,Di=J,Si=eo,Pi=oo,Ai=so,Ti=fo,Ei=Yn,$i=mo,Oi=ho,Ii=vo,Ci=ko,Ni=_o,Mi=So,Fi=Ao,Ri=Eo,qi=Io,Ui=Mo,Li=qo,Bi=Lo,Ji=Jo,zi=Wo,Wi=({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 Ki=class{#e;#t;#n;#o;#i;#a;#s;#r;#c;#l;#p;#d;#f;#m;#u;#g;#h;#y;#w;#v;#b;constructor(e){this.#e=new ti,this.#t=e,this.#a=[],this.#s=[],this.#r={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#v={packageDependencies:this.#a,packageDevDependencies:this.#s,setInProgress:this.setInProgress.bind(this),context:this.#t,Atom:yi,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#b={initNode:this.initNode.bind(this),cloneDeep:Yo,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:Wi,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 Qo(),this.#p=this.#t.buildId||ei(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.#y=["all","deploy"].includes(this.#u),this.#w=["all","deploy","build","file","bpmn"].includes(this.#u),this.#f=this.#t.protocol,this.#d="BUILD:"+this.#p,this.#m=(await xi({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 ni(this.#v),await oi(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.#a}),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 yi.get({id:e}),this.#o="string"==typeof this.#n.doc.content?(await _i({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.#a.push({package:"get-value",version:"^3.0"}),this.#a.push({package:"set-value",version:"^4.1"}),this.#n.doc.features.form_enabled?(this.#a.push({package:"react",version:"^18.2"}),this.#a.push({package:"react-dom",version:"^18.2"}),this.#a.push({package:"@flownet/react-app",version:"^0.1"}),this.#a.push({package:"@flownet/react-app-state",version:"^0.1"})):this.#a.push({package:"@fnet/args",version:"^0.1"}),this.#a.push({package:"chalk",version:"^4"})}#x(e){console.log("filePath",e),Ko.statSync(e).isDirectory()?(Ko.readdirSync(e).forEach((t=>{const n=Go.join(e,t);this.#x(n)})),Ko.rmSync(e)):Ko.unlinkSync(e)}#k(e,t){const n=Ko.existsSync(e),o=n&&Ko.statSync(e);n&&o.isDirectory()?(Ko.mkdirSync(t,{recursive:!0}),Ko.readdirSync(e).forEach((n=>{this.#k(Go.join(e,n),Go.join(t,n))}))):Ko.copyFileSync(e,t)}async initWorkflowDir(){const e=this.#t.projectDir,t=this.#t.coreDir,n=["node_modules"];if(Ko.existsSync(e)){const t=Ko.readdirSync(e);for(const o of t)if(!n.includes(o)){const t=Go.join(e,o);Ko.rmSync(t,{recursive:!0})}}Ko.existsSync(e)||Ko.mkdirSync(e,{recursive:!0});const o=Go.join(e,"src");Ko.existsSync(o)||Ko.mkdirSync(o,{recursive:!0});const i=Go.join(o,"core");this.#k(t,i);const a=Go.join(o,"default","blocks");Ko.existsSync(a)||Ko.mkdirSync(a,{recursive:!0})}async initNunjucks(){const e=this.#t.templateDir;this.#i=Xo.configure(e,{watch:!1,dev:!0}),this.#v.njEnv=this.#i}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,...i}=n;e[t]={try:i,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 Pi.hits(t))await Pi.init(t);else if(await Ti.hits(t))await Ti.init(t);else if(await Ei.hits(t))await Ei.init(t);else if(await Si.hits(t))await Si.init(t);else if(await $i.hits(t))await $i.init(t);else if(await Ai.hits(t))await Ai.init(t);else if(await Oi.hits(t))await Oi.init(t);else if(await Ii.hits(t))await Ii.init(t);else if(await Ci.hits(t))await Ci.init(t);else if(await Ni.hits(t))await Ni.init(t);else if(await Mi.hits(t))await Mi.init(t);else if(await Fi.hits(t))await Fi.init(t);else if(await Ji.hits(t))await Ji.init(t);else if(await zi.hits(t))await zi.init(t);else if(await qi.hits(t))await qi.init(t);else if(await Ui.hits(t))await Ui.init(t);else if(await Bi.hits(t))await Bi.init(t);else if(await Ri.hits(t))await Ri.init(t);else{if(!await Li.hits(t))throw new Error("Undefined step type.");await Li.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=Go.join(e.parent.indexKey,e.name);e.indexKey=n,t[n]=e;const o=[];let i=e;for(;i?.parent;)o.push(i.index),i=i.parent;o.reverse(),e.codeKey=`B_${o.join("_")}_${e.type}`,e.pathKey=`${o.join(".")}`,e.typeId=ei(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",definition:e.definition},i=t.find((e=>e.name===o.name&&e.type===o.type));i||t.push(o),e.target=i||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"},i=t.find((e=>e.name===o.name&&e.type===o.type));i||t.push(o),e.target=i||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],i=await this.findAtomLibrary({url:o.name,libRef:o});o.atom=i;const a=i.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));a?.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,libRef:t}){const n=wi({url:e});if(!n)throw new Error(`Invalid package name: ${e}`);if(n.protocol||(n.protocol=this.#f),"ac:"===n.protocol){const t=n.pathname.split("/");if(1===t.length)return await yi.first({where:{name:e,parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await yi.first({where:{name:t[0],parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"folder"}});return await yi.first({where:{name:t[1],parent_id:e.id,type:"workflow.lib"}})}}else{if("local:"===n.protocol){const e=Go.resolve(this.#t.projectSrcDir,`${n.pathname}.js`),t=[],o=await ki({file:e,recursive:!0}),i=!0===this.#n.doc.features.all_parsed_imports?o.all:o.required;for await(const e of i){if("npm"!==e.type)continue;if(t.find((t=>t.package===e.package)))continue;const n=(await vi({name:e.package,groupBy:{minor:!0}}))[0][0];t.push({package:e.package,subpath:e.subpath,version:`^${n}`,type:"npm"})}return{name:n.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:t},protocol:n.protocol}}if("npm:"===n.protocol){const e=(await vi({name:n.pathname,groupBy:{minor:!0}}))[0][0];return{name:n.pathname,doc:{type:"workflow.lib",subtype:"flow"===t?.definition?.subtype?"workflow":null,"content-type":"javascript",language:"js",dependencies:[{package:n.pathname,version:`^${e}`,type:"npm"}]},protocol:n.protocol}}}}async resolveNodeTree({root:e}){for await(const t of e.childs)await this.resolveTypeWorkflow({node:t})}async resolveTypeWorkflow({node:e}){e.context.transform=Yo(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=Go.resolve(this.#t.projectSrcDir,`${n.fileName||n.name}.js`),t=Go.relative(`${this.#t.projectDir}/src/default/blocks`,e);if(!Ko.existsSync(e)){Ko.mkdirSync(Go.dirname(e),{recursive:!0});let t="export default async (args)=>{\n";t+="}",Ko.writeFileSync(e,t,"utf8")}n.relativePath=t.split(Go.sep).join("/"),this.#n.typesDir=`./types/${Go.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;Ko.writeFileSync(Go.normalize(e),t.content,"utf8")}}}async createEngine({root:e}){await this.setInProgress({message:"Creating engine file."});const t=this.#t.templateDir,n=Xo.compile(Ko.readFileSync(Go.resolve(t,"src/default/engine.js.njk"),"utf8"),this.#i).render({...e,ui:{package:"@flownet/react-app"}}),o=this.#t.projectDir,i=Go.resolve(o,"src/default/index.js");Ko.writeFileSync(i,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=Xo.compile(Ko.readFileSync(Go.resolve(t,"src/default/workflow.js.njk"),"utf8"),this.#i).render(e),o=this.#t.projectDir,i=Go.resolve(o,`src/default/${e.codeKey}.js`);Ko.writeFileSync(i,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=Xo.compile(Ko.readFileSync(Go.resolve(n,`src/default/blocks/${e.type}.js.njk`),"utf8"),this.#i),this.#r[e.type]=t,t}createStepFile({node:e}){const t=this.#t.projectDir,n=`${e.codeKey}.js`,o=Go.resolve(t,`src/default/blocks/${n}`);Ko.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(Zo(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 ji({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,i={content:Ho.stringify(o)},a=this.#t.templateDir,s=Xo.compile(Ko.readFileSync(Go.resolve(a,`${e}.njk`),"utf8"),this.#i).render(i),r=this.#t.projectDir,c=Go.resolve(r,`${e}`);Ko.writeFileSync(c,s,"utf8")}async createProjectMainYaml(){const e="flow.main.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const n={content:Ho.stringify(this.#o)},o=this.#t.templateDir,i=Xo.compile(Ko.readFileSync(Go.resolve(o,`${e}.njk`),"utf8"),this.#i).render(n),a=this.#t.projectDir,s=Go.resolve(a,`${e}`);Ko.writeFileSync(s,i,"utf8")}async runPrettifier(){const e=this.#t.projectDir,t=Vo.exec("prettier --write .",{cwd:Go.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 yi.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 yi.update(n,{id:n.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:n}=t;if(t.doc.targets&&Array.isArray(t.doc.targets))throw new Error("Deployment project targets are deprecated. Please update targets in the yaml file.");const o=Object.keys(t.doc||{}),i=n||{};for(let e=0;e<o.length;e++){const n=t.doc[o[e]];n.name=o[e];const a=i.get(o[e]);await hi({...this.#v,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:a})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#t.id)return;let o=await yi.first({name:t.params.name,parent_id:this.#m.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:n.version}),await yi.update(o,{id:o.id})):o=await yi.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(Di.blue(e)),await this._cache_set(this.#d,{status:"IN_PROGRESS",message:e})}async build(){if(this.#w&&!this.#g)return await this.createNetwork();try{const e=this.#w?await bi({root:this.#l}):void 0;if(this.#g){if(await this.initWorkflowDir(),await this.initNunjucks(),this.#w){const t=this.#t.project?.projectDir||this.#t.projectDir;Ko.writeFileSync(Go.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 di(this.#v),await pi(this.#v),await li(this.#v),await ci(this.#v),await si(this.#v),await ii(this.#v),await ri(this.#v),await ai(this.#v),await fi(this.#v),await mi(this.#v),this.#h&&(await ui(this.#v),await gi(this.#v),this.#y&&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 bi({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 Gi=p,Hi=d;var Vi=function({baseDir:e=__dirname}){let t=e;for(;t!==Hi.parse(t).root;){const e=Hi.join(t,"node_modules");if(Gi.existsSync(e))return e;t=Hi.dirname(t)}return null};const Xi=process.cwd(),{spawn:Yi}=e;t({name:["redis"],dir:Xi,optional:!0});const Zi=n,Qi=o,ea=i,ta=a,na=s,oa=r,ia=t,aa=c,sa=l,ra=Ki,ca=Vi({baseDir:__dirname}),la="win32"===process.platform?";":":";process.env.PATH=`${Zi.join(ca,"/.bin")}${la}${process.env.PATH}`;let pa=Qi(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=Zi.resolve(ca,"./@fnet/cli-project-flow/dist/template/project"),n=Zi.resolve(Xi,e.name);ea.existsSync(n)||ea.mkdirSync(n),await sa({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let o=na.exec("fnet build",{cwd:n});if(0!==o.code)throw new Error("Failed to build project.");if(na.which("git")&&(o=na.exec("git init --initial-branch=main",{cwd:n}),0!==o.code))throw new Error("Failed to initialize git.");if(na.which("code")&&e.vscode&&(o=na.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=Zi.resolve(ca,"@fnet/cli-project-flow/dist/template/project"),n=process.cwd();if(e.name=Zi.basename(n),e.update){if(await sa({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0}),0!==na.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 fa(e),n=new ra(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 fa({...e,mode:"all"}),n=new ra(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 fa({...e,mode:"file"}),n=new ra(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 da(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 fa(e),{projectDir:i}=t,a=process.argv.slice(3);Yi(n,[...o,...a],{cwd:i,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function fa(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:Zi.resolve(Xi,`./.output/${e.id}`),templateDir:Zi.resolve(ca,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:Zi.resolve(ca,"./@fnet/cli-project-common/dist/template/default"),coreDir:Zi.resolve(ca,"./@fnet/cli-project-flow/dist/template/core"),tags:e.ftag}}{const t=await async function({tags:e}){const t=Zi.resolve(Xi,"flow.yaml");if(!ea.existsSync(t))throw new Error("flow.yaml file not found in current directory.");const{raw:n,parsed:o}=await oa({file:t,tags:e}),i=Zi.dirname(t),a=o.main||"flow.main.yaml";let s=Zi.resolve(i,a);if(!ea.existsSync(s)&&(s=Zi.resolve(i,a+".yaml"),!ea.existsSync(s)))throw new Error(`${a} file not found in ${s}.`);const{raw:r,parsed:c}=await oa({file:s,tags:e}),l={workflowAtom:{doc:{...o,"content-type":"yaml",content:r}},projectDir:i,projectFilePath:t,projectFileContent:n,projectFileParsed:o,projectMainFilePath:s,projectMainFileContent:r,projectMainFileParsed:c};let p=Zi.resolve(i,"fnet/targets.yaml");if(!ea.existsSync(p)&&(p=Zi.resolve(i,"flow.devops.yaml"),ea.existsSync(p))){const e=Zi.resolve(i,"fnet");ea.existsSync(e)||ea.mkdirSync(e),ea.copyFileSync(p,Zi.resolve(i,"fnet/targets.yaml")),ea.unlinkSync(p)}if(ea.existsSync(p)){const{raw:t,parsed:n}=await oa({file:p,tags:e}),o=ta.parseDocument(t);l.devops={filePath:p,fileContent:t,yamlDocument:o,doc:{...n},type:"workflow.deploy",save:async()=>{ea.writeFileSync(l.devops.filePath,o.toString())}}}const d=Zi.resolve(i,"readme.md");if(ea.existsSync(d)){const e=ea.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:Zi.resolve(ca,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:Zi.resolve(ca,"./@fnet/cli-project-common/dist/template/default"),coreDir:Zi.resolve(ca,"./@fnet/cli-project-flow/dist/template/core"),projectDir:Zi.resolve(t.projectDir,"./.workspace"),projectSrcDir:Zi.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}pa=pa.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 fa(e),{project:n}=t,{projectDir:o,projectFileParsed:i}=n,a=i.input;if(!a)throw new Error("Config schema not found in project file.");const s=await aa({schema:a,format:"yaml"}),r=Zi.resolve(o,".fnet");ea.existsSync(r)||ea.mkdirSync(r);const c=Zi.resolve(r,`${e.name}.fnet`);ea.writeFileSync(c,s)}catch(e){console.error(e.message),process.exit(1)}})),pa=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 fa(e),{project:n}=t,{projectDir:o,projectFileParsed:i}=n,a=i.input;if(!a)throw new Error("Config schema not found in project file.");const s=Zi.resolve(o,".fnet"),r=Zi.resolve(s,`${e.name}.fnet`),c=await aa({schema:a,format:"yaml",ref:r});ea.existsSync(s)||ea.mkdirSync(s),ea.writeFileSync(r,c)}catch(e){console.error(e.message),process.exit(1)}}))}(pa),pa=da(pa,{bin:"npm"}),pa=da(pa,{bin:"node"}),pa=da(pa,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),pa=da(pa,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),pa=da(pa,{name:"app",bin:"npm",preArgs:["run","app","--"]}),pa=da(pa,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),pa=da(pa,{bin:"npx"}),pa=da(pa,{bin:"cdk"}),pa=da(pa,{bin:"aws"}),pa=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 fa(e),{projectDir:o}=t,i=e.config,a=await ia({name:i,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),s=a?.data?.env||void 0,r=e.command,c=process.argv.slice(5);Yi(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)}}))}(pa,{name:"with"}),pa.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"),i=require("fs"),a=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"),y=require("nanoid"),w=require("@flownet/lib-atom-api-js"),v=require("axios"),b=require("qs"),x=require("lodash.merge"),k=require("@flownet/lib-parse-imports-js"),j=require("@flownet/lib-list-npm-versions"),_=require("ajv/dist/2020"),D=require("ajv/dist/standalone"),S=require("ajv-formats"),P=require("@fnet/shell"),A=require("semver"),T=require("@fnet/up-list-files"),E=require("node:os"),$=require("@node-red/util"),O=require("@flownet/lib-to-ios-app"),I=require("@flownet/lib-to-macos-app"),C=require("@flownet/lib-to-electron"),N=require("@flownet/lib-to-webos"),M=require("@flownet/lib-to-nextjs"),F=require("@flownet/lib-to-docker"),R=require("form-data"),q=require("@fnet/to-rust"),U=require("@flownet/lib-parse-node-url"),L=require("@flownet/lib-bpmn-from-flow"),B=require("@fnet/expression"),J=require("chalk"),z=require("lodash.pick"),W=require("lodash.omit");const K=g,G=h;const{Api:H}=w,V=v.default,X=b;const Y=x;var Z=({feature:e,features:t,packageDevDependencies:n})=>{const{name:o,packages:i,options:a,extraCheck:s,explicit:r}=e,c=`${o}_enabled`,l=t.rollup_output||{},p=Object.keys(l);let d=a||{};const f=t[o]?.options;f&&(d=Y(d,f));const m=!t[o]||!1===t[o]?.enabled;p.forEach((e=>{const n=t.rollup_output[e];if(n){if(Reflect.has(n,o)){if(m||!n[o]||!1===n[o]?.enabled)return void delete n[o];!0===n[o]&&(n[o]={enabled:!0,options:d})}else{if(m||r||!1===t[c])return;n[o]={enabled:!0}}n[o]=n[o]||{},n[o].options={...d,...n[o].options}}}));let u=p.some((e=>!0===t.rollup_output[e][o]?.enabled));s&&(u=s()&&u),t[c]=u,u&&i.forEach((e=>n.push({package:e[0],version:e[1]})))};const Q=Z;const ee=Z;const te=Z;const ne=Z;const oe=Z;const ie=Z;const ae=Z;const se=Z;const re=Z;const ce=Z;const le=Z;const pe=Z;const de=Z;const fe=x,me=p,ue=d,ge=k,he=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;Q({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}},explicit:!0},features:o,packageDevDependencies:n})},ye=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ee({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:o,packageDevDependencies:n})},we=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;te({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.3"]]},features:o,packageDevDependencies:n})},ve=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ne({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:o,packageDevDependencies:n})},be=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;oe({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:o,packageDevDependencies:n})},xe=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ie({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:o,packageDevDependencies:n})},ke=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ae({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:o,packageDevDependencies:n})},je=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;se({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:o,packageDevDependencies:n})},_e=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;re({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:o,packageDevDependencies:n})},De=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;ce({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:o,packageDevDependencies:n})},Se=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features;le({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:o,packageDevDependencies:n})},Pe=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features,i={};!0===o.app?.enabled&&(i.targets=i.targets||[],i.targets.push({src:"./src/app/index.html",dest:o.app.dir}),Reflect.has(o.app,"copy")||Reflect.has(o,"copy")||(o.copy=!0)),pe({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:i},features:o,packageDevDependencies:n})},Ae=e=>{const{atom:t,packageDevDependencies:n}=e,o=t.doc.features,i=o.css&&!1!==o.css.enabled;let a=[];if(i){a.push(["rollup-plugin-postcss","^4"]),a.push(["sass","^1.66"]);(o.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":a.push(["postcss-import","^15"]);break;case"postcss-url":a.push(["postcss-url","^10"]);break;case"postcss-preset-env":a.push(["postcss-preset-env","^9"]);break;case"autoprefixer":a.push(["autoprefixer","^10"]);break;case"cssnano":a.push(["cssnano","^6"])}}))}de({feature:{name:"css",packages:a},features:o,packageDevDependencies:n})};function Te({dir:e,name:t="index"}){let n=ue.resolve(e,`./${t}.tsx`);if(me.existsSync(n)||(n=ue.resolve(e,`./${t}.ts`)),me.existsSync(n)||(n=ue.resolve(e,`./${t}.jsx`)),me.existsSync(n)||(n=ue.resolve(e,`./${t}.js`)),!me.existsSync(n))return{};const o=n,i=ue.extname(n);return{file:o,ext:i,ts:".ts"===i||".tsx"===i,name:t}}const Ee=j;const $e=p,Oe=d,Ie=l;const Ce=f,Ne=p,Me=d,Fe=k,Re=j;const qe=p,Ue=d,Le=l;const Be=p,Je=d,ze=f,We=k;const Ke=p,Ge=d,He=f,Ve=_,Xe=D,Ye=S;const Ze=p,Qe=d,et=f;const tt=p,nt=d,ot=f;const it=f,at=p,st=d,rt=r;const ct=s,lt=n;const pt=s;const dt=s;const ft=s;const mt=P,ut=t;const gt=p,ht=d,yt=A,wt=P,vt=t;const bt=p,xt=d,kt=A,jt=s,_t=t,Dt=T,St=c,Pt=a;const At=p,Tt=d,Et=E,$t=f,Ot=$,It=t;const Ct=i,Nt=n,Mt=t;const Ft=t,Rt=O,qt=m,Ut=A;const Lt=t,Bt=I,Jt=m,zt=A;const Wt=t,Kt=C,Gt=m,Ht=A;const Vt=t,Xt=N,Yt=m,Zt=A;const Qt=t,en=M,tn=m,nn=A;const on=t,an=F,sn=m,rn=A;const cn=p,ln=d,pn=A,dn=P,fn=t,mn=v.default;const un=A,gn=t,hn=v.default;const yn=A,wn=t,vn=v.default,bn=i,xn=P,kn=R;const jn=A,_n=t,Dn=v.default,Sn=i,Pn=P,An=R;const Tn=t,En=q,$n=m,On=A;const In=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,buildId:i})=>{await e({message:"Deploying it as gitlab project."});const a=t.projectDir;let s="fnet-to-gitlab";const r=o.params.config||"gitlab",c=await ut({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='${a}'`,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 mt({cmd:s}),n.isDirty=!0)},Cn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,registerToPackageManager:i,yamlTarget:a})=>{await e({message:"Deploying it as gcs package."});const s=t.projectDir,r=ht.resolve(s,"package.json"),c=gt.readFileSync(r),l=JSON.parse(c);l.name=o.params.name,l.version=yt.inc(o.version,"patch"),delete l.scripts,delete l.devDependencies,gt.writeFileSync(r,JSON.stringify(l,null,"\t"));const{file:p,data:d}=await vt({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='${ht.resolve(ht.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 wt({cmd:f}),gt.writeFileSync(r,c),!0!==o.dryRun&&(n.isDirty=!0,o.version=l.version,a.set("version",l.version),await i({target:o,packageJSON:l}))},Nn=async({atom:e,setInProgress:t,context:n,deploymentProject:o,deploymentProjectTarget:i,yamlTarget:a})=>{await t({message:"Deploying it as npm package."});const s=n.projectDir,r=xt.resolve(s,"package.json"),c=bt.readFileSync(r),l=JSON.parse(c);l.name=i.params.name,l.version=kt.inc(i.version,"patch");const p=i.params.bin?.name||i.params.bin;!1!==i.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 ."},bt.writeFileSync(r,JSON.stringify(l,null,"\t"));const d=i.config||"npm";let f=(await _t({name:d,dir:n.projectDir,tags:n.tags,optional:!0}))?.data;if(!f){const e=Dt({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===e.length)throw new Error("Couldnt find schema to create npm config");const t=await St({schema:e[0],tags:n.tags}),o=n.project.projectDir,i=xt.resolve(o,".fnet");bt.existsSync(i)||bt.mkdirSync(i),bt.writeFileSync(xt.resolve(i,`${d}.fnet`),Pt.stringify(t)),f=t}if(bt.writeFileSync(xt.resolve(s,".npmrc"),`//registry.npmjs.org/:_authToken=${f.env.NPM_TOKEN}`),!0!==i.dryRun){if(0!==jt.exec("npm publish --access public",{cwd:s}).code)throw new Error("Couldnt publish to npm");bt.writeFileSync(r,c),o.isDirty=!0,i.version=l.version,a.set("version",l.version)}},Mn=async({atom:e,setInProgress:t,context:n,deploymentProject:o,deploymentProjectTarget:i,buildId:a,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"===i.deploy.template)d={atom:e,packageDependencies:s,red:{tab:{id:i.deploy.id||Ot.util.generateId(),label:`${p}/${e.id?e.id:Et.hostname()}/${e.name}/${i.deploy.name||i.deploy.template}`},function:{id:Ot.util.generateId(),name:e.doc.name,initialize:{content:At.readFileSync(Tt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},inject:{id:Ot.util.generateId(),...i.params?.inject,payload:"json"===i.params?.inject?.payloadType?`'${JSON.stringify(i.params?.inject?.payload)}'`:i.params?.inject?.payload},debug:{id:Ot.util.generateId()}}};else if("cronjob"===i.deploy.template){let t=i.params?.schedules?cloneDeep(i.params?.schedules):void 0;t?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),d={atom:e,packageDependencies:s,red:{tab:{id:i.deploy.id||Ot.util.generateId(),label:`${p}/${e.id?e.id:Et.hostname()}/${i.deploy.name||i.deploy.template}`},function:{id:Ot.util.generateId(),name:e.doc.name,initialize:{content:At.readFileSync(Tt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},cronjob:{id:Ot.util.generateId(),schedules:t},debug:{id:Ot.util.generateId()}}}}else{if("http"!==i.deploy.template)return;d={atom:e,packageDependencies:s,red:{tab:{id:i.deploy.id||Ot.util.generateId(),label:`${p}/${e.id?e.id:Et.hostname()}/${i.deploy.name||i.deploy.template}`},function:{id:Ot.util.generateId(),name:e.doc.name,initialize:{content:At.readFileSync(Tt.resolve(c,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:e.doc.bundleName}},httpin:{id:Ot.util.generateId(),method:i.params.method||"get",url:i.params.url},httpout:{id:Ot.util.generateId()},debug:{id:Ot.util.generateId()}}}}let f=$t.compile(At.readFileSync(Tt.resolve(l,`deploy/node-red/${i.deploy.template}.yaml.njk`),"utf8"),r).render(d);if(At.writeFileSync(Tt.resolve(c,"node-red.yaml"),f),f=yaml.load(f),!0===i.dryRun)return;o.isDirty=!0;const m=(await It({name:n.redConfig||"red",dir:n.projectDir,tags:n.tags}))?.data,u=i.deploy.url||m.env.RED_URL,g={};if(!1!==i.deploy.auth&&(g.Authorization="Bearer "+atomAccessToken),i.deploy.id)!0===i.actions?.delete?(await axios({method:"DELETE",url:`${u}/flow/${i.deploy.id}`,headers:g}),delete i.actions.delete,delete i.deploy.id,i.enabled=!1):await axios({method:"PUT",url:`${u}/flow/${i.deploy.id}`,data:f,headers:g});else{const e=await axios({method:"POST",url:`${u}/flow`,data:f,headers:g});i.deploy.id=e.data.id}},Fn=async({atom:e,Atom:t,setInProgress:n,context:o,packageDependencies:i,deploymentProject:a,deploymentProjectTarget:s})=>{await n({message:"Deploying it as workflow lib."});const r=(await Mt({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(a.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:Ct.readFileSync(Nt.resolve(f,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:Ct.readFileSync(Nt.resolve(f,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:Ct.readFileSync(Nt.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],c.doc.name=p,c.doc.dependencies=i,"workflow.lib"===e.type?c.doc.subtype="library":"workflow"===e.type&&(c.doc.subtype="workflow"),c=await t.update(c,{id:c.id})},Rn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as ios-app package."});const r=t?.config?await Ft({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=Ut.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=qt(t.params);l.dependencies=qt(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Rt(p)}},qn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as macos-app package."});const r=t?.config?await Lt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=zt.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=Jt(t.params);l.dependencies=Jt(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Bt(p)}},Un=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as electron package."});const r=t?.config?await Wt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=Ht.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=Gt(t.params);l.dependencies=Gt(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Kt(p)}},Ln=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as webos package."});const r=t?.config?await Vt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=Zt.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=Yt(t.params);l.dependencies=Yt(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await Xt(p)}},Bn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as nextjs package."});const r=t?.config?await Qt({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=nn.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=tn(t.params);l.dependencies=tn(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await en(p)}},Jn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as docker package."});const r=t?.config?await on({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=rn.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=sn(t.params);l.dependencies=sn(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await an(p)}},zn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:i})=>{await e({message:"Deploying it as fnet package."});const a=t.projectDir,s=ln.resolve(a,"package.json"),r=cn.readFileSync(s),c=JSON.parse(r);c.name=o.params.name,c.version=pn.inc(o.version,"patch"),delete c.scripts,delete c.devDependencies,cn.writeFileSync(s,JSON.stringify(c,null,"\t"));const{file:l,data:p}=await fn({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 mn({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='${ln.resolve(ln.dirname(l),p.env.GCS_UPLOADER_KEY_FILE)}'`,h+=` --dir='${a}'`,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 dn({cmd:h}),cn.writeFileSync(s,r),!0===o.dryRun)return;n.isDirty=!0,o.version=c.version,i.set("version",c.version);const y=`${p.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(u=await mn({method:"POST",url:y,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.")},Wn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:i})=>{await e({message:"Deploying it as fnet form."});const{file:a,data:s}=await gn({name:o.config||"fnet-form",dir:t.projectDir,tags:t.tags});if(!s.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${a}`);if(!s.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${a}`);if(!s.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${a}`);const r=`${s.env.ATOM_API_URL}/v1/auth/token`,c=s.env.ATOM_API_USERNAME,l=s.env.ATOM_API_PASSWORD;let p=await hn({method:"POST",url:r,data:{username:c,password:l},headers:{"Content-Type":"application/json"}});const d=p.data?.access_token;if(!d)throw new Error(`Invalid access_token from ${r}`);n.isDirty=!0;const f=un.inc(o.version,"patch");o.params.version=f,o.version=f,i.set("version",f);const m=`${s.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(p=await hn({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 ${d}`}}),p.data?.error)throw new Error("Error publishing fnet form.")},Kn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:i})=>{await e({message:"Deploying it as fnet flow."});const{file:a,data:s}=await wn({name:o.config||"fnet-flow",dir:t.project.projectDir,tags:t.tags});if(!s.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${a}`);if(!s.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${a}`);if(!s.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${a}`);const r=`${s.env.ATOM_API_URL}/v1/auth/token`,c=s.env.ATOM_API_USERNAME,l=s.env.ATOM_API_PASSWORD;let p=await vn({method:"POST",url:r,data:{username:c,password:l},headers:{"Content-Type":"application/json"}});const d=p.data?.access_token;if(!d)throw new Error(`Invalid access_token from ${r}`);n.isDirty=!0;const f=yn.inc(o.version,"patch");o.params.version=f,o.version=f,i.set("version",f);const m=`${s.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(p=await vn({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 ${d}`}}),p.data?.error)throw new Error("Error publishing fnet flow.");const u=p.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const h=await xn({cmd:g});if(0!==h.code)throw new Error(h.stderr);const y=JSON.parse(h.stdout).path;let w=new kn;w.append("file",bn.createReadStream(y));const v=await vn.request({method:"POST",maxBodyLength:1/0,url:`${s.env.ATOM_API_URL}/v1/service/upload/single/${u}`,headers:{...w.getHeaders(),Authorization:`Bearer ${d}`},data:w});if(v.data?.error)throw new Error("Error uploading fnet flow.")},Gn=async({setInProgress:e,context:t,deploymentProject:n,deploymentProjectTarget:o,yamlTarget:i})=>{await e({message:"Deploying it as fnet node."});const{file:a,data:s}=await _n({name:o.config||"fnet-node",dir:t.project.projectDir,tags:t.tags});if(!s.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${a}`);if(!s.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${a}`);if(!s.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${a}`);const r=`${s.env.ATOM_API_URL}/v1/auth/token`,c=s.env.ATOM_API_USERNAME,l=s.env.ATOM_API_PASSWORD;let p=await Dn({method:"POST",url:r,data:{username:c,password:l},headers:{"Content-Type":"application/json"}});const d=p.data?.access_token;if(!d)throw new Error(`Invalid access_token from ${r}`);n.isDirty=!0;const f=jn.inc(o.version,"patch");o.params.version=f,o.version=f,i.set("version",f);const m=`${s.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(p=await Dn({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 ${d}`}}),p.data?.error)throw new Error("Error publishing fnet node.");const u=p.data?.upload.id;let g="fnet-dir-zipper";g+=` --sourceDir='${t.project.projectDir}'`,g+=" -p=**/*",g+=" -g",g+=" --stdout_format=json";const h=await Pn({cmd:g});if(0!==h.code)throw new Error(h.stderr);const y=JSON.parse(h.stdout).path;let w=new An;w.append("file",Sn.createReadStream(y));const v=await Dn.request({method:"POST",maxBodyLength:1/0,url:`${s.env.ATOM_API_URL}/v1/service/upload/single/${u}`,headers:{...w.getHeaders(),Authorization:`Bearer ${d}`},data:w});if(v.data?.error)throw new Error("Error uploading fnet node.")},Hn=async({atom:e,target:t,onProgress:n,projectDir:o,dependencies:i,context:a,yamlTarget:s})=>{n&&await n({message:"Deploying it as Rust package."});const r=t?.config?await Tn({name:t.config,dir:o,optional:!0,transferEnv:!1,tags:a.tags}):void 0,c=On.inc(t.version||"0.1.0","patch");t.params.version=c,t.version=c,s.set("version",c);const l=$n(t.params);l.dependencies=$n(i);const p={atom:e,params:l,config:r?.config,src:o,dest:o};return{deployer:await En(p)}};const Vn=m;async function Xn({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||Vn(e.definition);for(const t of e.childs)t.context.transform=t.context.transform||Vn(t.definition),t.definition.hasOwnProperty("condition")&&(t.context.transform.condition=await o(t.definition.condition));await t({node:e}),n({node:e})}var Yn={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],i=`${n}`;o.hasOwnProperty("default")&&(i="default",o=o.default);const a={name:o.condition||i,childs:[],parent:e,definition:o,index:e.childs.length,context:{}};e.childs.push(a),await t({node:a})}e.resolve=Xn},resolve:Xn};const Zn=B,Qn=Yn;var eo={hits:async function({node:e}){const t=Object.keys(e.definition);return 1===(await Promise.all(t.map((e=>Zn({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=>Zn({expression:e})))),i=[],a=o.find((e=>"if"===e?.processor)),s=t.definition[a.expression];i.push({name:`${t.name}_if`,definition:s,processor:a}),delete t.definition[a.expression];const r=o.filter((e=>"elseif"===e?.processor));let c=0;for(const e of r){const n=t.definition[e.expression];i.push({name:`${t.name}_elseif_${c++}`,definition:n,processor:e}),delete t.definition[e.expression]}t.definition.switch=[];for(const e of i)t.definition.switch.push({condition:e.processor.statement,...e.definition});await Qn.init(e)}};const to=m;async function no({node:e,resolveTypeCommon:t,resolveNextBlock:n}){if(e.context.transform=e.context.transform||to(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||to(t.definition),t.context.transform.hasOwnProperty("as")||(t.context.transform.as="error")}await t({node:e}),n({node:e})}var oo={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=no},resolve:no};const io=m;async function ao({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=io(e.definition);const i=e.context.transform;for(let e=0;e<i.assign?.length;e++){let t=i.assign[e],n=Object.keys(t)[0],a=t[n],s={key:await o(n),value:await o(a)};i.assign[e]=s}await t({node:e}),n({node:e})}var so={hits:async function({node:e}){return e.definition.hasOwnProperty("assign")},init:async function({node:e,initNode:t}){e.type="assign",e.resolve=ao},resolve:ao};const ro=m,co=z,lo=W;async function po({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||ro(e.definition);e.context.transform.for.in=await o(e.definition.for.in),await t({node:e}),n({node:e})}var fo={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]=[co(e.definition.for,t),lo(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],i=Object.keys(o)[0],a={name:i,childs:[],parent:e,definition:o[i],index:e.childs.length,context:{}};e.childs.push(a),await t({node:a})}e.resolve=po},resolve:po};var mo={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:i}){}};const uo=m;async function go({node:e,resolveTypeCommon:t,transformExpression:n}){e.context.transform=e.context.transform||uo(e.definition);const o=e.context.transform;o.raise=await n(o.raise),await t({node:e})}var ho={hits:async function({node:e}){return e.definition.hasOwnProperty("raise")},init:async function({node:e,initNode:t}){e.type="raise",e.resolve=go},resolve:go};const yo=m;async function wo({node:e,resolveTypeCommon:t,transformExpression:n}){e.context.transform=e.context.transform||yo(e.definition);const o=e.context.transform;o.return=await n(o.return),await t({node:e})}var vo={hits:async function({node:e}){return e.definition.hasOwnProperty("return")},init:async function({node:e,initNode:t}){e.type="return",e.resolve=wo},resolve:wo};const bo=m;async function xo({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||bo(e.definition);const i=e.context.transform;i.args&&(i.args=await o(i.args)),i.result&&(i.result=await o(i.result));const a=e.workflow.parent;e.context.lib=a.context.libs.find((e=>e.name===i.call)),await t({node:e}),n({node:e})}var ko={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],i=Object.keys(o)[0],a={name:i,childs:[],parent:e,definition:o[i],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(a),await t({node:a})}e.resolve=xo},resolve:xo};const jo=ko;var _o={hits:async function({node:e}){return e.definition.hasOwnProperty("shell")},init:async function(e){const{node:t}=e,n="shell",o=t.definition,i=typeof o[n];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/shell",o.args="string"===i?{...o.args,cmd:o[n]}:o[n],delete o[n],await jo.init(e)}};const Do=ko;var So={hits:async function({node:e}){return e.definition.hasOwnProperty("config")},init:async function(e){const{node:t}=e,n="config",o=t.definition,i=typeof o[n];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/config",o.args="string"===i?{...o.args,name:o[n]}:o[n],delete o[n],await Do.init(e)}};const Po=ko;var Ao={hits:async function({node:e}){return e.definition.hasOwnProperty("yaml")},init:async function(e){const{node:t}=e,n="yaml",o=t.definition,i=typeof o[n];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/yaml",o.args="string"===i?{...o.args,file:o[n]}:o[n],delete o[n],await Po.init(e)}};async function To({node:e}){e.context.next=e.childs[0]}var Eo={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],i={name:n,childs:[],parent:e,definition:o[n],index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=To},resolve:To};const $o=m;async function Oo({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||$o(e.definition);const i=e.context.transform;i.props&&(i.props=await o(i.props));const a=e.workflow.parent;e.context.lib=a.context.libs.find((e=>e.name===i.form)),await t({node:e}),n({node:e})}var Io={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],i=Object.keys(o)[0],a={name:i,childs:[],parent:e,definition:o[i],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(a),await t({node:a})}e.resolve=Oo},resolve:Oo};const Co=m;async function No({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o,transformValue:i}){e.context.transform=e.context.transform||Co(e.definition),await t({node:e})}var Mo={hits:async function({node:e}){return e.definition.hasOwnProperty("operation")},init:async function({node:e,initNode:t}){e.type="operation",e.resolve=No},resolve:No};const Fo=m;async function Ro({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o}){e.context.transform=e.context.transform||Fo(e.definition);const i=e.context.transform;i.next=await o(i.next),await t({node:e}),n({node:e})}var qo={hits:async function({node:e}){return e.definition.hasOwnProperty("next")},init:async function({node:e,initNode:t}){e.type="jump",e.resolve=Ro},resolve:Ro};const Uo=ko;var Lo={hits:async function({node:e}){return e.definition.hasOwnProperty("prompt")},init:async function(e){const{node:t}=e,n="prompt",o=t.definition,i=typeof o[n];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${n} usage`);o.call="npm:@fnet/prompt",o.args="string"===i?{...o.args,message:o[n]}:o[n],delete o[n],await Uo.init(e)}};const Bo=ko;var Jo={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,i=typeof o[n];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${n} usage`);o.call="npm:@flownet/lib-load-browser-script-url",o.args="string"===i?{...o.args,src:o[n]}:o[n],delete o[n],await Bo.init(e)}};const zo=ko;var Wo={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,i=typeof o[n];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${n} usage`);o.call="npm:@flownet/lib-load-browser-link-url",o.args="string"===i?{...o.args,src:o[n]}:o[n],delete o[n],await zo.init(e)}};const Ko=p,Go=d,Ho=a,Vo=s,Xo=f,Yo=m,Zo=u,Qo=async()=>{if(!await G({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=K.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e},{nanoid:ei}=y,ti=class{init({config:e,accessToken:t}){return new Promise(((n,o)=>{if(H.set_api_url(e.data.url),t)return H.set_req_token(t),void n(t);V({method:"POST",url:`${e.data.issuer}/protocol/openid-connect/token`,data:X.stringify(e.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((e=>{H.set_req_token(e.data.access_token),n(e.data.access_token)})).catch((e=>{H.set_req_token(),o(e)}))}))}},ni=async e=>{const{atom:t,context:n,packageDevDependencies:o}=e;t.doc.features=t.doc.features||{};const i=t.doc.features;i.project=i.project||{},i.project.format=i.project.format||i.project_format||"esm",i.project_format=i.project.format,i.dts_enabled=!0===i.dts||void 0!==i.dts&&!1!==i.dts,i.hasOwnProperty("all_parsed_imports")||(i.all_parsed_imports=!0);const a=ue.resolve(n.project.projectDir),s=Te({dir:ue.resolve(a,"./app")});if(s.file){let e=await ge({file:s.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));i.app_uses_jsx=t,i.app_has_entry=!0,e=await ge({file:s.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),i.app_entry_uses_jsx=t,i.app_entry_is_ts=s.ts,i.app_entry_ext=s.ext}const r=Te({dir:ue.resolve(a,"./cli")});if(r.file){let e=await ge({file:r.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));i.cli_uses_jsx=t,i.cli_has_entry=!0,e=await ge({file:r.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),i.cli_entry_uses_jsx=t,i.cli_entry_is_ts=r.ts,i.cli_entry_ext=r.ext}if("workflow.lib"===t.type){const e=Te({dir:ue.resolve(a,"./src")});if(e.file){let t=await ge({file:e.file,recursive:!0}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));i.src_uses_jsx=n,i.src_has_entry=!0,t=await ge({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),i.src_entry_uses_jsx=n,i.src_entry_is_ts=e.ts,i.src_entry_ext=e.ext}}const c=Reflect.has(i,"app_entry_uses_jsx")?!0===i.app_entry_uses_jsx:!0===i.src_entry_uses_jsx,l=Reflect.has(i,"cli_entry_uses_jsx")?!0===i.cli_entry_uses_jsx:!0===i.src_entry_uses_jsx;i.form_enabled=!0===t.doc.form||!0===t.doc.form?.enabled||!0===i.form||!0===i.form?.enabled,i.multiple_enabled=i.multiple_enabled||!0===i.multiple||!0===i.multiple?.enabled,!1===i.app?i.app={enabled:!1}:!0===i.app?i.app={enabled:!0,extend:!0===i.app_has_entry,export:!0,react:c}:i.app={enabled:!0,extend:!0===i.app_has_entry,export:!0,react:c,...i.app||{}},i.app.enabled=!0===i.app.enabled&&(!0===t.doc.features.form_enabled||!0===i.app.extend||!0===i.app.enabled),i.app.format=i.app.format||"esm",i.app.folder=i.app.folder||i.app.format||"default",!1===i.cli?i.cli={enabled:!1}:!0===i.cli?i.cli={enabled:!0,extend:!0===i.cli_has_entry,export:!0,react:l}:i.cli={enabled:!0,extend:!0===i.cli_has_entry,export:!0,react:l,...i.cli||{}},i.cli.enabled=!0===i.cli.enabled&&(!1===t.doc.features.form_enabled||!0===i.cli.extend||!0===i.cli.enabled),i.cli.format=i.cli.format||"esm",i.cli.folder=i.cli.folder||i.cli.folder||"esm",i.cli.node_options=i.cli.node?.options||i.cli.node_options||"",i.json=i.cli.enabled||i.json;const p={cjs:{format:"cjs",context:i.form_enabled?"window":"global",babel:!0===i.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==i.cjs,copy:!1},esm:{format:"esm",context:i.form_enabled?"window":"global",babel:!0===i.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!1!==i.esm,copy:!0},iife:{format:"iife",context:i.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==i.iife,terser:!0,copy:!1}};!0===i.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",copy:!1,babel_options:{targets:{chrome:"79"}}}),!0===i.electron&&(p.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===i.nextjs&&(p.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===i.ios&&(p.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===i.macos&&(p.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===i.app.enabled&&(i.app.dir=`./dist/app/${i.app.folder}`,p.app={format:i.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:i.app.dir,terser:!0,output_exports:!1===i.app.export?"none":"auto"}),!0===i.cli.enabled&&(i.cli.dir=`./dist/cli/${i.cli.folder}`,p.cli={format:i.cli.format,context:"global",babel:!0===i.src_uses_jsx||!0===i.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:i.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===i.cli.export?"none":"auto"});const d={server:".",startPath:`${ue.normalize(i.app.dir||".")}`,files:[ue.normalize("./dist/**/*")],cors:!0,open:!1};i.babel_options=fe({targets:{browsers:"last 9 versions, not dead",node:"18"}},i.babel_options||i.babel?.options),i.browsersync_options=fe(d,i.browsersync_options||i.browsersync?.options||{}),i.replace_options=fe({},i.replace_options||i.replace?.options||{}),Reflect.has(i.browsersync_options,"proxy")&&delete i.browsersync_options.server,i.rollup=i.rollup||{},i.rollup_output=fe(p,i.rollup_output||i.rollup?.output||{}),i.preact_enabled=!0===i.preact||i.preact&&!1!==i.preact?.enabled;let f=Object.keys(p);for(const e of f){const t=p[e];t&&(!1!==i.rollup[e]?(t.babel_options=t.babel_options||i.babel_options,t.browsersync_options=fe(i.browsersync_options,t.browsersync_options),t.replace_options=fe(i.replace_options,t.replace_options),i.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"),i.form_enabled&&(t.babel=!0)):delete i.rollup_output[e])}f=Object.keys(i.rollup_output),i.babel_enabled=f.some((e=>!0===i.rollup_output[e].babel)),i.browser_enabled=f.some((e=>!0===i.rollup_output[e].babel)),i.browsersync_enabled=!1!==i.browsersync&&f.some((e=>!0===i.rollup_output[e].browsersync)),i.browsersync_enabled=i.browsersync_enabled&&i.app.enabled,i.dependency_auto_enabled=!1!==i.dependency_auto&&!1!==i.dependency_auto?.enabled,i.npm_install_flags=i.npm_install_flags||"",i.react_version=i.react_version||i.react?.version||18,Ae(e),Pe(e),Se(e),De(e),_e(e),ke(e),je(e),xe(e),be(e),ve(e),we(e),he(e),ye(e)},oi=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 Ee({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"}))}e.doc.features.preact_enabled&&t.push({package:"preact",version:"^10"}),!0===e.doc.features.cli.enabled&&(t.push({package:"@fnet/args",version:"^0.1"}),n.push({package:"ajv",version:"^8"}),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.11"})},ii=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{if(!0!==e.doc.features.app.enabled)return;await t({message:"Creating app folder"});const i={atom:e,packageDependencies:o,ts:Date.now()},a=n.templateDir,s=Oe.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 Ie({pattern:r,dir:Oe.resolve(a,"src/app"),outDir:s,context:i})},ai=async({atom:e,context:t,packageDependencies:n,packageDevDependencies:o,setInProgress:i})=>{await i({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 a=n.find((e=>"react"===e.package)),s=n.find((e=>"react-dom"===e.package));a&&!s?n.push({package:"react-dom",version:a.version}):a&&s&&(s.version=a.version),a&&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:Me.resolve(t.projectDir,"src/app/index.js"),dev:!1!==e.doc.features.app.dev}),!0===e.doc.features.cli.enabled&&r.push({file:Me.resolve(t.projectDir,"src/cli/index.js"),dev:!1!==e.doc.features.cli.dev});for await(const t of r){const i=t.file;if(!Ne.existsSync(i))throw new Error(`App file not found: ${i}`);const a=await Fe({file:i,recursive:!0}),s=!0===e.doc.features.all_parsed_imports?a.all:a.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 i=(await Re({name:e.package,groupBy:{minor:!0}}))[0][0];(!0===t.dev?o:n).push({package:e.package,subpath:e.subpath,version:`^${i}`,type:"npm"})}}const c={atom:e,packageDependencies:n,packageDevDependencies:o},l=t.templateCommonDir,p=Ce.compile(Ne.readFileSync(Me.resolve(l,"package.json.njk"),"utf8"),Ce.configure(l)).render(c),d=t.projectDir,f=Me.resolve(d,"package.json");Ne.writeFileSync(f,p,"utf8");const m=Me.resolve(t.project.projectDir,"fnet");if(Ne.existsSync(m)){const e=Me.resolve(t.projectDir,"fnet");Ne.existsSync(e)||Ne.mkdirSync(e);const n=Ne.readdirSync(m);for(const t of n){const n=Me.resolve(m,t);if(!Ne.lstatSync(n).isFile())continue;const o=Me.resolve(e,t);Ne.copyFileSync(n,o)}}},si=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating cli."});const i={atom:e,packageDependencies:o},a=n.templateDir,s=Ue.resolve(n.projectDir,"src/cli");qe.existsSync(s)||qe.mkdirSync(s,{recursive:!0}),await Le({pattern:["index.js.njk"],dir:Ue.resolve(a,"src/cli"),outDir:s,context:i})},ri=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{await t({message:"Creating rollup file."});const i={atom:e,packageDependencies:o},a=Je.resolve(n.projectDir,"src","default/index.js");if(!Be.existsSync(a))throw new Error(`Entry file not found: ${a}`);const s=(await We({file:a,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=ze.compile(Be.readFileSync(Je.resolve(l,"rollup.config.mjs.njk"),"utf8"),ze.configure(l)).render(i);const d=n.projectDir;let f=Je.resolve(d,"rollup.config.mjs");Be.writeFileSync(f,p,"utf8")},ci=async({atom:e,setInProgress:t,context:n,njEnv:o})=>{if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating yargs."});let i={};if(i=e.doc.input?e.doc.input:{type:"object",properties:{},required:[]},e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled){const t=e.doc.features.cli.fargs,n={type:"string",description:"Config name to load args",hidden:!1},o={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(t,"default")&&(n.default=t.default),i.properties&&(i.properties.fargs=n,i.properties.ftag=o)}const a={options:i,imports:[],atom:e},s=n.templateDir,r=He.compile(Ke.readFileSync(Ge.resolve(s,"src/default/to.args.js.njk"),"utf8"),o).render(a),c=n.projectDir,l=Ge.resolve(c,"src/default/to.args.js");Ke.writeFileSync(l,r,"utf8");const p=new Ve({allErrors:!0,useDefaults:!0,formats:{email:!0},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});Ye(p);const d=p.compile(i),f=Xe(p,d);Ke.writeFileSync(Ge.resolve(c,"src/default/validate_input.js"),f,"utf8")},li=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{await t({message:"Creating .gitignore"});const i={atom:e,packageDependencies:o},a=n.templateCommonDir,s=et.compile(Ze.readFileSync(Qe.resolve(a,".gitignore.njk"),"utf8"),et.configure(a)).render(i),r=n.projectDir,c=Qe.resolve(r,".gitignore");Ze.writeFileSync(c,s,"utf8")},pi=async({atom:e,setInProgress:t,context:n,packageDependencies:o})=>{await t({message:"Creating tsconfig.json."});const i={atom:e,packageDependencies:o},a=n.templateCommonDir,s=ot.compile(tt.readFileSync(nt.resolve(a,"tsconfig.json.njk"),"utf8"),ot.configure(a)).render(i),r=n.projectDir,c=nt.resolve(r,"tsconfig.json");tt.writeFileSync(c,s,"utf8")},di=async({atom:e,context:t,setInProgress:n,Atom:o})=>{const i="readme.md",a=`Creating ${i}`;if(await n({message:a}),t.project?.readme){const e=t.projectDir,n={content:t.project.readme.doc.content},o=st.resolve(t.project.projectDir,"fnet/how-to.md");if(at.existsSync(o)){const e=at.readFileSync(o,"utf8");n.howto=e}const a=st.resolve(t.project.projectDir,"fnet/input.yaml");if(at.existsSync(a)){const e=await rt({file:a,tags:t.tags});n.input=e.content}const s=t.templateCommonDir,r=it.compile(at.readFileSync(st.resolve(s,`${i}.njk`),"utf8"),it.configure(s)).render(n),c=st.resolve(e,`${i}`);at.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:a,...s}=n.doc,r={content:a},c=t.templateCommonDir,l=it.compile(at.readFileSync(st.resolve(c,`${i}.njk`),"utf8"),it.configure(c)).render(r),p=t.projectDir,d=st.resolve(p,`${i}`);at.writeFileSync(d,l,"utf8")}},fi=async({setInProgress:e,context:t})=>{const n=t.projectDir;await e({message:"Prettifiying source files."});let o=lt.join("src","**","*");if(0!==ct.exec(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:n}).code)throw new Error("Couldnt format files.")},mi=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!==pt.exec("tsc",{cwd:o}).code)throw new Error("Couldnt create .d.ts files.")},ui=async({setInProgress:e,atom:t,context:n})=>{const o=n.projectDir;await e({message:"Installing npm packages."});if(0!==dt.exec(`npm install ${t.doc.features.npm_install_flags}`,{cwd:o}).code)throw new Error("Couldnt install npm packages.")},gi=async({setInProgress:e,context:t})=>{const n=t.projectDir;await e({message:"Building main project."});if(0!==ft.exec("npm run build",{cwd:n}).code)throw new Error("Couldnt build project.")},hi=async e=>{const{atom:t,packageDependencies:n,context:o,deploymentProjectTarget:i,setInProgress:a,deploymentProject:s,yamlTarget:r}=e;if(!0===i.enabled)if("lib"===i.type)await Fn({...e});else if("red"===i.type)await Mn({...e});else if("npm"===i.type)await Nn({...e});else if("gcs"===i.type)await Cn({...e});else if("gitlab"===i.type)await In({...e});else if("fnet-package"===i.type)await zn({...e});else if("fnet-form"===i.type)await Wn({...e});else if("fnet-node"===i.type)await Gn({...e});else if("fnet-flow"===i.type)await Kn({...e});else{let e;if("nextjs"===i.type?e=Bn:"webos"===i.type?e=Ln:"electron"===i.type?e=Un:"docker"===i.type?e=Jn:"ios"===i.type?e=Rn:"macos"===i.type?e=qn:"rust"===i.type&&(e=Hn),!e)return;await e({atom:t,target:i,onProgress:a,projectDir:o.projectDir,dependencies:n,context:o,yamlTarget:r}),s.isDirty=!0}},{Atom:yi}=w,wi=U,vi=j,bi=L,xi=t,ki=k,ji=B,_i=r,Di=J,Si=eo,Pi=oo,Ai=so,Ti=fo,Ei=Yn,$i=mo,Oi=ho,Ii=vo,Ci=ko,Ni=_o,Mi=So,Fi=Ao,Ri=Eo,qi=Io,Ui=Mo,Li=qo,Bi=Lo,Ji=Jo,zi=Wo,Wi=({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 Ki=class{#e;#t;#n;#o;#i;#a;#s;#r;#c;#l;#p;#d;#f;#m;#u;#g;#h;#y;#w;#v;#b;constructor(e){this.#e=new ti,this.#t=e,this.#a=[],this.#s=[],this.#r={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#v={packageDependencies:this.#a,packageDevDependencies:this.#s,setInProgress:this.setInProgress.bind(this),context:this.#t,Atom:yi,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#b={initNode:this.initNode.bind(this),cloneDeep:Yo,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:Wi,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 Qo(),this.#p=this.#t.buildId||ei(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.#y=["all","deploy"].includes(this.#u),this.#w=["all","deploy","build","file","bpmn"].includes(this.#u),this.#f=this.#t.protocol,this.#d="BUILD:"+this.#p,this.#m=(await xi({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 ni(this.#v),await oi(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.#a}),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 yi.get({id:e}),this.#o="string"==typeof this.#n.doc.content?(await _i({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.#a.push({package:"get-value",version:"^3.0"}),this.#a.push({package:"set-value",version:"^4.1"}),this.#n.doc.features.form_enabled?(this.#a.push({package:"react",version:"^18.2"}),this.#a.push({package:"react-dom",version:"^18.2"}),this.#a.push({package:"@flownet/react-app",version:"^0.1"}),this.#a.push({package:"@flownet/react-app-state",version:"^0.1"})):this.#a.push({package:"@fnet/args",version:"^0.1"}),this.#a.push({package:"chalk",version:"^4"})}#x(e){console.log("filePath",e),Ko.statSync(e).isDirectory()?(Ko.readdirSync(e).forEach((t=>{const n=Go.join(e,t);this.#x(n)})),Ko.rmSync(e)):Ko.unlinkSync(e)}#k(e,t){const n=Ko.existsSync(e),o=n&&Ko.statSync(e);n&&o.isDirectory()?(Ko.mkdirSync(t,{recursive:!0}),Ko.readdirSync(e).forEach((n=>{this.#k(Go.join(e,n),Go.join(t,n))}))):Ko.copyFileSync(e,t)}async initWorkflowDir(){const e=this.#t.projectDir,t=this.#t.coreDir,n=["node_modules"];if(Ko.existsSync(e)){const t=Ko.readdirSync(e);for(const o of t)if(!n.includes(o)){const t=Go.join(e,o);Ko.rmSync(t,{recursive:!0})}}Ko.existsSync(e)||Ko.mkdirSync(e,{recursive:!0});const o=Go.join(e,"src");Ko.existsSync(o)||Ko.mkdirSync(o,{recursive:!0});const i=Go.join(o,"core");this.#k(t,i);const a=Go.join(o,"default","blocks");Ko.existsSync(a)||Ko.mkdirSync(a,{recursive:!0})}async initNunjucks(){const e=this.#t.templateDir;this.#i=Xo.configure(e,{watch:!1,dev:!0}),this.#v.njEnv=this.#i}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,...i}=n;e[t]={try:i,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 Pi.hits(t))await Pi.init(t);else if(await Ti.hits(t))await Ti.init(t);else if(await Ei.hits(t))await Ei.init(t);else if(await Si.hits(t))await Si.init(t);else if(await $i.hits(t))await $i.init(t);else if(await Ai.hits(t))await Ai.init(t);else if(await Oi.hits(t))await Oi.init(t);else if(await Ii.hits(t))await Ii.init(t);else if(await Ci.hits(t))await Ci.init(t);else if(await Ni.hits(t))await Ni.init(t);else if(await Mi.hits(t))await Mi.init(t);else if(await Fi.hits(t))await Fi.init(t);else if(await Ji.hits(t))await Ji.init(t);else if(await zi.hits(t))await zi.init(t);else if(await qi.hits(t))await qi.init(t);else if(await Ui.hits(t))await Ui.init(t);else if(await Bi.hits(t))await Bi.init(t);else if(await Ri.hits(t))await Ri.init(t);else{if(!await Li.hits(t))throw new Error("Undefined step type.");await Li.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=Go.join(e.parent.indexKey,e.name);e.indexKey=n,t[n]=e;const o=[];let i=e;for(;i?.parent;)o.push(i.index),i=i.parent;o.reverse(),e.codeKey=`B_${o.join("_")}_${e.type}`,e.pathKey=`${o.join(".")}`,e.typeId=ei(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",definition:e.definition},i=t.find((e=>e.name===o.name&&e.type===o.type));i||t.push(o),e.target=i||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"},i=t.find((e=>e.name===o.name&&e.type===o.type));i||t.push(o),e.target=i||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],i=await this.findAtomLibrary({url:o.name,libRef:o});o.atom=i;const a=i.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));a?.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,libRef:t}){const n=wi({url:e});if(!n)throw new Error(`Invalid package name: ${e}`);if(n.protocol||(n.protocol=this.#f),"ac:"===n.protocol){const t=n.pathname.split("/");if(1===t.length)return await yi.first({where:{name:e,parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await yi.first({where:{name:t[0],parent_id:this.#m.env.ATOM_LIBRARIES_ID,type:"folder"}});return await yi.first({where:{name:t[1],parent_id:e.id,type:"workflow.lib"}})}}else{if("local:"===n.protocol){const e=Go.resolve(this.#t.projectSrcDir,`${n.pathname}.js`),t=[],o=await ki({file:e,recursive:!0}),i=!0===this.#n.doc.features.all_parsed_imports?o.all:o.required;for await(const e of i){if("npm"!==e.type)continue;if(t.find((t=>t.package===e.package)))continue;const n=(await vi({name:e.package,groupBy:{minor:!0}}))[0][0];t.push({package:e.package,subpath:e.subpath,version:`^${n}`,type:"npm"})}return{name:n.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:t},protocol:n.protocol}}if("npm:"===n.protocol){const e=(await vi({name:n.pathname,groupBy:{minor:!0}}))[0][0];return{name:n.pathname,doc:{type:"workflow.lib",subtype:"flow"===t?.definition?.subtype?"workflow":null,"content-type":"javascript",language:"js",dependencies:[{package:n.pathname,version:`^${e}`,type:"npm"}]},protocol:n.protocol}}}}async resolveNodeTree({root:e}){for await(const t of e.childs)await this.resolveTypeWorkflow({node:t})}async resolveTypeWorkflow({node:e}){e.context.transform=Yo(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=Go.resolve(this.#t.projectSrcDir,`${n.fileName||n.name}.js`),t=Go.relative(`${this.#t.projectDir}/src/default/blocks`,e);if(!Ko.existsSync(e)){Ko.mkdirSync(Go.dirname(e),{recursive:!0});let t="export default async (args)=>{\n";t+="}",Ko.writeFileSync(e,t,"utf8")}n.relativePath=t.split(Go.sep).join("/"),this.#n.typesDir=`./types/${Go.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;Ko.writeFileSync(Go.normalize(e),t.content,"utf8")}}}async createEngine({root:e}){await this.setInProgress({message:"Creating engine file."});const t=this.#t.templateDir,n=Xo.compile(Ko.readFileSync(Go.resolve(t,"src/default/engine.js.njk"),"utf8"),this.#i).render({...e,ui:{package:"@flownet/react-app"}}),o=this.#t.projectDir,i=Go.resolve(o,"src/default/index.js");Ko.writeFileSync(i,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=Xo.compile(Ko.readFileSync(Go.resolve(t,"src/default/workflow.js.njk"),"utf8"),this.#i).render(e),o=this.#t.projectDir,i=Go.resolve(o,`src/default/${e.codeKey}.js`);Ko.writeFileSync(i,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=Xo.compile(Ko.readFileSync(Go.resolve(n,`src/default/blocks/${e.type}.js.njk`),"utf8"),this.#i),this.#r[e.type]=t,t}createStepFile({node:e}){const t=this.#t.projectDir,n=`${e.codeKey}.js`,o=Go.resolve(t,`src/default/blocks/${n}`);Ko.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(Zo(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 ji({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,i={content:Ho.stringify(o)},a=this.#t.templateDir,s=Xo.compile(Ko.readFileSync(Go.resolve(a,`${e}.njk`),"utf8"),this.#i).render(i),r=this.#t.projectDir,c=Go.resolve(r,`${e}`);Ko.writeFileSync(c,s,"utf8")}async createProjectMainYaml(){const e="flow.main.yaml",t=`Creating ${e}`;await this.setInProgress({message:t});const n={content:Ho.stringify(this.#o)},o=this.#t.templateDir,i=Xo.compile(Ko.readFileSync(Go.resolve(o,`${e}.njk`),"utf8"),this.#i).render(n),a=this.#t.projectDir,s=Go.resolve(a,`${e}`);Ko.writeFileSync(s,i,"utf8")}async runPrettifier(){const e=this.#t.projectDir,t=Vo.exec("prettier --write .",{cwd:Go.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 yi.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 yi.update(n,{id:n.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:n}=t;if(t.doc.targets&&Array.isArray(t.doc.targets))throw new Error("Deployment project targets are deprecated. Please update targets in the yaml file.");const o=Object.keys(t.doc||{}),i=n||{};for(let e=0;e<o.length;e++){const n=t.doc[o[e]];n.name=o[e];const a=i.get(o[e]);await hi({...this.#v,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:a})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#t.id)return;let o=await yi.first({name:t.params.name,parent_id:this.#m.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:n.version}),await yi.update(o,{id:o.id})):o=await yi.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(Di.blue(e)),await this._cache_set(this.#d,{status:"IN_PROGRESS",message:e})}async build(){if(this.#w&&!this.#g)return await this.createNetwork();try{const e=this.#w?await bi({root:this.#l}):void 0;if(this.#g){if(await this.initWorkflowDir(),await this.initNunjucks(),this.#w){const t=this.#t.project?.projectDir||this.#t.projectDir;Ko.writeFileSync(Go.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 di(this.#v),await pi(this.#v),await li(this.#v),await ci(this.#v),await si(this.#v),await ii(this.#v),await ri(this.#v),await ai(this.#v),await fi(this.#v),await mi(this.#v),this.#h&&(await ui(this.#v),await gi(this.#v),this.#y&&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 bi({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 Gi=p,Hi=d;var Vi=function({baseDir:e=__dirname}){let t=e;for(;t!==Hi.parse(t).root;){const e=Hi.join(t,"node_modules");if(Gi.existsSync(e))return e;t=Hi.dirname(t)}return null};const Xi=process.cwd(),{spawn:Yi}=e;t({name:["redis"],dir:Xi,optional:!0});const Zi=n,Qi=o,ea=i,ta=a,na=s,oa=r,ia=t,aa=c,sa=l,ra=Ki,ca=Vi({baseDir:__dirname}),la="win32"===process.platform?";":":";process.env.PATH=`${Zi.join(ca,"/.bin")}${la}${process.env.PATH}`;let pa=Qi(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=Zi.resolve(ca,"./@fnet/cli-project-flow/dist/template/project"),n=Zi.resolve(Xi,e.name);ea.existsSync(n)||ea.mkdirSync(n),await sa({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let o=na.exec("fnet build",{cwd:n});if(0!==o.code)throw new Error("Failed to build project.");if(na.which("git")&&(o=na.exec("git init --initial-branch=main",{cwd:n}),0!==o.code))throw new Error("Failed to initialize git.");if(na.which("code")&&e.vscode&&(o=na.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=Zi.resolve(ca,"@fnet/cli-project-flow/dist/template/project"),n=process.cwd();if(e.name=Zi.basename(n),e.update){if(await sa({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0}),0!==na.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 fa(e),n=new ra(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 fa({...e,mode:"all"}),n=new ra(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 fa({...e,mode:"file"}),n=new ra(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 da(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 fa(e),{projectDir:i}=t,a=process.argv.slice(3);Yi(n,[...o,...a],{cwd:i,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function fa(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:Zi.resolve(Xi,`./.output/${e.id}`),templateDir:Zi.resolve(ca,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:Zi.resolve(ca,"./@fnet/cli-project-common/dist/template/default"),coreDir:Zi.resolve(ca,"./@fnet/cli-project-flow/dist/template/core"),tags:e.ftag}}{const t=await async function({tags:e}){const t=Zi.resolve(Xi,"flow.yaml");if(!ea.existsSync(t))throw new Error("flow.yaml file not found in current directory.");const{raw:n,parsed:o}=await oa({file:t,tags:e}),i=Zi.dirname(t),a=o.main||"flow.main.yaml";let s=Zi.resolve(i,a);if(!ea.existsSync(s)&&(s=Zi.resolve(i,a+".yaml"),!ea.existsSync(s)))throw new Error(`${a} file not found in ${s}.`);const{raw:r,parsed:c}=await oa({file:s,tags:e}),l={workflowAtom:{doc:{...o,"content-type":"yaml",content:r}},projectDir:i,projectFilePath:t,projectFileContent:n,projectFileParsed:o,projectMainFilePath:s,projectMainFileContent:r,projectMainFileParsed:c};let p=Zi.resolve(i,"fnet/targets.yaml");if(!ea.existsSync(p)&&(p=Zi.resolve(i,"flow.devops.yaml"),ea.existsSync(p))){const e=Zi.resolve(i,"fnet");ea.existsSync(e)||ea.mkdirSync(e),ea.copyFileSync(p,Zi.resolve(i,"fnet/targets.yaml")),ea.unlinkSync(p)}if(ea.existsSync(p)){const{raw:t,parsed:n}=await oa({file:p,tags:e}),o=ta.parseDocument(t);l.devops={filePath:p,fileContent:t,yamlDocument:o,doc:{...n},type:"workflow.deploy",save:async()=>{ea.writeFileSync(l.devops.filePath,o.toString())}}}const d=Zi.resolve(i,"readme.md");if(ea.existsSync(d)){const e=ea.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:Zi.resolve(ca,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:Zi.resolve(ca,"./@fnet/cli-project-common/dist/template/default"),coreDir:Zi.resolve(ca,"./@fnet/cli-project-flow/dist/template/core"),projectDir:Zi.resolve(t.projectDir,"./.workspace"),projectSrcDir:Zi.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}pa=pa.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 fa(e),{project:n}=t,{projectDir:o,projectFileParsed:i}=n,a=i.input;if(!a)throw new Error("Config schema not found in project file.");const s=await aa({schema:a,format:"yaml"}),r=Zi.resolve(o,".fnet");ea.existsSync(r)||ea.mkdirSync(r);const c=Zi.resolve(r,`${e.name}.fnet`);ea.writeFileSync(c,s)}catch(e){console.error(e.message),process.exit(1)}})),pa=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 fa(e),{project:n}=t,{projectDir:o,projectFileParsed:i}=n,a=i.input;if(!a)throw new Error("Config schema not found in project file.");const s=Zi.resolve(o,".fnet"),r=Zi.resolve(s,`${e.name}.fnet`),c=await aa({schema:a,format:"yaml",ref:r});ea.existsSync(s)||ea.mkdirSync(s),ea.writeFileSync(r,c)}catch(e){console.error(e.message),process.exit(1)}}))}(pa),pa=da(pa,{bin:"npm"}),pa=da(pa,{bin:"node"}),pa=da(pa,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),pa=da(pa,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),pa=da(pa,{name:"app",bin:"npm",preArgs:["run","app","--"]}),pa=da(pa,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),pa=da(pa,{bin:"npx"}),pa=da(pa,{bin:"cdk"}),pa=da(pa,{bin:"aws"}),pa=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 fa(e),{projectDir:o}=t,i=e.config,a=await ia({name:i,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),s=a?.data?.env||void 0,r=e.command,c=process.argv.slice(5);Yi(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)}}))}(pa,{name:"with"}),pa.demandCommand(1,"You need at least one command before moving on").help().argv,module.exports={};
|