@fnet/cli 0.67.1 → 0.68.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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"),r=require("yargs/yargs"),a=require("fs"),o=require("yaml"),i=require("shelljs"),s=require("@fnet/yaml"),c=require("@fnet/object-from-schema"),p=require("@fnet/shell-flow"),l=require("@flownet/lib-render-templates-dir"),d=require("node:fs"),u=require("node:path"),f=require("nunjucks"),m=require("redis"),g=require("@flownet/lib-is-redis-online"),y=require("nanoid"),h=require("@flownet/lib-atom-api-js"),w=require("axios"),v=require("qs"),b=require("lodash.merge"),_=require("@flownet/lib-parse-imports-js"),j=require("@flownet/lib-list-npm-versions"),D=require("ajv/dist/2020"),k=require("ajv/dist/standalone"),x=require("ajv-formats"),S=require("@fnet/shell"),A=require("semver"),P=require("@fnet/up-list-files"),I=require("node:os"),E=require("@node-red/util"),T=require("@flownet/lib-to-ios-app"),$=require("lodash.clonedeep"),O=require("@flownet/lib-to-macos-app"),C=require("@flownet/lib-to-electron"),R=require("@flownet/lib-to-webos"),M=require("@flownet/lib-to-nextjs"),F=require("@flownet/lib-to-docker"),q=require("form-data"),L=require("@fnet/to-rust"),N=require("@flownet/lib-parse-node-url"),U=require("@flownet/lib-pick-npm-versions"),B=require("chalk");function z(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var J,W,K,G,H,X,Y,Z,Q,V,ee,te,ne,re,ae,oe,ie,se,ce,pe,le,de,ue,fe,me,ge,ye,he,we,ve,be,_e,je,De,ke,xe,Se,Ae,Pe,Ie,Ee,Te,$e,Oe,Ce,Re,Me,Fe,qe,Le,Ne,Ue,Be,ze,Je,We,Ke,Ge,He,Xe,Ye,Ze,Qe,Ve,et,tt,nt,rt,at,ot,it,st,ct,pt,lt,dt,ut,ft,mt,gt,yt,ht,wt,vt,bt,_t,jt,Dt,kt,xt,St,At,Pt,It,Et,Tt,$t,Ot,Ct,Rt={};function Mt(){if(X)return H;X=1;const e=b;return H=({feature:t,features:n,packageDevDependencies:r})=>{const{name:a,packages:o,options:i,extraCheck:s,explicit:c}=t,p=`${a}_enabled`,l=n.rollup_output||{},d=Object.keys(l);let u=i||{};const f=n[a]?.options;f&&(u=e(u,f));const m=!n[a]||!1===n[a]?.enabled;d.forEach((e=>{const t=n.rollup_output[e];if(t){if(Reflect.has(t,a)){if(m||!t[a]||!1===t[a]?.enabled)return void delete t[a];!0===t[a]&&(t[a]={enabled:!0,options:u})}else{if(m||c||!1===n[p])return;t[a]={enabled:!0}}t[a]=t[a]||{},t[a].options={...u,...t[a].options}}}));let g=d.some((e=>!0===n.rollup_output[e][a]?.enabled));s&&(g=s()&&g),n[p]=g,g&&o.forEach((e=>r.push({package:e[0],version:e[1]})))}}function Ft(){if(De)return je;De=1;const e=b,t=d,n=u,r=_,a=function(){if(Z)return Y;Z=1;const e=Mt();return Y=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({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:a,packageDevDependencies:r})},Y}(),o=function(){if(V)return Q;V=1;const e=Mt();return Q=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:a,packageDevDependencies:r})},Q}(),i=function(){if(te)return ee;te=1;const e=Mt();return ee=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:a,packageDevDependencies:r})},ee}(),s=function(){if(re)return ne;re=1;const e=Mt();return ne=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:a,packageDevDependencies:r})},ne}(),c=function(){if(oe)return ae;oe=1;const e=Mt();return ae=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:a,packageDevDependencies:r})},ae}(),p=function(){if(se)return ie;se=1;const e=Mt();return ie=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:a,packageDevDependencies:r})},ie}(),l=function(){if(pe)return ce;pe=1;const e=Mt();return ce=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:a,packageDevDependencies:r})},ce}(),f=function(){if(de)return le;de=1;const e=Mt();return le=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:a,packageDevDependencies:r})},le}(),m=function(){if(fe)return ue;fe=1;const e=Mt();return ue=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:a,packageDevDependencies:r})},ue}(),g=function(){if(ge)return me;ge=1;const e=Mt();return me=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:a,packageDevDependencies:r})},me}(),y=function(){if(he)return ye;he=1;const e=Mt();return ye=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:a,packageDevDependencies:r})},ye}(),h=function(){if(ve)return we;ve=1;const e=Mt();return we=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features,o={};!0===a.app?.enabled&&(o.targets=o.targets||[],o.targets.push({src:"./src/app/index.html",dest:a.app.dir}),Reflect.has(a.app,"copy")||Reflect.has(a,"copy")||(a.copy=!0)),e({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:o},features:a,packageDevDependencies:r})},we}(),w=function(){if(_e)return be;_e=1;const e=Mt();return be=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features,o=a.css&&!1!==a.css.enabled;let i=[];o&&(i.push(["rollup-plugin-postcss","^4"]),i.push(["sass","^1.66"]),(a.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":i.push(["postcss-import","^15"]);break;case"postcss-url":i.push(["postcss-url","^10"]);break;case"postcss-preset-env":i.push(["postcss-preset-env","^9"]);break;case"autoprefixer":i.push(["autoprefixer","^10"]);break;case"cssnano":i.push(["cssnano","^6"])}}))),e({feature:{name:"css",packages:i},features:a,packageDevDependencies:r})},be}();function v({dir:e,name:r="index"}){let a=n.resolve(e,`./${r}.tsx`);if(t.existsSync(a)||(a=n.resolve(e,`./${r}.ts`)),t.existsSync(a)||(a=n.resolve(e,`./${r}.jsx`)),t.existsSync(a)||(a=n.resolve(e,`./${r}.js`)),!t.existsSync(a))return{};const o=a,i=n.extname(a);return{file:o,ext:i,ts:".ts"===i||".tsx"===i,name:r}}return je=async t=>{const{atom:d,context:u,packageDevDependencies:b}=t;d.doc.features=d.doc.features||{};const _=d.doc.features;_.project=_.project||{},_.project.format=_.project.format||_.project_format||"esm",_.project_format=_.project.format,_.dts_enabled=!0===_.dts||void 0!==_.dts&&!1!==_.dts,_.hasOwnProperty("all_parsed_imports")||(_.all_parsed_imports=!0);const j=n.resolve(u.project.projectDir),D=v({dir:n.resolve(j,"./app")});if(D.file){let e=await r({file:D.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));_.app_uses_jsx=t,_.app_has_entry=!0,e=await r({file:D.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),_.app_entry_uses_jsx=t,_.app_entry_is_ts=D.ts,_.app_entry_ext=D.ext}const k=v({dir:n.resolve(j,"./cli")});if(k.file){let e=await r({file:k.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));_.cli_uses_jsx=t,_.cli_has_entry=!0,e=await r({file:k.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),_.cli_entry_uses_jsx=t,_.cli_entry_is_ts=k.ts,_.cli_entry_ext=k.ext}if("workflow.lib"===d.type){const e=v({dir:n.resolve(j,"./src")});if(e.file){let t=await r({file:e.file,recursive:!0}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));_.src_uses_jsx=n,_.src_has_entry=!0,t=await r({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),_.src_entry_uses_jsx=n,_.src_entry_is_ts=e.ts,_.src_entry_ext=e.ext}}const x=Reflect.has(_,"app_entry_uses_jsx")?!0===_.app_entry_uses_jsx:!0===_.src_entry_uses_jsx,S=Reflect.has(_,"cli_entry_uses_jsx")?!0===_.cli_entry_uses_jsx:!0===_.src_entry_uses_jsx;_.form_enabled=!0===d.doc.form||!0===d.doc.form?.enabled||!0===_.form||!0===_.form?.enabled,_.multiple_enabled=_.multiple_enabled||!0===_.multiple||!0===_.multiple?.enabled,!1===_.app?_.app={enabled:!1}:!0===_.app?_.app={enabled:!0,extend:!0===_.app_has_entry,export:!0,react:x}:_.app={enabled:!0,extend:!0===_.app_has_entry,export:!0,react:x,..._.app||{}},_.app.enabled=!0===_.app.enabled&&(!0===d.doc.features.form_enabled||!0===_.app.extend||!0===_.app.enabled),_.app.format=_.app.format||"esm",_.app.folder=_.app.folder||_.app.format||"default",!1===_.cli?_.cli={enabled:!1}:!0===_.cli?_.cli={enabled:!0,extend:!0===_.cli_has_entry,export:!0,react:S}:_.cli={enabled:!0,extend:!0===_.cli_has_entry,export:!0,react:S,..._.cli||{}},_.cli.enabled=!0===_.cli.enabled&&(!1===d.doc.features.form_enabled||!0===_.cli.extend||!0===_.cli.enabled),_.cli.format=_.cli.format||"esm",_.cli.folder=_.cli.folder||_.cli.folder||"esm",_.cli.node_options=_.cli.node?.options||_.cli.node_options||"",_.json=_.cli.enabled||_.json;const A={cjs:{format:"cjs",context:_.form_enabled?"window":"global",babel:!0===_.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==_.cjs,copy:!1},esm:{format:"esm",context:_.form_enabled?"window":"global",babel:!0===_.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!1!==_.esm,copy:!0},iife:{format:"iife",context:_.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==_.iife,terser:!0,copy:!1}};!0===_.webos&&(A.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===_.electron&&(A.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===_.nextjs&&(A.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===_.ios&&(A.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===_.macos&&(A.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===_.app.enabled&&(_.app.dir=`./dist/app/${_.app.folder}`,A.app={format:_.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:_.app.dir,terser:!0,output_exports:!1===_.app.export?"none":"auto"}),!0===_.cli.enabled&&(_.cli.dir=`./dist/cli/${_.cli.folder}`,A.cli={format:_.cli.format,context:"global",babel:!0===_.src_uses_jsx||!0===_.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:_.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===_.cli.export?"none":"auto"});const P={server:".",startPath:`${n.normalize(_.app.dir||".")}`,files:[n.normalize("./dist/**/*")],cors:!0,open:!1};_.babel_options=e({targets:{browsers:"last 9 versions, not dead",node:"18"}},_.babel_options||_.babel?.options),_.browsersync_options=e(P,_.browsersync_options||_.browsersync?.options||{}),_.replace_options=e({},_.replace_options||_.replace?.options||{}),Reflect.has(_.browsersync_options,"proxy")&&delete _.browsersync_options.server,_.rollup=_.rollup||{},_.rollup_output=e(A,_.rollup_output||_.rollup?.output||{}),_.preact_enabled=!0===_.preact||_.preact&&!1!==_.preact?.enabled;let I=Object.keys(A);for(const t of I){const n=A[t];n&&(!1!==_.rollup[t]?(n.babel_options=n.babel_options||_.babel_options,n.browsersync_options=e(_.browsersync_options,n.browsersync_options),n.replace_options=e(_.replace_options,n.replace_options),_.preact_enabled&&(n.alias_enabled=!0,n.alias=n.alias||{},n.alias.entries=n.alias.entries||{},n.alias.entries.react="preact/compat",n.alias.entries["react-dom"]="preact/compat"),_.form_enabled&&(n.babel=!0)):delete _.rollup_output[t])}I=Object.keys(_.rollup_output),_.babel_enabled=I.some((e=>!0===_.rollup_output[e].babel)),_.browser_enabled=I.some((e=>!0===_.rollup_output[e].babel)),_.browsersync_enabled=!1!==_.browsersync&&I.some((e=>!0===_.rollup_output[e].browsersync)),_.browsersync_enabled=_.browsersync_enabled&&_.app.enabled,_.dependency_auto_enabled=!1!==_.dependency_auto&&!1!==_.dependency_auto?.enabled,_.npm_install_flags=_.npm_install_flags||"",_.react_version=_.react_version||_.react?.version||18,w(t),h(t),y(t),g(t),m(t),l(t),f(t),p(t),c(t),s(t),i(t),a(t),o(t)},je}function qt(){if(xe)return ke;xe=1;const e=j;return ke=async({atom:t,packageDependencies:n,packageDevDependencies:r})=>{if("workflow"===t.type&&(n.push({package:"get-value",version:"^3"}),n.push({package:"set-value",version:"^4"})),t.doc.features.form_enabled&&t.doc.features.dependency_auto_enabled){let r="^18.2";r=`^${(await e({name:"react",groupBy:{major:!0}})).find((e=>e[0]===t.doc.features.react_version.toString()))[0]}`,n.push({package:"react",version:r}),n.push({package:"react-dom",version:r}),"workflow"===t.type&&(n.push({package:"@flownet/react-app",version:"^0.1"}),n.push({package:"@flownet/react-app-state",version:"^0.1"}))}t.doc.features.preact_enabled&&n.push({package:"preact",version:"^10"}),!0===t.doc.features.cli.enabled&&(n.push({package:"@fnet/args",version:"^0.1"}),r.push({package:"ajv",version:"^8"}),t.doc.features.cli.fargs&&!1!==t.doc.features.cli.fargs?.enabled&&n.push({package:"@fnet/config",version:"0.2.21"})),t.doc.features.render&&!1!==t.doc.features.render.enabled&&r.push({package:"@flownet/lib-render-templates-dir",version:"0.1.17"}),r.push({package:"@babel/core",version:"^7"}),r.push({package:"@rollup/plugin-commonjs",version:"^28"}),r.push({package:"@rollup/plugin-node-resolve",version:"^15"}),r.push({package:"@rollup/plugin-replace",version:"^6"}),r.push({package:"rollup",version:"^4"}),t.doc.features.dts_enabled&&r.push({package:"rollup-plugin-dts",version:"^6"}),r.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),r.push({package:"@rollup/plugin-alias",version:"^5"}),r.push({package:"fs-extra",version:"^11"}),t.doc.features.babel_enabled&&(r.push({package:"@rollup/plugin-babel",version:"^6"}),r.push({package:"@babel/preset-env",version:"^7"}),r.push({package:"@babel/preset-react",version:"^7"}),t.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":r.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":r.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":r.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":r.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":r.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),r.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),t.doc.features.browsersync_enabled&&r.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})},ke}function Lt(){if(Ae)return Se;Ae=1;const e=d,t=u,n=l;return Se=async({atom:r,setInProgress:a,context:o,packageDependencies:i})=>{if(!0!==r.doc.features.app.enabled)return;await a({message:"Creating app folder"});const s={atom:r,packageDependencies:i,ts:Date.now()},c=o.templateDir,p=t.resolve(o.projectDir,"src/app");e.existsSync(p)||e.mkdirSync(p,{recursive:!0});let l=["index.js.njk"];!1!==r.doc.features.app.html&&l.push("index.html.njk"),await n({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:s})},Se}function Nt(){if(Ie)return Pe;Ie=1;const e=f,t=d,n=u,r=_,a=j;return Pe=async({atom:o,context:i,packageDependencies:s,packageDevDependencies:c,setInProgress:p})=>{await p({message:"Creating package.json."});s.filter((e=>!0===e.dev)).forEach((e=>{c.find((t=>t.package===e.package))||c.push(e);const t=s.findIndex((t=>t.package===e.package));s.splice(t,1)}));const l=s.find((e=>"react"===e.package)),d=s.find((e=>"react-dom"===e.package));l&&!d?s.push({package:"react-dom",version:l.version}):l&&d&&(d.version=l.version),l&&o.doc.features.react_version>=17&&(s.find((e=>"@emotion/react"===e.package))||s.push({package:"@emotion/react",version:"^11"}),s.find((e=>"@emotion/styled"===e.package))||s.push({package:"@emotion/styled",version:"^11"}));const u=[];!0===o.doc.features.app.enabled&&u.push({file:n.resolve(i.projectDir,"src/app/index.js"),dev:!1!==o.doc.features.app.dev}),!0===o.doc.features.cli.enabled&&u.push({file:n.resolve(i.projectDir,"src/cli/index.js"),dev:!1!==o.doc.features.cli.dev});for await(const e of u){const n=e.file;if(!t.existsSync(n))throw new Error(`App file not found: ${n}`);const i=await r({file:n,recursive:!0}),p=!0===o.doc.features.all_parsed_imports?i.all:i.required;for await(const t of p){if("npm"!==t.type)continue;if(s.find((e=>e.package===t.package)))continue;if(c.find((e=>e.package===t.package)))continue;const n=(await a({name:t.package,groupBy:{minor:!0}}))[0][0];(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:`^${n}`,type:"npm"})}}const f={atom:o,packageDependencies:s,packageDevDependencies:c},m=i.templateCommonDir,g=e.compile(t.readFileSync(n.resolve(m,"package.json.njk"),"utf8"),e.configure(m)).render(f),y=i.projectDir,h=n.resolve(y,"package.json");t.writeFileSync(h,g,"utf8");const w=n.resolve(i.project.projectDir,"fnet");if(t.existsSync(w)){const e=n.resolve(i.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const r=t.readdirSync(w);for(const a of r){const r=n.resolve(w,a);if(!t.lstatSync(r).isFile())continue;const o=n.resolve(e,a);t.copyFileSync(r,o)}}},Pe}function Ut(){if(Te)return Ee;Te=1;const e=d,t=u,n=l;return Ee=async({atom:r,setInProgress:a,context:o,packageDependencies:i})=>{if(!0!==r.doc.features.cli.enabled)return;await a({message:"Creating cli."});const s={atom:r,packageDependencies:i},c=o.templateDir,p=t.resolve(o.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await n({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:p,context:s})},Ee}function Bt(){if(Oe)return $e;Oe=1;const e=d,t=u,n=f,r=_;return $e=async({atom:a,setInProgress:o,context:i,packageDependencies:s})=>{await o({message:"Creating rollup file."});const c={atom:a,packageDependencies:s},p=t.resolve(i.projectDir,"src","default/index.js");if(!e.existsSync(p))throw new Error(`Entry file not found: ${p}`);const l=(await r({file:p,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=a.doc.features.rollup_output,u=Object.keys(d);for(let e=0;e<u.length;e++){const t=d[u[e]];if(!0===t.browser&&l.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(l.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<l.length;e++){const n=l[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(l)}}const f=i.templateCommonDir;let m=n.compile(e.readFileSync(t.resolve(f,"rollup.config.mjs.njk"),"utf8"),n.configure(f)).render(c);const g=i.projectDir;let y=t.resolve(g,"rollup.config.mjs");e.writeFileSync(y,m,"utf8")},$e}function zt(){if(Re)return Ce;Re=1;const e=d,t=u,n=f,r=D,a=k,o=x;return Ce=async({atom:i,setInProgress:s,context:c,njEnv:p})=>{if(!0!==i.doc.features.cli.enabled)return;await s({message:"Creating yargs."});let l={};if(l=i.doc.input?i.doc.input:{type:"object",properties:{},required:[]},i.doc.features.cli.fargs&&!1!==i.doc.features.cli.fargs?.enabled){const e=i.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},n={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),l.properties&&(l.properties.fargs=t,l.properties.ftag=n)}const d={options:l,imports:[],atom:i},u=c.templateDir,f=n.compile(e.readFileSync(t.resolve(u,"src/default/to.args.js.njk"),"utf8"),p).render(d),m=c.projectDir,g=t.resolve(m,"src/default/to.args.js");e.writeFileSync(g,f,"utf8");const y=new r({allErrors:!0,useDefaults:!0,formats:{email:!0},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});o(y);const h=y.compile(l),w=a(y,h);e.writeFileSync(t.resolve(m,"src/default/validate_input.js"),w,"utf8")},Ce}function Jt(){if(Fe)return Me;Fe=1;const e=d,t=u,n=f;return Me=async({atom:r,setInProgress:a,context:o,packageDependencies:i})=>{await a({message:"Creating .gitignore"});const s={atom:r,packageDependencies:i},c=o.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),n.configure(c)).render(s),l=o.projectDir,d=t.resolve(l,".gitignore");e.writeFileSync(d,p,"utf8")},Me}function Wt(){if(Le)return qe;Le=1;const e=d,t=u,n=f;return qe=async({atom:r,setInProgress:a,context:o,packageDependencies:i})=>{await a({message:"Creating tsconfig.json."});const s={atom:r,packageDependencies:i},c=o.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),n.configure(c)).render(s),l=o.projectDir,d=t.resolve(l,"tsconfig.json");e.writeFileSync(d,p,"utf8")},qe}function Kt(){if(Ue)return Ne;Ue=1;const e=f,t=d,n=u,r=s;return Ne=async({atom:a,context:o,setInProgress:i,Atom:s})=>{const c="readme.md",p=`Creating ${c}`;if(await i({message:p}),o.project?.readme){const a=o.projectDir,i={content:o.project.readme.doc.content},s=n.resolve(o.project.projectDir,"fnet/how-to.md");if(t.existsSync(s)){const e=t.readFileSync(s,"utf8");i.howto=e}const p=n.resolve(o.project.projectDir,"fnet/input.yaml");if(t.existsSync(p)){const e=await r({file:p,tags:o.tags});i.input=e.content}const l=o.templateCommonDir,d=e.compile(t.readFileSync(n.resolve(l,`${c}.njk`),"utf8"),e.configure(l)).render(i),u=n.resolve(a,`${c}`);t.writeFileSync(u,d,"utf8")}else if(a.id){const r=await s.first({type:"wiki",parent_id:a.id});if(!r||"markdown"!==r.doc?.["content-type"])return;const{content:i,...p}=r.doc,l={content:i},d=o.templateCommonDir,u=e.compile(t.readFileSync(n.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(l),f=o.projectDir,m=n.resolve(f,`${c}`);t.writeFileSync(m,u,"utf8")}},Ne}function Gt(){if(ze)return Be;ze=1;const e=i,t=n;return Be=async({setInProgress:n,context:r})=>{const a=r.projectDir;await n({message:"Prettifiying source files."});let o=t.join("src","**","*");if(0!==e.exec(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:a}).code)throw new Error("Couldnt format files.")}}function Ht(){if(We)return Je;We=1;const e=i;return Je=async({atom:t,setInProgress:n,context:r})=>{if(!t.doc.features.dts_enabled)return;const a=r.projectDir;await n({message:"Creating .d.ts"});if(0!==e.exec("tsc",{cwd:a}).code)throw new Error("Couldnt create .d.ts files.")},Je}function Xt(){if(Ge)return Ke;Ge=1;const e=i;return Ke=async({setInProgress:t,atom:n,context:r})=>{const a=r.projectDir;await t({message:"Installing npm packages."});if(0!==e.exec(`npm install ${n.doc.features.npm_install_flags}`,{cwd:a}).code)throw new Error("Couldnt install npm packages.")},Ke}function Yt(){if(Xe)return He;Xe=1;const e=i;return He=async({setInProgress:t,context:n})=>{const r=n.projectDir;await t({message:"Building main project."});if(0!==e.exec("npm run build",{cwd:r}).code)throw new Error("Couldnt build project.")}}function Zt(){if(It)return Pt;It=1;const e=function(){if(Ze)return Ye;Ze=1;const e=S,n=t;return Ye=async({setInProgress:t,context:r,deploymentProject:a,deploymentProjectTarget:o,buildId:i})=>{await t({message:"Deploying it as gitlab project."});const s=r.projectDir;let c="fnet-to-gitlab";const p=o.params.config||"gitlab",l=await n({name:p,dir:r.projectDir,tags:r.tags});if(!l)throw new Error(`Couldnt load config ${p}`);const{data:d}=l.data;c+=` --projectGroupId=${d.projectGroupId}`,c+=` --projectPath='${s}'`,c+=` --projectName='${o.params.name}'`,c+=` --projectBranch='${o.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==o.dryRun&&(await e({cmd:c}),a.isDirty=!0)}}(),r=function(){if(Ve)return Qe;Ve=1;const e=d,n=u,r=A,a=S,o=t;return Qe=async({setInProgress:t,context:i,deploymentProject:s,deploymentProjectTarget:c,registerToPackageManager:p,yamlTarget:l})=>{await t({message:"Deploying it as gcs package."});const d=i.projectDir,u=n.resolve(d,"package.json"),f=e.readFileSync(u),m=JSON.parse(f);m.name=c.params.name,m.version=r.inc(c.version,"patch"),delete m.scripts,delete m.devDependencies,e.writeFileSync(u,JSON.stringify(m,null,"\t"));const{file:g,data:y}=await o({name:c.config||"gcs",dir:i.projectDir,tags:i.tags});let h="fnet-files-to-gcs";h+=` --projectId='${y.env.GCS_PROJECT_ID}'`,h+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,h+=` --keyFilename='${n.resolve(n.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,h+=` --dir='${d}'`,h+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",h+=` --destDir='${m.name}/${m.version}'`,h+=" --metadata.cacheControl='public, max-age=31536000, immutable'",y.env.DOMAIN&&(h+=` --domain='${y.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(h+=" --dryRun"),await a({cmd:h}),e.writeFileSync(u,f),!0!==c.dryRun&&(s.isDirty=!0,c.version=m.version,l.set("version",m.version),await p({target:c,packageJSON:m}))}}(),s=function(){if(tt)return et;tt=1;const e=d,n=u,r=A,a=i,s=t,p=P,l=c,f=o;return et=async({atom:t,setInProgress:o,context:i,deploymentProject:c,deploymentProjectTarget:d,yamlTarget:u})=>{await o({message:"Deploying it as npm package."});const m=i.projectDir,g=n.resolve(m,"package.json"),y=e.readFileSync(g),h=JSON.parse(y);h.name=d.params.name,h.version=r.inc(d.version,"patch");const w=d.params.bin?.name||d.params.bin;!1!==d.params.bin?.enabled&&w&&"string"==typeof w&&(h.bin={[w]:"dist/cli/esm/index.js",[t.doc.name]:"dist/cli/esm/index.js"}),delete h.scripts,delete h.devDependencies,h.scripts={serve:"npx serve ."},e.writeFileSync(g,JSON.stringify(h,null,"\t"));const v=d.config||"npm";let b=(await s({name:v,dir:i.projectDir,tags:i.tags,optional:!0}))?.data;if(!b){const t=p({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===t.length)throw new Error("Couldnt find schema to create npm config");const r=await l({schema:t[0],tags:i.tags}),a=i.project.projectDir,o=n.resolve(a,".fnet");e.existsSync(o)||e.mkdirSync(o),e.writeFileSync(n.resolve(o,`${v}.fnet`),f.stringify(r)),b=r}if(e.writeFileSync(n.resolve(m,".npmrc"),`//registry.npmjs.org/:_authToken=${b.env.NPM_TOKEN}`),!0!==d.dryRun){if(0!==a.exec("npm publish --access public",{cwd:m}).code)throw new Error("Couldnt publish to npm");e.writeFileSync(g,y),c.isDirty=!0,d.version=h.version,u.set("version",h.version)}},et}(),p=function(){if(rt)return nt;rt=1;const e=d,n=u,r=I,a=f,o=E,i=t;return nt=async({atom:t,setInProgress:s,context:c,deploymentProject:p,deploymentProjectTarget:l,buildId:d,packageDependencies:u,njEnv:f})=>{await s({message:"Deploying it as node-red flow."});const m=c.projectDir,g=c.templateDir,y="workflow"===t.type?"WF":"LIB";let h;if("simple"===l.deploy.template)h={atom:t,packageDependencies:u,red:{tab:{id:l.deploy.id||o.util.generateId(),label:`${y}/${t.id?t.id:r.hostname()}/${t.name}/${l.deploy.name||l.deploy.template}`},function:{id:o.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},inject:{id:o.util.generateId(),...l.params?.inject,payload:"json"===l.params?.inject?.payloadType?`'${JSON.stringify(l.params?.inject?.payload)}'`:l.params?.inject?.payload},debug:{id:o.util.generateId()}}};else if("cronjob"===l.deploy.template){let a=l.params?.schedules?cloneDeep(l.params?.schedules):void 0;a?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),h={atom:t,packageDependencies:u,red:{tab:{id:l.deploy.id||o.util.generateId(),label:`${y}/${t.id?t.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:o.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},cronjob:{id:o.util.generateId(),schedules:a},debug:{id:o.util.generateId()}}}}else{if("http"!==l.deploy.template)return;h={atom:t,packageDependencies:u,red:{tab:{id:l.deploy.id||o.util.generateId(),label:`${y}/${t.id?t.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:o.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},httpin:{id:o.util.generateId(),method:l.params.method||"get",url:l.params.url},httpout:{id:o.util.generateId()},debug:{id:o.util.generateId()}}}}let w=a.compile(e.readFileSync(n.resolve(g,`deploy/node-red/${l.deploy.template}.yaml.njk`),"utf8"),f).render(h);if(e.writeFileSync(n.resolve(m,"node-red.yaml"),w),w=yaml.load(w),!0===l.dryRun)return;p.isDirty=!0;const v=(await i({name:c.redConfig||"red",dir:c.projectDir,tags:c.tags}))?.data,b=l.deploy.url||v.env.RED_URL,_={};if(!1!==l.deploy.auth&&(_.Authorization="Bearer "+atomAccessToken),l.deploy.id)!0===l.actions?.delete?(await axios({method:"DELETE",url:`${b}/flow/${l.deploy.id}`,headers:_}),delete l.actions.delete,delete l.deploy.id,l.enabled=!1):await axios({method:"PUT",url:`${b}/flow/${l.deploy.id}`,data:w,headers:_});else{const e=await axios({method:"POST",url:`${b}/flow`,data:w,headers:_});l.deploy.id=e.data.id}},nt}(),l=function(){if(ot)return at;ot=1;const e=a,r=n,o=t;return at=async({atom:t,Atom:n,setInProgress:a,context:i,packageDependencies:s,deploymentProject:c,deploymentProjectTarget:p})=>{await a({message:"Deploying it as workflow lib."});const l=(await o({name:"atom",dir:i.projectDir,tags:i.tags}))?.data;let d,u,f,m=p.deploy.name.split("/");if(1===m.length)u=l.env.ATOM_LIBRARIES_ID,f=p.deploy.name;else{if(2!==m.length)throw new Error("Wrong name path.");{const e=await n.first({where:{name:m[0],parent_id:l.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");u=e.id,f=m[1]}}if(!0===p.dryRun)return;if(c.isDirty=!0,p.deploy.id){if(d=await n.get({id:p.deploy.id}),!d)return}else{if(d=await n.create({parent_id:u,doc:{name:f,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!d)return;p.deploy.id=d.id}const g=i.projectDir;d.doc.contents=[{content:e.readFileSync(r.resolve(g,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(r.resolve(g,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(r.resolve(g,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],d.doc.name=f,d.doc.dependencies=s,"workflow.lib"===t.type?d.doc.subtype="library":"workflow"===t.type&&(d.doc.subtype="workflow"),d=await n.update(d,{id:d.id})}}(),m=function(){if(st)return it;st=1;const e=t,n=T,r=$,a=A;return it=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as ios-app package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=r(o.params);f.dependencies=r(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},it}(),g=function(){if(pt)return ct;pt=1;const e=t,n=O,r=$,a=A;return ct=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as macos-app package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=r(o.params);f.dependencies=r(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},ct}(),y=function(){if(dt)return lt;dt=1;const e=t,n=C,r=$,a=A;return lt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as electron package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=r(o.params);f.dependencies=r(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},lt}(),h=function(){if(ft)return ut;ft=1;const e=t,n=R,r=$,a=A;return ut=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as webos package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=r(o.params);f.dependencies=r(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},ut}(),v=function(){if(gt)return mt;gt=1;const e=t,n=M,r=$,a=A;return mt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as nextjs package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=r(o.params);f.dependencies=r(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},mt}(),b=function(){if(ht)return yt;ht=1;const e=t,n=F,r=$,a=A;return yt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as docker package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=r(o.params);f.dependencies=r(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},yt}(),_=function(){if(vt)return wt;vt=1;const e=d,n=u,r=A,a=S,o=t,i=w.default;return wt=async({setInProgress:t,context:s,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await t({message:"Deploying it as fnet package."});const d=s.projectDir,u=n.resolve(d,"package.json"),f=e.readFileSync(u),m=JSON.parse(f);m.name=p.params.name,m.version=r.inc(p.version,"patch"),delete m.scripts,delete m.devDependencies,e.writeFileSync(u,JSON.stringify(m,null,"\t"));const{file:g,data:y}=await o({name:p.config||"fnet-package",dir:s.projectDir,tags:s.tags});if(!y.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${g}`);if(!y.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${g}`);if(!y.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${g}`);const h=`${y.env.ATOM_API_URL}/v1/auth/token`,w=y.env.ATOM_API_USERNAME,v=y.env.ATOM_API_PASSWORD;let b=await i({method:"POST",url:h,data:{username:w,password:v},headers:{"Content-Type":"application/json"}});const _=b.data?.access_token;if(!_)throw new Error(`Invalid access_token from ${h}`);let j="fnet-files-to-gcs";if(j+=` --projectId='${y.env.GCS_PROJECT_ID}'`,j+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,j+=` --keyFilename='${n.resolve(n.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,j+=` --dir='${d}'`,j+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",j+=` --destDir='${m.name}/${m.version}'`,j+=" --metadata.cacheControl='public, max-age=31536000, immutable'",y.env.DOMAIN&&(j+=` --domain='${y.env.DOMAIN}'`),!0!==p.dry_run&&!0!==p.params.dry_run||(j+=" --dryRun"),await a({cmd:j}),e.writeFileSync(u,f),!0===p.dryRun)return;c.isDirty=!0,p.version=m.version,l.set("version",m.version);const D=`${y.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(b=await i({method:"POST",url:D,data:{name:m.name,version:m.version,version_domain:y.env.DOMAIN,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${_}`}}),b.data?.error)throw new Error("Failed to publish fnet package.")}}(),j=function(){if(_t)return bt;_t=1;const e=A,n=t,r=w.default;return bt=async({setInProgress:t,context:a,deploymentProject:o,deploymentProjectTarget:i,yamlTarget:s})=>{await t({message:"Deploying it as fnet form."});const{file:c,data:p}=await n({name:i.config||"fnet-form",dir:a.projectDir,tags:a.tags});if(!p.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${c}`);if(!p.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${c}`);if(!p.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${c}`);const l=`${p.env.ATOM_API_URL}/v1/auth/token`,d=p.env.ATOM_API_USERNAME,u=p.env.ATOM_API_PASSWORD;let f=await r({method:"POST",url:l,data:{username:d,password:u},headers:{"Content-Type":"application/json"}});const m=f.data?.access_token;if(!m)throw new Error(`Invalid access_token from ${l}`);o.isDirty=!0;const g=e.inc(i.version,"patch");i.params.version=g,i.version=g,s.set("version",g);const y=`${p.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(f=await r({method:"POST",url:y,data:{name:i.params.name,version:i.params.version,docs:i.params.docs,configs:i.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`}}),f.data?.error)throw new Error("Error publishing fnet form.")}}(),D=function(){if(Dt)return jt;Dt=1;const e=A,n=t,r=w.default,o=a,i=S,s=q;return jt=async({setInProgress:t,context:a,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await t({message:"Deploying it as fnet flow."});const{file:d,data:u}=await n({name:p.config||"fnet-flow",dir:a.project.projectDir,tags:a.tags});if(!u.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!u.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!u.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const f=`${u.env.ATOM_API_URL}/v1/auth/token`,m=u.env.ATOM_API_USERNAME,g=u.env.ATOM_API_PASSWORD;let y=await r({method:"POST",url:f,data:{username:m,password:g},headers:{"Content-Type":"application/json"}});const h=y.data?.access_token;if(!h)throw new Error(`Invalid access_token from ${f}`);c.isDirty=!0;const w=e.inc(p.version,"patch");p.params.version=w,p.version=w,l.set("version",w);const v=`${u.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(y=await r({method:"POST",url:v,data:{name:p.params.name,version:p.params.version,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`}}),y.data?.error)throw new Error("Error publishing fnet flow.");const b=y.data?.upload.id;let _="fnet-dir-zipper";_+=` --sourceDir='${a.project.projectDir}'`,_+=" -p=**/*",_+=" -g",_+=" --stdout_format=json";const j=await i({cmd:_});if(0!==j.code)throw new Error(j.stderr);const D=JSON.parse(j.stdout).path;let k=new s;k.append("file",o.createReadStream(D));const x=await r.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...k.getHeaders(),Authorization:`Bearer ${h}`},data:k});if(x.data?.error)throw new Error("Error uploading fnet flow.")}}(),k=function(){if(xt)return kt;xt=1;const e=A,n=t,r=w.default,o=a,i=S,s=q;return kt=async({setInProgress:t,context:a,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await t({message:"Deploying it as fnet node."});const{file:d,data:u}=await n({name:p.config||"fnet-node",dir:a.project.projectDir,tags:a.tags});if(!u.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!u.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!u.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const f=`${u.env.ATOM_API_URL}/v1/auth/token`,m=u.env.ATOM_API_USERNAME,g=u.env.ATOM_API_PASSWORD;let y=await r({method:"POST",url:f,data:{username:m,password:g},headers:{"Content-Type":"application/json"}});const h=y.data?.access_token;if(!h)throw new Error(`Invalid access_token from ${f}`);c.isDirty=!0;const w=e.inc(p.version,"patch");p.params.version=w,p.version=w,l.set("version",w);const v=`${u.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(y=await r({method:"POST",url:v,data:{name:p.params.name,version:p.params.version,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`}}),y.data?.error)throw new Error("Error publishing fnet node.");const b=y.data?.upload.id;let _="fnet-dir-zipper";_+=` --sourceDir='${a.project.projectDir}'`,_+=" -p=**/*",_+=" -g",_+=" --stdout_format=json";const j=await i({cmd:_});if(0!==j.code)throw new Error(j.stderr);const D=JSON.parse(j.stdout).path;let k=new s;k.append("file",o.createReadStream(D));const x=await r.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...k.getHeaders(),Authorization:`Bearer ${h}`},data:k});if(x.data?.error)throw new Error("Error uploading fnet node.")}}(),x=function(){if(At)return St;At=1;const e=t,n=L,r=$,a=A;return St=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as Rust package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=r(o.params);f.dependencies=r(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},St}();return Pt=async t=>{const{atom:n,packageDependencies:a,context:o,deploymentProjectTarget:i,setInProgress:c,deploymentProject:d,yamlTarget:u}=t;if(!0===i.enabled)if("lib"===i.type)await l({...t});else if("red"===i.type)await p({...t});else if("npm"===i.type)await s({...t});else if("gcs"===i.type)await r({...t});else if("gitlab"===i.type)await e({...t});else if("fnet-package"===i.type)await _({...t});else if("fnet-form"===i.type)await j({...t});else if("fnet-node"===i.type)await k({...t});else if("fnet-flow"===i.type)await D({...t});else{let e;if("nextjs"===i.type?e=v:"webos"===i.type?e=h:"electron"===i.type?e=y:"docker"===i.type?e=b:"ios"===i.type?e=m:"macos"===i.type?e=g:"rust"===i.type&&(e=x),!e)return;await e({atom:n,target:i,onProgress:c,projectDir:o.projectDir,dependencies:a,context:o,yamlTarget:u}),d.isDirty=!0}},Pt}function Qt(){if(Tt)return Et;Tt=1;const e=d,n=u,r=o,a=i,s=f,c=function(){if(W)return J;W=1;const e=m,t=g;return J=async()=>{if(!await t({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const n=e.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await n.connect(),n}}(),{nanoid:p}=y,l=function(){if(G)return K;G=1;const{Api:e}=h,t=w.default,n=v;return K=class{init({config:r,accessToken:a}){return new Promise(((o,i)=>{if(e.set_api_url(r.data.url),a)return e.set_req_token(a),void o(a);t({method:"POST",url:`${r.data.issuer}/protocol/openid-connect/token`,data:n.stringify(r.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((t=>{e.set_req_token(t.data.access_token),o(t.data.access_token)})).catch((t=>{e.set_req_token(),i(t)}))}))}}}(),b=Ft(),j=qt(),D=Lt(),k=Nt(),x=Ut(),S=Bt(),A=zt(),P=Jt(),I=Wt(),E=Kt(),T=Gt(),$=Ht(),O=Xt(),C=Yt(),R=Zt(),{Atom:M}=h,F=N,q=t,L=_,z=U,H=B;return Et=class{#e;#t;#n;#r;#a;#o;#i;#s;#c;#p;#l;#d;#u;#f;#m;#g;#y;constructor(e){this.#e=new l,this.#t=e,this.#o=[],this.#i=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#o,packageDevDependencies:this.#i,setInProgress:this.setInProgress.bind(this),context:this.#t,Atom:M,registerToPackageManager:this.registerToPackageManager.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 c(),this.#c=this.#t.buildId||p(24),this.#y.buildId=this.#c,this.#u=this.#t.mode,this.#f=["all","deploy","build","file"].includes(this.#u),this.#m=["all","deploy","build"].includes(this.#u),this.#g=["all","deploy"].includes(this.#u),this.#l=this.#t.protocol,this.#p="BUILD:"+this.#c,this.#d=(await q({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 b(this.#y),await j(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.#s=await this.#e.init({config:this.#d}),this.#y.atomAccessToken=this.#s)}async initLibrary(){const e=this.#t.id;this.#n=this.#t.project?.libraryAtom||await M.get({id:e});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.lib",this.#y.atom=this.#n}async initLibraryDir(){const t=this.#t.projectDir;let r;const o=["node_modules"];e.existsSync(t)&&e.readdirSync(t).forEach((e=>{o.includes(e)||(r=a.rm("-rf",n.join(t,e)))}));let i=t;if(!e.existsSync(i)&&(r=a.exec(`mkdir "${t}"`),0!==r.code))throw new Error("Couldnt create workflow dir.");if(i=n.join(t,"src"),!e.existsSync(i)&&(r=a.exec(`mkdir "${i}"`),0!==r.code))throw new Error("Couldnt create library/src dir.");if(i=n.join(t,"src","default"),!e.existsSync()&&(r=a.exec(`mkdir "${i}"`),0!==r.code))throw new Error("Couldnt create library/src/default dir.")}async initNunjucks(){const e=this.#t.templateDir;this.#r=s.configure(e,{watch:!1,dev:!0}),this.#y.njEnv=this.#r}async initLibs(){const e=[{name:this.#n.doc.name,type:"atom",parent_id:this.#n.parent_id}];this.#a=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.#o})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const n=e.filter((e=>"atom"===e.type));for(let e=0;e<n.length;e++){const r=n[e],a=await this.findAtomLibrary({url:r.name});r.atom=a;const o=a.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));o?.forEach((e=>{const n=t.find((t=>t.package===e.package));n?"string"==typeof e.path?(n.path||[]).some((t=>t===e.path))||(n.path=n.path||[],n.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(n.path||[]).some((t=>t===e))||(n.path=n.path||[],n.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const t=F({url:e});if(!t)throw new Error(`Invalid package name: ${e}`);if(t.protocol||(t.protocol=this.#l),"ac:"===t.protocol){const n=t.pathname.split("/");if(1===n.length)return await M.first({where:{name:e,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===n.length){const e=await M.first({where:{name:n[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await M.first({where:{name:n[1],parent_id:e.id,type:"workflow.lib"}})}}else if("local:"===t.protocol){const e=this.#n;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=n.resolve(this.#t.projectSrcDir,"index.js"),r=await L({file:t,recursive:!0}),a=e.doc.dependencies,o=!0===this.#n.doc.features.all_parsed_imports?r.all:r.required;for await(const e of o){if("npm"!==e.type)continue;if(a.find((t=>t.package===e.package)))continue;const t=await z({name:e.package,count:1});a.push({package:e.package,subpath:e.subpath,version:t.minorRange,type:"npm"})}return e}}async createAtomLibFiles({libs:t}){await this.setInProgress({message:"Creating external lib files."}),this.#n.typesDir="./types";const r=t.filter((e=>"atom"===e.type));for(let t=0;t<r.length;t++){const a=r[t].atom,o=this.#t.projectDir;if("local:"===a.protocol){const t=n.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.js`),r=n.relative(n.join(this.#t.projectDir,"src","default"),t);if(!e.existsSync(t)){e.mkdirSync(n.dirname(t),{recursive:!0});let r="export default async (args)=>{\n";r+="}",e.writeFileSync(t,r,"utf8")}a.relativePath=r.split(n.sep).join("/"),this.#n.typesDir=`./types/${n.basename(o)}/src`}else{const t=n.join(o,"src","libs",`${a.id}.js`),r=a.doc.contents?.find((e=>"esm"===e.format))||a.doc;e.writeFileSync(t,r.content,"utf8")}}}async createEngine(){await this.setInProgress({message:"Creating engine file."});const t={libs:this.#a.filter((e=>"atom"===e.type)),libraryAtom:this.#n,atom:this.#n},r=this.#t.templateDir,a=s.compile(e.readFileSync(n.resolve(r,n.join("src","default","engine.js.njk")),"utf8"),this.#r).render(t),o=this.#t.projectDir,i=n.resolve(o,n.join("src","default","index.js"));e.writeFileSync(i,a,"utf8")}async createProjectYaml(){const t="node.yaml",a=`Creating ${t}`;await this.setInProgress({message:a});const{content:o,...i}=this.#n.doc,c={content:r.stringify(i)},p=this.#t.templateDir,l=s.compile(e.readFileSync(n.resolve(p,`${t}.njk`),"utf8"),this.#r).render(c),d=this.#t.projectDir,u=n.resolve(d,`${t}`);e.writeFileSync(u,l,"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 n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&await n.save()}}else if(this.#n.id){const e=await M.list({type:"library.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 M.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 r=Object.keys(t.doc||{}),a=n||{};for(let e=0;e<r.length;e++){const n=t.doc[r[e]];n.name=r[e];const o=a.get(r[e]);await R({...this.#y,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:o})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#t.id)return;let r=await M.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});r?(r.doc.versions.splice(0,0,{v:n.version}),await M.update(r,{id:r.id})):r=await M.create({parent_id:this.#d.env.ATOM_PACKAGES_ID,doc:{name:t.params.name,type:"pm",versions:[{v:n.version}]}})}async setInProgress({message:e}){console.log(H.blue(e)),await this._cache_set(this.#p,{status:"IN_PROGRESS",message:e})}async build(){try{this.#f&&(await this.createAtomLibFiles({libs:this.#a}),await this.createEngine(),await this.createProjectYaml(),await E(this.#y),await I(this.#y),await P(this.#y),await A(this.#y),await x(this.#y),await D(this.#y),await S(this.#y),await k(this.#y),await T(this.#y),await $(this.#y),this.#m&&(await O(this.#y),await C(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}}},Et}var Vt=z(function(){if(Ct)return Rt;Ct=1;const f=process.cwd(),{spawn:m}=e;t({name:["redis"],dir:f,optional:!0});const g=n,y=r,h=a,w=o,v=i,b=s,_=t,j=c,D=p,k=l,x=Qt(),S=function(){if(Ot)return $t;Ot=1;const e=d,t=u;return $t=function({baseDir:n=__dirname}){let r=n;for(;r!==t.parse(r).root;){const n=t.join(r,"node_modules");if(e.existsSync(n))return n;r=t.dirname(r)}return null}}()({baseDir:__dirname}),A="win32"===process.platform?";":":";process.env.PATH=`${g.join(S,"/.bin")}${A}${process.env.PATH}`;let P=y(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=g.resolve(S,"@fnet/cli-project-node/dist/template/project"),n=g.resolve(f,e.name);h.existsSync(n)||h.mkdirSync(n),await k({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let r=v.exec("fnode build",{cwd:n});if(0!==r.code)throw new Error("Failed to build project.");if(v.which("git")&&(r=v.exec("git init --initial-branch=main",{cwd:n}),0!==r.code))throw new Error("Failed to initialize git.");if(v.which("code")&&e.vscode&&(r=v.exec(`cd ${n} && code .`),0!==r.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=g.resolve(S,"@fnet/cli-project-node/dist/template/project"),n=process.cwd();if(e.name=g.basename(n),e.update){if(await k({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0}),0!==v.exec("fnode 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 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 E(e),n=new x(t);await n.init(),await n.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 E({...e,mode:"all"}),n=new x(t);await n.init(),await n.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 E({...e,mode:"file"}),n=new x(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}}));function I(e,{name:t,bin:n,preArgs:r=[]}){return e.command(`${t||n} [commands..]`,`${n} ${r.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const t=await E(e),{projectDir:a}=t,o=process.argv.slice(3);m(n,[...r,...o],{cwd:a,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function E(e){if(e.id)return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",templateDir:g.resolve(S,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:g.resolve(S,"./@fnet/cli-project-common/dist/template/default"),projectDir:g.resolve(f,`./.output/${e.id}`),tags:e.ftag};{const t=await async function({tags:e}){const t=g.resolve(f,"node.yaml");if(!h.existsSync(t))throw new Error("node.yaml file not found in current directory.");const{raw:n,parsed:r}=await b({file:t,tags:e}),a=g.dirname(t),o={libraryAtom:{doc:{...r},fileName:"index"},projectDir:a,projectFilePath:t,projectFileContent:n,projectFileParsed:r};let i=g.resolve(a,"fnet/targets.yaml");if(!h.existsSync(i)&&(i=g.resolve(a,"node.devops.yaml"),h.existsSync(i))){const e=g.resolve(a,"fnet");h.existsSync(e)||h.mkdirSync(e),h.copyFileSync(i,g.resolve(a,"fnet/targets.yaml")),h.unlinkSync(i)}if(h.existsSync(i)){const{raw:t,parsed:n}=await b({file:i,tags:e}),r=w.parseDocument(t);o.devops={filePath:i,fileContent:t,yamlDocument:r,doc:{...n},type:"library.deploy",save:async()=>{h.writeFileSync(o.devops.filePath,r.toString())}}}const s=g.resolve(a,"readme.md");if(h.existsSync(s)){const e=h.readFileSync(s,"utf8");o.readme={filePath:s,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return o}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:g.resolve(S,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:g.resolve(S,"./@fnet/cli-project-common/dist/template/default"),projectDir:g.resolve(t.projectDir,"./.workspace"),projectSrcDir:g.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return P=P.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 E(e),{project:n}=t,{projectDir:r,projectFileParsed:a}=n,o=a.input;if(!o)throw new Error("Config schema not found in project file.");const i=await j({schema:o,format:"yaml"}),s=g.resolve(r,".fnet");h.existsSync(s)||h.mkdirSync(s);const c=g.resolve(s,`${e.name}.fnet`);h.writeFileSync(c,i)}catch(e){console.error(e.message),process.exit(1)}})),P=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 E(e),{project:n}=t,{projectDir:r,projectFileParsed:a}=n,o=a.input;if(!o)throw new Error("Config schema not found in project file.");const i=g.resolve(r,".fnet"),s=g.resolve(i,`${e.name}.fnet`),c=await j({schema:o,format:"yaml",ref:s});h.existsSync(i)||h.mkdirSync(i),h.writeFileSync(s,c)}catch(e){console.error(e.message),process.exit(1)}}))}(P),P=I(P,{bin:"npm"}),P=I(P,{bin:"node"}),P=I(P,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),P=I(P,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),P=I(P,{name:"app",bin:"npm",preArgs:["run","app","--"]}),P=I(P,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),P=I(P,{bin:"npx"}),P=I(P,{bin:"cdk"}),P=I(P,{bin:"aws"}),P=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 E(e),{projectDir:r}=t,a=e.config,o=await _({name:a,dir:r,transferEnv:!1,optional:!0,tags:t.tags}),i=o?.data?.env||void 0,s=e.command,c=process.argv.slice(5);m(s,[...n,...c],{cwd:r,stdio:"inherit",shell:!0,env:{...process.env,...i}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(P,{name:"with"}),P=function(e,{name:t,preArgs:n=[]}){return e.command(`${t} group [options..]`,"Run a command group.",(e=>e.positional("group",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await E(e),{project:n}=t,{projectFileParsed:r}=n,a=r.commands;if(!a)throw new Error("Commands not found in project file.");const o=a[e.group];if(!o)throw new Error(`Command group '${e.group}' not found in project file.`);await D({commands:o})}catch(e){console.error(e.message),process.exit(1)}}))}(P,{name:"run"}),P.demandCommand(1,"You need at least one command before moving on").help().argv,Rt}());module.exports=Vt;
2
+ "use strict";var e=require("child_process"),t=require("@fnet/config"),r=require("path"),a=require("yargs/yargs"),n=require("fs"),o=require("yaml"),i=require("shelljs"),s=require("@fnet/yaml"),c=require("@fnet/object-from-schema"),p=require("@fnet/shell-flow"),l=require("@flownet/lib-render-templates-dir"),d=require("node:fs"),u=require("node:path"),f=require("nunjucks"),m=require("redis"),g=require("@flownet/lib-is-redis-online"),y=require("nanoid"),h=require("@flownet/lib-atom-api-js"),w=require("axios"),v=require("qs"),b=require("lodash.merge"),_=require("@flownet/lib-parse-imports-js"),j=require("@flownet/lib-list-npm-versions"),k=require("ajv/dist/2020"),D=require("ajv/dist/standalone"),x=require("ajv-formats"),S=require("@fnet/shell"),P=require("semver"),A=require("@fnet/up-list-files"),E=require("node:os"),T=require("@node-red/util"),$=require("@flownet/lib-to-ios-app"),I=require("lodash.clonedeep"),O=require("@flownet/lib-to-macos-app"),C=require("@flownet/lib-to-electron"),R=require("@flownet/lib-to-webos"),M=require("@flownet/lib-to-nextjs"),F=require("@flownet/lib-to-docker"),q=require("form-data"),N=require("@fnet/to-rust"),L=require("@flownet/lib-parse-node-url"),U=require("@fnet/npm-pick-versions"),z=require("@fnet/list-files"),B=require("chalk"),J=require("object-hash");function W(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var K,G,H,X,Y,Z,Q,V,ee,te,re,ae,ne,oe,ie,se,ce,pe,le,de,ue,fe,me,ge,ye,he,we,ve,be,_e,je,ke,De,xe,Se,Pe,Ae,Ee,Te,$e,Ie,Oe,Ce,Re,Me,Fe,qe,Ne,Le,Ue,ze,Be,Je,We,Ke,Ge,He,Xe,Ye,Ze,Qe,Ve,et,tt,rt,at,nt,ot,it,st,ct,pt,lt,dt,ut,ft,mt,gt,yt,ht,wt,vt,bt,_t,jt,kt,Dt,xt,St,Pt,At,Et,Tt,$t,It,Ot,Ct,Rt,Mt,Ft={};function qt(){if(Z)return Y;Z=1;const e=b;return Y=({feature:t,features:r,packageDevDependencies:a})=>{const{name:n,packages:o,options:i,extraCheck:s,explicit:c}=t,p=`${n}_enabled`,l=r.rollup_output||{},d=Object.keys(l);let u=i||{};const f=r[n]?.options;f&&(u=e(u,f));const m=!r[n]||!1===r[n]?.enabled;d.forEach((e=>{const t=r.rollup_output[e];if(t){if(Reflect.has(t,n)){if(m||!t[n]||!1===t[n]?.enabled)return void delete t[n];!0===t[n]&&(t[n]={enabled:!0,options:u})}else{if(m||c||!1===r[p])return;t[n]={enabled:!0}}t[n]=t[n]||{},t[n].options={...u,...t[n].options}}}));let g=d.some((e=>!0===r.rollup_output[e][n]?.enabled));s&&(g=s()&&g),r[p]=g,g&&o.forEach((e=>a.push({package:e[0],version:e[1]})))}}function Nt(){if(xe)return De;xe=1;const e=b,t=d,r=u,a=_,n=function(){if(V)return Q;V=1;const e=qt();return Q=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features;e({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:n,packageDevDependencies:a})},Q}(),o=function(){if(te)return ee;te=1;const e=qt();return ee=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features;e({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:n,packageDevDependencies:a})},ee}(),i=function(){if(ae)return re;ae=1;const e=qt();return re=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features;e({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:n,packageDevDependencies:a})},re}(),s=function(){if(oe)return ne;oe=1;const e=qt();return ne=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features;e({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:n,packageDevDependencies:a})},ne}(),c=function(){if(se)return ie;se=1;const e=qt();return ie=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features;e({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:n,packageDevDependencies:a})},ie}(),p=function(){if(pe)return ce;pe=1;const e=qt();return ce=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features;e({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:n,packageDevDependencies:a})},ce}(),l=function(){if(de)return le;de=1;const e=qt();return le=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:n,packageDevDependencies:a})},le}(),f=function(){if(fe)return ue;fe=1;const e=qt();return ue=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:n,packageDevDependencies:a})},ue}(),m=function(){if(ge)return me;ge=1;const e=qt();return me=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:n,packageDevDependencies:a})},me}(),g=function(){if(he)return ye;he=1;const e=qt();return ye=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features;e({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:n,packageDevDependencies:a})},ye}(),y=function(){if(ve)return we;ve=1;const e=qt();return we=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:n,packageDevDependencies:a})},we}(),h=function(){if(_e)return be;_e=1;const e=qt();return be=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features,o={};!0===n.app?.enabled&&(o.targets=o.targets||[],o.targets.push({src:"./src/app/index.html",dest:n.app.dir}),Reflect.has(n.app,"copy")||Reflect.has(n,"copy")||(n.copy=!0)),e({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:o},features:n,packageDevDependencies:a})},be}(),w=function(){if(ke)return je;ke=1;const e=qt();return je=t=>{const{atom:r,packageDevDependencies:a}=t,n=r.doc.features,o=n.css&&!1!==n.css.enabled;let i=[];o&&(i.push(["rollup-plugin-postcss","^4"]),i.push(["sass","^1.66"]),(n.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":i.push(["postcss-import","^15"]);break;case"postcss-url":i.push(["postcss-url","^10"]);break;case"postcss-preset-env":i.push(["postcss-preset-env","^9"]);break;case"autoprefixer":i.push(["autoprefixer","^10"]);break;case"cssnano":i.push(["cssnano","^6"])}}))),e({feature:{name:"css",packages:i},features:n,packageDevDependencies:a})},je}();function v({dir:e,name:a="index"}){let n=r.resolve(e,`./${a}.tsx`);if(t.existsSync(n)||(n=r.resolve(e,`./${a}.ts`)),t.existsSync(n)||(n=r.resolve(e,`./${a}.jsx`)),t.existsSync(n)||(n=r.resolve(e,`./${a}.js`)),!t.existsSync(n))return{};const o=n,i=r.extname(n);return{file:o,ext:i,ts:".ts"===i||".tsx"===i,name:a}}return De=async t=>{const{atom:d,context:u,setProgress:b}=t;b("Initializing features..."),d.doc.features=d.doc.features||{};const _=d.doc.features;_.project=_.project||{},_.project.format=_.project.format||_.project_format||"esm",_.project_format=_.project.format,_.dts_enabled=!0===_.dts||void 0!==_.dts&&!1!==_.dts,_.hasOwnProperty("all_parsed_imports")||(_.all_parsed_imports=!0);const j=r.resolve(u.project.projectDir),k=v({dir:r.resolve(j,"./app")});if(k.file){b("Parsing app entry imports...");let e=await a({file:k.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));_.app_uses_jsx=t,_.app_has_entry=!0,e=await a({file:k.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),_.app_entry_uses_jsx=t,_.app_entry_is_ts=k.ts,_.app_entry_ext=k.ext}const D=v({dir:r.resolve(j,"./cli")});if(D.file){b("Parsing cli entry imports...");let e=await a({file:D.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));_.cli_uses_jsx=t,_.cli_has_entry=!0,e=await a({file:D.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),_.cli_entry_uses_jsx=t,_.cli_entry_is_ts=D.ts,_.cli_entry_ext=D.ext}if("workflow.lib"===d.type){const e=v({dir:r.resolve(j,"./src")});if(e.file){b("Parsing src entry imports...");let t=await a({file:e.file,recursive:!0}),r=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));_.src_uses_jsx=r,_.src_has_entry=!0,t=await a({file:e.file}),r=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),_.src_entry_uses_jsx=r,_.src_entry_is_ts=e.ts,_.src_entry_ext=e.ext}}const x=Reflect.has(_,"app_entry_uses_jsx")?!0===_.app_entry_uses_jsx:!0===_.src_entry_uses_jsx,S=Reflect.has(_,"cli_entry_uses_jsx")?!0===_.cli_entry_uses_jsx:!0===_.src_entry_uses_jsx;_.form_enabled=!0===d.doc.form||!0===d.doc.form?.enabled||!0===_.form||!0===_.form?.enabled,_.multiple_enabled=_.multiple_enabled||!0===_.multiple||!0===_.multiple?.enabled,!1===_.app?_.app={enabled:!1}:!0===_.app?_.app={enabled:!0,extend:!0===_.app_has_entry,export:!0,react:x}:_.app={enabled:!0,extend:!0===_.app_has_entry,export:!0,react:x,..._.app||{}},_.app.enabled=!0===_.app.enabled&&(!0===d.doc.features.form_enabled||!0===_.app.extend||!0===_.app.enabled),_.app.format=_.app.format||"esm",_.app.folder=_.app.folder||_.app.format||"default",!1===_.cli?_.cli={enabled:!1}:!0===_.cli?_.cli={enabled:!0,extend:!0===_.cli_has_entry,export:!0,react:S}:_.cli={enabled:!0,extend:!0===_.cli_has_entry,export:!0,react:S,..._.cli||{}},_.cli.enabled=!0===_.cli.enabled&&(!1===d.doc.features.form_enabled||!0===_.cli.extend||!0===_.cli.enabled),_.cli.format=_.cli.format||"esm",_.cli.folder=_.cli.folder||_.cli.folder||"esm",_.cli.node_options=_.cli.node?.options||_.cli.node_options||"",_.json=_.cli.enabled||_.json;const P={cjs:{format:"cjs",context:_.form_enabled?"window":"global",babel:!0===_.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==_.cjs,copy:!1},esm:{format:"esm",context:_.form_enabled?"window":"global",babel:!0===_.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!1!==_.esm,copy:!0},iife:{format:"iife",context:_.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==_.iife,terser:!0,copy:!1}};!0===_.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===_.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===_.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===_.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===_.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===_.app.enabled&&(_.app.dir=`./dist/app/${_.app.folder}`,P.app={format:_.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:_.app.dir,terser:!0,output_exports:!1===_.app.export?"none":"auto"}),!0===_.cli.enabled&&(_.cli.dir=`./dist/cli/${_.cli.folder}`,P.cli={format:_.cli.format,context:"global",babel:!0===_.src_uses_jsx||!0===_.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:_.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===_.cli.export?"none":"auto"});const A={server:".",startPath:`${r.normalize(_.app.dir||".")}`,files:[r.normalize("./dist/**/*")],cors:!0,open:!1};_.babel_options=e({targets:{browsers:"last 9 versions, not dead",node:"18"}},_.babel_options||_.babel?.options),_.browsersync_options=e(A,_.browsersync_options||_.browsersync?.options||{}),_.replace_options=e({},_.replace_options||_.replace?.options||{}),Reflect.has(_.browsersync_options,"proxy")&&delete _.browsersync_options.server,_.rollup=_.rollup||{},_.rollup_output=e(P,_.rollup_output||_.rollup?.output||{}),_.preact_enabled=!0===_.preact||_.preact&&!1!==_.preact?.enabled;let E=Object.keys(P);for(const t of E){const r=P[t];r&&(!1!==_.rollup[t]?(r.babel_options=r.babel_options||_.babel_options,r.browsersync_options=e(_.browsersync_options,r.browsersync_options),r.replace_options=e(_.replace_options,r.replace_options),_.preact_enabled&&(r.alias_enabled=!0,r.alias=r.alias||{},r.alias.entries=r.alias.entries||{},r.alias.entries.react="preact/compat",r.alias.entries["react-dom"]="preact/compat"),_.form_enabled&&(r.babel=!0)):delete _.rollup_output[t])}E=Object.keys(_.rollup_output),_.babel_enabled=E.some((e=>!0===_.rollup_output[e].babel)),_.browser_enabled=E.some((e=>!0===_.rollup_output[e].babel)),_.browsersync_enabled=!1!==_.browsersync&&E.some((e=>!0===_.rollup_output[e].browsersync)),_.browsersync_enabled=_.browsersync_enabled&&_.app.enabled,_.dependency_auto_enabled=!1!==_.dependency_auto&&!1!==_.dependency_auto?.enabled,_.npm_install_flags=_.npm_install_flags||"",_.react_version=_.react_version||_.react?.version||18,w(t),h(t),y(t),g(t),m(t),l(t),f(t),p(t),c(t),s(t),i(t),n(t),o(t)},De}function Lt(){if(Pe)return Se;Pe=1;const e=j;return Se=async({atom:t,packageDependencies:r,packageDevDependencies:a,setProgress:n})=>{if(n("Initializing dependencies"),"workflow"===t.type&&(r.push({package:"get-value",version:"^3"}),r.push({package:"set-value",version:"^4"})),t.doc.features.form_enabled&&t.doc.features.dependency_auto_enabled){let a="^18.2";n("Fetching React versions");a=`^${(await e({name:"react",groupBy:{major:!0}})).find((e=>e[0]===t.doc.features.react_version.toString()))[0]}`,r.push({package:"react",version:a}),r.push({package:"react-dom",version:a}),"workflow"===t.type&&(r.push({package:"@flownet/react-app",version:"^0.1"}),r.push({package:"@flownet/react-app-state",version:"^0.1"}))}t.doc.features.preact_enabled&&r.push({package:"preact",version:"^10"}),!0===t.doc.features.cli.enabled&&(r.push({package:"@fnet/args",version:"^0.1"}),a.push({package:"ajv",version:"^8"}),t.doc.features.cli.fargs&&!1!==t.doc.features.cli.fargs?.enabled&&r.push({package:"@fnet/config",version:"0.2.21"})),t.doc.features.render&&!1!==t.doc.features.render.enabled&&a.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:"^28"}),a.push({package:"@rollup/plugin-node-resolve",version:"^15"}),a.push({package:"@rollup/plugin-replace",version:"^6"}),a.push({package:"rollup",version:"^4"}),t.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"}),t.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"}),t.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.10"}),t.doc.features.browsersync_enabled&&a.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})},Se}function Ut(){if(Ee)return Ae;Ee=1;const e=d,t=u,r=l;return Ae=async({atom:a,setProgress:n,context:o,packageDependencies:i})=>{if(!0!==a.doc.features.app.enabled)return;await n({message:"Creating app folder"});const s={atom:a,packageDependencies:i,ts:Date.now()},c=o.templateDir,p=t.resolve(o.projectDir,"src/app");e.existsSync(p)||e.mkdirSync(p,{recursive:!0});let l=["index.js.njk"];!1!==a.doc.features.app.html&&l.push("index.html.njk"),await r({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:s})},Ae}function zt(){if($e)return Te;$e=1;const e=f,t=d,r=u,a=_,n=j;return Te=async({atom:o,context:i,packageDependencies:s,packageDevDependencies:c,setProgress:p})=>{await p({message:"Creating package.json."});s.filter((e=>!0===e.dev)).forEach((e=>{c.find((t=>t.package===e.package))||c.push(e);const t=s.findIndex((t=>t.package===e.package));s.splice(t,1)}));const l=s.find((e=>"react"===e.package)),d=s.find((e=>"react-dom"===e.package));l&&!d?s.push({package:"react-dom",version:l.version}):l&&d&&(d.version=l.version),l&&o.doc.features.react_version>=17&&(s.find((e=>"@emotion/react"===e.package))||s.push({package:"@emotion/react",version:"^11"}),s.find((e=>"@emotion/styled"===e.package))||s.push({package:"@emotion/styled",version:"^11"}));const u=[];!0===o.doc.features.app.enabled&&u.push({file:r.resolve(i.projectDir,"src/app/index.js"),dev:!1!==o.doc.features.app.dev}),!0===o.doc.features.cli.enabled&&u.push({file:r.resolve(i.projectDir,"src/cli/index.js"),dev:!1!==o.doc.features.cli.dev});for await(const e of u){const r=e.file;if(!t.existsSync(r))throw new Error(`App file not found: ${r}`);const i=await a({file:r,recursive:!0}),p=!0===o.doc.features.all_parsed_imports?i.all:i.required;for await(const t of p){if("npm"!==t.type)continue;if(s.find((e=>e.package===t.package)))continue;if(c.find((e=>e.package===t.package)))continue;const r=(await n({name:t.package,groupBy:{minor:!0}}))[0][0];(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:`^${r}`,type:"npm"})}}const f={atom:o,packageDependencies:s,packageDevDependencies:c},m=i.templateCommonDir,g=e.compile(t.readFileSync(r.resolve(m,"package.json.njk"),"utf8"),e.configure(m)).render(f),y=i.projectDir,h=r.resolve(y,"package.json");t.writeFileSync(h,g,"utf8");const w=r.resolve(i.project.projectDir,"fnet");if(t.existsSync(w)){const e=r.resolve(i.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const a=t.readdirSync(w);for(const n of a){const a=r.resolve(w,n);if(!t.lstatSync(a).isFile())continue;const o=r.resolve(e,n);t.copyFileSync(a,o)}}},Te}function Bt(){if(Oe)return Ie;Oe=1;const e=d,t=u,r=l;return Ie=async({atom:a,setProgress:n,context:o,packageDependencies:i})=>{if(!0!==a.doc.features.cli.enabled)return;await n({message:"Creating cli."});const s={atom:a,packageDependencies:i},c=o.templateDir,p=t.resolve(o.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await r({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:p,context:s})},Ie}function Jt(){if(Re)return Ce;Re=1;const e=d,t=u,r=f,a=_;return Ce=async({atom:n,setProgress:o,context:i,packageDependencies:s})=>{await o({message:"Creating rollup file."});const c={atom:n,packageDependencies:s},p=t.resolve(i.projectDir,"src","default/index.js");if(!e.existsSync(p))throw new Error(`Entry file not found: ${p}`);const l=(await a({file:p,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=n.doc.features.rollup_output,u=Object.keys(d);for(let e=0;e<u.length;e++){const t=d[u[e]];if(!0===t.browser&&l.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(l.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<l.length;e++){const r=l[e];t.alias.entries[r]=`node:${r}`,t.alias.entries[`node:${r}`]=r}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(l)}}const f=i.templateCommonDir;let m=r.compile(e.readFileSync(t.resolve(f,"rollup.config.mjs.njk"),"utf8"),r.configure(f)).render(c);const g=i.projectDir;let y=t.resolve(g,"rollup.config.mjs");e.writeFileSync(y,m,"utf8")},Ce}function Wt(){if(Fe)return Me;Fe=1;const e=d,t=u,r=f,a=k,n=D,o=x;return Me=async({atom:i,setProgress:s,context:c,njEnv:p})=>{if(!0!==i.doc.features.cli.enabled)return;await s({message:"Creating yargs."});let l={};if(l=i.doc.input?i.doc.input:{type:"object",properties:{},required:[]},i.doc.features.cli.fargs&&!1!==i.doc.features.cli.fargs?.enabled){const e=i.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},r={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),l.properties&&(l.properties.fargs=t,l.properties.ftag=r)}const d={options:l,imports:[],atom:i},u=c.templateDir,f=r.compile(e.readFileSync(t.resolve(u,"src/default/to.args.js.njk"),"utf8"),p).render(d),m=c.projectDir,g=t.resolve(m,"src/default/to.args.js");e.writeFileSync(g,f,"utf8");const y=new a({allErrors:!0,useDefaults:!0,formats:{email:!0},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});o(y);const h=y.compile(l),w=n(y,h);e.writeFileSync(t.resolve(m,"src/default/validate_input.js"),w,"utf8")},Me}function Kt(){if(Ne)return qe;Ne=1;const e=d,t=u,r=f;return qe=async({atom:a,setProgress:n,context:o,packageDependencies:i})=>{await n({message:"Creating .gitignore"});const s={atom:a,packageDependencies:i},c=o.templateCommonDir,p=r.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),r.configure(c)).render(s),l=o.projectDir,d=t.resolve(l,".gitignore");e.writeFileSync(d,p,"utf8")},qe}function Gt(){if(Ue)return Le;Ue=1;const e=d,t=u,r=f;return Le=async({atom:a,setProgress:n,context:o,packageDependencies:i})=>{await n({message:"Creating tsconfig.json."});const s={atom:a,packageDependencies:i},c=o.templateCommonDir,p=r.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),r.configure(c)).render(s),l=o.projectDir,d=t.resolve(l,"tsconfig.json");e.writeFileSync(d,p,"utf8")},Le}function Ht(){if(Be)return ze;Be=1;const e=f,t=d,r=u,a=s;return ze=async({atom:n,context:o,setProgress:i,Atom:s})=>{const c="readme.md",p=`Creating ${c}`;if(await i({message:p}),o.project?.readme){const n=o.projectDir,i={content:o.project.readme.doc.content},s=r.resolve(o.project.projectDir,"fnet/how-to.md");if(t.existsSync(s)){const e=t.readFileSync(s,"utf8");i.howto=e}const p=r.resolve(o.project.projectDir,"fnet/input.yaml");if(t.existsSync(p)){const e=await a({file:p,tags:o.tags});i.input=e.content}const l=o.templateCommonDir,d=e.compile(t.readFileSync(r.resolve(l,`${c}.njk`),"utf8"),e.configure(l)).render(i),u=r.resolve(n,`${c}`);t.writeFileSync(u,d,"utf8")}else if(n.id){const a=await s.first({type:"wiki",parent_id:n.id});if(!a||"markdown"!==a.doc?.["content-type"])return;const{content:i,...p}=a.doc,l={content:i},d=o.templateCommonDir,u=e.compile(t.readFileSync(r.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(l),f=o.projectDir,m=r.resolve(f,`${c}`);t.writeFileSync(m,u,"utf8")}},ze}function Xt(){if(We)return Je;We=1;const e=i,t=r;return Je=async({setProgress:r,context:a})=>{const n=a.projectDir;await r({message:"Prettifiying source files."});let o=t.join("src","**","*");if(0!==e.exec(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:n}).code)throw new Error("Couldnt format files.")}}function Yt(){if(Ge)return Ke;Ge=1;const e=i;return Ke=async({atom:t,setProgress:r,context:a})=>{if(!t.doc.features.dts_enabled)return;const n=a.projectDir;await r({message:"Creating .d.ts"});if(0!==e.exec("tsc",{cwd:n}).code)throw new Error("Couldnt create .d.ts files.")},Ke}function Zt(){if(Xe)return He;Xe=1;const e=i;return He=async({setProgress:t,atom:r,context:a})=>{const n=a.projectDir;await t({message:"Installing npm packages."});if(0!==e.exec(`npm install ${r.doc.features.npm_install_flags}`,{cwd:n}).code)throw new Error("Couldnt install npm packages.")},He}function Qt(){if(Ze)return Ye;Ze=1;const e=i;return Ye=async({setProgress:t,context:r})=>{const a=r.projectDir;await t({message:"Building main project."});if(0!==e.exec("npm run build",{cwd:a}).code)throw new Error("Couldnt build project.")}}function Vt(){if($t)return Tt;$t=1;const e=function(){if(Ve)return Qe;Ve=1;const e=S,r=t;return Qe=async({setProgress:t,context:a,deploymentProject:n,deploymentProjectTarget:o,buildId:i})=>{await t({message:"Deploying it as gitlab project."});const s=a.projectDir;let c="fnet-to-gitlab";const p=o.params.config||"gitlab",l=await r({name:p,dir:a.projectDir,tags:a.tags});if(!l)throw new Error(`Couldnt load config ${p}`);const{data:d}=l.data;c+=` --projectGroupId=${d.projectGroupId}`,c+=` --projectPath='${s}'`,c+=` --projectName='${o.params.name}'`,c+=` --projectBranch='${o.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==o.dryRun&&(await e({cmd:c}),n.isDirty=!0)}}(),a=function(){if(tt)return et;tt=1;const e=d,r=u,a=P,n=S,o=t;return et=async({setProgress:t,context:i,deploymentProject:s,deploymentProjectTarget:c,registerToPackageManager:p,yamlTarget:l})=>{await t({message:"Deploying it as gcs package."});const d=i.projectDir,u=r.resolve(d,"package.json"),f=e.readFileSync(u),m=JSON.parse(f);m.name=c.params.name,m.version=a.inc(c.version,"patch"),delete m.scripts,delete m.devDependencies,e.writeFileSync(u,JSON.stringify(m,null,"\t"));const{file:g,data:y}=await o({name:c.config||"gcs",dir:i.projectDir,tags:i.tags});let h="fnet-files-to-gcs";h+=` --projectId='${y.env.GCS_PROJECT_ID}'`,h+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,h+=` --keyFilename='${r.resolve(r.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,h+=` --dir='${d}'`,h+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",h+=` --destDir='${m.name}/${m.version}'`,h+=" --metadata.cacheControl='public, max-age=31536000, immutable'",y.env.DOMAIN&&(h+=` --domain='${y.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(h+=" --dryRun"),await n({cmd:h}),e.writeFileSync(u,f),!0!==c.dryRun&&(s.isDirty=!0,c.version=m.version,l.set("version",m.version),await p({target:c,packageJSON:m}))}}(),s=function(){if(at)return rt;at=1;const e=d,r=u,a=P,n=i,s=t,p=A,l=c,f=o;return rt=async({atom:t,setProgress:o,context:i,deploymentProject:c,deploymentProjectTarget:d,yamlTarget:u})=>{await o({message:"Deploying it as npm package."});const m=i.projectDir,g=r.resolve(m,"package.json"),y=e.readFileSync(g),h=JSON.parse(y);h.name=d.params.name,h.version=a.inc(d.version,"patch");const w=d.params.bin?.name||d.params.bin;!1!==d.params.bin?.enabled&&w&&"string"==typeof w&&(h.bin={[w]:"dist/cli/esm/index.js",[t.doc.name]:"dist/cli/esm/index.js"}),delete h.scripts,delete h.devDependencies,h.scripts={serve:"npx serve ."},e.writeFileSync(g,JSON.stringify(h,null,"\t"));const v=d.config||"npm";let b=(await s({name:v,dir:i.projectDir,tags:i.tags,optional:!0}))?.data;if(!b){const t=p({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===t.length)throw new Error("Couldnt find schema to create npm config");const a=await l({schema:t[0],tags:i.tags}),n=i.project.projectDir,o=r.resolve(n,".fnet");e.existsSync(o)||e.mkdirSync(o),e.writeFileSync(r.resolve(o,`${v}.fnet`),f.stringify(a)),b=a}if(e.writeFileSync(r.resolve(m,".npmrc"),`//registry.npmjs.org/:_authToken=${b.env.NPM_TOKEN}`),!0!==d.dryRun){if(0!==n.exec("npm publish --access public",{cwd:m}).code)throw new Error("Couldnt publish to npm");e.writeFileSync(g,y),c.isDirty=!0,d.version=h.version,u.set("version",h.version)}},rt}(),p=function(){if(ot)return nt;ot=1;const e=d,r=u,a=E,n=f,o=T,i=t;return nt=async({atom:t,setProgress:s,context:c,deploymentProject:p,deploymentProjectTarget:l,buildId:d,packageDependencies:u,njEnv:f})=>{await s({message:"Deploying it as node-red flow."});const m=c.projectDir,g=c.templateDir,y="workflow"===t.type?"WF":"LIB";let h;if("simple"===l.deploy.template)h={atom:t,packageDependencies:u,red:{tab:{id:l.deploy.id||o.util.generateId(),label:`${y}/${t.id?t.id:a.hostname()}/${t.name}/${l.deploy.name||l.deploy.template}`},function:{id:o.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(r.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},inject:{id:o.util.generateId(),...l.params?.inject,payload:"json"===l.params?.inject?.payloadType?`'${JSON.stringify(l.params?.inject?.payload)}'`:l.params?.inject?.payload},debug:{id:o.util.generateId()}}};else if("cronjob"===l.deploy.template){let n=l.params?.schedules?cloneDeep(l.params?.schedules):void 0;n?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),h={atom:t,packageDependencies:u,red:{tab:{id:l.deploy.id||o.util.generateId(),label:`${y}/${t.id?t.id:a.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:o.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(r.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},cronjob:{id:o.util.generateId(),schedules:n},debug:{id:o.util.generateId()}}}}else{if("http"!==l.deploy.template)return;h={atom:t,packageDependencies:u,red:{tab:{id:l.deploy.id||o.util.generateId(),label:`${y}/${t.id?t.id:a.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:o.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(r.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},httpin:{id:o.util.generateId(),method:l.params.method||"get",url:l.params.url},httpout:{id:o.util.generateId()},debug:{id:o.util.generateId()}}}}let w=n.compile(e.readFileSync(r.resolve(g,`deploy/node-red/${l.deploy.template}.yaml.njk`),"utf8"),f).render(h);if(e.writeFileSync(r.resolve(m,"node-red.yaml"),w),w=yaml.load(w),!0===l.dryRun)return;p.isDirty=!0;const v=(await i({name:c.redConfig||"red",dir:c.projectDir,tags:c.tags}))?.data,b=l.deploy.url||v.env.RED_URL,_={};if(!1!==l.deploy.auth&&(_.Authorization="Bearer "+atomAccessToken),l.deploy.id)!0===l.actions?.delete?(await axios({method:"DELETE",url:`${b}/flow/${l.deploy.id}`,headers:_}),delete l.actions.delete,delete l.deploy.id,l.enabled=!1):await axios({method:"PUT",url:`${b}/flow/${l.deploy.id}`,data:w,headers:_});else{const e=await axios({method:"POST",url:`${b}/flow`,data:w,headers:_});l.deploy.id=e.data.id}},nt}(),l=function(){if(st)return it;st=1;const e=n,a=r,o=t;return it=async({atom:t,Atom:r,setProgress:n,context:i,packageDependencies:s,deploymentProject:c,deploymentProjectTarget:p})=>{await n({message:"Deploying it as workflow lib."});const l=(await o({name:"atom",dir:i.projectDir,tags:i.tags}))?.data;let d,u,f,m=p.deploy.name.split("/");if(1===m.length)u=l.env.ATOM_LIBRARIES_ID,f=p.deploy.name;else{if(2!==m.length)throw new Error("Wrong name path.");{const e=await r.first({where:{name:m[0],parent_id:l.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");u=e.id,f=m[1]}}if(!0===p.dryRun)return;if(c.isDirty=!0,p.deploy.id){if(d=await r.get({id:p.deploy.id}),!d)return}else{if(d=await r.create({parent_id:u,doc:{name:f,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!d)return;p.deploy.id=d.id}const g=i.projectDir;d.doc.contents=[{content:e.readFileSync(a.resolve(g,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(a.resolve(g,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(a.resolve(g,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],d.doc.name=f,d.doc.dependencies=s,"workflow.lib"===t.type?d.doc.subtype="library":"workflow"===t.type&&(d.doc.subtype="workflow"),d=await r.update(d,{id:d.id})}}(),m=function(){if(pt)return ct;pt=1;const e=t,r=$,a=I,n=P;return ct=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as ios-app package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=n.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=a(o.params);f.dependencies=a(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},ct}(),g=function(){if(dt)return lt;dt=1;const e=t,r=O,a=I,n=P;return lt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as macos-app package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=n.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=a(o.params);f.dependencies=a(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},lt}(),y=function(){if(ft)return ut;ft=1;const e=t,r=C,a=I,n=P;return ut=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as electron package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=n.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=a(o.params);f.dependencies=a(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},ut}(),h=function(){if(gt)return mt;gt=1;const e=t,r=R,a=I,n=P;return mt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as webos package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=n.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=a(o.params);f.dependencies=a(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},mt}(),v=function(){if(ht)return yt;ht=1;const e=t,r=M,a=I,n=P;return yt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as nextjs package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=n.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=a(o.params);f.dependencies=a(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},yt}(),b=function(){if(vt)return wt;vt=1;const e=t,r=F,a=I,n=P;return wt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as docker package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=n.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=a(o.params);f.dependencies=a(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},wt}(),_=function(){if(_t)return bt;_t=1;const e=d,r=u,a=P,n=S,o=t,i=w.default;return bt=async({setProgress:t,context:s,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await t({message:"Deploying it as fnet package."});const d=s.projectDir,u=r.resolve(d,"package.json"),f=e.readFileSync(u),m=JSON.parse(f);m.name=p.params.name,m.version=a.inc(p.version,"patch"),delete m.scripts,delete m.devDependencies,e.writeFileSync(u,JSON.stringify(m,null,"\t"));const{file:g,data:y}=await o({name:p.config||"fnet-package",dir:s.projectDir,tags:s.tags});if(!y.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${g}`);if(!y.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${g}`);if(!y.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${g}`);const h=`${y.env.ATOM_API_URL}/v1/auth/token`,w=y.env.ATOM_API_USERNAME,v=y.env.ATOM_API_PASSWORD;let b=await i({method:"POST",url:h,data:{username:w,password:v},headers:{"Content-Type":"application/json"}});const _=b.data?.access_token;if(!_)throw new Error(`Invalid access_token from ${h}`);let j="fnet-files-to-gcs";if(j+=` --projectId='${y.env.GCS_PROJECT_ID}'`,j+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,j+=` --keyFilename='${r.resolve(r.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,j+=` --dir='${d}'`,j+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",j+=` --destDir='${m.name}/${m.version}'`,j+=" --metadata.cacheControl='public, max-age=31536000, immutable'",y.env.DOMAIN&&(j+=` --domain='${y.env.DOMAIN}'`),!0!==p.dry_run&&!0!==p.params.dry_run||(j+=" --dryRun"),await n({cmd:j}),e.writeFileSync(u,f),!0===p.dryRun)return;c.isDirty=!0,p.version=m.version,l.set("version",m.version);const k=`${y.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(b=await i({method:"POST",url:k,data:{name:m.name,version:m.version,version_domain:y.env.DOMAIN,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${_}`}}),b.data?.error)throw new Error("Failed to publish fnet package.")}}(),j=function(){if(kt)return jt;kt=1;const e=P,r=t,a=w.default;return jt=async({setProgress:t,context:n,deploymentProject:o,deploymentProjectTarget:i,yamlTarget:s})=>{await t({message:"Deploying it as fnet form."});const{file:c,data:p}=await r({name:i.config||"fnet-form",dir:n.projectDir,tags:n.tags});if(!p.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${c}`);if(!p.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${c}`);if(!p.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${c}`);const l=`${p.env.ATOM_API_URL}/v1/auth/token`,d=p.env.ATOM_API_USERNAME,u=p.env.ATOM_API_PASSWORD;let f=await a({method:"POST",url:l,data:{username:d,password:u},headers:{"Content-Type":"application/json"}});const m=f.data?.access_token;if(!m)throw new Error(`Invalid access_token from ${l}`);o.isDirty=!0;const g=e.inc(i.version,"patch");i.params.version=g,i.version=g,s.set("version",g);const y=`${p.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(f=await a({method:"POST",url:y,data:{name:i.params.name,version:i.params.version,docs:i.params.docs,configs:i.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`}}),f.data?.error)throw new Error("Error publishing fnet form.")}}(),k=function(){if(xt)return Dt;xt=1;const e=P,r=t,a=w.default,o=n,i=S,s=q;return Dt=async({setProgress:t,context:n,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await t({message:"Deploying it as fnet flow."});const{file:d,data:u}=await r({name:p.config||"fnet-flow",dir:n.project.projectDir,tags:n.tags});if(!u.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!u.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!u.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const f=`${u.env.ATOM_API_URL}/v1/auth/token`,m=u.env.ATOM_API_USERNAME,g=u.env.ATOM_API_PASSWORD;let y=await a({method:"POST",url:f,data:{username:m,password:g},headers:{"Content-Type":"application/json"}});const h=y.data?.access_token;if(!h)throw new Error(`Invalid access_token from ${f}`);c.isDirty=!0;const w=e.inc(p.version,"patch");p.params.version=w,p.version=w,l.set("version",w);const v=`${u.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(y=await a({method:"POST",url:v,data:{name:p.params.name,version:p.params.version,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`}}),y.data?.error)throw new Error("Error publishing fnet flow.");const b=y.data?.upload.id;let _="fnet-dir-zipper";_+=` --sourceDir='${n.project.projectDir}'`,_+=" -p=**/*",_+=" -g",_+=" --stdout_format=json";const j=await i({cmd:_});if(0!==j.code)throw new Error(j.stderr);const k=JSON.parse(j.stdout).path;let D=new s;D.append("file",o.createReadStream(k));const x=await a.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...D.getHeaders(),Authorization:`Bearer ${h}`},data:D});if(x.data?.error)throw new Error("Error uploading fnet flow.")}}(),D=function(){if(Pt)return St;Pt=1;const e=P,r=t,a=w.default,o=n,i=S,s=q;return St=async({setProgress:t,context:n,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await t({message:"Deploying it as fnet node."});const{file:d,data:u}=await r({name:p.config||"fnet-node",dir:n.project.projectDir,tags:n.tags});if(!u.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!u.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!u.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const f=`${u.env.ATOM_API_URL}/v1/auth/token`,m=u.env.ATOM_API_USERNAME,g=u.env.ATOM_API_PASSWORD;let y=await a({method:"POST",url:f,data:{username:m,password:g},headers:{"Content-Type":"application/json"}});const h=y.data?.access_token;if(!h)throw new Error(`Invalid access_token from ${f}`);c.isDirty=!0;const w=e.inc(p.version,"patch");p.params.version=w,p.version=w,l.set("version",w);const v=`${u.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(y=await a({method:"POST",url:v,data:{name:p.params.name,version:p.params.version,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`}}),y.data?.error)throw new Error("Error publishing fnet node.");const b=y.data?.upload.id;let _="fnet-dir-zipper";_+=` --sourceDir='${n.project.projectDir}'`,_+=" -p=**/*",_+=" -g",_+=" --stdout_format=json";const j=await i({cmd:_});if(0!==j.code)throw new Error(j.stderr);const k=JSON.parse(j.stdout).path;let D=new s;D.append("file",o.createReadStream(k));const x=await a.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...D.getHeaders(),Authorization:`Bearer ${h}`},data:D});if(x.data?.error)throw new Error("Error uploading fnet node.")}}(),x=function(){if(Et)return At;Et=1;const e=t,r=N,a=I,n=P;return At=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as Rust package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=n.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const f=a(o.params);f.dependencies=a(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},At}();return Tt=async t=>{const{atom:r,packageDependencies:n,context:o,deploymentProjectTarget:i,setProgress:c,deploymentProject:d,yamlTarget:u}=t;if(!0===i.enabled)if("lib"===i.type)await l({...t});else if("red"===i.type)await p({...t});else if("npm"===i.type)await s({...t});else if("gcs"===i.type)await a({...t});else if("gitlab"===i.type)await e({...t});else if("fnet-package"===i.type)await _({...t});else if("fnet-form"===i.type)await j({...t});else if("fnet-node"===i.type)await D({...t});else if("fnet-flow"===i.type)await k({...t});else{let e;if("nextjs"===i.type?e=v:"webos"===i.type?e=h:"electron"===i.type?e=y:"docker"===i.type?e=b:"ios"===i.type?e=m:"macos"===i.type?e=g:"rust"===i.type&&(e=x),!e)return;await e({atom:r,target:i,onProgress:c,projectDir:o.projectDir,dependencies:n,context:o,yamlTarget:u}),d.isDirty=!0}},Tt}function er(){if(Ot)return It;Ot=1;const e=d,r=u,a=o,n=i,s=f,c=function(){if(G)return K;G=1;const e=m,t=g;return K=async()=>{if(!await t({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const r=e.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await r.connect(),r}}(),{nanoid:p}=y,l=function(){if(X)return H;X=1;const{Api:e}=h,t=w.default,r=v;return H=class{init({config:a,accessToken:n}){return new Promise(((o,i)=>{if(e.set_api_url(a.data.url),n)return e.set_req_token(n),void o(n);t({method:"POST",url:`${a.data.issuer}/protocol/openid-connect/token`,data:r.stringify(a.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((t=>{e.set_req_token(t.data.access_token),o(t.data.access_token)})).catch((t=>{e.set_req_token(),i(t)}))}))}}}(),b=Nt(),j=Lt(),k=Ut(),D=zt(),x=Bt(),S=Jt(),P=Wt(),A=Kt(),E=Gt(),T=Ht(),$=Xt(),I=Yt(),O=Zt(),C=Qt(),R=Vt(),{Atom:M}=h,F=L,q=t,N=_,W=U,Y=z,Z=B,Q=J;return It=class{#e;#t;#r;#a;#n;#o;#i;#s;#c;#p;#l;#d;#u;#f;#m;#g;#y;constructor(e){this.#e=new l,this.#t=e,this.#o=[],this.#i=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#o,packageDevDependencies:this.#i,setProgress:this.setProgress.bind(this),context:this.#t,Atom:M,registerToPackageManager:this.registerToPackageManager.bind(this)}}async _cache_set(e,t,r){this._redis_client&&await this._redis_client.SETEX(e,r||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async init(){this._redis_client=await c(),this.#c=this.#t.buildId||p(24),this.#y.buildId=this.#c,this.#u=this.#t.mode,this.#f=["all","deploy","build","file"].includes(this.#u),this.#m=["all","deploy","build"].includes(this.#u),this.#g=["all","deploy"].includes(this.#u),this.#l=this.#t.protocol,this.#p="BUILD:"+this.#c,this.#d=(await q({optional:!0,name:this.#t.atomConfig||"atom",dir:this.#t.projectDir,tags:this.#t.tags}))?.data;try{await this.setProgress({message:"Initialization started."}),await this.initAuth(),await this.initLibrary(),await b(this.#y),await j(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.#s=await this.#e.init({config:this.#d}),this.#y.atomAccessToken=this.#s)}async initLibrary(){const e=this.#t.id;this.#r=this.#t.project?.libraryAtom||await M.get({id:e});let t=this.#r.doc.bundleName;t=t||(this.#r.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#r.doc.bundleName=t,this.#r.type=this.#r.type||"workflow.lib",this.#y.atom=this.#r}async initLibraryDir(){this.setProgress({message:"Initializing library directory."});const t=this.#t.projectDir;let a;this.setProgress({message:"Cleaning project directory."});const o=Y({dir:t,ignore:["node_modules",".cache"],absolute:!0});for(const t of o)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."});let i=t;if(!e.existsSync(i)&&(a=n.exec(`mkdir "${t}"`),0!==a.code))throw new Error("Couldnt create workflow dir.");if(i=r.join(t,"src"),!e.existsSync(i)&&(a=n.exec(`mkdir "${i}"`),0!==a.code))throw new Error("Couldnt create library/src dir.");if(i=r.join(t,"src","default"),!e.existsSync()&&(a=n.exec(`mkdir "${i}"`),0!==a.code))throw new Error("Couldnt create library/src/default dir.")}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#t.templateDir;this.#a=s.configure(e,{watch:!1,dev:!0}),this.#y.njEnv=this.#a}async initLibs(){this.setProgress({message:"Initializing external libs."});const e=[{name:this.#r.doc.name,type:"atom",parent_id:this.#r.parent_id}];this.#n=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.#o})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const r=e.filter((e=>"atom"===e.type));for(let e=0;e<r.length;e++){const a=r[e],n=await this.findAtomLibrary({url:a.name});a.atom=n;const o=n.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));o?.forEach((e=>{const r=t.find((t=>t.package===e.package));r?"string"==typeof e.path?(r.path||[]).some((t=>t===e.path))||(r.path=r.path||[],r.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(r.path||[]).some((t=>t===e))||(r.path=r.path||[],r.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:t}){const a=F({url:t});if(!a)throw new Error(`Invalid package name: ${t}`);if(a.protocol||(a.protocol=this.#l),"ac:"===a.protocol){const e=a.pathname.split("/");if(1===e.length)return await M.first({where:{name:t,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===e.length){const t=await M.first({where:{name:e[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await M.first({where:{name:e[1],parent_id:t.id,type:"workflow.lib"}})}}else if("local:"===a.protocol){const t=this.#r;t.protocol="local:",t.doc.dependencies=t.doc.dependencies||[],t.name=t.doc.name;const a=r.resolve(this.#t.projectSrcDir,"index.js"),n=await N({file:a,recursive:!0}),o=t.doc.dependencies,i=!0===this.#r.doc.features.all_parsed_imports?n.all:n.required;for await(const t of i){if("npm"!==t.type)continue;if(o.find((e=>e.package===t.package)))continue;let a;this.setProgress({message:`Checking npm version for ${t.package}`});const n=["npm-pick-versions",t.package,1],i=Q(n),s=r.join(this.#t.projectDir,".cache"),c=r.join(s,i+".json");e.existsSync(c)?a=JSON.parse(e.readFileSync(c,"utf8")):(a=await W({name:t.package,count:1}),e.mkdirSync(s,{recursive:!0}),e.writeFileSync(c,JSON.stringify(a),"utf8")),o.push({package:t.package,subpath:t.subpath,version:a.minorRange,type:"npm"})}return t}}async createAtomLibFiles({libs:t}){await this.setProgress({message:"Creating external lib files."}),this.#r.typesDir="./types";const a=t.filter((e=>"atom"===e.type));for(let t=0;t<a.length;t++){const n=a[t].atom,o=this.#t.projectDir;if("local:"===n.protocol){const t=r.resolve(this.#t.projectSrcDir,`${n.fileName||n.name}.js`),a=r.relative(r.join(this.#t.projectDir,"src","default"),t);if(!e.existsSync(t)){e.mkdirSync(r.dirname(t),{recursive:!0});let a="export default async (args)=>{\n";a+="}",e.writeFileSync(t,a,"utf8")}n.relativePath=a.split(r.sep).join("/"),this.#r.typesDir=`./types/${r.basename(o)}/src`}else{const t=r.join(o,"src","libs",`${n.id}.js`),a=n.doc.contents?.find((e=>"esm"===e.format))||n.doc;e.writeFileSync(t,a.content,"utf8")}}}async createEngine(){await this.setProgress({message:"Creating engine file."});const t={libs:this.#n.filter((e=>"atom"===e.type)),libraryAtom:this.#r,atom:this.#r},a=this.#t.templateDir,n=s.compile(e.readFileSync(r.resolve(a,r.join("src","default","engine.js.njk")),"utf8"),this.#a).render(t),o=this.#t.projectDir,i=r.resolve(o,r.join("src","default","index.js"));e.writeFileSync(i,n,"utf8")}async createProjectYaml(){const t="node.yaml",n=`Creating ${t}`;await this.setProgress({message:n});const{content:o,...i}=this.#r.doc,c={content:a.stringify(i)},p=this.#t.templateDir,l=s.compile(e.readFileSync(r.resolve(p,`${t}.njk`),"utf8"),this.#a).render(c),d=this.#t.projectDir,u=r.resolve(d,`${t}`);e.writeFileSync(u,l,"utf8")}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#t.project?.devops){const e=[this.#t.project?.devops];for(let t=0;t<e.length;t++){let r=e[t];await this.deployProject({deploymentProject:r}),!0===r.isDirty&&await r.save()}}else if(this.#r.id){const e=await M.list({type:"library.deploy",parent_id:this.#r.id});for(let t=0;t<e.length;t++){let r=e[t];await this.deployProject({deploymentProject:r}),!0===r.isDirty&&(r=await M.update(r,{id:r.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:r}=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 a=Object.keys(t.doc||{}),n=r||{};for(let e=0;e<a.length;e++){const r=t.doc[a[e]];r.name=a[e];const o=n.get(a[e]);await R({...this.#y,deploymentProject:t,deploymentProjectTarget:r,yamlTarget:o})}}async registerToPackageManager(e){const{target:t,packageJSON:r}=e;if(!this.#t.id)return;let a=await M.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});a?(a.doc.versions.splice(0,0,{v:r.version}),await M.update(a,{id:a.id})):a=await M.create({parent_id:this.#d.env.ATOM_PACKAGES_ID,doc:{name:t.params.name,type:"pm",versions:[{v:r.version}]}})}async setProgress(e){const t="string"==typeof e?e:e?.message;console.log(Z.blue(t)),await this._cache_set(this.#p,{status:"IN_PROGRESS",message:t})}async build(){try{this.#f&&(await this.createAtomLibFiles({libs:this.#n}),await this.createEngine(),await this.createProjectYaml(),await T(this.#y),await E(this.#y),await A(this.#y),await P(this.#y),await x(this.#y),await k(this.#y),await S(this.#y),await D(this.#y),await $(this.#y),await I(this.#y),this.#m&&(await O(this.#y),await C(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}}},It}var tr=W(function(){if(Mt)return Ft;Mt=1;const f=process.cwd(),{spawn:m}=e;t({name:["redis"],dir:f,optional:!0});const g=r,y=a,h=n,w=o,v=i,b=s,_=t,j=c,k=p,D=l,x=er(),S=function(){if(Rt)return Ct;Rt=1;const e=d,t=u;return Ct=function({baseDir:r=__dirname}){let a=r;for(;a!==t.parse(a).root;){const r=t.join(a,"node_modules");if(e.existsSync(r))return r;a=t.dirname(a)}return null}}()({baseDir:__dirname}),P="win32"===process.platform?";":":";process.env.PATH=`${g.join(S,"/.bin")}${P}${process.env.PATH}`;let A=y(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=g.resolve(S,"@fnet/cli-project-node/dist/template/project"),r=g.resolve(f,e.name);h.existsSync(r)||h.mkdirSync(r),await D({dir:t,outDir:r,context:e,copyUnmatchedAlso:!0});let a=v.exec("fnode build",{cwd:r});if(0!==a.code)throw new Error("Failed to build project.");if(v.which("git")&&(a=v.exec("git init --initial-branch=main",{cwd:r}),0!==a.code))throw new Error("Failed to initialize git.");if(v.which("code")&&e.vscode&&(a=v.exec(`cd ${r} && code .`),0!==a.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=g.resolve(S,"@fnet/cli-project-node/dist/template/project"),r=process.cwd();if(e.name=g.basename(r),e.update){if(await D({dir:t,outDir:r,context:e,copyUnmatchedAlso:!0}),0!==v.exec("fnode build",{cwd:r}).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 T(e),r=new x(t);await r.init(),await r.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 T({...e,mode:"all"}),r=new x(t);await r.init(),await r.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 T({...e,mode:"file"}),r=new x(t);await r.init(),await r.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}}));function E(e,{name:t,bin:r,preArgs:a=[]}){return e.command(`${t||r} [commands..]`,`${r} ${a.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const t=await T(e),{projectDir:n}=t,o=process.argv.slice(3);m(r,[...a,...o],{cwd:n,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function T(e){if(e.id)return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",templateDir:g.resolve(S,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:g.resolve(S,"./@fnet/cli-project-common/dist/template/default"),projectDir:g.resolve(f,`./.output/${e.id}`),tags:e.ftag};{const t=await async function({tags:e}){const t=g.resolve(f,"node.yaml");if(!h.existsSync(t))throw new Error("node.yaml file not found in current directory.");const{raw:r,parsed:a}=await b({file:t,tags:e}),n=g.dirname(t),o={libraryAtom:{doc:{...a},fileName:"index"},projectDir:n,projectFilePath:t,projectFileContent:r,projectFileParsed:a};let i=g.resolve(n,"fnet/targets.yaml");if(!h.existsSync(i)&&(i=g.resolve(n,"node.devops.yaml"),h.existsSync(i))){const e=g.resolve(n,"fnet");h.existsSync(e)||h.mkdirSync(e),h.copyFileSync(i,g.resolve(n,"fnet/targets.yaml")),h.unlinkSync(i)}if(h.existsSync(i)){const{raw:t,parsed:r}=await b({file:i,tags:e}),a=w.parseDocument(t);o.devops={filePath:i,fileContent:t,yamlDocument:a,doc:{...r},type:"library.deploy",save:async()=>{h.writeFileSync(o.devops.filePath,a.toString())}}}const s=g.resolve(n,"readme.md");if(h.existsSync(s)){const e=h.readFileSync(s,"utf8");o.readme={filePath:s,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return o}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:g.resolve(S,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:g.resolve(S,"./@fnet/cli-project-common/dist/template/default"),projectDir:g.resolve(t.projectDir,"./.workspace"),projectSrcDir:g.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return A=A.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 T(e),{project:r}=t,{projectDir:a,projectFileParsed:n}=r,o=n.input;if(!o)throw new Error("Config schema not found in project file.");const i=await j({schema:o,format:"yaml"}),s=g.resolve(a,".fnet");h.existsSync(s)||h.mkdirSync(s);const c=g.resolve(s,`${e.name}.fnet`);h.writeFileSync(c,i)}catch(e){console.error(e.message),process.exit(1)}})),A=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 T(e),{project:r}=t,{projectDir:a,projectFileParsed:n}=r,o=n.input;if(!o)throw new Error("Config schema not found in project file.");const i=g.resolve(a,".fnet"),s=g.resolve(i,`${e.name}.fnet`),c=await j({schema:o,format:"yaml",ref:s});h.existsSync(i)||h.mkdirSync(i),h.writeFileSync(s,c)}catch(e){console.error(e.message),process.exit(1)}}))}(A),A=E(A,{bin:"npm"}),A=E(A,{bin:"node"}),A=E(A,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),A=E(A,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),A=E(A,{name:"app",bin:"npm",preArgs:["run","app","--"]}),A=E(A,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),A=E(A,{bin:"npx"}),A=E(A,{bin:"cdk"}),A=E(A,{bin:"aws"}),A=function(e,{name:t,preArgs:r=[]}){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 T(e),{projectDir:a}=t,n=e.config,o=await _({name:n,dir:a,transferEnv:!1,optional:!0,tags:t.tags}),i=o?.data?.env||void 0,s=e.command,c=process.argv.slice(5);m(s,[...r,...c],{cwd:a,stdio:"inherit",shell:!0,env:{...process.env,...i}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(A,{name:"with"}),A=function(e,{name:t,preArgs:r=[]}){return e.command(`${t} group [options..]`,"Run a command group.",(e=>e.positional("group",{type:"string"}).option("ftag",{type:"array"}).help(!1).version(!1)),(async e=>{try{const t=await T(e),{project:r}=t,{projectFileParsed:a}=r,n=a.commands;if(!n)throw new Error("Commands not found in project file.");const o=n[e.group];if(!o)throw new Error(`Command group '${e.group}' not found in project file.`);await k({commands:o})}catch(e){console.error(e.message),process.exit(1)}}))}(A,{name:"run"}),A.demandCommand(1,"You need at least one command before moving on").help().argv,Ft}());module.exports=tr;
@@ -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"),r=require("yaml"),a=require("shelljs"),s=require("@fnet/yaml"),c=require("@fnet/object-from-schema"),l=require("@fnet/shell-flow"),p=require("@flownet/lib-render-templates-dir"),d=require("node:fs"),f=require("node:path"),u=require("nunjucks"),m=require("lodash.clonedeep"),g=require("isobject"),h=require("redis"),y=require("@flownet/lib-is-redis-online"),w=require("nanoid"),v=require("@flownet/lib-atom-api-js"),b=require("axios"),x=require("qs"),k=require("lodash.merge"),j=require("@flownet/lib-parse-imports-js"),_=require("@flownet/lib-list-npm-versions"),D=require("ajv/dist/2020"),S=require("ajv/dist/standalone"),P=require("ajv-formats"),A=require("@fnet/shell"),T=require("semver"),E=require("@fnet/up-list-files"),$=require("node:os"),O=require("@node-red/util"),I=require("@flownet/lib-to-ios-app"),C=require("@flownet/lib-to-macos-app"),N=require("@flownet/lib-to-electron"),M=require("@flownet/lib-to-webos"),F=require("@flownet/lib-to-nextjs"),R=require("@flownet/lib-to-docker"),q=require("form-data"),U=require("@fnet/to-rust"),L=require("@flownet/lib-parse-node-url"),B=require("@flownet/lib-bpmn-from-flow"),J=require("@fnet/expression"),z=require("chalk"),W=require("lodash.pick"),K=require("lodash.omit");function G(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var H,V,X,Y,Z,Q,ee,te,ne,oe,ie,re,ae,se,ce,le,pe,de,fe,ue,me,ge,he,ye,we,ve,be,xe,ke,je,_e,De,Se,Pe,Ae,Te,Ee,$e,Oe,Ie,Ce,Ne,Me,Fe,Re,qe,Ue,Le,Be,Je,ze,We,Ke,Ge,He,Ve,Xe,Ye,Ze,Qe,et,tt,nt,ot,it,rt,at,st,ct,lt,pt,dt,ft,ut,mt,gt,ht,yt,wt,vt,bt,xt,kt,jt,_t,Dt,St,Pt,At,Tt,Et,$t,Ot,It,Ct,Nt,Mt,Ft,Rt,qt,Ut,Lt,Bt,Jt,zt,Wt,Kt,Gt,Ht,Vt,Xt,Yt,Zt,Qt,en,tn,nn,on,rn,an,sn,cn,ln,pn,dn,fn,un,mn,gn,hn,yn,wn,vn,bn,xn,kn,jn,_n,Dn,Sn={};function Pn(){if(Q)return Z;Q=1;const e=k;return Z=({feature:t,features:n,packageDevDependencies:o})=>{const{name:i,packages:r,options:a,extraCheck:s,explicit:c}=t,l=`${i}_enabled`,p=n.rollup_output||{},d=Object.keys(p);let f=a||{};const u=n[i]?.options;u&&(f=e(f,u));const m=!n[i]||!1===n[i]?.enabled;d.forEach((e=>{const t=n.rollup_output[e];if(t){if(Reflect.has(t,i)){if(m||!t[i]||!1===t[i]?.enabled)return void delete t[i];!0===t[i]&&(t[i]={enabled:!0,options:f})}else{if(m||c||!1===n[l])return;t[i]={enabled:!0}}t[i]=t[i]||{},t[i].options={...f,...t[i].options}}}));let g=d.some((e=>!0===n.rollup_output[e][i]?.enabled));s&&(g=s()&&g),n[l]=g,g&&r.forEach((e=>o.push({package:e[0],version:e[1]})))}}function An(){if(Pe)return Se;Pe=1;const e=k,t=d,n=f,o=j,i=function(){if(te)return ee;te=1;const e=Pn();return ee=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({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:i,packageDevDependencies:o})},ee}(),r=function(){if(oe)return ne;oe=1;const e=Pn();return ne=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:i,packageDevDependencies:o})},ne}(),a=function(){if(re)return ie;re=1;const e=Pn();return ie=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:i,packageDevDependencies:o})},ie}(),s=function(){if(se)return ae;se=1;const e=Pn();return ae=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:i,packageDevDependencies:o})},ae}(),c=function(){if(le)return ce;le=1;const e=Pn();return ce=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:i,packageDevDependencies:o})},ce}(),l=function(){if(de)return pe;de=1;const e=Pn();return pe=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:i,packageDevDependencies:o})},pe}(),p=function(){if(ue)return fe;ue=1;const e=Pn();return fe=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:i,packageDevDependencies:o})},fe}(),u=function(){if(ge)return me;ge=1;const e=Pn();return me=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:i,packageDevDependencies:o})},me}(),m=function(){if(ye)return he;ye=1;const e=Pn();return he=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:i,packageDevDependencies:o})},he}(),g=function(){if(ve)return we;ve=1;const e=Pn();return we=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:i,packageDevDependencies:o})},we}(),h=function(){if(xe)return be;xe=1;const e=Pn();return be=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:i,packageDevDependencies:o})},be}(),y=function(){if(je)return ke;je=1;const e=Pn();return ke=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features,r={};!0===i.app?.enabled&&(r.targets=r.targets||[],r.targets.push({src:"./src/app/index.html",dest:i.app.dir}),Reflect.has(i.app,"copy")||Reflect.has(i,"copy")||(i.copy=!0)),e({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:r},features:i,packageDevDependencies:o})},ke}(),w=function(){if(De)return _e;De=1;const e=Pn();return _e=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features,r=i.css&&!1!==i.css.enabled;let a=[];r&&(a.push(["rollup-plugin-postcss","^4"]),a.push(["sass","^1.66"]),(i.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"])}}))),e({feature:{name:"css",packages:a},features:i,packageDevDependencies:o})},_e}();function v({dir:e,name:o="index"}){let i=n.resolve(e,`./${o}.tsx`);if(t.existsSync(i)||(i=n.resolve(e,`./${o}.ts`)),t.existsSync(i)||(i=n.resolve(e,`./${o}.jsx`)),t.existsSync(i)||(i=n.resolve(e,`./${o}.js`)),!t.existsSync(i))return{};const r=i,a=n.extname(i);return{file:r,ext:a,ts:".ts"===a||".tsx"===a,name:o}}return Se=async t=>{const{atom:d,context:f,packageDevDependencies:b}=t;d.doc.features=d.doc.features||{};const x=d.doc.features;x.project=x.project||{},x.project.format=x.project.format||x.project_format||"esm",x.project_format=x.project.format,x.dts_enabled=!0===x.dts||void 0!==x.dts&&!1!==x.dts,x.hasOwnProperty("all_parsed_imports")||(x.all_parsed_imports=!0);const k=n.resolve(f.project.projectDir),j=v({dir:n.resolve(k,"./app")});if(j.file){let e=await o({file:j.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));x.app_uses_jsx=t,x.app_has_entry=!0,e=await o({file:j.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),x.app_entry_uses_jsx=t,x.app_entry_is_ts=j.ts,x.app_entry_ext=j.ext}const _=v({dir:n.resolve(k,"./cli")});if(_.file){let e=await o({file:_.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));x.cli_uses_jsx=t,x.cli_has_entry=!0,e=await o({file:_.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),x.cli_entry_uses_jsx=t,x.cli_entry_is_ts=_.ts,x.cli_entry_ext=_.ext}if("workflow.lib"===d.type){const e=v({dir:n.resolve(k,"./src")});if(e.file){let t=await o({file:e.file,recursive:!0}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));x.src_uses_jsx=n,x.src_has_entry=!0,t=await o({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),x.src_entry_uses_jsx=n,x.src_entry_is_ts=e.ts,x.src_entry_ext=e.ext}}const D=Reflect.has(x,"app_entry_uses_jsx")?!0===x.app_entry_uses_jsx:!0===x.src_entry_uses_jsx,S=Reflect.has(x,"cli_entry_uses_jsx")?!0===x.cli_entry_uses_jsx:!0===x.src_entry_uses_jsx;x.form_enabled=!0===d.doc.form||!0===d.doc.form?.enabled||!0===x.form||!0===x.form?.enabled,x.multiple_enabled=x.multiple_enabled||!0===x.multiple||!0===x.multiple?.enabled,!1===x.app?x.app={enabled:!1}:!0===x.app?x.app={enabled:!0,extend:!0===x.app_has_entry,export:!0,react:D}:x.app={enabled:!0,extend:!0===x.app_has_entry,export:!0,react:D,...x.app||{}},x.app.enabled=!0===x.app.enabled&&(!0===d.doc.features.form_enabled||!0===x.app.extend||!0===x.app.enabled),x.app.format=x.app.format||"esm",x.app.folder=x.app.folder||x.app.format||"default",!1===x.cli?x.cli={enabled:!1}:!0===x.cli?x.cli={enabled:!0,extend:!0===x.cli_has_entry,export:!0,react:S}:x.cli={enabled:!0,extend:!0===x.cli_has_entry,export:!0,react:S,...x.cli||{}},x.cli.enabled=!0===x.cli.enabled&&(!1===d.doc.features.form_enabled||!0===x.cli.extend||!0===x.cli.enabled),x.cli.format=x.cli.format||"esm",x.cli.folder=x.cli.folder||x.cli.folder||"esm",x.cli.node_options=x.cli.node?.options||x.cli.node_options||"",x.json=x.cli.enabled||x.json;const P={cjs:{format:"cjs",context:x.form_enabled?"window":"global",babel:!0===x.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==x.cjs,copy:!1},esm:{format:"esm",context:x.form_enabled?"window":"global",babel:!0===x.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!1!==x.esm,copy:!0},iife:{format:"iife",context:x.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==x.iife,terser:!0,copy:!1}};!0===x.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===x.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===x.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===x.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===x.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===x.app.enabled&&(x.app.dir=`./dist/app/${x.app.folder}`,P.app={format:x.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:x.app.dir,terser:!0,output_exports:!1===x.app.export?"none":"auto"}),!0===x.cli.enabled&&(x.cli.dir=`./dist/cli/${x.cli.folder}`,P.cli={format:x.cli.format,context:"global",babel:!0===x.src_uses_jsx||!0===x.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:x.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===x.cli.export?"none":"auto"});const A={server:".",startPath:`${n.normalize(x.app.dir||".")}`,files:[n.normalize("./dist/**/*")],cors:!0,open:!1};x.babel_options=e({targets:{browsers:"last 9 versions, not dead",node:"18"}},x.babel_options||x.babel?.options),x.browsersync_options=e(A,x.browsersync_options||x.browsersync?.options||{}),x.replace_options=e({},x.replace_options||x.replace?.options||{}),Reflect.has(x.browsersync_options,"proxy")&&delete x.browsersync_options.server,x.rollup=x.rollup||{},x.rollup_output=e(P,x.rollup_output||x.rollup?.output||{}),x.preact_enabled=!0===x.preact||x.preact&&!1!==x.preact?.enabled;let T=Object.keys(P);for(const t of T){const n=P[t];n&&(!1!==x.rollup[t]?(n.babel_options=n.babel_options||x.babel_options,n.browsersync_options=e(x.browsersync_options,n.browsersync_options),n.replace_options=e(x.replace_options,n.replace_options),x.preact_enabled&&(n.alias_enabled=!0,n.alias=n.alias||{},n.alias.entries=n.alias.entries||{},n.alias.entries.react="preact/compat",n.alias.entries["react-dom"]="preact/compat"),x.form_enabled&&(n.babel=!0)):delete x.rollup_output[t])}T=Object.keys(x.rollup_output),x.babel_enabled=T.some((e=>!0===x.rollup_output[e].babel)),x.browser_enabled=T.some((e=>!0===x.rollup_output[e].babel)),x.browsersync_enabled=!1!==x.browsersync&&T.some((e=>!0===x.rollup_output[e].browsersync)),x.browsersync_enabled=x.browsersync_enabled&&x.app.enabled,x.dependency_auto_enabled=!1!==x.dependency_auto&&!1!==x.dependency_auto?.enabled,x.npm_install_flags=x.npm_install_flags||"",x.react_version=x.react_version||x.react?.version||18,w(t),y(t),h(t),g(t),m(t),p(t),u(t),l(t),c(t),s(t),a(t),i(t),r(t)},Se}function Tn(){if(Te)return Ae;Te=1;const e=_;return Ae=async({atom:t,packageDependencies:n,packageDevDependencies:o})=>{if("workflow"===t.type&&(n.push({package:"get-value",version:"^3"}),n.push({package:"set-value",version:"^4"})),t.doc.features.form_enabled&&t.doc.features.dependency_auto_enabled){let o="^18.2";o=`^${(await e({name:"react",groupBy:{major:!0}})).find((e=>e[0]===t.doc.features.react_version.toString()))[0]}`,n.push({package:"react",version:o}),n.push({package:"react-dom",version:o}),"workflow"===t.type&&(n.push({package:"@flownet/react-app",version:"^0.1"}),n.push({package:"@flownet/react-app-state",version:"^0.1"}))}t.doc.features.preact_enabled&&n.push({package:"preact",version:"^10"}),!0===t.doc.features.cli.enabled&&(n.push({package:"@fnet/args",version:"^0.1"}),o.push({package:"ajv",version:"^8"}),t.doc.features.cli.fargs&&!1!==t.doc.features.cli.fargs?.enabled&&n.push({package:"@fnet/config",version:"0.2.21"})),t.doc.features.render&&!1!==t.doc.features.render.enabled&&o.push({package:"@flownet/lib-render-templates-dir",version:"0.1.17"}),o.push({package:"@babel/core",version:"^7"}),o.push({package:"@rollup/plugin-commonjs",version:"^28"}),o.push({package:"@rollup/plugin-node-resolve",version:"^15"}),o.push({package:"@rollup/plugin-replace",version:"^6"}),o.push({package:"rollup",version:"^4"}),t.doc.features.dts_enabled&&o.push({package:"rollup-plugin-dts",version:"^6"}),o.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),o.push({package:"@rollup/plugin-alias",version:"^5"}),o.push({package:"fs-extra",version:"^11"}),t.doc.features.babel_enabled&&(o.push({package:"@rollup/plugin-babel",version:"^6"}),o.push({package:"@babel/preset-env",version:"^7"}),o.push({package:"@babel/preset-react",version:"^7"}),t.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":o.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":o.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":o.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":o.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":o.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),o.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),t.doc.features.browsersync_enabled&&o.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})},Ae}function En(){if($e)return Ee;$e=1;const e=d,t=f,n=p;return Ee=async({atom:o,setInProgress:i,context:r,packageDependencies:a})=>{if(!0!==o.doc.features.app.enabled)return;await i({message:"Creating app folder"});const s={atom:o,packageDependencies:a,ts:Date.now()},c=r.templateDir,l=t.resolve(r.projectDir,"src/app");e.existsSync(l)||e.mkdirSync(l,{recursive:!0});let p=["index.js.njk"];!1!==o.doc.features.app.html&&p.push("index.html.njk"),await n({pattern:p,dir:t.resolve(c,"src/app"),outDir:l,context:s})},Ee}function $n(){if(Ie)return Oe;Ie=1;const e=u,t=d,n=f,o=j,i=_;return Oe=async({atom:r,context:a,packageDependencies:s,packageDevDependencies:c,setInProgress:l})=>{await l({message:"Creating package.json."});s.filter((e=>!0===e.dev)).forEach((e=>{c.find((t=>t.package===e.package))||c.push(e);const t=s.findIndex((t=>t.package===e.package));s.splice(t,1)}));const p=s.find((e=>"react"===e.package)),d=s.find((e=>"react-dom"===e.package));p&&!d?s.push({package:"react-dom",version:p.version}):p&&d&&(d.version=p.version),p&&r.doc.features.react_version>=17&&(s.find((e=>"@emotion/react"===e.package))||s.push({package:"@emotion/react",version:"^11"}),s.find((e=>"@emotion/styled"===e.package))||s.push({package:"@emotion/styled",version:"^11"}));const f=[];!0===r.doc.features.app.enabled&&f.push({file:n.resolve(a.projectDir,"src/app/index.js"),dev:!1!==r.doc.features.app.dev}),!0===r.doc.features.cli.enabled&&f.push({file:n.resolve(a.projectDir,"src/cli/index.js"),dev:!1!==r.doc.features.cli.dev});for await(const e of f){const n=e.file;if(!t.existsSync(n))throw new Error(`App file not found: ${n}`);const a=await o({file:n,recursive:!0}),l=!0===r.doc.features.all_parsed_imports?a.all:a.required;for await(const t of l){if("npm"!==t.type)continue;if(s.find((e=>e.package===t.package)))continue;if(c.find((e=>e.package===t.package)))continue;const n=(await i({name:t.package,groupBy:{minor:!0}}))[0][0];(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:`^${n}`,type:"npm"})}}const u={atom:r,packageDependencies:s,packageDevDependencies:c},m=a.templateCommonDir,g=e.compile(t.readFileSync(n.resolve(m,"package.json.njk"),"utf8"),e.configure(m)).render(u),h=a.projectDir,y=n.resolve(h,"package.json");t.writeFileSync(y,g,"utf8");const w=n.resolve(a.project.projectDir,"fnet");if(t.existsSync(w)){const e=n.resolve(a.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const o=t.readdirSync(w);for(const i of o){const o=n.resolve(w,i);if(!t.lstatSync(o).isFile())continue;const r=n.resolve(e,i);t.copyFileSync(o,r)}}},Oe}function On(){if(Ne)return Ce;Ne=1;const e=d,t=f,n=p;return Ce=async({atom:o,setInProgress:i,context:r,packageDependencies:a})=>{if(!0!==o.doc.features.cli.enabled)return;await i({message:"Creating cli."});const s={atom:o,packageDependencies:a},c=r.templateDir,l=t.resolve(r.projectDir,"src/cli");e.existsSync(l)||e.mkdirSync(l,{recursive:!0}),await n({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:l,context:s})},Ce}function In(){if(Fe)return Me;Fe=1;const e=d,t=f,n=u,o=j;return Me=async({atom:i,setInProgress:r,context:a,packageDependencies:s})=>{await r({message:"Creating rollup file."});const c={atom:i,packageDependencies:s},l=t.resolve(a.projectDir,"src","default/index.js");if(!e.existsSync(l))throw new Error(`Entry file not found: ${l}`);const p=(await o({file:l,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=i.doc.features.rollup_output,f=Object.keys(d);for(let e=0;e<f.length;e++){const t=d[f[e]];if(!0===t.browser&&p.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(p.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<p.length;e++){const n=p[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(p)}}const u=a.templateCommonDir;let m=n.compile(e.readFileSync(t.resolve(u,"rollup.config.mjs.njk"),"utf8"),n.configure(u)).render(c);const g=a.projectDir;let h=t.resolve(g,"rollup.config.mjs");e.writeFileSync(h,m,"utf8")},Me}function Cn(){if(qe)return Re;qe=1;const e=d,t=f,n=u,o=D,i=S,r=P;return Re=async({atom:a,setInProgress:s,context:c,njEnv:l})=>{if(!0!==a.doc.features.cli.enabled)return;await s({message:"Creating yargs."});let p={};if(p=a.doc.input?a.doc.input:{type:"object",properties:{},required:[]},a.doc.features.cli.fargs&&!1!==a.doc.features.cli.fargs?.enabled){const e=a.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},n={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),p.properties&&(p.properties.fargs=t,p.properties.ftag=n)}const d={options:p,imports:[],atom:a},f=c.templateDir,u=n.compile(e.readFileSync(t.resolve(f,"src/default/to.args.js.njk"),"utf8"),l).render(d),m=c.projectDir,g=t.resolve(m,"src/default/to.args.js");e.writeFileSync(g,u,"utf8");const h=new o({allErrors:!0,useDefaults:!0,formats:{email:!0},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});r(h);const y=h.compile(p),w=i(h,y);e.writeFileSync(t.resolve(m,"src/default/validate_input.js"),w,"utf8")},Re}function Nn(){if(Le)return Ue;Le=1;const e=d,t=f,n=u;return Ue=async({atom:o,setInProgress:i,context:r,packageDependencies:a})=>{await i({message:"Creating .gitignore"});const s={atom:o,packageDependencies:a},c=r.templateCommonDir,l=n.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),n.configure(c)).render(s),p=r.projectDir,d=t.resolve(p,".gitignore");e.writeFileSync(d,l,"utf8")},Ue}function Mn(){if(Je)return Be;Je=1;const e=d,t=f,n=u;return Be=async({atom:o,setInProgress:i,context:r,packageDependencies:a})=>{await i({message:"Creating tsconfig.json."});const s={atom:o,packageDependencies:a},c=r.templateCommonDir,l=n.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),n.configure(c)).render(s),p=r.projectDir,d=t.resolve(p,"tsconfig.json");e.writeFileSync(d,l,"utf8")},Be}function Fn(){if(We)return ze;We=1;const e=u,t=d,n=f,o=s;return ze=async({atom:i,context:r,setInProgress:a,Atom:s})=>{const c="readme.md",l=`Creating ${c}`;if(await a({message:l}),r.project?.readme){const i=r.projectDir,a={content:r.project.readme.doc.content},s=n.resolve(r.project.projectDir,"fnet/how-to.md");if(t.existsSync(s)){const e=t.readFileSync(s,"utf8");a.howto=e}const l=n.resolve(r.project.projectDir,"fnet/input.yaml");if(t.existsSync(l)){const e=await o({file:l,tags:r.tags});a.input=e.content}const p=r.templateCommonDir,d=e.compile(t.readFileSync(n.resolve(p,`${c}.njk`),"utf8"),e.configure(p)).render(a),f=n.resolve(i,`${c}`);t.writeFileSync(f,d,"utf8")}else if(i.id){const o=await s.first({type:"wiki",parent_id:i.id});if(!o||"markdown"!==o.doc?.["content-type"])return;const{content:a,...l}=o.doc,p={content:a},d=r.templateCommonDir,f=e.compile(t.readFileSync(n.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(p),u=r.projectDir,m=n.resolve(u,`${c}`);t.writeFileSync(m,f,"utf8")}},ze}function Rn(){if(Ge)return Ke;Ge=1;const e=a,t=n;return Ke=async({setInProgress:n,context:o})=>{const i=o.projectDir;await n({message:"Prettifiying source files."});let r=t.join("src","**","*");if(0!==e.exec(`prettier --write ${r} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:i}).code)throw new Error("Couldnt format files.")}}function qn(){if(Ve)return He;Ve=1;const e=a;return He=async({atom:t,setInProgress:n,context:o})=>{if(!t.doc.features.dts_enabled)return;const i=o.projectDir;await n({message:"Creating .d.ts"});if(0!==e.exec("tsc",{cwd:i}).code)throw new Error("Couldnt create .d.ts files.")},He}function Un(){if(Ye)return Xe;Ye=1;const e=a;return Xe=async({setInProgress:t,atom:n,context:o})=>{const i=o.projectDir;await t({message:"Installing npm packages."});if(0!==e.exec(`npm install ${n.doc.features.npm_install_flags}`,{cwd:i}).code)throw new Error("Couldnt install npm packages.")},Xe}function Ln(){if(Qe)return Ze;Qe=1;const e=a;return Ze=async({setInProgress:t,context:n})=>{const o=n.projectDir;await t({message:"Building main project."});if(0!==e.exec("npm run build",{cwd:o}).code)throw new Error("Couldnt build project.")}}function Bn(){if(It)return Ot;It=1;const e=function(){if(tt)return et;tt=1;const e=A,n=t;return et=async({setInProgress:t,context:o,deploymentProject:i,deploymentProjectTarget:r,buildId:a})=>{await t({message:"Deploying it as gitlab project."});const s=o.projectDir;let c="fnet-to-gitlab";const l=r.params.config||"gitlab",p=await n({name:l,dir:o.projectDir,tags:o.tags});if(!p)throw new Error(`Couldnt load config ${l}`);const{data:d}=p.data;c+=` --projectGroupId=${d.projectGroupId}`,c+=` --projectPath='${s}'`,c+=` --projectName='${r.params.name}'`,c+=` --projectBranch='${r.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==r.dryRun&&(await e({cmd:c}),i.isDirty=!0)},et}(),o=function(){if(ot)return nt;ot=1;const e=d,n=f,o=T,i=A,r=t;return nt=async({setInProgress:t,context:a,deploymentProject:s,deploymentProjectTarget:c,registerToPackageManager:l,yamlTarget:p})=>{await t({message:"Deploying it as gcs package."});const d=a.projectDir,f=n.resolve(d,"package.json"),u=e.readFileSync(f),m=JSON.parse(u);m.name=c.params.name,m.version=o.inc(c.version,"patch"),delete m.scripts,delete m.devDependencies,e.writeFileSync(f,JSON.stringify(m,null,"\t"));const{file:g,data:h}=await r({name:c.config||"gcs",dir:a.projectDir,tags:a.tags});let y="fnet-files-to-gcs";y+=` --projectId='${h.env.GCS_PROJECT_ID}'`,y+=` --bucketName='${h.env.GCS_BUCKET_NAME}'`,y+=` --keyFilename='${n.resolve(n.dirname(g),h.env.GCS_UPLOADER_KEY_FILE)}'`,y+=` --dir='${d}'`,y+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",y+=` --destDir='${m.name}/${m.version}'`,y+=" --metadata.cacheControl='public, max-age=31536000, immutable'",h.env.DOMAIN&&(y+=` --domain='${h.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(y+=" --dryRun"),await i({cmd:y}),e.writeFileSync(f,u),!0!==c.dryRun&&(s.isDirty=!0,c.version=m.version,p.set("version",m.version),await l({target:c,packageJSON:m}))}}(),s=function(){if(rt)return it;rt=1;const e=d,n=f,o=T,i=a,s=t,l=E,p=c,u=r;return it=async({atom:t,setInProgress:r,context:a,deploymentProject:c,deploymentProjectTarget:d,yamlTarget:f})=>{await r({message:"Deploying it as npm package."});const m=a.projectDir,g=n.resolve(m,"package.json"),h=e.readFileSync(g),y=JSON.parse(h);y.name=d.params.name,y.version=o.inc(d.version,"patch");const w=d.params.bin?.name||d.params.bin;!1!==d.params.bin?.enabled&&w&&"string"==typeof w&&(y.bin={[w]:"dist/cli/esm/index.js",[t.doc.name]:"dist/cli/esm/index.js"}),delete y.scripts,delete y.devDependencies,y.scripts={serve:"npx serve ."},e.writeFileSync(g,JSON.stringify(y,null,"\t"));const v=d.config||"npm";let b=(await s({name:v,dir:a.projectDir,tags:a.tags,optional:!0}))?.data;if(!b){const t=l({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===t.length)throw new Error("Couldnt find schema to create npm config");const o=await p({schema:t[0],tags:a.tags}),i=a.project.projectDir,r=n.resolve(i,".fnet");e.existsSync(r)||e.mkdirSync(r),e.writeFileSync(n.resolve(r,`${v}.fnet`),u.stringify(o)),b=o}if(e.writeFileSync(n.resolve(m,".npmrc"),`//registry.npmjs.org/:_authToken=${b.env.NPM_TOKEN}`),!0!==d.dryRun){if(0!==i.exec("npm publish --access public",{cwd:m}).code)throw new Error("Couldnt publish to npm");e.writeFileSync(g,h),c.isDirty=!0,d.version=y.version,f.set("version",y.version)}},it}(),l=function(){if(st)return at;st=1;const e=d,n=f,o=$,i=u,r=O,a=t;return at=async({atom:t,setInProgress:s,context:c,deploymentProject:l,deploymentProjectTarget:p,buildId:d,packageDependencies:f,njEnv:u})=>{await s({message:"Deploying it as node-red flow."});const m=c.projectDir,g=c.templateDir,h="workflow"===t.type?"WF":"LIB";let y;if("simple"===p.deploy.template)y={atom:t,packageDependencies:f,red:{tab:{id:p.deploy.id||r.util.generateId(),label:`${h}/${t.id?t.id:o.hostname()}/${t.name}/${p.deploy.name||p.deploy.template}`},function:{id:r.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},inject:{id:r.util.generateId(),...p.params?.inject,payload:"json"===p.params?.inject?.payloadType?`'${JSON.stringify(p.params?.inject?.payload)}'`:p.params?.inject?.payload},debug:{id:r.util.generateId()}}};else if("cronjob"===p.deploy.template){let i=p.params?.schedules?cloneDeep(p.params?.schedules):void 0;i?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),y={atom:t,packageDependencies:f,red:{tab:{id:p.deploy.id||r.util.generateId(),label:`${h}/${t.id?t.id:o.hostname()}/${p.deploy.name||p.deploy.template}`},function:{id:r.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},cronjob:{id:r.util.generateId(),schedules:i},debug:{id:r.util.generateId()}}}}else{if("http"!==p.deploy.template)return;y={atom:t,packageDependencies:f,red:{tab:{id:p.deploy.id||r.util.generateId(),label:`${h}/${t.id?t.id:o.hostname()}/${p.deploy.name||p.deploy.template}`},function:{id:r.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},httpin:{id:r.util.generateId(),method:p.params.method||"get",url:p.params.url},httpout:{id:r.util.generateId()},debug:{id:r.util.generateId()}}}}let w=i.compile(e.readFileSync(n.resolve(g,`deploy/node-red/${p.deploy.template}.yaml.njk`),"utf8"),u).render(y);if(e.writeFileSync(n.resolve(m,"node-red.yaml"),w),w=yaml.load(w),!0===p.dryRun)return;l.isDirty=!0;const v=(await a({name:c.redConfig||"red",dir:c.projectDir,tags:c.tags}))?.data,b=p.deploy.url||v.env.RED_URL,x={};if(!1!==p.deploy.auth&&(x.Authorization="Bearer "+atomAccessToken),p.deploy.id)!0===p.actions?.delete?(await axios({method:"DELETE",url:`${b}/flow/${p.deploy.id}`,headers:x}),delete p.actions.delete,delete p.deploy.id,p.enabled=!1):await axios({method:"PUT",url:`${b}/flow/${p.deploy.id}`,data:w,headers:x});else{const e=await axios({method:"POST",url:`${b}/flow`,data:w,headers:x});p.deploy.id=e.data.id}},at}(),p=function(){if(lt)return ct;lt=1;const e=i,o=n,r=t;return ct=async({atom:t,Atom:n,setInProgress:i,context:a,packageDependencies:s,deploymentProject:c,deploymentProjectTarget:l})=>{await i({message:"Deploying it as workflow lib."});const p=(await r({name:"atom",dir:a.projectDir,tags:a.tags}))?.data;let d,f,u,m=l.deploy.name.split("/");if(1===m.length)f=p.env.ATOM_LIBRARIES_ID,u=l.deploy.name;else{if(2!==m.length)throw new Error("Wrong name path.");{const e=await n.first({where:{name:m[0],parent_id:p.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");f=e.id,u=m[1]}}if(!0===l.dryRun)return;if(c.isDirty=!0,l.deploy.id){if(d=await n.get({id:l.deploy.id}),!d)return}else{if(d=await n.create({parent_id:f,doc:{name:u,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!d)return;l.deploy.id=d.id}const g=a.projectDir;d.doc.contents=[{content:e.readFileSync(o.resolve(g,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(o.resolve(g,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(o.resolve(g,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],d.doc.name=u,d.doc.dependencies=s,"workflow.lib"===t.type?d.doc.subtype="library":"workflow"===t.type&&(d.doc.subtype="workflow"),d=await n.update(d,{id:d.id})}}(),g=function(){if(dt)return pt;dt=1;const e=t,n=I,o=m,i=T;return pt=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as ios-app package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},pt}(),h=function(){if(ut)return ft;ut=1;const e=t,n=C,o=m,i=T;return ft=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as macos-app package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},ft}(),y=function(){if(gt)return mt;gt=1;const e=t,n=N,o=m,i=T;return mt=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as electron package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},mt}(),w=function(){if(yt)return ht;yt=1;const e=t,n=M,o=m,i=T;return ht=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as webos package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},ht}(),v=function(){if(vt)return wt;vt=1;const e=t,n=F,o=m,i=T;return wt=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as nextjs package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},wt}(),x=function(){if(xt)return bt;xt=1;const e=t,n=R,o=m,i=T;return bt=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as docker package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},bt}(),k=function(){if(jt)return kt;jt=1;const e=d,n=f,o=T,i=A,r=t,a=b.default;return kt=async({setInProgress:t,context:s,deploymentProject:c,deploymentProjectTarget:l,yamlTarget:p})=>{await t({message:"Deploying it as fnet package."});const d=s.projectDir,f=n.resolve(d,"package.json"),u=e.readFileSync(f),m=JSON.parse(u);m.name=l.params.name,m.version=o.inc(l.version,"patch"),delete m.scripts,delete m.devDependencies,e.writeFileSync(f,JSON.stringify(m,null,"\t"));const{file:g,data:h}=await r({name:l.config||"fnet-package",dir:s.projectDir,tags:s.tags});if(!h.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${g}`);if(!h.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${g}`);if(!h.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${g}`);const y=`${h.env.ATOM_API_URL}/v1/auth/token`,w=h.env.ATOM_API_USERNAME,v=h.env.ATOM_API_PASSWORD;let b=await a({method:"POST",url:y,data:{username:w,password:v},headers:{"Content-Type":"application/json"}});const x=b.data?.access_token;if(!x)throw new Error(`Invalid access_token from ${y}`);let k="fnet-files-to-gcs";if(k+=` --projectId='${h.env.GCS_PROJECT_ID}'`,k+=` --bucketName='${h.env.GCS_BUCKET_NAME}'`,k+=` --keyFilename='${n.resolve(n.dirname(g),h.env.GCS_UPLOADER_KEY_FILE)}'`,k+=` --dir='${d}'`,k+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",k+=` --destDir='${m.name}/${m.version}'`,k+=" --metadata.cacheControl='public, max-age=31536000, immutable'",h.env.DOMAIN&&(k+=` --domain='${h.env.DOMAIN}'`),!0!==l.dry_run&&!0!==l.params.dry_run||(k+=" --dryRun"),await i({cmd:k}),e.writeFileSync(f,u),!0===l.dryRun)return;c.isDirty=!0,l.version=m.version,p.set("version",m.version);const j=`${h.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(b=await a({method:"POST",url:j,data:{name:m.name,version:m.version,version_domain:h.env.DOMAIN,docs:l.params.docs,configs:l.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${x}`}}),b.data?.error)throw new Error("Failed to publish fnet package.")},kt}(),j=function(){if(Dt)return _t;Dt=1;const e=T,n=t,o=b.default;return _t=async({setInProgress:t,context:i,deploymentProject:r,deploymentProjectTarget:a,yamlTarget:s})=>{await t({message:"Deploying it as fnet form."});const{file:c,data:l}=await n({name:a.config||"fnet-form",dir:i.projectDir,tags:i.tags});if(!l.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${c}`);if(!l.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${c}`);if(!l.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${c}`);const p=`${l.env.ATOM_API_URL}/v1/auth/token`,d=l.env.ATOM_API_USERNAME,f=l.env.ATOM_API_PASSWORD;let u=await o({method:"POST",url:p,data:{username:d,password:f},headers:{"Content-Type":"application/json"}});const m=u.data?.access_token;if(!m)throw new Error(`Invalid access_token from ${p}`);r.isDirty=!0;const g=e.inc(a.version,"patch");a.params.version=g,a.version=g,s.set("version",g);const h=`${l.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(u=await o({method:"POST",url:h,data:{name:a.params.name,version:a.params.version,docs:a.params.docs,configs:a.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`}}),u.data?.error)throw new Error("Error publishing fnet form.")},_t}(),_=function(){if(Pt)return St;Pt=1;const e=T,n=t,o=b.default,r=i,a=A,s=q;return St=async({setInProgress:t,context:i,deploymentProject:c,deploymentProjectTarget:l,yamlTarget:p})=>{await t({message:"Deploying it as fnet flow."});const{file:d,data:f}=await n({name:l.config||"fnet-flow",dir:i.project.projectDir,tags:i.tags});if(!f.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!f.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!f.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const u=`${f.env.ATOM_API_URL}/v1/auth/token`,m=f.env.ATOM_API_USERNAME,g=f.env.ATOM_API_PASSWORD;let h=await o({method:"POST",url:u,data:{username:m,password:g},headers:{"Content-Type":"application/json"}});const y=h.data?.access_token;if(!y)throw new Error(`Invalid access_token from ${u}`);c.isDirty=!0;const w=e.inc(l.version,"patch");l.params.version=w,l.version=w,p.set("version",w);const v=`${f.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(h=await o({method:"POST",url:v,data:{name:l.params.name,version:l.params.version,docs:l.params.docs,configs:l.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${y}`}}),h.data?.error)throw new Error("Error publishing fnet flow.");const b=h.data?.upload.id;let x="fnet-dir-zipper";x+=` --sourceDir='${i.project.projectDir}'`,x+=" -p=**/*",x+=" -g",x+=" --stdout_format=json";const k=await a({cmd:x});if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new s;_.append("file",r.createReadStream(j));const D=await o.request({method:"POST",maxBodyLength:1/0,url:`${f.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{..._.getHeaders(),Authorization:`Bearer ${y}`},data:_});if(D.data?.error)throw new Error("Error uploading fnet flow.")},St}(),D=function(){if(Tt)return At;Tt=1;const e=T,n=t,o=b.default,r=i,a=A,s=q;return At=async({setInProgress:t,context:i,deploymentProject:c,deploymentProjectTarget:l,yamlTarget:p})=>{await t({message:"Deploying it as fnet node."});const{file:d,data:f}=await n({name:l.config||"fnet-node",dir:i.project.projectDir,tags:i.tags});if(!f.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!f.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!f.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const u=`${f.env.ATOM_API_URL}/v1/auth/token`,m=f.env.ATOM_API_USERNAME,g=f.env.ATOM_API_PASSWORD;let h=await o({method:"POST",url:u,data:{username:m,password:g},headers:{"Content-Type":"application/json"}});const y=h.data?.access_token;if(!y)throw new Error(`Invalid access_token from ${u}`);c.isDirty=!0;const w=e.inc(l.version,"patch");l.params.version=w,l.version=w,p.set("version",w);const v=`${f.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(h=await o({method:"POST",url:v,data:{name:l.params.name,version:l.params.version,docs:l.params.docs,configs:l.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${y}`}}),h.data?.error)throw new Error("Error publishing fnet node.");const b=h.data?.upload.id;let x="fnet-dir-zipper";x+=` --sourceDir='${i.project.projectDir}'`,x+=" -p=**/*",x+=" -g",x+=" --stdout_format=json";const k=await a({cmd:x});if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new s;_.append("file",r.createReadStream(j));const D=await o.request({method:"POST",maxBodyLength:1/0,url:`${f.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{..._.getHeaders(),Authorization:`Bearer ${y}`},data:_});if(D.data?.error)throw new Error("Error uploading fnet node.")},At}(),S=function(){if($t)return Et;$t=1;const e=t,n=U,o=m,i=T;return Et=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as Rust package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},Et}();return Ot=async t=>{const{atom:n,packageDependencies:i,context:r,deploymentProjectTarget:a,setInProgress:c,deploymentProject:d,yamlTarget:f}=t;if(!0===a.enabled)if("lib"===a.type)await p({...t});else if("red"===a.type)await l({...t});else if("npm"===a.type)await s({...t});else if("gcs"===a.type)await o({...t});else if("gitlab"===a.type)await e({...t});else if("fnet-package"===a.type)await k({...t});else if("fnet-form"===a.type)await j({...t});else if("fnet-node"===a.type)await D({...t});else if("fnet-flow"===a.type)await _({...t});else{let e;if("nextjs"===a.type?e=v:"webos"===a.type?e=w:"electron"===a.type?e=y:"docker"===a.type?e=x:"ios"===a.type?e=g:"macos"===a.type?e=h:"rust"===a.type&&(e=S),!e)return;await e({atom:n,target:a,onProgress:c,projectDir:r.projectDir,dependencies:i,context:r,yamlTarget:f}),d.isDirty=!0}},Ot}function Jn(){if(Nt)return Ct;Nt=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i}){t.context.transform=t.context.transform||e(t.definition);for(const n of t.childs)n.context.transform=n.context.transform||e(n.definition),n.definition.hasOwnProperty("condition")&&(n.context.transform.condition=await i(n.definition.condition));await n({node:t}),o({node:t})}return Ct={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:n}){e.type="switch",e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0;for(let t=0;t<e.definition.switch.length;t++){let o=e.definition.switch[t],i=`${t}`;o.hasOwnProperty("default")&&(i="default",o=o.default);const r={name:o.condition||i,childs:[],parent:e,definition:o,index:e.childs.length,context:{}};e.childs.push(r),await n({node:r})}e.resolve=t},resolve:t}}function zn(){if(Yt)return Xt;Yt=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i}){t.context.transform=t.context.transform||e(t.definition);const r=t.context.transform;r.args&&(r.args=await i(r.args)),r.result&&(r.result=await i(r.result));const a=t.workflow.parent;t.context.lib=a.context.libs.find((e=>e.name===r.call)),await n({node:t}),o({node:t})}return Xt={hits:async function({node:e}){return e.definition.hasOwnProperty("call")},init:async function({node:e,initNode:n}){e.type="call";for(let t=0;t<e.definition.modules?.length;t++){const o=e.definition.modules[t],i=Object.keys(o)[0],r={name:i,childs:[],parent:e,definition:o[i],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(r),await n({node:r})}e.resolve=t},resolve:t}}function Wn(){if(Qt)return Zt;Qt=1;const e=zn();return Zt={hits:async function({node:e}){return e.definition.hasOwnProperty("shell")},init:async function(t){const{node:n}=t,o="shell",i=n.definition,r=typeof i[o];if("string"!==r&&"object"!==r)throw new Error(`Unsupported ${o} usage`);i.call="npm:@fnet/shell",i.args="string"===r?{...i.args,cmd:i[o]}:i[o],delete i[o],await e.init(t)}}}function Kn(){return bn?vn:(bn=1,vn=({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}}})}function Gn(){if(kn)return xn;kn=1;const e=d,n=f,o=r,i=a,c=u,l=m,p=g,k=function(){if(V)return H;V=1;const e=h,t=y;return H=async()=>{if(!await t({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const n=e.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await n.connect(),n}}(),{nanoid:D}=w,S=function(){if(Y)return X;Y=1;const{Api:e}=v,t=b.default,n=x;return X=class{init({config:o,accessToken:i}){return new Promise(((r,a)=>{if(e.set_api_url(o.data.url),i)return e.set_req_token(i),void r(i);t({method:"POST",url:`${o.data.issuer}/protocol/openid-connect/token`,data:n.stringify(o.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((t=>{e.set_req_token(t.data.access_token),r(t.data.access_token)})).catch((t=>{e.set_req_token(),a(t)}))}))}},X}(),P=An(),A=Tn(),T=En(),E=$n(),$=On(),O=In(),I=Cn(),C=Nn(),N=Mn(),M=Fn(),F=Rn(),R=qn(),q=Un(),U=Ln(),G=Bn(),{Atom:Z}=v,Q=L,ee=_,te=B,ne=t,oe=j,ie=J,re=s,ae=z,se=function(){if(Ft)return Mt;Ft=1;const e=J,t=Jn();return Mt={hits:async function({node:t}){const n=Object.keys(t.definition);return 1===(await Promise.all(n.map((t=>e({expression:t}))))).filter((e=>"if"===e?.processor)).length},init:async function(n){const{node:o}=n,i=Object.keys(o.definition),r=await Promise.all(i.map((t=>e({expression:t})))),a=[],s=r.find((e=>"if"===e?.processor)),c=o.definition[s.expression];a.push({name:`${o.name}_if`,definition:c,processor:s}),delete o.definition[s.expression];const l=r.filter((e=>"elseif"===e?.processor));let p=0;for(const e of l){const t=o.definition[e.expression];a.push({name:`${o.name}_elseif_${p++}`,definition:t,processor:e}),delete o.definition[e.expression]}o.definition.switch=[];for(const e of a)o.definition.switch.push({condition:e.processor.statement,...e.definition});await t.init(n)}}}(),ce=function(){if(qt)return Rt;qt=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o}){if(t.context.transform=t.context.transform||e(t.definition),t.context.transform,t.context.try=t.childs.find((e=>"try"===e.name)),t.context.except=t.childs.find((e=>"except"===e.name)),t.context.except){const n=t.context.except;n.context.transform=n.context.transform||e(n.definition),n.context.transform.hasOwnProperty("as")||(n.context.transform.as="error")}await n({node:t}),o({node:t})}return Rt={hits:async function({node:e}){return e.definition.hasOwnProperty("try")&&e.definition.hasOwnProperty("except")},init:async function({node:e,initNode:n}){if(e.type="tryexcept",e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0,e.definition.try){const t="try",o={name:t,childs:[],parent:e,definition:e.definition[t],index:e.childs.length,context:{}};e.childs.push(o),await n({node:o})}if(e.definition.except){const t="except",o={name:t,childs:[],parent:e,definition:e.definition[t],index:e.childs.length,context:{}};e.childs.push(o),await n({node:o})}e.resolve=t},resolve:t}}(),le=function(){if(Lt)return Ut;Lt=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i}){t.context.transform=e(t.definition);const r=t.context.transform;for(let e=0;e<r.assign?.length;e++){let t=r.assign[e],n=Object.keys(t)[0],o=t[n],a={key:await i(n),value:await i(o)};r.assign[e]=a}await n({node:t}),o({node:t})}return Ut={hits:async function({node:e}){return e.definition.hasOwnProperty("assign")},init:async function({node:e,initNode:n}){e.type="assign",e.resolve=t},resolve:t}}(),pe=function(){if(Jt)return Bt;Jt=1;const e=m,t=W,n=K;async function o({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i}){t.context.transform=t.context.transform||e(t.definition),t.context.transform.for.in=await i(t.definition.for.in),await n({node:t}),o({node:t})}return Bt={hits:async function({node:e}){return e.definition.hasOwnProperty("for")},init:async function({node:e,initNode:i}){if(e.type="for",e.blockAutoJumpToParent=!0,e.blockAutoJumpToSibling=!1,!e.definition.for.hasOwnProperty("steps")){const o=["value","in"],[i,r]=[t(e.definition.for,o),n(e.definition.for,o)];e.definition.for=i,e.definition.for.steps=[{[`${e.name}_step`]:r}]}Array.isArray(e.definition.for.steps)||(e.definition.for.steps=[{[`${e.name}_step`]:e.definition.for.steps}]);for(let t=0;t<e.definition.for.steps.length;t++){const n=e.definition.for.steps[t],o=Object.keys(n)[0],r={name:o,childs:[],parent:e,definition:n[o],index:e.childs.length,context:{}};e.childs.push(r),await i({node:r})}e.resolve=o},resolve:o}}(),de=Jn(),fe=Wt?zt:(Wt=1,zt={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}){}}),ue=function(){if(Gt)return Kt;Gt=1;const e=m;async function t({node:t,resolveTypeCommon:n,transformExpression:o}){t.context.transform=t.context.transform||e(t.definition);const i=t.context.transform;i.raise=await o(i.raise),await n({node:t})}return Kt={hits:async function({node:e}){return e.definition.hasOwnProperty("raise")},init:async function({node:e,initNode:n}){e.type="raise",e.resolve=t},resolve:t}}(),me=function(){if(Vt)return Ht;Vt=1;const e=m;async function t({node:t,resolveTypeCommon:n,transformExpression:o}){t.context.transform=t.context.transform||e(t.definition);const i=t.context.transform;i.return=await o(i.return),await n({node:t})}return Ht={hits:async function({node:e}){return e.definition.hasOwnProperty("return")},init:async function({node:e,initNode:n}){e.type="return",e.resolve=t},resolve:t}}(),ge=zn(),he=Wn(),ye=function(){if(tn)return en;tn=1;const e=zn();return en={hits:async function({node:e}){return e.definition.hasOwnProperty("config")},init:async function(t){const{node:n}=t,o="config",i=n.definition,r=typeof i[o];if("string"!==r&&"object"!==r)throw new Error(`Unsupported ${o} usage`);i.call="npm:@fnet/config",i.args="string"===r?{...i.args,name:i[o]}:i[o],delete i[o],await e.init(t)}}}(),we=function(){if(on)return nn;on=1;const e=zn();return nn={hits:async function({node:e}){return e.definition.hasOwnProperty("yaml")},init:async function(t){const{node:n}=t,o="yaml",i=n.definition,r=typeof i[o];if("string"!==r&&"object"!==r)throw new Error(`Unsupported ${o} usage`);i.call="npm:@fnet/yaml",i.args="string"===r?{...i.args,file:i[o]}:i[o],delete i[o],await e.init(t)}}}(),ve=function(){if(an)return rn;async function e({node:e}){e.context.next=e.childs[0]}return an=1,rn={hits:async function({node:e}){return e.definition.hasOwnProperty("steps")},init:async function({node:t,initNode:n}){t.type||(t.type="steps");const o=t.definition.steps||[];for await(const e of o){const o=Object.keys(e)[0],i={name:o,childs:[],parent:t,definition:e[o],index:t.childs.length,context:{}};t.childs.push(i),await n({node:i})}t.resolve=e},resolve:e}}(),be=function(){if(cn)return sn;cn=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i}){t.context.transform=t.context.transform||e(t.definition);const r=t.context.transform;r.props&&(r.props=await i(r.props));const a=t.workflow.parent;t.context.lib=a.context.libs.find((e=>e.name===r.form)),await n({node:t}),o({node:t})}return sn={hits:async function({node:e}){return e.definition.hasOwnProperty("form")},init:async function({node:e,initNode:n}){e.type="form";for(let t=0;t<e.definition.modules?.length;t++){const o=e.definition.modules[t],i=Object.keys(o)[0],r={name:i,childs:[],parent:e,definition:o[i],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(r),await n({node:r})}e.resolve=t},resolve:t}}(),xe=function(){if(pn)return ln;pn=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i,transformValue:r}){t.context.transform=t.context.transform||e(t.definition),await n({node:t})}return ln={hits:async function({node:e}){return e.definition.hasOwnProperty("operation")},init:async function({node:e,initNode:n}){e.type="operation",e.resolve=t},resolve:t}}(),ke=function(){if(fn)return dn;fn=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i}){t.context.transform=t.context.transform||e(t.definition);const r=t.context.transform;r.next=await i(r.next),await n({node:t}),o({node:t})}return dn={hits:async function({node:e}){return e.definition.hasOwnProperty("next")},init:async function({node:e,initNode:n}){e.type="jump",e.resolve=t},resolve:t}}(),je=function(){if(mn)return un;mn=1;const e=zn();return un={hits:async function({node:e}){return e.definition.hasOwnProperty("prompt")},init:async function(t){const{node:n}=t,o="prompt",i=n.definition,r=typeof i[o];if("string"!==r&&"object"!==r)throw new Error(`Unsupported ${o} usage`);i.call="npm:@fnet/prompt",i.args="string"===r?{...i.args,message:i[o]}:i[o],delete i[o],await e.init(t)}}}(),_e=function(){if(hn)return gn;hn=1;const e=zn();return gn={hits:async function({node:e}){return e.definition.hasOwnProperty("html-script")},init:async function(t){const{node:n}=t,o="html-script",i=n.definition,r=typeof i[o];if("string"!==r&&"object"!==r)throw new Error(`Unsupported ${o} usage`);i.call="npm:@flownet/lib-load-browser-script-url",i.args="string"===r?{...i.args,src:i[o]}:i[o],delete i[o],await e.init(t)}}}(),De=function(){if(wn)return yn;wn=1;const e=zn();return yn={hits:async function({node:e}){return e.definition.hasOwnProperty("html-link")},init:async function(t){const{node:n}=t,o="html-link",i=n.definition,r=typeof i[o];if("string"!==r&&"object"!==r)throw new Error(`Unsupported ${o} usage`);i.call="npm:@flownet/lib-load-browser-link-url",i.args="string"===r?{...i.args,src:i[o]}:i[o],delete i[o],await e.init(t)}}}(),Se=Kn();return xn=class{#e;#t;#n;#o;#i;#r;#a;#s;#c;#l;#p;#d;#f;#u;#m;#g;#h;#y;#w;#v;#b;constructor(e){this.#e=new S,this.#t=e,this.#r=[],this.#a=[],this.#s={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#v={packageDependencies:this.#r,packageDevDependencies:this.#a,setInProgress:this.setInProgress.bind(this),context:this.#t,Atom:Z,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#b={initNode:this.initNode.bind(this),cloneDeep:l,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:Se,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 k(),this.#p=this.#t.buildId||D(24),this.#v.buildId=this.#p,this.#m=this.#t.mode,this.#g=["all","deploy","build","file"].includes(this.#m),this.#h=["all","deploy","build"].includes(this.#m),this.#y=["all","deploy"].includes(this.#m),this.#w=["all","deploy","build","file","bpmn"].includes(this.#m),this.#f=this.#t.protocol,this.#d="BUILD:"+this.#p,this.#u=(await ne({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 P(this.#v),await A(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.#r}),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.#u}),this.#v.atomAccessToken=this.#c)}async initWorkflow(){const e=this.#t.id;this.#n=this.#t.project?.workflowAtom||await Z.get({id:e}),this.#o="string"==typeof this.#n.doc.content?(await re({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.#r.push({package:"get-value",version:"^3.0"}),this.#r.push({package:"set-value",version:"^4.1"}),this.#n.doc.features.form_enabled?(this.#r.push({package:"react",version:"^18.2"}),this.#r.push({package:"react-dom",version:"^18.2"}),this.#r.push({package:"@flownet/react-app",version:"^0.1"}),this.#r.push({package:"@flownet/react-app-state",version:"^0.1"})):this.#r.push({package:"@fnet/args",version:"^0.1"}),this.#r.push({package:"chalk",version:"^4"})}#x(t){console.log("filePath",t),e.statSync(t).isDirectory()?(e.readdirSync(t).forEach((e=>{const o=n.join(t,e);this.#x(o)})),e.rmSync(t)):e.unlinkSync(t)}#k(t,o){const i=e.existsSync(t),r=i&&e.statSync(t);i&&r.isDirectory()?(e.mkdirSync(o,{recursive:!0}),e.readdirSync(t).forEach((e=>{this.#k(n.join(t,e),n.join(o,e))}))):e.copyFileSync(t,o)}async initWorkflowDir(){const t=this.#t.projectDir,o=this.#t.coreDir,i=["node_modules"];if(e.existsSync(t)){const o=e.readdirSync(t);for(const r of o)if(!i.includes(r)){const o=n.join(t,r);e.rmSync(o,{recursive:!0})}}e.existsSync(t)||e.mkdirSync(t,{recursive:!0});const r=n.join(t,"src");e.existsSync(r)||e.mkdirSync(r,{recursive:!0});const a=n.join(r,"core");this.#k(o,a);const s=n.join(r,"default","blocks");e.existsSync(s)||e.mkdirSync(s,{recursive:!0})}async initNunjucks(){const e=this.#t.templateDir;this.#i=c.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 ce.hits(t))await ce.init(t);else if(await pe.hits(t))await pe.init(t);else if(await de.hits(t))await de.init(t);else if(await se.hits(t))await se.init(t);else if(await fe.hits(t))await fe.init(t);else if(await le.hits(t))await le.init(t);else if(await ue.hits(t))await ue.init(t);else if(await me.hits(t))await me.init(t);else if(await ge.hits(t))await ge.init(t);else if(await he.hits(t))await he.init(t);else if(await ye.hits(t))await ye.init(t);else if(await we.hits(t))await we.init(t);else if(await _e.hits(t))await _e.init(t);else if(await De.hits(t))await De.init(t);else if(await be.hits(t))await be.init(t);else if(await xe.hits(t))await xe.init(t);else if(await je.hits(t))await je.init(t);else if(await ve.hits(t))await ve.init(t);else{if(!await ke.hits(t))throw new Error("Undefined step type.");await ke.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 o=n.join(e.parent.indexKey,e.name);e.indexKey=o,t[o]=e;const i=[];let r=e;for(;r?.parent;)i.push(r.index),r=r.parent;i.reverse(),e.codeKey=`B_${i.join("_")}_${e.type}`,e.pathKey=`${i.join(".")}`,e.typeId=D(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 r=i.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));r?.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 o=Q({url:e});if(!o)throw new Error(`Invalid package name: ${e}`);if(o.protocol||(o.protocol=this.#f),"ac:"===o.protocol){const t=o.pathname.split("/");if(1===t.length)return await Z.first({where:{name:e,parent_id:this.#u.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await Z.first({where:{name:t[0],parent_id:this.#u.env.ATOM_LIBRARIES_ID,type:"folder"}});return await Z.first({where:{name:t[1],parent_id:e.id,type:"workflow.lib"}})}}else{if("local:"===o.protocol){const e=n.resolve(this.#t.projectSrcDir,`${o.pathname}.js`),t=[],i=await oe({file:e,recursive:!0}),r=!0===this.#n.doc.features.all_parsed_imports?i.all:i.required;for await(const e of r){if("npm"!==e.type)continue;if(t.find((t=>t.package===e.package)))continue;const n=(await ee({name:e.package,groupBy:{minor:!0}}))[0][0];t.push({package:e.package,subpath:e.subpath,version:`^${n}`,type:"npm"})}return{name:o.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:t},protocol:o.protocol}}if("npm:"===o.protocol){const e=(await ee({name:o.pathname,groupBy:{minor:!0}}))[0][0];return{name:o.pathname,doc:{type:"workflow.lib",subtype:"flow"===t?.definition?.subtype?"workflow":null,"content-type":"javascript",language:"js",dependencies:[{package:o.pathname,version:`^${e}`,type:"npm"}]},protocol:o.protocol}}}}async resolveNodeTree({root:e}){for await(const t of e.childs)await this.resolveTypeWorkflow({node:t})}async resolveTypeWorkflow({node:e}){e.context.transform=l(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:t}){await this.setInProgress({message:"Creating external lib files."}),this.#n.typesDir="./types";const o=t.context.libs.filter((e=>"atom"===e.type));for(let t=0;t<o.length;t++){const i=o[t].atom,r=this.#t.projectDir;if("local:"===i.protocol){const t=n.resolve(this.#t.projectSrcDir,`${i.fileName||i.name}.js`),o=n.relative(`${this.#t.projectDir}/src/default/blocks`,t);if(!e.existsSync(t)){e.mkdirSync(n.dirname(t),{recursive:!0});let o="export default async (args)=>{\n";o+="}",e.writeFileSync(t,o,"utf8")}i.relativePath=o.split(n.sep).join("/"),this.#n.typesDir=`./types/${n.basename(r)}/src`}else if("npm:"===i.protocol)i.relativePath=i.name;else{const t=`${r}/src/libs/${i.id}.js`,o=i.doc.contents?.find((e=>"esm"===e.format))||i.doc;e.writeFileSync(n.normalize(t),o.content,"utf8")}}}async createEngine({root:t}){await this.setInProgress({message:"Creating engine file."});const o=this.#t.templateDir,i=c.compile(e.readFileSync(n.resolve(o,"src/default/engine.js.njk"),"utf8"),this.#i).render({...t,ui:{package:"@flownet/react-app"}}),r=this.#t.projectDir,a=n.resolve(r,"src/default/index.js");e.writeFileSync(a,i,"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:t}){const o=this.#t.templateDir,i=c.compile(e.readFileSync(n.resolve(o,"src/default/workflow.js.njk"),"utf8"),this.#i).render(t),r=this.#t.projectDir,a=n.resolve(r,`src/default/${t.codeKey}.js`);e.writeFileSync(a,i,"utf8");for await(const e of t.childs)await this.createType({node:e})}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:t}){let o=this.#s[t.type];if(o)return o;const i=this.#t.templateDir;return o=c.compile(e.readFileSync(n.resolve(i,`src/default/blocks/${t.type}.js.njk`),"utf8"),this.#i),this.#s[t.type]=o,o}createStepFile({node:t}){const o=this.#t.projectDir,i=`${t.codeKey}.js`,r=n.resolve(o,`src/default/blocks/${i}`);e.writeFileSync(r,t.context.render,"utf8"),t.context.fileName=i,t.context.filePath=r}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(p(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 ie({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 t="flow.yaml",i=`Creating ${t}`;await this.setInProgress({message:i});const{content:r,...a}=this.#n.doc,s={content:o.stringify(a)},l=this.#t.templateDir,p=c.compile(e.readFileSync(n.resolve(l,`${t}.njk`),"utf8"),this.#i).render(s),d=this.#t.projectDir,f=n.resolve(d,`${t}`);e.writeFileSync(f,p,"utf8")}async createProjectMainYaml(){const t="flow.main.yaml",i=`Creating ${t}`;await this.setInProgress({message:i});const r={content:o.stringify(this.#o)},a=this.#t.templateDir,s=c.compile(e.readFileSync(n.resolve(a,`${t}.njk`),"utf8"),this.#i).render(r),l=this.#t.projectDir,p=n.resolve(l,`${t}`);e.writeFileSync(p,s,"utf8")}async runPrettifier(){const e=this.#t.projectDir,t=i.exec("prettier --write .",{cwd:n.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 Z.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 Z.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 r=i.get(o[e]);await G({...this.#v,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:r})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#t.id)return;let o=await Z.first({name:t.params.name,parent_id:this.#u.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:n.version}),await Z.update(o,{id:o.id})):o=await Z.create({parent_id:this.#u.env.ATOM_PACKAGES_ID,doc:{name:t.params.name,type:"pm",versions:[{v:n.version}]}})}async setInProgress({message:e}){console.log(ae.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 t=this.#w?await te({root:this.#l}):void 0;if(this.#g){if(await this.initWorkflowDir(),await this.initNunjucks(),this.#w){const o=this.#t.project?.projectDir||this.#t.projectDir;e.writeFileSync(n.resolve(o,"./fnet/flow.bpmn"),t.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 M(this.#v),await N(this.#v),await C(this.#v),await I(this.#v),await $(this.#v),await T(this.#v),await O(this.#v),await E(this.#v),await F(this.#v),await R(this.#v),this.#h&&(await q(this.#v),await U(this.#v),this.#y&&await this.deploy())}await this._cache_set(this.#d,{status:"COMPLETED",data:{network:t}})}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e.message||e}),e}}async createNetwork(){try{const e=await te({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}}}}var Hn=function(){if(Dn)return Sn;Dn=1;const u=process.cwd(),{spawn:m}=e;t({name:["redis"],dir:u,optional:!0});const g=n,h=o,y=i,w=r,v=a,b=s,x=t,k=c,j=l,_=p,D=Gn(),S=function(){if(_n)return jn;_n=1;const e=d,t=f;return jn=function({baseDir:n=__dirname}){let o=n;for(;o!==t.parse(o).root;){const n=t.join(o,"node_modules");if(e.existsSync(n))return n;o=t.dirname(o)}return null}}()({baseDir:__dirname}),P="win32"===process.platform?";":":";process.env.PATH=`${g.join(S,"/.bin")}${P}${process.env.PATH}`;let A=h(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=g.resolve(S,"./@fnet/cli-project-flow/dist/template/project"),n=g.resolve(u,e.name);y.existsSync(n)||y.mkdirSync(n),await _({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let o=v.exec("fnet build",{cwd:n});if(0!==o.code)throw new Error("Failed to build project.");if(v.which("git")&&(o=v.exec("git init --initial-branch=main",{cwd:n}),0!==o.code))throw new Error("Failed to initialize git.");if(v.which("code")&&e.vscode&&(o=v.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=g.resolve(S,"@fnet/cli-project-flow/dist/template/project"),n=process.cwd();if(e.name=g.basename(n),e.update){if(await _({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0}),0!==v.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 E(e),n=new D(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 E({...e,mode:"all"}),n=new D(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 E({...e,mode:"file"}),n=new D(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 T(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 E(e),{projectDir:i}=t,r=process.argv.slice(3);m(n,[...o,...r],{cwd:i,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function E(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:g.resolve(u,`./.output/${e.id}`),templateDir:g.resolve(S,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:g.resolve(S,"./@fnet/cli-project-common/dist/template/default"),coreDir:g.resolve(S,"./@fnet/cli-project-flow/dist/template/core"),tags:e.ftag}}{const t=await async function({tags:e}){const t=g.resolve(u,"flow.yaml");if(!y.existsSync(t))throw new Error("flow.yaml file not found in current directory.");const{raw:n,parsed:o}=await b({file:t,tags:e}),i=g.dirname(t),r=o.main||"flow.main.yaml";let a=g.resolve(i,r);if(!y.existsSync(a)&&(a=g.resolve(i,r+".yaml"),!y.existsSync(a)))throw new Error(`${r} file not found in ${a}.`);const{raw:s,parsed:c}=await b({file:a,tags:e}),l={workflowAtom:{doc:{...o,"content-type":"yaml",content:s}},projectDir:i,projectFilePath:t,projectFileContent:n,projectFileParsed:o,projectMainFilePath:a,projectMainFileContent:s,projectMainFileParsed:c};let p=g.resolve(i,"fnet/targets.yaml");if(!y.existsSync(p)&&(p=g.resolve(i,"flow.devops.yaml"),y.existsSync(p))){const e=g.resolve(i,"fnet");y.existsSync(e)||y.mkdirSync(e),y.copyFileSync(p,g.resolve(i,"fnet/targets.yaml")),y.unlinkSync(p)}if(y.existsSync(p)){const{raw:t,parsed:n}=await b({file:p,tags:e}),o=w.parseDocument(t);l.devops={filePath:p,fileContent:t,yamlDocument:o,doc:{...n},type:"workflow.deploy",save:async()=>{y.writeFileSync(l.devops.filePath,o.toString())}}}const d=g.resolve(i,"readme.md");if(y.existsSync(d)){const e=y.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:g.resolve(S,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:g.resolve(S,"./@fnet/cli-project-common/dist/template/default"),coreDir:g.resolve(S,"./@fnet/cli-project-flow/dist/template/core"),projectDir:g.resolve(t.projectDir,"./.workspace"),projectSrcDir:g.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return A=A.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 E(e),{project:n}=t,{projectDir:o,projectFileParsed:i}=n,r=i.input;if(!r)throw new Error("Config schema not found in project file.");const a=await k({schema:r,format:"yaml"}),s=g.resolve(o,".fnet");y.existsSync(s)||y.mkdirSync(s);const c=g.resolve(s,`${e.name}.fnet`);y.writeFileSync(c,a)}catch(e){console.error(e.message),process.exit(1)}})),A=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 E(e),{project:n}=t,{projectDir:o,projectFileParsed:i}=n,r=i.input;if(!r)throw new Error("Config schema not found in project file.");const a=g.resolve(o,".fnet"),s=g.resolve(a,`${e.name}.fnet`),c=await k({schema:r,format:"yaml",ref:s});y.existsSync(a)||y.mkdirSync(a),y.writeFileSync(s,c)}catch(e){console.error(e.message),process.exit(1)}}))}(A),A=T(A,{bin:"npm"}),A=T(A,{bin:"node"}),A=T(A,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),A=T(A,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),A=T(A,{name:"app",bin:"npm",preArgs:["run","app","--"]}),A=T(A,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),A=T(A,{bin:"npx"}),A=T(A,{bin:"cdk"}),A=T(A,{bin:"aws"}),A=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 E(e),{projectDir:o}=t,i=e.config,r=await x({name:i,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),a=r?.data?.env||void 0,s=e.command,c=process.argv.slice(5);m(s,[...n,...c],{cwd:o,stdio:"inherit",shell:!0,env:{...process.env,...a}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(A,{name:"with"}),A=function(e,{name:t,preArgs:n=[]}){return e.command(`${t} group [options..]`,"Run a command group.",(e=>e.positional("group",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await E(e),{project:n}=t,{projectFileParsed:o}=n,i=o.commands;if(!i)throw new Error("Commands not found in project file.");const r=i[e.group];if(!r)throw new Error(`Command group '${e.group}' not found in project file.`);await j({commands:r})}catch(e){console.error(e.message),process.exit(1)}}))}(A,{name:"run"}),A.demandCommand(1,"You need at least one command before moving on").help().argv,Sn}(),Vn=G(Hn);module.exports=Vn;
2
+ "use strict";var e=require("child_process"),t=require("@fnet/config"),n=require("path"),o=require("yargs/yargs"),i=require("fs"),r=require("yaml"),a=require("shelljs"),s=require("@fnet/yaml"),c=require("@fnet/object-from-schema"),l=require("@fnet/shell-flow"),p=require("@flownet/lib-render-templates-dir"),d=require("node:fs"),f=require("node:path"),u=require("nunjucks"),m=require("lodash.clonedeep"),g=require("isobject"),y=require("redis"),h=require("@flownet/lib-is-redis-online"),w=require("nanoid"),v=require("@flownet/lib-atom-api-js"),b=require("axios"),x=require("qs"),k=require("lodash.merge"),j=require("@flownet/lib-parse-imports-js"),_=require("@flownet/lib-list-npm-versions"),D=require("ajv/dist/2020"),P=require("ajv/dist/standalone"),S=require("ajv-formats"),A=require("@fnet/shell"),T=require("semver"),E=require("@fnet/up-list-files"),$=require("node:os"),O=require("@node-red/util"),C=require("@flownet/lib-to-ios-app"),I=require("@flownet/lib-to-macos-app"),N=require("@flownet/lib-to-electron"),M=require("@flownet/lib-to-webos"),F=require("@flownet/lib-to-nextjs"),R=require("@flownet/lib-to-docker"),q=require("form-data"),U=require("@fnet/to-rust"),L=require("@flownet/lib-parse-node-url"),B=require("@flownet/lib-bpmn-from-flow"),J=require("@fnet/expression"),z=require("chalk"),W=require("lodash.pick"),K=require("lodash.omit");function G(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var H,V,X,Y,Z,Q,ee,te,ne,oe,ie,re,ae,se,ce,le,pe,de,fe,ue,me,ge,ye,he,we,ve,be,xe,ke,je,_e,De,Pe,Se,Ae,Te,Ee,$e,Oe,Ce,Ie,Ne,Me,Fe,Re,qe,Ue,Le,Be,Je,ze,We,Ke,Ge,He,Ve,Xe,Ye,Ze,Qe,et,tt,nt,ot,it,rt,at,st,ct,lt,pt,dt,ft,ut,mt,gt,yt,ht,wt,vt,bt,xt,kt,jt,_t,Dt,Pt,St,At,Tt,Et,$t,Ot,Ct,It,Nt,Mt,Ft,Rt,qt,Ut,Lt,Bt,Jt,zt,Wt,Kt,Gt,Ht,Vt,Xt,Yt,Zt,Qt,en,tn,nn,on,rn,an,sn,cn,ln,pn,dn,fn,un,mn,gn,yn,hn,wn,vn,bn,xn,kn,jn,_n,Dn,Pn={};function Sn(){if(Q)return Z;Q=1;const e=k;return Z=({feature:t,features:n,packageDevDependencies:o})=>{const{name:i,packages:r,options:a,extraCheck:s,explicit:c}=t,l=`${i}_enabled`,p=n.rollup_output||{},d=Object.keys(p);let f=a||{};const u=n[i]?.options;u&&(f=e(f,u));const m=!n[i]||!1===n[i]?.enabled;d.forEach((e=>{const t=n.rollup_output[e];if(t){if(Reflect.has(t,i)){if(m||!t[i]||!1===t[i]?.enabled)return void delete t[i];!0===t[i]&&(t[i]={enabled:!0,options:f})}else{if(m||c||!1===n[l])return;t[i]={enabled:!0}}t[i]=t[i]||{},t[i].options={...f,...t[i].options}}}));let g=d.some((e=>!0===n.rollup_output[e][i]?.enabled));s&&(g=s()&&g),n[l]=g,g&&r.forEach((e=>o.push({package:e[0],version:e[1]})))}}function An(){if(Se)return Pe;Se=1;const e=k,t=d,n=f,o=j,i=function(){if(te)return ee;te=1;const e=Sn();return ee=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({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:i,packageDevDependencies:o})},ee}(),r=function(){if(oe)return ne;oe=1;const e=Sn();return ne=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:i,packageDevDependencies:o})},ne}(),a=function(){if(re)return ie;re=1;const e=Sn();return ie=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:i,packageDevDependencies:o})},ie}(),s=function(){if(se)return ae;se=1;const e=Sn();return ae=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:i,packageDevDependencies:o})},ae}(),c=function(){if(le)return ce;le=1;const e=Sn();return ce=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:i,packageDevDependencies:o})},ce}(),l=function(){if(de)return pe;de=1;const e=Sn();return pe=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:i,packageDevDependencies:o})},pe}(),p=function(){if(ue)return fe;ue=1;const e=Sn();return fe=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:i,packageDevDependencies:o})},fe}(),u=function(){if(ge)return me;ge=1;const e=Sn();return me=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:i,packageDevDependencies:o})},me}(),m=function(){if(he)return ye;he=1;const e=Sn();return ye=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:i,packageDevDependencies:o})},ye}(),g=function(){if(ve)return we;ve=1;const e=Sn();return we=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:i,packageDevDependencies:o})},we}(),y=function(){if(xe)return be;xe=1;const e=Sn();return be=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:i,packageDevDependencies:o})},be}(),h=function(){if(je)return ke;je=1;const e=Sn();return ke=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features,r={};!0===i.app?.enabled&&(r.targets=r.targets||[],r.targets.push({src:"./src/app/index.html",dest:i.app.dir}),Reflect.has(i.app,"copy")||Reflect.has(i,"copy")||(i.copy=!0)),e({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:r},features:i,packageDevDependencies:o})},ke}(),w=function(){if(De)return _e;De=1;const e=Sn();return _e=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features,r=i.css&&!1!==i.css.enabled;let a=[];r&&(a.push(["rollup-plugin-postcss","^4"]),a.push(["sass","^1.66"]),(i.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"])}}))),e({feature:{name:"css",packages:a},features:i,packageDevDependencies:o})},_e}();function v({dir:e,name:o="index"}){let i=n.resolve(e,`./${o}.tsx`);if(t.existsSync(i)||(i=n.resolve(e,`./${o}.ts`)),t.existsSync(i)||(i=n.resolve(e,`./${o}.jsx`)),t.existsSync(i)||(i=n.resolve(e,`./${o}.js`)),!t.existsSync(i))return{};const r=i,a=n.extname(i);return{file:r,ext:a,ts:".ts"===a||".tsx"===a,name:o}}return Pe=async t=>{const{atom:d,context:f,setProgress:b}=t;b("Initializing features..."),d.doc.features=d.doc.features||{};const x=d.doc.features;x.project=x.project||{},x.project.format=x.project.format||x.project_format||"esm",x.project_format=x.project.format,x.dts_enabled=!0===x.dts||void 0!==x.dts&&!1!==x.dts,x.hasOwnProperty("all_parsed_imports")||(x.all_parsed_imports=!0);const k=n.resolve(f.project.projectDir),j=v({dir:n.resolve(k,"./app")});if(j.file){b("Parsing app entry imports...");let e=await o({file:j.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));x.app_uses_jsx=t,x.app_has_entry=!0,e=await o({file:j.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),x.app_entry_uses_jsx=t,x.app_entry_is_ts=j.ts,x.app_entry_ext=j.ext}const _=v({dir:n.resolve(k,"./cli")});if(_.file){b("Parsing cli entry imports...");let e=await o({file:_.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));x.cli_uses_jsx=t,x.cli_has_entry=!0,e=await o({file:_.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),x.cli_entry_uses_jsx=t,x.cli_entry_is_ts=_.ts,x.cli_entry_ext=_.ext}if("workflow.lib"===d.type){const e=v({dir:n.resolve(k,"./src")});if(e.file){b("Parsing src entry imports...");let t=await o({file:e.file,recursive:!0}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));x.src_uses_jsx=n,x.src_has_entry=!0,t=await o({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),x.src_entry_uses_jsx=n,x.src_entry_is_ts=e.ts,x.src_entry_ext=e.ext}}const D=Reflect.has(x,"app_entry_uses_jsx")?!0===x.app_entry_uses_jsx:!0===x.src_entry_uses_jsx,P=Reflect.has(x,"cli_entry_uses_jsx")?!0===x.cli_entry_uses_jsx:!0===x.src_entry_uses_jsx;x.form_enabled=!0===d.doc.form||!0===d.doc.form?.enabled||!0===x.form||!0===x.form?.enabled,x.multiple_enabled=x.multiple_enabled||!0===x.multiple||!0===x.multiple?.enabled,!1===x.app?x.app={enabled:!1}:!0===x.app?x.app={enabled:!0,extend:!0===x.app_has_entry,export:!0,react:D}:x.app={enabled:!0,extend:!0===x.app_has_entry,export:!0,react:D,...x.app||{}},x.app.enabled=!0===x.app.enabled&&(!0===d.doc.features.form_enabled||!0===x.app.extend||!0===x.app.enabled),x.app.format=x.app.format||"esm",x.app.folder=x.app.folder||x.app.format||"default",!1===x.cli?x.cli={enabled:!1}:!0===x.cli?x.cli={enabled:!0,extend:!0===x.cli_has_entry,export:!0,react:P}:x.cli={enabled:!0,extend:!0===x.cli_has_entry,export:!0,react:P,...x.cli||{}},x.cli.enabled=!0===x.cli.enabled&&(!1===d.doc.features.form_enabled||!0===x.cli.extend||!0===x.cli.enabled),x.cli.format=x.cli.format||"esm",x.cli.folder=x.cli.folder||x.cli.folder||"esm",x.cli.node_options=x.cli.node?.options||x.cli.node_options||"",x.json=x.cli.enabled||x.json;const S={cjs:{format:"cjs",context:x.form_enabled?"window":"global",babel:!0===x.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==x.cjs,copy:!1},esm:{format:"esm",context:x.form_enabled?"window":"global",babel:!0===x.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!1!==x.esm,copy:!0},iife:{format:"iife",context:x.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==x.iife,terser:!0,copy:!1}};!0===x.webos&&(S.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===x.electron&&(S.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===x.nextjs&&(S.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===x.ios&&(S.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===x.macos&&(S.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===x.app.enabled&&(x.app.dir=`./dist/app/${x.app.folder}`,S.app={format:x.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:x.app.dir,terser:!0,output_exports:!1===x.app.export?"none":"auto"}),!0===x.cli.enabled&&(x.cli.dir=`./dist/cli/${x.cli.folder}`,S.cli={format:x.cli.format,context:"global",babel:!0===x.src_uses_jsx||!0===x.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:x.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===x.cli.export?"none":"auto"});const A={server:".",startPath:`${n.normalize(x.app.dir||".")}`,files:[n.normalize("./dist/**/*")],cors:!0,open:!1};x.babel_options=e({targets:{browsers:"last 9 versions, not dead",node:"18"}},x.babel_options||x.babel?.options),x.browsersync_options=e(A,x.browsersync_options||x.browsersync?.options||{}),x.replace_options=e({},x.replace_options||x.replace?.options||{}),Reflect.has(x.browsersync_options,"proxy")&&delete x.browsersync_options.server,x.rollup=x.rollup||{},x.rollup_output=e(S,x.rollup_output||x.rollup?.output||{}),x.preact_enabled=!0===x.preact||x.preact&&!1!==x.preact?.enabled;let T=Object.keys(S);for(const t of T){const n=S[t];n&&(!1!==x.rollup[t]?(n.babel_options=n.babel_options||x.babel_options,n.browsersync_options=e(x.browsersync_options,n.browsersync_options),n.replace_options=e(x.replace_options,n.replace_options),x.preact_enabled&&(n.alias_enabled=!0,n.alias=n.alias||{},n.alias.entries=n.alias.entries||{},n.alias.entries.react="preact/compat",n.alias.entries["react-dom"]="preact/compat"),x.form_enabled&&(n.babel=!0)):delete x.rollup_output[t])}T=Object.keys(x.rollup_output),x.babel_enabled=T.some((e=>!0===x.rollup_output[e].babel)),x.browser_enabled=T.some((e=>!0===x.rollup_output[e].babel)),x.browsersync_enabled=!1!==x.browsersync&&T.some((e=>!0===x.rollup_output[e].browsersync)),x.browsersync_enabled=x.browsersync_enabled&&x.app.enabled,x.dependency_auto_enabled=!1!==x.dependency_auto&&!1!==x.dependency_auto?.enabled,x.npm_install_flags=x.npm_install_flags||"",x.react_version=x.react_version||x.react?.version||18,w(t),h(t),y(t),g(t),m(t),p(t),u(t),l(t),c(t),s(t),a(t),i(t),r(t)},Pe}function Tn(){if(Te)return Ae;Te=1;const e=_;return Ae=async({atom:t,packageDependencies:n,packageDevDependencies:o,setProgress:i})=>{if(i("Initializing dependencies"),"workflow"===t.type&&(n.push({package:"get-value",version:"^3"}),n.push({package:"set-value",version:"^4"})),t.doc.features.form_enabled&&t.doc.features.dependency_auto_enabled){let o="^18.2";i("Fetching React versions");o=`^${(await e({name:"react",groupBy:{major:!0}})).find((e=>e[0]===t.doc.features.react_version.toString()))[0]}`,n.push({package:"react",version:o}),n.push({package:"react-dom",version:o}),"workflow"===t.type&&(n.push({package:"@flownet/react-app",version:"^0.1"}),n.push({package:"@flownet/react-app-state",version:"^0.1"}))}t.doc.features.preact_enabled&&n.push({package:"preact",version:"^10"}),!0===t.doc.features.cli.enabled&&(n.push({package:"@fnet/args",version:"^0.1"}),o.push({package:"ajv",version:"^8"}),t.doc.features.cli.fargs&&!1!==t.doc.features.cli.fargs?.enabled&&n.push({package:"@fnet/config",version:"0.2.21"})),t.doc.features.render&&!1!==t.doc.features.render.enabled&&o.push({package:"@flownet/lib-render-templates-dir",version:"0.1.17"}),o.push({package:"@babel/core",version:"^7"}),o.push({package:"@rollup/plugin-commonjs",version:"^28"}),o.push({package:"@rollup/plugin-node-resolve",version:"^15"}),o.push({package:"@rollup/plugin-replace",version:"^6"}),o.push({package:"rollup",version:"^4"}),t.doc.features.dts_enabled&&o.push({package:"rollup-plugin-dts",version:"^6"}),o.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),o.push({package:"@rollup/plugin-alias",version:"^5"}),o.push({package:"fs-extra",version:"^11"}),t.doc.features.babel_enabled&&(o.push({package:"@rollup/plugin-babel",version:"^6"}),o.push({package:"@babel/preset-env",version:"^7"}),o.push({package:"@babel/preset-react",version:"^7"}),t.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":o.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":o.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":o.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":o.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":o.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),o.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),t.doc.features.browsersync_enabled&&o.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})},Ae}function En(){if($e)return Ee;$e=1;const e=d,t=f,n=p;return Ee=async({atom:o,setProgress:i,context:r,packageDependencies:a})=>{if(!0!==o.doc.features.app.enabled)return;await i({message:"Creating app folder"});const s={atom:o,packageDependencies:a,ts:Date.now()},c=r.templateDir,l=t.resolve(r.projectDir,"src/app");e.existsSync(l)||e.mkdirSync(l,{recursive:!0});let p=["index.js.njk"];!1!==o.doc.features.app.html&&p.push("index.html.njk"),await n({pattern:p,dir:t.resolve(c,"src/app"),outDir:l,context:s})},Ee}function $n(){if(Ce)return Oe;Ce=1;const e=u,t=d,n=f,o=j,i=_;return Oe=async({atom:r,context:a,packageDependencies:s,packageDevDependencies:c,setProgress:l})=>{await l({message:"Creating package.json."});s.filter((e=>!0===e.dev)).forEach((e=>{c.find((t=>t.package===e.package))||c.push(e);const t=s.findIndex((t=>t.package===e.package));s.splice(t,1)}));const p=s.find((e=>"react"===e.package)),d=s.find((e=>"react-dom"===e.package));p&&!d?s.push({package:"react-dom",version:p.version}):p&&d&&(d.version=p.version),p&&r.doc.features.react_version>=17&&(s.find((e=>"@emotion/react"===e.package))||s.push({package:"@emotion/react",version:"^11"}),s.find((e=>"@emotion/styled"===e.package))||s.push({package:"@emotion/styled",version:"^11"}));const f=[];!0===r.doc.features.app.enabled&&f.push({file:n.resolve(a.projectDir,"src/app/index.js"),dev:!1!==r.doc.features.app.dev}),!0===r.doc.features.cli.enabled&&f.push({file:n.resolve(a.projectDir,"src/cli/index.js"),dev:!1!==r.doc.features.cli.dev});for await(const e of f){const n=e.file;if(!t.existsSync(n))throw new Error(`App file not found: ${n}`);const a=await o({file:n,recursive:!0}),l=!0===r.doc.features.all_parsed_imports?a.all:a.required;for await(const t of l){if("npm"!==t.type)continue;if(s.find((e=>e.package===t.package)))continue;if(c.find((e=>e.package===t.package)))continue;const n=(await i({name:t.package,groupBy:{minor:!0}}))[0][0];(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:`^${n}`,type:"npm"})}}const u={atom:r,packageDependencies:s,packageDevDependencies:c},m=a.templateCommonDir,g=e.compile(t.readFileSync(n.resolve(m,"package.json.njk"),"utf8"),e.configure(m)).render(u),y=a.projectDir,h=n.resolve(y,"package.json");t.writeFileSync(h,g,"utf8");const w=n.resolve(a.project.projectDir,"fnet");if(t.existsSync(w)){const e=n.resolve(a.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const o=t.readdirSync(w);for(const i of o){const o=n.resolve(w,i);if(!t.lstatSync(o).isFile())continue;const r=n.resolve(e,i);t.copyFileSync(o,r)}}},Oe}function On(){if(Ne)return Ie;Ne=1;const e=d,t=f,n=p;return Ie=async({atom:o,setProgress:i,context:r,packageDependencies:a})=>{if(!0!==o.doc.features.cli.enabled)return;await i({message:"Creating cli."});const s={atom:o,packageDependencies:a},c=r.templateDir,l=t.resolve(r.projectDir,"src/cli");e.existsSync(l)||e.mkdirSync(l,{recursive:!0}),await n({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:l,context:s})},Ie}function Cn(){if(Fe)return Me;Fe=1;const e=d,t=f,n=u,o=j;return Me=async({atom:i,setProgress:r,context:a,packageDependencies:s})=>{await r({message:"Creating rollup file."});const c={atom:i,packageDependencies:s},l=t.resolve(a.projectDir,"src","default/index.js");if(!e.existsSync(l))throw new Error(`Entry file not found: ${l}`);const p=(await o({file:l,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=i.doc.features.rollup_output,f=Object.keys(d);for(let e=0;e<f.length;e++){const t=d[f[e]];if(!0===t.browser&&p.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(p.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<p.length;e++){const n=p[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(p)}}const u=a.templateCommonDir;let m=n.compile(e.readFileSync(t.resolve(u,"rollup.config.mjs.njk"),"utf8"),n.configure(u)).render(c);const g=a.projectDir;let y=t.resolve(g,"rollup.config.mjs");e.writeFileSync(y,m,"utf8")},Me}function In(){if(qe)return Re;qe=1;const e=d,t=f,n=u,o=D,i=P,r=S;return Re=async({atom:a,setProgress:s,context:c,njEnv:l})=>{if(!0!==a.doc.features.cli.enabled)return;await s({message:"Creating yargs."});let p={};if(p=a.doc.input?a.doc.input:{type:"object",properties:{},required:[]},a.doc.features.cli.fargs&&!1!==a.doc.features.cli.fargs?.enabled){const e=a.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},n={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),p.properties&&(p.properties.fargs=t,p.properties.ftag=n)}const d={options:p,imports:[],atom:a},f=c.templateDir,u=n.compile(e.readFileSync(t.resolve(f,"src/default/to.args.js.njk"),"utf8"),l).render(d),m=c.projectDir,g=t.resolve(m,"src/default/to.args.js");e.writeFileSync(g,u,"utf8");const y=new o({allErrors:!0,useDefaults:!0,formats:{email:!0},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});r(y);const h=y.compile(p),w=i(y,h);e.writeFileSync(t.resolve(m,"src/default/validate_input.js"),w,"utf8")},Re}function Nn(){if(Le)return Ue;Le=1;const e=d,t=f,n=u;return Ue=async({atom:o,setProgress:i,context:r,packageDependencies:a})=>{await i({message:"Creating .gitignore"});const s={atom:o,packageDependencies:a},c=r.templateCommonDir,l=n.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),n.configure(c)).render(s),p=r.projectDir,d=t.resolve(p,".gitignore");e.writeFileSync(d,l,"utf8")},Ue}function Mn(){if(Je)return Be;Je=1;const e=d,t=f,n=u;return Be=async({atom:o,setProgress:i,context:r,packageDependencies:a})=>{await i({message:"Creating tsconfig.json."});const s={atom:o,packageDependencies:a},c=r.templateCommonDir,l=n.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),n.configure(c)).render(s),p=r.projectDir,d=t.resolve(p,"tsconfig.json");e.writeFileSync(d,l,"utf8")},Be}function Fn(){if(We)return ze;We=1;const e=u,t=d,n=f,o=s;return ze=async({atom:i,context:r,setProgress:a,Atom:s})=>{const c="readme.md",l=`Creating ${c}`;if(await a({message:l}),r.project?.readme){const i=r.projectDir,a={content:r.project.readme.doc.content},s=n.resolve(r.project.projectDir,"fnet/how-to.md");if(t.existsSync(s)){const e=t.readFileSync(s,"utf8");a.howto=e}const l=n.resolve(r.project.projectDir,"fnet/input.yaml");if(t.existsSync(l)){const e=await o({file:l,tags:r.tags});a.input=e.content}const p=r.templateCommonDir,d=e.compile(t.readFileSync(n.resolve(p,`${c}.njk`),"utf8"),e.configure(p)).render(a),f=n.resolve(i,`${c}`);t.writeFileSync(f,d,"utf8")}else if(i.id){const o=await s.first({type:"wiki",parent_id:i.id});if(!o||"markdown"!==o.doc?.["content-type"])return;const{content:a,...l}=o.doc,p={content:a},d=r.templateCommonDir,f=e.compile(t.readFileSync(n.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(p),u=r.projectDir,m=n.resolve(u,`${c}`);t.writeFileSync(m,f,"utf8")}},ze}function Rn(){if(Ge)return Ke;Ge=1;const e=a,t=n;return Ke=async({setProgress:n,context:o})=>{const i=o.projectDir;await n({message:"Prettifiying source files."});let r=t.join("src","**","*");if(0!==e.exec(`prettier --write ${r} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:i}).code)throw new Error("Couldnt format files.")}}function qn(){if(Ve)return He;Ve=1;const e=a;return He=async({atom:t,setProgress:n,context:o})=>{if(!t.doc.features.dts_enabled)return;const i=o.projectDir;await n({message:"Creating .d.ts"});if(0!==e.exec("tsc",{cwd:i}).code)throw new Error("Couldnt create .d.ts files.")},He}function Un(){if(Ye)return Xe;Ye=1;const e=a;return Xe=async({setProgress:t,atom:n,context:o})=>{const i=o.projectDir;await t({message:"Installing npm packages."});if(0!==e.exec(`npm install ${n.doc.features.npm_install_flags}`,{cwd:i}).code)throw new Error("Couldnt install npm packages.")},Xe}function Ln(){if(Qe)return Ze;Qe=1;const e=a;return Ze=async({setProgress:t,context:n})=>{const o=n.projectDir;await t({message:"Building main project."});if(0!==e.exec("npm run build",{cwd:o}).code)throw new Error("Couldnt build project.")}}function Bn(){if(Ct)return Ot;Ct=1;const e=function(){if(tt)return et;tt=1;const e=A,n=t;return et=async({setProgress:t,context:o,deploymentProject:i,deploymentProjectTarget:r,buildId:a})=>{await t({message:"Deploying it as gitlab project."});const s=o.projectDir;let c="fnet-to-gitlab";const l=r.params.config||"gitlab",p=await n({name:l,dir:o.projectDir,tags:o.tags});if(!p)throw new Error(`Couldnt load config ${l}`);const{data:d}=p.data;c+=` --projectGroupId=${d.projectGroupId}`,c+=` --projectPath='${s}'`,c+=` --projectName='${r.params.name}'`,c+=` --projectBranch='${r.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==r.dryRun&&(await e({cmd:c}),i.isDirty=!0)},et}(),o=function(){if(ot)return nt;ot=1;const e=d,n=f,o=T,i=A,r=t;return nt=async({setProgress:t,context:a,deploymentProject:s,deploymentProjectTarget:c,registerToPackageManager:l,yamlTarget:p})=>{await t({message:"Deploying it as gcs package."});const d=a.projectDir,f=n.resolve(d,"package.json"),u=e.readFileSync(f),m=JSON.parse(u);m.name=c.params.name,m.version=o.inc(c.version,"patch"),delete m.scripts,delete m.devDependencies,e.writeFileSync(f,JSON.stringify(m,null,"\t"));const{file:g,data:y}=await r({name:c.config||"gcs",dir:a.projectDir,tags:a.tags});let h="fnet-files-to-gcs";h+=` --projectId='${y.env.GCS_PROJECT_ID}'`,h+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,h+=` --keyFilename='${n.resolve(n.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,h+=` --dir='${d}'`,h+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",h+=` --destDir='${m.name}/${m.version}'`,h+=" --metadata.cacheControl='public, max-age=31536000, immutable'",y.env.DOMAIN&&(h+=` --domain='${y.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(h+=" --dryRun"),await i({cmd:h}),e.writeFileSync(f,u),!0!==c.dryRun&&(s.isDirty=!0,c.version=m.version,p.set("version",m.version),await l({target:c,packageJSON:m}))}}(),s=function(){if(rt)return it;rt=1;const e=d,n=f,o=T,i=a,s=t,l=E,p=c,u=r;return it=async({atom:t,setProgress:r,context:a,deploymentProject:c,deploymentProjectTarget:d,yamlTarget:f})=>{await r({message:"Deploying it as npm package."});const m=a.projectDir,g=n.resolve(m,"package.json"),y=e.readFileSync(g),h=JSON.parse(y);h.name=d.params.name,h.version=o.inc(d.version,"patch");const w=d.params.bin?.name||d.params.bin;!1!==d.params.bin?.enabled&&w&&"string"==typeof w&&(h.bin={[w]:"dist/cli/esm/index.js",[t.doc.name]:"dist/cli/esm/index.js"}),delete h.scripts,delete h.devDependencies,h.scripts={serve:"npx serve ."},e.writeFileSync(g,JSON.stringify(h,null,"\t"));const v=d.config||"npm";let b=(await s({name:v,dir:a.projectDir,tags:a.tags,optional:!0}))?.data;if(!b){const t=l({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===t.length)throw new Error("Couldnt find schema to create npm config");const o=await p({schema:t[0],tags:a.tags}),i=a.project.projectDir,r=n.resolve(i,".fnet");e.existsSync(r)||e.mkdirSync(r),e.writeFileSync(n.resolve(r,`${v}.fnet`),u.stringify(o)),b=o}if(e.writeFileSync(n.resolve(m,".npmrc"),`//registry.npmjs.org/:_authToken=${b.env.NPM_TOKEN}`),!0!==d.dryRun){if(0!==i.exec("npm publish --access public",{cwd:m}).code)throw new Error("Couldnt publish to npm");e.writeFileSync(g,y),c.isDirty=!0,d.version=h.version,f.set("version",h.version)}},it}(),l=function(){if(st)return at;st=1;const e=d,n=f,o=$,i=u,r=O,a=t;return at=async({atom:t,setProgress:s,context:c,deploymentProject:l,deploymentProjectTarget:p,buildId:d,packageDependencies:f,njEnv:u})=>{await s({message:"Deploying it as node-red flow."});const m=c.projectDir,g=c.templateDir,y="workflow"===t.type?"WF":"LIB";let h;if("simple"===p.deploy.template)h={atom:t,packageDependencies:f,red:{tab:{id:p.deploy.id||r.util.generateId(),label:`${y}/${t.id?t.id:o.hostname()}/${t.name}/${p.deploy.name||p.deploy.template}`},function:{id:r.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},inject:{id:r.util.generateId(),...p.params?.inject,payload:"json"===p.params?.inject?.payloadType?`'${JSON.stringify(p.params?.inject?.payload)}'`:p.params?.inject?.payload},debug:{id:r.util.generateId()}}};else if("cronjob"===p.deploy.template){let i=p.params?.schedules?cloneDeep(p.params?.schedules):void 0;i?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),h={atom:t,packageDependencies:f,red:{tab:{id:p.deploy.id||r.util.generateId(),label:`${y}/${t.id?t.id:o.hostname()}/${p.deploy.name||p.deploy.template}`},function:{id:r.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},cronjob:{id:r.util.generateId(),schedules:i},debug:{id:r.util.generateId()}}}}else{if("http"!==p.deploy.template)return;h={atom:t,packageDependencies:f,red:{tab:{id:p.deploy.id||r.util.generateId(),label:`${y}/${t.id?t.id:o.hostname()}/${p.deploy.name||p.deploy.template}`},function:{id:r.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},httpin:{id:r.util.generateId(),method:p.params.method||"get",url:p.params.url},httpout:{id:r.util.generateId()},debug:{id:r.util.generateId()}}}}let w=i.compile(e.readFileSync(n.resolve(g,`deploy/node-red/${p.deploy.template}.yaml.njk`),"utf8"),u).render(h);if(e.writeFileSync(n.resolve(m,"node-red.yaml"),w),w=yaml.load(w),!0===p.dryRun)return;l.isDirty=!0;const v=(await a({name:c.redConfig||"red",dir:c.projectDir,tags:c.tags}))?.data,b=p.deploy.url||v.env.RED_URL,x={};if(!1!==p.deploy.auth&&(x.Authorization="Bearer "+atomAccessToken),p.deploy.id)!0===p.actions?.delete?(await axios({method:"DELETE",url:`${b}/flow/${p.deploy.id}`,headers:x}),delete p.actions.delete,delete p.deploy.id,p.enabled=!1):await axios({method:"PUT",url:`${b}/flow/${p.deploy.id}`,data:w,headers:x});else{const e=await axios({method:"POST",url:`${b}/flow`,data:w,headers:x});p.deploy.id=e.data.id}},at}(),p=function(){if(lt)return ct;lt=1;const e=i,o=n,r=t;return ct=async({atom:t,Atom:n,setProgress:i,context:a,packageDependencies:s,deploymentProject:c,deploymentProjectTarget:l})=>{await i({message:"Deploying it as workflow lib."});const p=(await r({name:"atom",dir:a.projectDir,tags:a.tags}))?.data;let d,f,u,m=l.deploy.name.split("/");if(1===m.length)f=p.env.ATOM_LIBRARIES_ID,u=l.deploy.name;else{if(2!==m.length)throw new Error("Wrong name path.");{const e=await n.first({where:{name:m[0],parent_id:p.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");f=e.id,u=m[1]}}if(!0===l.dryRun)return;if(c.isDirty=!0,l.deploy.id){if(d=await n.get({id:l.deploy.id}),!d)return}else{if(d=await n.create({parent_id:f,doc:{name:u,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!d)return;l.deploy.id=d.id}const g=a.projectDir;d.doc.contents=[{content:e.readFileSync(o.resolve(g,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(o.resolve(g,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(o.resolve(g,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],d.doc.name=u,d.doc.dependencies=s,"workflow.lib"===t.type?d.doc.subtype="library":"workflow"===t.type&&(d.doc.subtype="workflow"),d=await n.update(d,{id:d.id})}}(),g=function(){if(dt)return pt;dt=1;const e=t,n=C,o=m,i=T;return pt=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as ios-app package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},pt}(),y=function(){if(ut)return ft;ut=1;const e=t,n=I,o=m,i=T;return ft=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as macos-app package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},ft}(),h=function(){if(gt)return mt;gt=1;const e=t,n=N,o=m,i=T;return mt=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as electron package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},mt}(),w=function(){if(ht)return yt;ht=1;const e=t,n=M,o=m,i=T;return yt=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as webos package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},yt}(),v=function(){if(vt)return wt;vt=1;const e=t,n=F,o=m,i=T;return wt=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as nextjs package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},wt}(),x=function(){if(xt)return bt;xt=1;const e=t,n=R,o=m,i=T;return bt=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as docker package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},bt}(),k=function(){if(jt)return kt;jt=1;const e=d,n=f,o=T,i=A,r=t,a=b.default;return kt=async({setProgress:t,context:s,deploymentProject:c,deploymentProjectTarget:l,yamlTarget:p})=>{await t({message:"Deploying it as fnet package."});const d=s.projectDir,f=n.resolve(d,"package.json"),u=e.readFileSync(f),m=JSON.parse(u);m.name=l.params.name,m.version=o.inc(l.version,"patch"),delete m.scripts,delete m.devDependencies,e.writeFileSync(f,JSON.stringify(m,null,"\t"));const{file:g,data:y}=await r({name:l.config||"fnet-package",dir:s.projectDir,tags:s.tags});if(!y.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${g}`);if(!y.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${g}`);if(!y.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${g}`);const h=`${y.env.ATOM_API_URL}/v1/auth/token`,w=y.env.ATOM_API_USERNAME,v=y.env.ATOM_API_PASSWORD;let b=await a({method:"POST",url:h,data:{username:w,password:v},headers:{"Content-Type":"application/json"}});const x=b.data?.access_token;if(!x)throw new Error(`Invalid access_token from ${h}`);let k="fnet-files-to-gcs";if(k+=` --projectId='${y.env.GCS_PROJECT_ID}'`,k+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,k+=` --keyFilename='${n.resolve(n.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,k+=` --dir='${d}'`,k+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",k+=` --destDir='${m.name}/${m.version}'`,k+=" --metadata.cacheControl='public, max-age=31536000, immutable'",y.env.DOMAIN&&(k+=` --domain='${y.env.DOMAIN}'`),!0!==l.dry_run&&!0!==l.params.dry_run||(k+=" --dryRun"),await i({cmd:k}),e.writeFileSync(f,u),!0===l.dryRun)return;c.isDirty=!0,l.version=m.version,p.set("version",m.version);const j=`${y.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(b=await a({method:"POST",url:j,data:{name:m.name,version:m.version,version_domain:y.env.DOMAIN,docs:l.params.docs,configs:l.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${x}`}}),b.data?.error)throw new Error("Failed to publish fnet package.")},kt}(),j=function(){if(Dt)return _t;Dt=1;const e=T,n=t,o=b.default;return _t=async({setProgress:t,context:i,deploymentProject:r,deploymentProjectTarget:a,yamlTarget:s})=>{await t({message:"Deploying it as fnet form."});const{file:c,data:l}=await n({name:a.config||"fnet-form",dir:i.projectDir,tags:i.tags});if(!l.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${c}`);if(!l.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${c}`);if(!l.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${c}`);const p=`${l.env.ATOM_API_URL}/v1/auth/token`,d=l.env.ATOM_API_USERNAME,f=l.env.ATOM_API_PASSWORD;let u=await o({method:"POST",url:p,data:{username:d,password:f},headers:{"Content-Type":"application/json"}});const m=u.data?.access_token;if(!m)throw new Error(`Invalid access_token from ${p}`);r.isDirty=!0;const g=e.inc(a.version,"patch");a.params.version=g,a.version=g,s.set("version",g);const y=`${l.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(u=await o({method:"POST",url:y,data:{name:a.params.name,version:a.params.version,docs:a.params.docs,configs:a.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`}}),u.data?.error)throw new Error("Error publishing fnet form.")},_t}(),_=function(){if(St)return Pt;St=1;const e=T,n=t,o=b.default,r=i,a=A,s=q;return Pt=async({setProgress:t,context:i,deploymentProject:c,deploymentProjectTarget:l,yamlTarget:p})=>{await t({message:"Deploying it as fnet flow."});const{file:d,data:f}=await n({name:l.config||"fnet-flow",dir:i.project.projectDir,tags:i.tags});if(!f.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!f.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!f.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const u=`${f.env.ATOM_API_URL}/v1/auth/token`,m=f.env.ATOM_API_USERNAME,g=f.env.ATOM_API_PASSWORD;let y=await o({method:"POST",url:u,data:{username:m,password:g},headers:{"Content-Type":"application/json"}});const h=y.data?.access_token;if(!h)throw new Error(`Invalid access_token from ${u}`);c.isDirty=!0;const w=e.inc(l.version,"patch");l.params.version=w,l.version=w,p.set("version",w);const v=`${f.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(y=await o({method:"POST",url:v,data:{name:l.params.name,version:l.params.version,docs:l.params.docs,configs:l.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`}}),y.data?.error)throw new Error("Error publishing fnet flow.");const b=y.data?.upload.id;let x="fnet-dir-zipper";x+=` --sourceDir='${i.project.projectDir}'`,x+=" -p=**/*",x+=" -g",x+=" --stdout_format=json";const k=await a({cmd:x});if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new s;_.append("file",r.createReadStream(j));const D=await o.request({method:"POST",maxBodyLength:1/0,url:`${f.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{..._.getHeaders(),Authorization:`Bearer ${h}`},data:_});if(D.data?.error)throw new Error("Error uploading fnet flow.")},Pt}(),D=function(){if(Tt)return At;Tt=1;const e=T,n=t,o=b.default,r=i,a=A,s=q;return At=async({setProgress:t,context:i,deploymentProject:c,deploymentProjectTarget:l,yamlTarget:p})=>{await t({message:"Deploying it as fnet node."});const{file:d,data:f}=await n({name:l.config||"fnet-node",dir:i.project.projectDir,tags:i.tags});if(!f.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!f.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!f.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const u=`${f.env.ATOM_API_URL}/v1/auth/token`,m=f.env.ATOM_API_USERNAME,g=f.env.ATOM_API_PASSWORD;let y=await o({method:"POST",url:u,data:{username:m,password:g},headers:{"Content-Type":"application/json"}});const h=y.data?.access_token;if(!h)throw new Error(`Invalid access_token from ${u}`);c.isDirty=!0;const w=e.inc(l.version,"patch");l.params.version=w,l.version=w,p.set("version",w);const v=`${f.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(y=await o({method:"POST",url:v,data:{name:l.params.name,version:l.params.version,docs:l.params.docs,configs:l.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`}}),y.data?.error)throw new Error("Error publishing fnet node.");const b=y.data?.upload.id;let x="fnet-dir-zipper";x+=` --sourceDir='${i.project.projectDir}'`,x+=" -p=**/*",x+=" -g",x+=" --stdout_format=json";const k=await a({cmd:x});if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new s;_.append("file",r.createReadStream(j));const D=await o.request({method:"POST",maxBodyLength:1/0,url:`${f.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{..._.getHeaders(),Authorization:`Bearer ${h}`},data:_});if(D.data?.error)throw new Error("Error uploading fnet node.")},At}(),P=function(){if($t)return Et;$t=1;const e=t,n=U,o=m,i=T;return Et=async({atom:t,target:r,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as Rust package."});const d=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,p.set("version",f);const u=o(r.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},Et}();return Ot=async t=>{const{atom:n,packageDependencies:i,context:r,deploymentProjectTarget:a,setProgress:c,deploymentProject:d,yamlTarget:f}=t;if(!0===a.enabled)if("lib"===a.type)await p({...t});else if("red"===a.type)await l({...t});else if("npm"===a.type)await s({...t});else if("gcs"===a.type)await o({...t});else if("gitlab"===a.type)await e({...t});else if("fnet-package"===a.type)await k({...t});else if("fnet-form"===a.type)await j({...t});else if("fnet-node"===a.type)await D({...t});else if("fnet-flow"===a.type)await _({...t});else{let e;if("nextjs"===a.type?e=v:"webos"===a.type?e=w:"electron"===a.type?e=h:"docker"===a.type?e=x:"ios"===a.type?e=g:"macos"===a.type?e=y:"rust"===a.type&&(e=P),!e)return;await e({atom:n,target:a,onProgress:c,projectDir:r.projectDir,dependencies:i,context:r,yamlTarget:f}),d.isDirty=!0}},Ot}function Jn(){if(Nt)return It;Nt=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i}){t.context.transform=t.context.transform||e(t.definition);for(const n of t.childs)n.context.transform=n.context.transform||e(n.definition),n.definition.hasOwnProperty("condition")&&(n.context.transform.condition=await i(n.definition.condition));await n({node:t}),o({node:t})}return It={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:n}){e.type="switch",e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0;for(let t=0;t<e.definition.switch.length;t++){let o=e.definition.switch[t],i=`${t}`;o.hasOwnProperty("default")&&(i="default",o=o.default);const r={name:o.condition||i,childs:[],parent:e,definition:o,index:e.childs.length,context:{}};e.childs.push(r),await n({node:r})}e.resolve=t},resolve:t}}function zn(){if(Yt)return Xt;Yt=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i}){t.context.transform=t.context.transform||e(t.definition);const r=t.context.transform;r.args&&(r.args=await i(r.args)),r.result&&(r.result=await i(r.result));const a=t.workflow.parent;t.context.lib=a.context.libs.find((e=>e.name===r.call)),await n({node:t}),o({node:t})}return Xt={hits:async function({node:e}){return e.definition.hasOwnProperty("call")},init:async function({node:e,initNode:n}){e.type="call";for(let t=0;t<e.definition.modules?.length;t++){const o=e.definition.modules[t],i=Object.keys(o)[0],r={name:i,childs:[],parent:e,definition:o[i],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(r),await n({node:r})}e.resolve=t},resolve:t}}function Wn(){if(Qt)return Zt;Qt=1;const e=zn();return Zt={hits:async function({node:e}){return e.definition.hasOwnProperty("shell")},init:async function(t){const{node:n}=t,o="shell",i=n.definition,r=typeof i[o];if("string"!==r&&"object"!==r)throw new Error(`Unsupported ${o} usage`);i.call="npm:@fnet/shell",i.args="string"===r?{...i.args,cmd:i[o]}:i[o],delete i[o],await e.init(t)}}}function Kn(){return bn?vn:(bn=1,vn=({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}}})}function Gn(){if(kn)return xn;kn=1;const e=d,n=f,o=r,i=a,c=u,l=m,p=g,k=function(){if(V)return H;V=1;const e=y,t=h;return H=async()=>{if(!await t({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const n=e.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await n.connect(),n}}(),{nanoid:D}=w,P=function(){if(Y)return X;Y=1;const{Api:e}=v,t=b.default,n=x;return X=class{init({config:o,accessToken:i}){return new Promise(((r,a)=>{if(e.set_api_url(o.data.url),i)return e.set_req_token(i),void r(i);t({method:"POST",url:`${o.data.issuer}/protocol/openid-connect/token`,data:n.stringify(o.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((t=>{e.set_req_token(t.data.access_token),r(t.data.access_token)})).catch((t=>{e.set_req_token(),a(t)}))}))}},X}(),S=An(),A=Tn(),T=En(),E=$n(),$=On(),O=Cn(),C=In(),I=Nn(),N=Mn(),M=Fn(),F=Rn(),R=qn(),q=Un(),U=Ln(),G=Bn(),{Atom:Z}=v,Q=L,ee=_,te=B,ne=t,oe=j,ie=J,re=s,ae=z,se=function(){if(Ft)return Mt;Ft=1;const e=J,t=Jn();return Mt={hits:async function({node:t}){const n=Object.keys(t.definition);return 1===(await Promise.all(n.map((t=>e({expression:t}))))).filter((e=>"if"===e?.processor)).length},init:async function(n){const{node:o}=n,i=Object.keys(o.definition),r=await Promise.all(i.map((t=>e({expression:t})))),a=[],s=r.find((e=>"if"===e?.processor)),c=o.definition[s.expression];a.push({name:`${o.name}_if`,definition:c,processor:s}),delete o.definition[s.expression];const l=r.filter((e=>"elseif"===e?.processor));let p=0;for(const e of l){const t=o.definition[e.expression];a.push({name:`${o.name}_elseif_${p++}`,definition:t,processor:e}),delete o.definition[e.expression]}o.definition.switch=[];for(const e of a)o.definition.switch.push({condition:e.processor.statement,...e.definition});await t.init(n)}}}(),ce=function(){if(qt)return Rt;qt=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o}){if(t.context.transform=t.context.transform||e(t.definition),t.context.transform,t.context.try=t.childs.find((e=>"try"===e.name)),t.context.except=t.childs.find((e=>"except"===e.name)),t.context.except){const n=t.context.except;n.context.transform=n.context.transform||e(n.definition),n.context.transform.hasOwnProperty("as")||(n.context.transform.as="error")}await n({node:t}),o({node:t})}return Rt={hits:async function({node:e}){return e.definition.hasOwnProperty("try")&&e.definition.hasOwnProperty("except")},init:async function({node:e,initNode:n}){if(e.type="tryexcept",e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0,e.definition.try){const t="try",o={name:t,childs:[],parent:e,definition:e.definition[t],index:e.childs.length,context:{}};e.childs.push(o),await n({node:o})}if(e.definition.except){const t="except",o={name:t,childs:[],parent:e,definition:e.definition[t],index:e.childs.length,context:{}};e.childs.push(o),await n({node:o})}e.resolve=t},resolve:t}}(),le=function(){if(Lt)return Ut;Lt=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i}){t.context.transform=e(t.definition);const r=t.context.transform;for(let e=0;e<r.assign?.length;e++){let t=r.assign[e],n=Object.keys(t)[0],o=t[n],a={key:await i(n),value:await i(o)};r.assign[e]=a}await n({node:t}),o({node:t})}return Ut={hits:async function({node:e}){return e.definition.hasOwnProperty("assign")},init:async function({node:e,initNode:n}){e.type="assign",e.resolve=t},resolve:t}}(),pe=function(){if(Jt)return Bt;Jt=1;const e=m,t=W,n=K;async function o({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i}){t.context.transform=t.context.transform||e(t.definition),t.context.transform.for.in=await i(t.definition.for.in),await n({node:t}),o({node:t})}return Bt={hits:async function({node:e}){return e.definition.hasOwnProperty("for")},init:async function({node:e,initNode:i}){if(e.type="for",e.blockAutoJumpToParent=!0,e.blockAutoJumpToSibling=!1,!e.definition.for.hasOwnProperty("steps")){const o=["value","in"],[i,r]=[t(e.definition.for,o),n(e.definition.for,o)];e.definition.for=i,e.definition.for.steps=[{[`${e.name}_step`]:r}]}Array.isArray(e.definition.for.steps)||(e.definition.for.steps=[{[`${e.name}_step`]:e.definition.for.steps}]);for(let t=0;t<e.definition.for.steps.length;t++){const n=e.definition.for.steps[t],o=Object.keys(n)[0],r={name:o,childs:[],parent:e,definition:n[o],index:e.childs.length,context:{}};e.childs.push(r),await i({node:r})}e.resolve=o},resolve:o}}(),de=Jn(),fe=Wt?zt:(Wt=1,zt={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}){}}),ue=function(){if(Gt)return Kt;Gt=1;const e=m;async function t({node:t,resolveTypeCommon:n,transformExpression:o}){t.context.transform=t.context.transform||e(t.definition);const i=t.context.transform;i.raise=await o(i.raise),await n({node:t})}return Kt={hits:async function({node:e}){return e.definition.hasOwnProperty("raise")},init:async function({node:e,initNode:n}){e.type="raise",e.resolve=t},resolve:t}}(),me=function(){if(Vt)return Ht;Vt=1;const e=m;async function t({node:t,resolveTypeCommon:n,transformExpression:o}){t.context.transform=t.context.transform||e(t.definition);const i=t.context.transform;i.return=await o(i.return),await n({node:t})}return Ht={hits:async function({node:e}){return e.definition.hasOwnProperty("return")},init:async function({node:e,initNode:n}){e.type="return",e.resolve=t},resolve:t}}(),ge=zn(),ye=Wn(),he=function(){if(tn)return en;tn=1;const e=zn();return en={hits:async function({node:e}){return e.definition.hasOwnProperty("config")},init:async function(t){const{node:n}=t,o="config",i=n.definition,r=typeof i[o];if("string"!==r&&"object"!==r)throw new Error(`Unsupported ${o} usage`);i.call="npm:@fnet/config",i.args="string"===r?{...i.args,name:i[o]}:i[o],delete i[o],await e.init(t)}}}(),we=function(){if(on)return nn;on=1;const e=zn();return nn={hits:async function({node:e}){return e.definition.hasOwnProperty("yaml")},init:async function(t){const{node:n}=t,o="yaml",i=n.definition,r=typeof i[o];if("string"!==r&&"object"!==r)throw new Error(`Unsupported ${o} usage`);i.call="npm:@fnet/yaml",i.args="string"===r?{...i.args,file:i[o]}:i[o],delete i[o],await e.init(t)}}}(),ve=function(){if(an)return rn;async function e({node:e}){e.context.next=e.childs[0]}return an=1,rn={hits:async function({node:e}){return e.definition.hasOwnProperty("steps")},init:async function({node:t,initNode:n}){t.type||(t.type="steps");const o=t.definition.steps||[];for await(const e of o){const o=Object.keys(e)[0],i={name:o,childs:[],parent:t,definition:e[o],index:t.childs.length,context:{}};t.childs.push(i),await n({node:i})}t.resolve=e},resolve:e}}(),be=function(){if(cn)return sn;cn=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i}){t.context.transform=t.context.transform||e(t.definition);const r=t.context.transform;r.props&&(r.props=await i(r.props));const a=t.workflow.parent;t.context.lib=a.context.libs.find((e=>e.name===r.form)),await n({node:t}),o({node:t})}return sn={hits:async function({node:e}){return e.definition.hasOwnProperty("form")},init:async function({node:e,initNode:n}){e.type="form";for(let t=0;t<e.definition.modules?.length;t++){const o=e.definition.modules[t],i=Object.keys(o)[0],r={name:i,childs:[],parent:e,definition:o[i],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(r),await n({node:r})}e.resolve=t},resolve:t}}(),xe=function(){if(pn)return ln;pn=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i,transformValue:r}){t.context.transform=t.context.transform||e(t.definition),await n({node:t})}return ln={hits:async function({node:e}){return e.definition.hasOwnProperty("operation")},init:async function({node:e,initNode:n}){e.type="operation",e.resolve=t},resolve:t}}(),ke=function(){if(fn)return dn;fn=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i}){t.context.transform=t.context.transform||e(t.definition);const r=t.context.transform;r.next=await i(r.next),await n({node:t}),o({node:t})}return dn={hits:async function({node:e}){return e.definition.hasOwnProperty("next")},init:async function({node:e,initNode:n}){e.type="jump",e.resolve=t},resolve:t}}(),je=function(){if(mn)return un;mn=1;const e=zn();return un={hits:async function({node:e}){return e.definition.hasOwnProperty("prompt")},init:async function(t){const{node:n}=t,o="prompt",i=n.definition,r=typeof i[o];if("string"!==r&&"object"!==r)throw new Error(`Unsupported ${o} usage`);i.call="npm:@fnet/prompt",i.args="string"===r?{...i.args,message:i[o]}:i[o],delete i[o],await e.init(t)}}}(),_e=function(){if(yn)return gn;yn=1;const e=zn();return gn={hits:async function({node:e}){return e.definition.hasOwnProperty("html-script")},init:async function(t){const{node:n}=t,o="html-script",i=n.definition,r=typeof i[o];if("string"!==r&&"object"!==r)throw new Error(`Unsupported ${o} usage`);i.call="npm:@flownet/lib-load-browser-script-url",i.args="string"===r?{...i.args,src:i[o]}:i[o],delete i[o],await e.init(t)}}}(),De=function(){if(wn)return hn;wn=1;const e=zn();return hn={hits:async function({node:e}){return e.definition.hasOwnProperty("html-link")},init:async function(t){const{node:n}=t,o="html-link",i=n.definition,r=typeof i[o];if("string"!==r&&"object"!==r)throw new Error(`Unsupported ${o} usage`);i.call="npm:@flownet/lib-load-browser-link-url",i.args="string"===r?{...i.args,src:i[o]}:i[o],delete i[o],await e.init(t)}}}(),Pe=Kn();return xn=class{#e;#t;#n;#o;#i;#r;#a;#s;#c;#l;#p;#d;#f;#u;#m;#g;#y;#h;#w;#v;#b;constructor(e){this.#e=new P,this.#t=e,this.#r=[],this.#a=[],this.#s={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#v={packageDependencies:this.#r,packageDevDependencies:this.#a,setProgress:this.setProgress.bind(this),context:this.#t,Atom:Z,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#b={initNode:this.initNode.bind(this),cloneDeep:l,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:Pe,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 k(),this.#p=this.#t.buildId||D(24),this.#v.buildId=this.#p,this.#m=this.#t.mode,this.#g=["all","deploy","build","file"].includes(this.#m),this.#y=["all","deploy","build"].includes(this.#m),this.#h=["all","deploy"].includes(this.#m),this.#w=["all","deploy","build","file","bpmn"].includes(this.#m),this.#f=this.#t.protocol,this.#d="BUILD:"+this.#p,this.#u=(await ne({optional:!0,name:"atom",dir:this.#t.projectDir,tags:this.#t.tags}))?.data;try{await this.setProgress({message:"Initialization started."}),await this.initAuth(),await this.initWorkflow(),await S(this.#v),await A(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.#r}),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.#u}),this.#v.atomAccessToken=this.#c)}async initWorkflow(){const e=this.#t.id;this.#n=this.#t.project?.workflowAtom||await Z.get({id:e}),this.#o="string"==typeof this.#n.doc.content?(await re({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.#r.push({package:"get-value",version:"^3.0"}),this.#r.push({package:"set-value",version:"^4.1"}),this.#n.doc.features.form_enabled?(this.#r.push({package:"react",version:"^18.2"}),this.#r.push({package:"react-dom",version:"^18.2"}),this.#r.push({package:"@flownet/react-app",version:"^0.1"}),this.#r.push({package:"@flownet/react-app-state",version:"^0.1"})):this.#r.push({package:"@fnet/args",version:"^0.1"}),this.#r.push({package:"chalk",version:"^4"})}#x(t){console.log("filePath",t),e.statSync(t).isDirectory()?(e.readdirSync(t).forEach((e=>{const o=n.join(t,e);this.#x(o)})),e.rmSync(t)):e.unlinkSync(t)}#k(t,o){const i=e.existsSync(t),r=i&&e.statSync(t);i&&r.isDirectory()?(e.mkdirSync(o,{recursive:!0}),e.readdirSync(t).forEach((e=>{this.#k(n.join(t,e),n.join(o,e))}))):e.copyFileSync(t,o)}async initWorkflowDir(){const t=this.#t.projectDir,o=this.#t.coreDir,i=["node_modules"];if(e.existsSync(t)){const o=e.readdirSync(t);for(const r of o)if(!i.includes(r)){const o=n.join(t,r);e.rmSync(o,{recursive:!0})}}e.existsSync(t)||e.mkdirSync(t,{recursive:!0});const r=n.join(t,"src");e.existsSync(r)||e.mkdirSync(r,{recursive:!0});const a=n.join(r,"core");this.#k(o,a);const s=n.join(r,"default","blocks");e.existsSync(s)||e.mkdirSync(s,{recursive:!0})}async initNunjucks(){const e=this.#t.templateDir;this.#i=c.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 ce.hits(t))await ce.init(t);else if(await pe.hits(t))await pe.init(t);else if(await de.hits(t))await de.init(t);else if(await se.hits(t))await se.init(t);else if(await fe.hits(t))await fe.init(t);else if(await le.hits(t))await le.init(t);else if(await ue.hits(t))await ue.init(t);else if(await me.hits(t))await me.init(t);else if(await ge.hits(t))await ge.init(t);else if(await ye.hits(t))await ye.init(t);else if(await he.hits(t))await he.init(t);else if(await we.hits(t))await we.init(t);else if(await _e.hits(t))await _e.init(t);else if(await De.hits(t))await De.init(t);else if(await be.hits(t))await be.init(t);else if(await xe.hits(t))await xe.init(t);else if(await je.hits(t))await je.init(t);else if(await ve.hits(t))await ve.init(t);else{if(!await ke.hits(t))throw new Error("Undefined step type.");await ke.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 o=n.join(e.parent.indexKey,e.name);e.indexKey=o,t[o]=e;const i=[];let r=e;for(;r?.parent;)i.push(r.index),r=r.parent;i.reverse(),e.codeKey=`B_${i.join("_")}_${e.type}`,e.pathKey=`${i.join(".")}`,e.typeId=D(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 r=i.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));r?.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 o=Q({url:e});if(!o)throw new Error(`Invalid package name: ${e}`);if(o.protocol||(o.protocol=this.#f),"ac:"===o.protocol){const t=o.pathname.split("/");if(1===t.length)return await Z.first({where:{name:e,parent_id:this.#u.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await Z.first({where:{name:t[0],parent_id:this.#u.env.ATOM_LIBRARIES_ID,type:"folder"}});return await Z.first({where:{name:t[1],parent_id:e.id,type:"workflow.lib"}})}}else{if("local:"===o.protocol){const e=n.resolve(this.#t.projectSrcDir,`${o.pathname}.js`),t=[],i=await oe({file:e,recursive:!0}),r=!0===this.#n.doc.features.all_parsed_imports?i.all:i.required;for await(const e of r){if("npm"!==e.type)continue;if(t.find((t=>t.package===e.package)))continue;const n=(await ee({name:e.package,groupBy:{minor:!0}}))[0][0];t.push({package:e.package,subpath:e.subpath,version:`^${n}`,type:"npm"})}return{name:o.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:t},protocol:o.protocol}}if("npm:"===o.protocol){const e=(await ee({name:o.pathname,groupBy:{minor:!0}}))[0][0];return{name:o.pathname,doc:{type:"workflow.lib",subtype:"flow"===t?.definition?.subtype?"workflow":null,"content-type":"javascript",language:"js",dependencies:[{package:o.pathname,version:`^${e}`,type:"npm"}]},protocol:o.protocol}}}}async resolveNodeTree({root:e}){for await(const t of e.childs)await this.resolveTypeWorkflow({node:t})}async resolveTypeWorkflow({node:e}){e.context.transform=l(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:t}){await this.setProgress({message:"Creating external lib files."}),this.#n.typesDir="./types";const o=t.context.libs.filter((e=>"atom"===e.type));for(let t=0;t<o.length;t++){const i=o[t].atom,r=this.#t.projectDir;if("local:"===i.protocol){const t=n.resolve(this.#t.projectSrcDir,`${i.fileName||i.name}.js`),o=n.relative(`${this.#t.projectDir}/src/default/blocks`,t);if(!e.existsSync(t)){e.mkdirSync(n.dirname(t),{recursive:!0});let o="export default async (args)=>{\n";o+="}",e.writeFileSync(t,o,"utf8")}i.relativePath=o.split(n.sep).join("/"),this.#n.typesDir=`./types/${n.basename(r)}/src`}else if("npm:"===i.protocol)i.relativePath=i.name;else{const t=`${r}/src/libs/${i.id}.js`,o=i.doc.contents?.find((e=>"esm"===e.format))||i.doc;e.writeFileSync(n.normalize(t),o.content,"utf8")}}}async createEngine({root:t}){await this.setProgress({message:"Creating engine file."});const o=this.#t.templateDir,i=c.compile(e.readFileSync(n.resolve(o,"src/default/engine.js.njk"),"utf8"),this.#i).render({...t,ui:{package:"@flownet/react-app"}}),r=this.#t.projectDir,a=n.resolve(r,"src/default/index.js");e.writeFileSync(a,i,"utf8")}async createNodeTree({root:e}){await this.setProgress({message:"Creating block files."});for await(const t of e.childs)await this.createTypeWorkflow({node:t})}async createTypeWorkflow({node:t}){const o=this.#t.templateDir,i=c.compile(e.readFileSync(n.resolve(o,"src/default/workflow.js.njk"),"utf8"),this.#i).render(t),r=this.#t.projectDir,a=n.resolve(r,`src/default/${t.codeKey}.js`);e.writeFileSync(a,i,"utf8");for await(const e of t.childs)await this.createType({node:e})}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:t}){let o=this.#s[t.type];if(o)return o;const i=this.#t.templateDir;return o=c.compile(e.readFileSync(n.resolve(i,`src/default/blocks/${t.type}.js.njk`),"utf8"),this.#i),this.#s[t.type]=o,o}createStepFile({node:t}){const o=this.#t.projectDir,i=`${t.codeKey}.js`,r=n.resolve(o,`src/default/blocks/${i}`);e.writeFileSync(r,t.context.render,"utf8"),t.context.fileName=i,t.context.filePath=r}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(p(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 ie({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 t="flow.yaml",i=`Creating ${t}`;await this.setProgress({message:i});const{content:r,...a}=this.#n.doc,s={content:o.stringify(a)},l=this.#t.templateDir,p=c.compile(e.readFileSync(n.resolve(l,`${t}.njk`),"utf8"),this.#i).render(s),d=this.#t.projectDir,f=n.resolve(d,`${t}`);e.writeFileSync(f,p,"utf8")}async createProjectMainYaml(){const t="flow.main.yaml",i=`Creating ${t}`;await this.setProgress({message:i});const r={content:o.stringify(this.#o)},a=this.#t.templateDir,s=c.compile(e.readFileSync(n.resolve(a,`${t}.njk`),"utf8"),this.#i).render(r),l=this.#t.projectDir,p=n.resolve(l,`${t}`);e.writeFileSync(p,s,"utf8")}async runPrettifier(){const e=this.#t.projectDir,t=i.exec("prettier --write .",{cwd:n.resolve(e,"src")});if(0!==t.code)throw new Error(t.stderr)}async deploy(){if(await this.setProgress({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 Z.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 Z.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 r=i.get(o[e]);await G({...this.#v,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:r})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#t.id)return;let o=await Z.first({name:t.params.name,parent_id:this.#u.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:n.version}),await Z.update(o,{id:o.id})):o=await Z.create({parent_id:this.#u.env.ATOM_PACKAGES_ID,doc:{name:t.params.name,type:"pm",versions:[{v:n.version}]}})}async setProgress(e){const t="string"==typeof e?e:e?.message;console.log(ae.blue(t)),await this._cache_set(this.#d,{status:"IN_PROGRESS",message:t})}async build(){if(this.#w&&!this.#g)return await this.createNetwork();try{const t=this.#w?await te({root:this.#l}):void 0;if(this.#g){if(await this.initWorkflowDir(),await this.initNunjucks(),this.#w){const o=this.#t.project?.projectDir||this.#t.projectDir;e.writeFileSync(n.resolve(o,"./fnet/flow.bpmn"),t.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 M(this.#v),await N(this.#v),await I(this.#v),await C(this.#v),await $(this.#v),await T(this.#v),await O(this.#v),await E(this.#v),await F(this.#v),await R(this.#v),this.#y&&(await q(this.#v),await U(this.#v),this.#h&&await this.deploy())}await this._cache_set(this.#d,{status:"COMPLETED",data:{network:t}})}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e.message||e}),e}}async createNetwork(){try{const e=await te({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}}}}var Hn=function(){if(Dn)return Pn;Dn=1;const u=process.cwd(),{spawn:m}=e;t({name:["redis"],dir:u,optional:!0});const g=n,y=o,h=i,w=r,v=a,b=s,x=t,k=c,j=l,_=p,D=Gn(),P=function(){if(_n)return jn;_n=1;const e=d,t=f;return jn=function({baseDir:n=__dirname}){let o=n;for(;o!==t.parse(o).root;){const n=t.join(o,"node_modules");if(e.existsSync(n))return n;o=t.dirname(o)}return null}}()({baseDir:__dirname}),S="win32"===process.platform?";":":";process.env.PATH=`${g.join(P,"/.bin")}${S}${process.env.PATH}`;let A=y(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=g.resolve(P,"./@fnet/cli-project-flow/dist/template/project"),n=g.resolve(u,e.name);h.existsSync(n)||h.mkdirSync(n),await _({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let o=v.exec("fnet build",{cwd:n});if(0!==o.code)throw new Error("Failed to build project.");if(v.which("git")&&(o=v.exec("git init --initial-branch=main",{cwd:n}),0!==o.code))throw new Error("Failed to initialize git.");if(v.which("code")&&e.vscode&&(o=v.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=g.resolve(P,"@fnet/cli-project-flow/dist/template/project"),n=process.cwd();if(e.name=g.basename(n),e.update){if(await _({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0}),0!==v.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 E(e),n=new D(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 E({...e,mode:"all"}),n=new D(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 E({...e,mode:"file"}),n=new D(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 T(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 E(e),{projectDir:i}=t,r=process.argv.slice(3);m(n,[...o,...r],{cwd:i,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function E(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:g.resolve(u,`./.output/${e.id}`),templateDir:g.resolve(P,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:g.resolve(P,"./@fnet/cli-project-common/dist/template/default"),coreDir:g.resolve(P,"./@fnet/cli-project-flow/dist/template/core"),tags:e.ftag}}{const t=await async function({tags:e}){const t=g.resolve(u,"flow.yaml");if(!h.existsSync(t))throw new Error("flow.yaml file not found in current directory.");const{raw:n,parsed:o}=await b({file:t,tags:e}),i=g.dirname(t),r=o.main||"flow.main.yaml";let a=g.resolve(i,r);if(!h.existsSync(a)&&(a=g.resolve(i,r+".yaml"),!h.existsSync(a)))throw new Error(`${r} file not found in ${a}.`);const{raw:s,parsed:c}=await b({file:a,tags:e}),l={workflowAtom:{doc:{...o,"content-type":"yaml",content:s}},projectDir:i,projectFilePath:t,projectFileContent:n,projectFileParsed:o,projectMainFilePath:a,projectMainFileContent:s,projectMainFileParsed:c};let p=g.resolve(i,"fnet/targets.yaml");if(!h.existsSync(p)&&(p=g.resolve(i,"flow.devops.yaml"),h.existsSync(p))){const e=g.resolve(i,"fnet");h.existsSync(e)||h.mkdirSync(e),h.copyFileSync(p,g.resolve(i,"fnet/targets.yaml")),h.unlinkSync(p)}if(h.existsSync(p)){const{raw:t,parsed:n}=await b({file:p,tags:e}),o=w.parseDocument(t);l.devops={filePath:p,fileContent:t,yamlDocument:o,doc:{...n},type:"workflow.deploy",save:async()=>{h.writeFileSync(l.devops.filePath,o.toString())}}}const d=g.resolve(i,"readme.md");if(h.existsSync(d)){const e=h.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:g.resolve(P,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:g.resolve(P,"./@fnet/cli-project-common/dist/template/default"),coreDir:g.resolve(P,"./@fnet/cli-project-flow/dist/template/core"),projectDir:g.resolve(t.projectDir,"./.workspace"),projectSrcDir:g.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return A=A.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 E(e),{project:n}=t,{projectDir:o,projectFileParsed:i}=n,r=i.input;if(!r)throw new Error("Config schema not found in project file.");const a=await k({schema:r,format:"yaml"}),s=g.resolve(o,".fnet");h.existsSync(s)||h.mkdirSync(s);const c=g.resolve(s,`${e.name}.fnet`);h.writeFileSync(c,a)}catch(e){console.error(e.message),process.exit(1)}})),A=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 E(e),{project:n}=t,{projectDir:o,projectFileParsed:i}=n,r=i.input;if(!r)throw new Error("Config schema not found in project file.");const a=g.resolve(o,".fnet"),s=g.resolve(a,`${e.name}.fnet`),c=await k({schema:r,format:"yaml",ref:s});h.existsSync(a)||h.mkdirSync(a),h.writeFileSync(s,c)}catch(e){console.error(e.message),process.exit(1)}}))}(A),A=T(A,{bin:"npm"}),A=T(A,{bin:"node"}),A=T(A,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),A=T(A,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),A=T(A,{name:"app",bin:"npm",preArgs:["run","app","--"]}),A=T(A,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),A=T(A,{bin:"npx"}),A=T(A,{bin:"cdk"}),A=T(A,{bin:"aws"}),A=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 E(e),{projectDir:o}=t,i=e.config,r=await x({name:i,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),a=r?.data?.env||void 0,s=e.command,c=process.argv.slice(5);m(s,[...n,...c],{cwd:o,stdio:"inherit",shell:!0,env:{...process.env,...a}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(A,{name:"with"}),A=function(e,{name:t,preArgs:n=[]}){return e.command(`${t} group [options..]`,"Run a command group.",(e=>e.positional("group",{type:"string"}).option("ftag",{type:"array"}).help(!1).version(!1)),(async e=>{try{const t=await E(e),{project:n}=t,{projectFileParsed:o}=n,i=o.commands;if(!i)throw new Error("Commands not found in project file.");const r=i[e.group];if(!r)throw new Error(`Command group '${e.group}' not found in project file.`);await j({commands:r})}catch(e){console.error(e.message),process.exit(1)}}))}(A,{name:"run"}),A.demandCommand(1,"You need at least one command before moving on").help().argv,Pn}(),Vn=G(Hn);module.exports=Vn;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fnet/cli",
3
- "version": "0.67.1",
3
+ "version": "0.68.0",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -23,7 +23,6 @@
23
23
  "@flownet/lib-list-npm-versions": "^0.1.31",
24
24
  "@flownet/lib-parse-imports-js": "^0.3.1",
25
25
  "@flownet/lib-parse-node-url": "^0.1.16",
26
- "@flownet/lib-pick-npm-versions": "^0.1.12",
27
26
  "@flownet/lib-render-templates-dir": "^0.1.12",
28
27
  "@flownet/lib-to-docker": "^0.3.14",
29
28
  "@flownet/lib-to-electron": "^0.3.1",
@@ -40,6 +39,7 @@
40
39
  "@fnet/dir-zipper": "^0.1.5",
41
40
  "@fnet/expression": "^0.1.16",
42
41
  "@fnet/files-to-gcs": "^0.3.6",
42
+ "@fnet/npm-pick-versions": "^0.1.14",
43
43
  "@fnet/object-from-schema": "^0.1.2",
44
44
  "@fnet/prompt": "^0.2.10",
45
45
  "@fnet/shell": "^0.1.13",
@@ -62,6 +62,7 @@
62
62
  "lodash.pick": "^3.1.0",
63
63
  "nanoid": "^3.3.6",
64
64
  "nunjucks": "^3.2.4",
65
+ "object-hash": "^3.0.0",
65
66
  "prettier": "^3.0.3",
66
67
  "redis": "^4.6.10",
67
68
  "semver": "^7.5.4",