@fnet/cli 0.69.0 → 0.70.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"),r=require("path"),n=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("@fnet/npm-list-versions"),D=require("ajv/dist/2020"),k=require("ajv/dist/standalone"),x=require("ajv-formats"),P=require("@fnet/shell"),S=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/list-files"),z=require("chalk");function B(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function J(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})})),r}var W,K,G,H,X,Y,Z,Q,V,ee,te,re,ne,ae,oe,ie,se,ce,pe,le,de,ue,fe,me,ge,ye,he,we,ve,be,_e,je,De,ke,xe,Pe,Se,Ae,Ee={};function Te(){if(Y)return X;Y=1;const e=b;return X=({feature:t,features:r,packageDevDependencies:n})=>{const{name:a,packages:o,options:i,extraCheck:s,explicit:c}=t,p=`${a}_enabled`,l=r.rollup_output||{},d=Object.keys(l);let u=i||{};const f=r[a]?.options;f&&(u=e(u,f));const m=!r[a]||!1===r[a]?.enabled;d.forEach((e=>{const t=r.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===r[p])return;t[a]={enabled:!0}}t[a]=t[a]||{},t[a].options={...u,...t[a].options}}}));let g=d.some((e=>!0===r.rollup_output[e][a]?.enabled));s&&(g=s()&&g),r[p]=g,g&&o.forEach((e=>n.push({package:e[0],version:e[1]})))}}function $e(){if(ke)return De;ke=1;const e=b,t=d,r=u,n=_,a=function(){if(Q)return Z;Q=1;const e=Te();return Z=t=>{const{atom:r,packageDevDependencies:n}=t,a=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:a,packageDevDependencies:n})},Z}(),o=function(){if(ee)return V;ee=1;const e=Te();return V=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:a,packageDevDependencies:n})},V}(),i=function(){if(re)return te;re=1;const e=Te();return te=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:a,packageDevDependencies:n})},te}(),s=function(){if(ae)return ne;ae=1;const e=Te();return ne=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:a,packageDevDependencies:n})},ne}(),c=function(){if(ie)return oe;ie=1;const e=Te();return oe=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:a,packageDevDependencies:n})},oe}(),p=function(){if(ce)return se;ce=1;const e=Te();return se=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:a,packageDevDependencies:n})},se}(),l=function(){if(le)return pe;le=1;const e=Te();return pe=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:a,packageDevDependencies:n})},pe}(),f=function(){if(ue)return de;ue=1;const e=Te();return de=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:a,packageDevDependencies:n})},de}(),m=function(){if(me)return fe;me=1;const e=Te();return fe=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:a,packageDevDependencies:n})},fe}(),g=function(){if(ye)return ge;ye=1;const e=Te();return ge=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:a,packageDevDependencies:n})},ge}(),y=function(){if(we)return he;we=1;const e=Te();return he=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:a,packageDevDependencies:n})},he}(),h=function(){if(be)return ve;be=1;const e=Te();return ve=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.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:n})},ve}(),w=function(){if(je)return _e;je=1;const e=Te();return _e=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.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:n})},_e}();function v({dir:e,name:n="index"}){let a=r.resolve(e,`./${n}.tsx`);if(t.existsSync(a)||(a=r.resolve(e,`./${n}.ts`)),t.existsSync(a)||(a=r.resolve(e,`./${n}.jsx`)),t.existsSync(a)||(a=r.resolve(e,`./${n}.js`)),!t.existsSync(a))return{};const o=a,i=r.extname(a);return{file:o,ext:i,ts:".ts"===i||".tsx"===i,name:n}}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),D=v({dir:r.resolve(j,"./app")});if(D.file){b("Parsing app entry imports...");let e=await n({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 n({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:r.resolve(j,"./cli")});if(k.file){b("Parsing cli entry imports...");let e=await n({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 n({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:r.resolve(j,"./src")});if(e.file){b("Parsing src entry imports...");let t=await n({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 n({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,P=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:P}:_.cli={enabled:!0,extend:!0===_.cli_has_entry,export:!0,react:P,..._.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 S={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&&(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===_.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===_.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===_.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===_.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===_.app.enabled&&(_.app.dir=`./dist/app/${_.app.folder}`,S.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}`,S.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(S,_.rollup_output||_.rollup?.output||{}),_.preact_enabled=!0===_.preact||_.preact&&!1!==_.preact?.enabled;let E=Object.keys(S);for(const t of E){const r=S[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),a(t),o(t)},De}function Ie(){if(Pe)return xe;Pe=1;const e=j;return xe=async({atom:t,packageDependencies:r,packageDevDependencies:n,setProgress:a})=>{if(a("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 n="^18.2";a("Fetching React versions");n=`^${(await e({name:"react",groupBy:{major:!0}})).find((e=>e[0]===t.doc.features.react_version.toString()))[0]}`,r.push({package:"react",version:n}),r.push({package:"react-dom",version:n}),"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"}),n.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&&n.push({package:"@flownet/lib-render-templates-dir",version:"0.1.17"}),n.push({package:"@babel/core",version:"^7"}),n.push({package:"@rollup/plugin-commonjs",version:"^28"}),n.push({package:"@rollup/plugin-node-resolve",version:"^15"}),n.push({package:"@rollup/plugin-replace",version:"^6"}),n.push({package:"rollup",version:"^4"}),t.doc.features.dts_enabled&&n.push({package:"rollup-plugin-dts",version:"^6"}),n.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),n.push({package:"@rollup/plugin-alias",version:"^5"}),n.push({package:"fs-extra",version:"^11"}),t.doc.features.babel_enabled&&(n.push({package:"@rollup/plugin-babel",version:"^6"}),n.push({package:"@babel/preset-env",version:"^7"}),n.push({package:"@babel/preset-react",version:"^7"}),t.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":n.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":n.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":n.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":n.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":n.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),n.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),t.doc.features.browsersync_enabled&&n.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})},xe}function Oe(){if(Ae)return Se;Ae=1;const e=d,t=u,r=l;return Se=async({atom:n,setProgress:a,context:o,packageDependencies:i})=>{if(!0!==n.doc.features.app.enabled)return;await a({message:"Creating app folder"});const s={atom:n,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!==n.doc.features.app.html&&l.push("index.html.njk"),await r({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:s})},Se}const Ce=require("@fnet/npm-pick-versions"),Re=require("object-hash"),Me=require("node:fs"),Fe=require("node:path");var qe,Ne,Le,Ue,ze,Be,Je,We,Ke,Ge,He,Xe,Ye,Ze,Qe,Ve,et,tt,rt,nt,at,ot,it,st,ct,pt,lt,dt,ut,ft,mt,gt,yt,ht,wt,vt,bt,_t,jt,Dt,kt,xt,Pt,St,At,Et,Tt,$t,It,Ot,Ct,Rt,Mt,Ft,qt,Nt,Lt,Ut,zt,Bt,Jt,Wt=J(Object.freeze({__proto__:null,default:async({projectDir:e,name:t,setProgress:r,count:n=1})=>{let a;const o=Re(["npm-pick-versions",t,n]),i=Fe.join(e,".cache"),s=Fe.join(i,o+".json");return Me.existsSync(s)?(r&&r(`Picking npm version of ${t} from cache ...`),a=JSON.parse(Me.readFileSync(s,"utf8"))):(r&&r(`Picking npm version of ${t} ...`),a=await Ce({name:t,count:n}),Me.mkdirSync(i,{recursive:!0}),Me.writeFileSync(s,JSON.stringify(a),"utf8")),a}}));function Kt(){if(Ne)return qe;Ne=1;const e=f,t=d,r=u,n=_,a=Wt;return qe=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 l=await n({file:r,recursive:!0}),d=!0===o.doc.features.all_parsed_imports?l.all:l.required;for await(const t of d){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 a({name:t.package,projectDir:i.projectDir,setProgress:p});(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:r.minorRange,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 n=t.readdirSync(w);for(const a of n){const n=r.resolve(w,a);if(!t.lstatSync(n).isFile())continue;const o=r.resolve(e,a);t.copyFileSync(n,o)}}},qe}function Gt(){if(Ue)return Le;Ue=1;const e=d,t=u,r=l;return Le=async({atom:n,setProgress:a,context:o,packageDependencies:i})=>{if(!0!==n.doc.features.cli.enabled)return;await a({message:"Creating cli."});const s={atom:n,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})},Le}function Ht(){if(Be)return ze;Be=1;const e=d,t=u,r=f,n=_;return ze=async({atom:a,setProgress: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 n({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 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")},ze}function Xt(){if(We)return Je;We=1;const e=d,t=u,r=f,n=D,a=k,o=x;return Je=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 n({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")},Je}function Yt(){if(Ge)return Ke;Ge=1;const e=d,t=u,r=f;return Ke=async({atom:n,setProgress:a,context:o,packageDependencies:i})=>{await a({message:"Creating .gitignore"});const s={atom:n,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")},Ke}function Zt(){if(Xe)return He;Xe=1;const e=d,t=u,r=f;return He=async({atom:n,setProgress:a,context:o,packageDependencies:i})=>{await a({message:"Creating tsconfig.json."});const s={atom:n,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")},He}function Qt(){if(Ze)return Ye;Ze=1;const e=f,t=d,r=u,n=s;return Ye=async({atom:a,context:o,setProgress: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=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 n({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(a,`${c}`);t.writeFileSync(u,d,"utf8")}else if(a.id){const n=await s.first({type:"wiki",parent_id:a.id});if(!n||"markdown"!==n.doc?.["content-type"])return;const{content:i,...p}=n.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")}},Ye}function Vt(){if(Ve)return Qe;Ve=1;const e=i,t=r;return Qe=async({setProgress:r,context:n})=>{const a=n.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:a}).code)throw new Error("Couldnt format files.")}}function er(){if(tt)return et;tt=1;const e=i;return et=async({atom:t,setProgress:r,context:n})=>{if(!t.doc.features.dts_enabled)return;const a=n.projectDir;await r({message:"Creating .d.ts"});if(0!==e.exec("tsc",{cwd:a}).code)throw new Error("Couldnt create .d.ts files.")},et}function tr(){if(nt)return rt;nt=1;const e=i;return rt=async({setProgress:t,atom:r,context:n})=>{const a=n.projectDir;await t({message:"Installing npm packages."});if(0!==e.exec(`npm install ${r.doc.features.npm_install_flags}`,{cwd:a}).code)throw new Error("Couldnt install npm packages.")},rt}function rr(){if(ot)return at;ot=1;const e=i;return at=async({setProgress:t,context:r})=>{const n=r.projectDir;await t({message:"Building main project."});if(0!==e.exec("npm run build",{cwd:n}).code)throw new Error("Couldnt build project.")}}function nr(){if(Nt)return qt;Nt=1;const e=function(){if(st)return it;st=1;const e=P,r=t;return it=async({setProgress:t,context:n,deploymentProject:a,deploymentProjectTarget:o,buildId:i})=>{await t({message:"Deploying it as gitlab project."});const s=n.projectDir;let c="fnet-to-gitlab";const p=o.params.config||"gitlab",l=await r({name:p,dir:n.projectDir,tags:n.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)}}(),n=function(){if(pt)return ct;pt=1;const e=d,r=u,n=S,a=P,o=t;return ct=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=n.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 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(dt)return lt;dt=1;const e=d,r=u,n=S,a=i,s=t,p=A,l=c,f=o;return lt=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=n.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 n=await l({schema:t[0],tags:i.tags}),a=i.project.projectDir,o=r.resolve(a,".fnet");e.existsSync(o)||e.mkdirSync(o),e.writeFileSync(r.resolve(o,`${v}.fnet`),f.stringify(n)),b=n}if(e.writeFileSync(r.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)}},lt}(),p=function(){if(ft)return ut;ft=1;const e=d,r=u,n=E,a=f,o=T,i=t;return ut=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:n.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 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:n.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: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:n.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=a.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}},ut}(),l=function(){if(gt)return mt;gt=1;const e=a,n=r,o=t;return mt=async({atom:t,Atom:r,setProgress: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 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(n.resolve(g,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(n.resolve(g,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(n.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(ht)return yt;ht=1;const e=t,r=$,n=I,a=S;return yt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},yt}(),g=function(){if(vt)return wt;vt=1;const e=t,r=O,n=I,a=S;return wt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},wt}(),y=function(){if(_t)return bt;_t=1;const e=t,r=C,n=I,a=S;return bt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},bt}(),h=function(){if(Dt)return jt;Dt=1;const e=t,r=R,n=I,a=S;return jt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},jt}(),v=function(){if(xt)return kt;xt=1;const e=t,r=M,n=I,a=S;return kt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},kt}(),b=function(){if(St)return Pt;St=1;const e=t,r=F,n=I,a=S;return Pt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},Pt}(),_=function(){if(Et)return At;Et=1;const e=d,r=u,n=S,a=P,o=t,i=w.default;return At=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=n.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 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 Tt;$t=1;const e=S,r=t,n=w.default;return Tt=async({setProgress:t,context:a,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: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 n({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 n({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(Ot)return It;Ot=1;const e=S,r=t,n=w.default,o=a,i=P,s=q;return It=async({setProgress:t,context:a,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: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 n({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 n({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 n.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(Rt)return Ct;Rt=1;const e=S,r=t,n=w.default,o=a,i=P,s=q;return Ct=async({setProgress:t,context:a,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: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 n({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 n({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 n.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(Ft)return Mt;Ft=1;const e=t,r=N,n=I,a=S;return Mt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},Mt}();return qt=async t=>{const{atom:r,packageDependencies:a,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 n({...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:r,target:i,onProgress:c,projectDir:o.projectDir,dependencies:a,context:o,yamlTarget:u}),d.isDirty=!0}},qt}function ar(){if(Ut)return Lt;Ut=1;const e=d,r=u,n=o,a=i,s=f,c=function(){if(K)return W;K=1;const e=m,t=g;return W=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(H)return G;H=1;const{Api:e}=h,t=w.default,r=v;return G=class{init({config:n,accessToken:a}){return new Promise(((o,i)=>{if(e.set_api_url(n.data.url),a)return e.set_req_token(a),void o(a);t({method:"POST",url:`${n.data.issuer}/protocol/openid-connect/token`,data:r.stringify(n.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=$e(),j=Ie(),D=Oe(),k=Kt(),x=Gt(),P=Ht(),S=Xt(),A=Yt(),E=Zt(),T=Qt(),$=Vt(),I=er(),O=tr(),C=rr(),R=Wt,M=nr(),{Atom:F}=h,q=L,N=t,B=_,J=U,X=z;return Lt=class{#e;#t;#r;#n;#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,setProgress:this.setProgress.bind(this),context:this.#t,Atom:F,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 N({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 F.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 n;this.setProgress({message:"Cleaning project directory."});const o=J({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)&&(n=a.exec(`mkdir "${t}"`),0!==n.code))throw new Error("Couldnt create workflow dir.");if(i=r.join(t,"src"),!e.existsSync(i)&&(n=a.exec(`mkdir "${i}"`),0!==n.code))throw new Error("Couldnt create library/src dir.");if(i=r.join(t,"src","default"),!e.existsSync()&&(n=a.exec(`mkdir "${i}"`),0!==n.code))throw new Error("Couldnt create library/src/default dir.")}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#t.templateDir;this.#n=s.configure(e,{watch:!1,dev:!0}),this.#y.njEnv=this.#n}async initLibs(){this.setProgress({message:"Initializing external libs."});const e=[{name:this.#r.doc.name,type:"atom",parent_id:this.#r.parent_id}];this.#a=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 n=r[e],a=await this.findAtomLibrary({url:n.name});n.atom=a;const o=a.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:e}){const t=q({url:e});if(!t)throw new Error(`Invalid package name: ${e}`);if(t.protocol||(t.protocol=this.#l),"ac:"===t.protocol){const r=t.pathname.split("/");if(1===r.length)return await F.first({where:{name:e,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===r.length){const e=await F.first({where:{name:r[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await F.first({where:{name:r[1],parent_id:e.id,type:"workflow.lib"}})}}else if("local:"===t.protocol){const e=this.#r;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=r.resolve(this.#t.projectSrcDir,"index.js"),n=await B({file:t,recursive:!0}),a=e.doc.dependencies,o=!0===this.#r.doc.features.all_parsed_imports?n.all:n.required;for await(const e of o){if("npm"!==e.type)continue;if(a.find((t=>t.package===e.package)))continue;const t=await R({name:e.package,projectDir:this.#t.projectDir,setProgress:this.#y.setProgress});a.push({package:e.package,subpath:e.subpath,version:t.minorRange,type:"npm"})}return e}}async createAtomLibFiles({libs:t}){await this.setProgress({message:"Creating external lib files."}),this.#r.typesDir="./types";const n=t.filter((e=>"atom"===e.type));for(let t=0;t<n.length;t++){const a=n[t].atom,o=this.#t.projectDir;if("local:"===a.protocol){const t=r.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.js`),n=r.relative(r.join(this.#t.projectDir,"src","default"),t);if(!e.existsSync(t)){e.mkdirSync(r.dirname(t),{recursive:!0});let n="export default async (args)=>{\n";n+="}",e.writeFileSync(t,n,"utf8")}a.relativePath=n.split(r.sep).join("/"),this.#r.typesDir=`./types/${r.basename(o)}/src`}else{const t=r.join(o,"src","libs",`${a.id}.js`),n=a.doc.contents?.find((e=>"esm"===e.format))||a.doc;e.writeFileSync(t,n.content,"utf8")}}}async createEngine(){await this.setProgress({message:"Creating engine file."});const t={libs:this.#a.filter((e=>"atom"===e.type)),libraryAtom:this.#r,atom:this.#r},n=this.#t.templateDir,a=s.compile(e.readFileSync(r.resolve(n,r.join("src","default","engine.js.njk")),"utf8"),this.#n).render(t),o=this.#t.projectDir,i=r.resolve(o,r.join("src","default","index.js"));e.writeFileSync(i,a,"utf8")}async createProjectYaml(){const t="node.yaml",a=`Creating ${t}`;await this.setProgress({message:a});const{content:o,...i}=this.#r.doc,c={content:n.stringify(i)},p=this.#t.templateDir,l=s.compile(e.readFileSync(r.resolve(p,`${t}.njk`),"utf8"),this.#n).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 F.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 F.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 n=Object.keys(t.doc||{}),a=r||{};for(let e=0;e<n.length;e++){const r=t.doc[n[e]];r.name=n[e];const o=a.get(n[e]);await M({...this.#y,deploymentProject:t,deploymentProjectTarget:r,yamlTarget:o})}}async registerToPackageManager(e){const{target:t,packageJSON:r}=e;if(!this.#t.id)return;let n=await F.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});n?(n.doc.versions.splice(0,0,{v:r.version}),await F.update(n,{id:n.id})):n=await F.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(X.blue(t)),await this._cache_set(this.#p,{status:"IN_PROGRESS",message:t})}async build(){try{this.#f&&(await this.createAtomLibFiles({libs:this.#a}),await this.createEngine(),await this.createProjectYaml(),await T(this.#y),await E(this.#y),await A(this.#y),await S(this.#y),await x(this.#y),await D(this.#y),await P(this.#y),await k(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}}},Lt}var or=function(){if(Jt)return Ee;Jt=1;const f=process.cwd(),{spawn:m}=e;t({name:["redis"],dir:f,optional:!0});const g=r,y=n,h=a,w=o,v=i,b=s,_=t,j=c,D=p,k=l,x=ar(),P=function(){if(Bt)return zt;Bt=1;const e=d,t=u;return zt=function({baseDir:r=__dirname}){let n=r;for(;n!==t.parse(n).root;){const r=t.join(n,"node_modules");if(e.existsSync(r))return r;n=t.dirname(n)}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","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(P,"@fnet/cli-project-node/dist/template/project"),r=g.resolve(f,e.name);h.existsSync(r)||h.mkdirSync(r),await k({dir:t,outDir:r,context:e,copyUnmatchedAlso:!0});let n=v.exec("fnode build",{cwd:r});if(0!==n.code)throw new Error("Failed to build project.");if(v.which("git")&&(n=v.exec("git init --initial-branch=main",{cwd:r}),0!==n.code))throw new Error("Failed to initialize git.");if(v.which("code")&&e.vscode&&(n=v.exec(`cd ${r} && code .`),0!==n.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-node/dist/template/project"),r=process.cwd();if(e.name=g.basename(r),e.update){if(await k({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:n=[]}){return e.command(`${t||r} [commands..]`,`${r} ${n.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const t=await T(e),{projectDir:a}=t,o=process.argv.slice(3);m(r,[...n,...o],{cwd:a,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(P,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:g.resolve(P,"./@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:n}=await b({file:t,tags:e}),a=g.dirname(t),o={libraryAtom:{doc:{...n},fileName:"index"},projectDir:a,projectFilePath:t,projectFileContent:r,projectFileParsed:n};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:r}=await b({file:i,tags:e}),n=w.parseDocument(t);o.devops={filePath:i,fileContent:t,yamlDocument:n,doc:{...r},type:"library.deploy",save:async()=>{h.writeFileSync(o.devops.filePath,n.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(P,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:g.resolve(P,"./@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:n,projectFileParsed:a}=r,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(n,".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:n,projectFileParsed:a}=r,o=a.input;if(!o)throw new Error("Config schema not found in project file.");const i=g.resolve(n,".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:n}=t,a=e.config,o=await _({name:a,dir:n,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:n,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:n}=r,a=n.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)}}))}(A,{name:"run"}),A.demandCommand(1,"You need at least one command before moving on").help().argv,Ee}(),ir=B(or);module.exports=ir;
2
+ "use strict";var e=require("child_process"),t=require("@fnet/config"),r=require("path"),n=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("@fnet/npm-list-versions"),D=require("@fnet/npm-pick-versions"),k=require("object-hash"),x=require("ajv/dist/2020"),S=require("ajv/dist/standalone"),P=require("ajv-formats"),A=require("@fnet/shell"),E=require("semver"),T=require("@fnet/up-list-files"),$=require("node:os"),I=require("@node-red/util"),O=require("@flownet/lib-to-ios-app"),C=require("lodash.clonedeep"),R=require("@flownet/lib-to-macos-app"),M=require("@flownet/lib-to-electron"),F=require("@flownet/lib-to-webos"),q=require("@flownet/lib-to-nextjs"),N=require("@flownet/lib-to-docker"),L=require("form-data"),U=require("@fnet/to-rust"),B=require("@flownet/lib-parse-node-url"),z=require("@fnet/list-files"),J=require("chalk");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,ne,ae,oe,ie,se,ce,pe,le,de,ue,fe,me,ge,ye,he,we,ve,be,_e,je,De,ke,xe,Se,Pe,Ae,Ee,Te,$e,Ie,Oe,Ce,Re,Me,Fe,qe,Ne,Le,Ue,Be,ze,Je,We,Ke,Ge,He,Xe,Ye,Ze,Qe,Ve,et,tt,rt,nt,at,ot,it,st,ct,pt,lt,dt,ut,ft,mt,gt,yt,ht,wt,vt,bt,_t,jt,Dt,kt,xt,St,Pt,At,Et,Tt,$t,It,Ot,Ct,Rt,Mt,Ft,qt,Nt={};function Lt(){if(Z)return Y;Z=1;const e=b;return Y=({feature:t,features:r,packageDevDependencies:n})=>{const{name:a,packages:o,options:i,extraCheck:s,explicit:c}=t,p=`${a}_enabled`,l=r.rollup_output||{},d=Object.keys(l);let u=i||{};const f=r[a]?.options;f&&(u=e(u,f));const m=!r[a]||!1===r[a]?.enabled;d.forEach((e=>{const t=r.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===r[p])return;t[a]={enabled:!0}}t[a]=t[a]||{},t[a].options={...u,...t[a].options}}}));let g=d.some((e=>!0===r.rollup_output[e][a]?.enabled));s&&(g=s()&&g),r[p]=g,g&&o.forEach((e=>n.push({package:e[0],version:e[1]})))}}function Ut(){if(xe)return ke;xe=1;const e=b,t=d,r=u,n=_,a=function(){if(V)return Q;V=1;const e=Lt();return Q=t=>{const{atom:r,packageDevDependencies:n}=t,a=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:a,packageDevDependencies:n})},Q}(),o=function(){if(te)return ee;te=1;const e=Lt();return ee=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:a,packageDevDependencies:n})},ee}(),i=function(){if(ne)return re;ne=1;const e=Lt();return re=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:a,packageDevDependencies:n})},re}(),s=function(){if(oe)return ae;oe=1;const e=Lt();return ae=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:a,packageDevDependencies:n})},ae}(),c=function(){if(se)return ie;se=1;const e=Lt();return ie=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:a,packageDevDependencies:n})},ie}(),p=function(){if(pe)return ce;pe=1;const e=Lt();return ce=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:a,packageDevDependencies:n})},ce}(),l=function(){if(de)return le;de=1;const e=Lt();return le=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:a,packageDevDependencies:n})},le}(),f=function(){if(fe)return ue;fe=1;const e=Lt();return ue=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:a,packageDevDependencies:n})},ue}(),m=function(){if(ge)return me;ge=1;const e=Lt();return me=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:a,packageDevDependencies:n})},me}(),g=function(){if(he)return ye;he=1;const e=Lt();return ye=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:a,packageDevDependencies:n})},ye}(),y=function(){if(ve)return we;ve=1;const e=Lt();return we=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:a,packageDevDependencies:n})},we}(),h=function(){if(_e)return be;_e=1;const e=Lt();return be=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.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:n})},be}(),w=function(){if(De)return je;De=1;const e=Lt();return je=t=>{const{atom:r,packageDevDependencies:n}=t,a=r.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:n})},je}();function v({dir:e,name:n="index"}){let a=r.resolve(e,`./${n}.tsx`);if(t.existsSync(a)||(a=r.resolve(e,`./${n}.ts`)),t.existsSync(a)||(a=r.resolve(e,`./${n}.jsx`)),t.existsSync(a)||(a=r.resolve(e,`./${n}.js`)),!t.existsSync(a))return{};const o=a,i=r.extname(a);return{file:o,ext:i,ts:".ts"===i||".tsx"===i,name:n}}return ke=async t=>{const{atom:d,context:u,setProgress:b}=t;b("Initializing features..."),d.doc.features=d.doc.features||{};const _=d.doc.features;if(_.runtime=_.runtime||{},_.runtime.type=_.runtime.type||"node","node"!==_.runtime.type)return;_.runtime.version=_.runtime.version||"22",_.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),D=v({dir:r.resolve(j,"./app")});if(D.file){b("Parsing app entry imports...");let e=await n({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 n({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:r.resolve(j,"./cli")});if(k.file){b("Parsing cli entry imports...");let e=await n({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 n({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:r.resolve(j,"./src")});if(e.file){b("Parsing src entry imports...");let t=await n({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 n({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),a(t),o(t)},ke}function Bt(){if(Pe)return Se;Pe=1;const e=j;return Se=async({atom:t,packageDependencies:r,packageDevDependencies:n,setProgress:a})=>{if("node"===t.doc.features.runtime.type){if(a("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 n="^18.2";a("Fetching React versions");n=`^${(await e({name:"react",groupBy:{major:!0}})).find((e=>e[0]===t.doc.features.react_version.toString()))[0]}`,r.push({package:"react",version:n}),r.push({package:"react-dom",version:n}),"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"}),n.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&&n.push({package:"@flownet/lib-render-templates-dir",version:"0.1.17"}),n.push({package:"@babel/core",version:"^7"}),n.push({package:"@rollup/plugin-commonjs",version:"^28"}),n.push({package:"@rollup/plugin-node-resolve",version:"^15"}),n.push({package:"@rollup/plugin-replace",version:"^6"}),n.push({package:"rollup",version:"^4"}),t.doc.features.dts_enabled&&n.push({package:"rollup-plugin-dts",version:"^6"}),n.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),n.push({package:"@rollup/plugin-alias",version:"^5"}),n.push({package:"fs-extra",version:"^11"}),t.doc.features.babel_enabled&&(n.push({package:"@rollup/plugin-babel",version:"^6"}),n.push({package:"@babel/preset-env",version:"^7"}),n.push({package:"@babel/preset-react",version:"^7"}),t.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":n.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":n.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":n.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":n.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":n.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),n.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),t.doc.features.browsersync_enabled&&n.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})}},Se}function zt(){if(Ee)return Ae;Ee=1;const e=d,t=u,r=l;return Ae=async({atom:n,setProgress:a,context:o,packageDependencies:i})=>{if(!0!==n.doc.features.app.enabled)return;await a({message:"Creating app folder"});const s={atom:n,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!==n.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 Jt(){if($e)return Te;$e=1;const e=D,t=k,r=d,n=u;return Te=async({projectDir:a,name:o,setProgress:i,count:s=1})=>{let c;const p=t(["npm-pick-versions",o,s]),l=n.join(a,".cache"),d=n.join(l,p+".json");return r.existsSync(d)?(i&&i(`Picking npm version of ${o} from cache ...`),c=JSON.parse(r.readFileSync(d,"utf8"))):(i&&i(`Picking npm version of ${o} ...`),c=await e({name:o,count:s}),r.mkdirSync(l,{recursive:!0}),r.writeFileSync(d,JSON.stringify(c),"utf8")),c}}function Wt(){if(Oe)return Ie;Oe=1;const e=f,t=d,r=u,n=_,a=Jt();return Ie=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 l=await n({file:r,recursive:!0}),d=!0===o.doc.features.all_parsed_imports?l.all:l.required;for await(const t of d){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 a({name:t.package,projectDir:i.projectDir,setProgress:p});(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:r.minorRange,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 n=t.readdirSync(w);for(const a of n){const n=r.resolve(w,a);if(!t.lstatSync(n).isFile())continue;const o=r.resolve(e,a);t.copyFileSync(n,o)}}},Ie}function Kt(){if(Re)return Ce;Re=1;const e=d,t=u,r=l;return Ce=async({atom:n,setProgress:a,context:o,packageDependencies:i})=>{if(!0!==n.doc.features.cli.enabled)return;await a({message:"Creating cli."});const s={atom:n,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})},Ce}function Gt(){if(Fe)return Me;Fe=1;const e=d,t=u,r=f,n=_;return Me=async({atom:a,setProgress: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 n({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 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")},Me}function Ht(){if(Ne)return qe;Ne=1;const e=d,t=u,r=f,n=x,a=S,o=P;return qe=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 n({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")},qe}function Xt(){if(Ue)return Le;Ue=1;const e=d,t=u,r=f;return Le=async({atom:n,setProgress:a,context:o,packageDependencies:i})=>{await a({message:"Creating .gitignore"});const s={atom:n,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")},Le}function Yt(){if(ze)return Be;ze=1;const e=d,t=u,r=f;return Be=async({atom:n,setProgress:a,context:o,packageDependencies:i})=>{await a({message:"Creating tsconfig.json."});const s={atom:n,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")},Be}function Zt(){if(We)return Je;We=1;const e=f,t=d,r=u,n=s;return Je=async({atom:a,context:o,setProgress: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=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 n({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(a,`${c}`);t.writeFileSync(u,d,"utf8")}else if(a.id){const n=await s.first({type:"wiki",parent_id:a.id});if(!n||"markdown"!==n.doc?.["content-type"])return;const{content:i,...p}=n.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")}},Je}function Qt(){if(Ge)return Ke;Ge=1;const e=r,t=p;return Ke=async({setProgress:r,context:n})=>{const a=n.projectDir;await r({message:"Prettifiying source files."});let o=e.join("src","**","*");await t({commands:{steps:[`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:a}})}}function Vt(){if(Xe)return He;Xe=1;const e=i;return He=async({atom:t,setProgress:r,context:n})=>{if(!t.doc.features.dts_enabled)return;const a=n.projectDir;await r({message:"Creating .d.ts"});if(0!==e.exec("tsc",{cwd:a}).code)throw new Error("Couldnt create .d.ts files.")},He}function er(){if(Ze)return Ye;Ze=1;const e=i;return Ye=async({setProgress:t,atom:r,context:n})=>{const a=n.projectDir;await t({message:"Installing npm packages."});if(0!==e.exec(`npm install ${r.doc.features.npm_install_flags}`,{cwd:a}).code)throw new Error("Couldnt install npm packages.")},Ye}function tr(){if(Ve)return Qe;Ve=1;const e=i;return Qe=async({setProgress:t,context:r})=>{const n=r.projectDir;await t({message:"Building main project."});if(0!==e.exec("npm run build",{cwd:n}).code)throw new Error("Couldnt build project.")}}function rr(){if(Ot)return It;Ot=1;const e=function(){if(tt)return et;tt=1;const e=A,r=t;return et=async({setProgress:t,context:n,deploymentProject:a,deploymentProjectTarget:o,buildId:i})=>{await t({message:"Deploying it as gitlab project."});const s=n.projectDir;let c="fnet-to-gitlab";const p=o.params.config||"gitlab",l=await r({name:p,dir:n.projectDir,tags:n.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)}}(),n=function(){if(nt)return rt;nt=1;const e=d,r=u,n=E,a=A,o=t;return rt=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=n.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 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(ot)return at;ot=1;const e=d,r=u,n=E,a=i,s=t,p=T,l=c,f=o;return at=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=n.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 n=await l({schema:t[0],tags:i.tags}),a=i.project.projectDir,o=r.resolve(a,".fnet");e.existsSync(o)||e.mkdirSync(o),e.writeFileSync(r.resolve(o,`${v}.fnet`),f.stringify(n)),b=n}if(e.writeFileSync(r.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)}},at}(),p=function(){if(st)return it;st=1;const e=d,r=u,n=$,a=f,o=I,i=t;return it=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:n.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 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:n.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: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:n.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=a.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}},it}(),l=function(){if(pt)return ct;pt=1;const e=a,n=r,o=t;return ct=async({atom:t,Atom:r,setProgress: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 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(n.resolve(g,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(n.resolve(g,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(n.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(dt)return lt;dt=1;const e=t,r=O,n=C,a=E;return lt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},lt}(),g=function(){if(ft)return ut;ft=1;const e=t,r=R,n=C,a=E;return ut=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},ut}(),y=function(){if(gt)return mt;gt=1;const e=t,r=M,n=C,a=E;return mt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},mt}(),h=function(){if(ht)return yt;ht=1;const e=t,r=F,n=C,a=E;return yt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},yt}(),v=function(){if(vt)return wt;vt=1;const e=t,r=q,n=C,a=E;return wt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},wt}(),b=function(){if(_t)return bt;_t=1;const e=t,r=N,n=C,a=E;return bt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},bt}(),_=function(){if(Dt)return jt;Dt=1;const e=d,r=u,n=E,a=A,o=t,i=w.default;return jt=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=n.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 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(xt)return kt;xt=1;const e=E,r=t,n=w.default;return kt=async({setProgress:t,context:a,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: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 n({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 n({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(Pt)return St;Pt=1;const e=E,r=t,n=w.default,o=a,i=A,s=L;return St=async({setProgress:t,context:a,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: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 n({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 n({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 n.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(Et)return At;Et=1;const e=E,r=t,n=w.default,o=a,i=A,s=L;return At=async({setProgress:t,context:a,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: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 n({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 n({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 n.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($t)return Tt;$t=1;const e=t,r=U,n=C,a=E;return Tt=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=n(o.params);f.dependencies=n(c);const m={atom:t,params:f,config:d?.config,src:s,dest:s};return{deployer:await r(m)}},Tt}();return It=async t=>{const{atom:r,packageDependencies:a,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 n({...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:r,target:i,onProgress:c,projectDir:o.projectDir,dependencies:a,context:o,yamlTarget:u}),d.isDirty=!0}},It}function nr(){if(Rt)return Ct;Rt=1;const e=d,r=u,n=o,a=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:n,accessToken:a}){return new Promise(((o,i)=>{if(e.set_api_url(n.data.url),a)return e.set_req_token(a),void o(a);t({method:"POST",url:`${n.data.issuer}/protocol/openid-connect/token`,data:r.stringify(n.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=Ut(),j=Bt(),D=zt(),k=Wt(),x=Kt(),S=Gt(),P=Ht(),A=Xt(),E=Yt(),T=Zt(),$=Qt(),I=Vt(),O=er(),C=tr(),R=Jt(),M=rr(),{Atom:F}=h,q=B,N=t,L=_,U=z,W=J;return Ct=class{#e;#t;#r;#n;#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,setProgress:this.setProgress.bind(this),context:this.#t,Atom:F,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 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 F.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(){if("node"!==this.#r.doc.features.runtime.type)return;this.setProgress({message:"Initializing library directory."});const t=this.#t.projectDir;let n;this.setProgress({message:"Cleaning project directory."});const o=U({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)&&(n=a.exec(`mkdir "${t}"`),0!==n.code))throw new Error("Couldnt create workflow dir.");if(i=r.join(t,"src"),!e.existsSync(i)&&(n=a.exec(`mkdir "${i}"`),0!==n.code))throw new Error("Couldnt create library/src dir.");if(i=r.join(t,"src","default"),!e.existsSync()&&(n=a.exec(`mkdir "${i}"`),0!==n.code))throw new Error("Couldnt create library/src/default dir.")}async initNunjucks(){if("node"!==this.#r.doc.features.runtime.type)return;this.setProgress({message:"Initializing nunjucks."});const e=this.#t.templateDir;this.#n=s.configure(e,{watch:!1,dev:!0}),this.#y.njEnv=this.#n}async initLibs(){if("node"!==this.#r.doc.features.runtime.type)return;this.setProgress({message:"Initializing external libs."});const e=[{name:this.#r.doc.name,type:"atom",parent_id:this.#r.parent_id}];this.#a=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 n=r[e],a=await this.findAtomLibrary({url:n.name});n.atom=a;const o=a.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:e}){const t=q({url:e});if(!t)throw new Error(`Invalid package name: ${e}`);if(t.protocol||(t.protocol=this.#l),"ac:"===t.protocol){const r=t.pathname.split("/");if(1===r.length)return await F.first({where:{name:e,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===r.length){const e=await F.first({where:{name:r[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await F.first({where:{name:r[1],parent_id:e.id,type:"workflow.lib"}})}}else if("local:"===t.protocol){const e=this.#r;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=r.resolve(this.#t.projectSrcDir,"index.js"),n=await L({file:t,recursive:!0}),a=e.doc.dependencies,o=!0===this.#r.doc.features.all_parsed_imports?n.all:n.required;for await(const e of o){if("npm"!==e.type)continue;if(a.find((t=>t.package===e.package)))continue;const t=await R({name:e.package,projectDir:this.#t.projectDir,setProgress:this.#y.setProgress});a.push({package:e.package,subpath:e.subpath,version:t.minorRange,type:"npm"})}return e}}async createAtomLibFiles({libs:t}){await this.setProgress({message:"Creating external lib files."}),this.#r.typesDir="./types";const n=t.filter((e=>"atom"===e.type));for(let t=0;t<n.length;t++){const a=n[t].atom,o=this.#t.projectDir;if("local:"===a.protocol){const t=r.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.js`),n=r.relative(r.join(this.#t.projectDir,"src","default"),t);if(!e.existsSync(t)){e.mkdirSync(r.dirname(t),{recursive:!0});let n="export default async (args)=>{\n";n+="}",e.writeFileSync(t,n,"utf8")}a.relativePath=n.split(r.sep).join("/"),this.#r.typesDir=`./types/${r.basename(o)}/src`}else{const t=r.join(o,"src","libs",`${a.id}.js`),n=a.doc.contents?.find((e=>"esm"===e.format))||a.doc;e.writeFileSync(t,n.content,"utf8")}}}async createEngine(){await this.setProgress({message:"Creating engine file."});const t={libs:this.#a.filter((e=>"atom"===e.type)),libraryAtom:this.#r,atom:this.#r},n=this.#t.templateDir,a=s.compile(e.readFileSync(r.resolve(n,r.join("src","default","engine.js.njk")),"utf8"),this.#n).render(t),o=this.#t.projectDir,i=r.resolve(o,r.join("src","default","index.js"));e.writeFileSync(i,a,"utf8")}async createProjectYaml(){const t="node.yaml",a=`Creating ${t}`;await this.setProgress({message:a});const{content:o,...i}=this.#r.doc,c={content:n.stringify(i)},p=this.#t.templateDir,l=s.compile(e.readFileSync(r.resolve(p,`${t}.njk`),"utf8"),this.#n).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 F.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 F.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 n=Object.keys(t.doc||{}),a=r||{};for(let e=0;e<n.length;e++){const r=t.doc[n[e]];r.name=n[e];const o=a.get(n[e]);await M({...this.#y,deploymentProject:t,deploymentProjectTarget:r,yamlTarget:o})}}async registerToPackageManager(e){const{target:t,packageJSON:r}=e;if(!this.#t.id)return;let n=await F.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});n?(n.doc.versions.splice(0,0,{v:r.version}),await F.update(n,{id:n.id})):n=await F.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(W.blue(t)),await this._cache_set(this.#p,{status:"IN_PROGRESS",message:t})}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 N({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 build(){try{"node"===this.#r.doc.features.runtime.type&&await this.nodeBuild(),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}}async nodeBuild(){this.#f&&(await this.createAtomLibFiles({libs:this.#a}),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 D(this.#y),await S(this.#y),await k(this.#y),await $(this.#y),await I(this.#y),this.#m&&(await O(this.#y),await C(this.#y),this.#g&&await this.deploy()))}},Ct}var ar=W(function(){if(qt)return Nt;qt=1;const f=process.cwd(),{spawn:m}=e;t({name:["redis"],dir:f,optional:!0});const g=r,y=n,h=a,w=o,v=i,b=s,_=t,j=c,D=p,k=l,x=nr(),S=function(){if(Ft)return Mt;Ft=1;const e=d,t=u;return Mt=function({baseDir:r=__dirname}){let n=r;for(;n!==t.parse(n).root;){const r=t.join(n,"node_modules");if(e.existsSync(r))return r;n=t.dirname(n)}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 k({dir:t,outDir:r,context:e,copyUnmatchedAlso:!0});let n=v.exec("fnode build",{cwd:r});if(0!==n.code)throw new Error("Failed to build project.");if(v.which("git")&&(n=v.exec("git init --initial-branch=main",{cwd:r}),0!==n.code))throw new Error("Failed to initialize git.");if(v.which("code")&&e.vscode&&(n=v.exec(`cd ${r} && code .`),0!==n.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 k({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:n=[]}){return e.command(`${t||r} [commands..]`,`${r} ${n.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const t=await T(e),{projectDir:a}=t,o=process.argv.slice(3);m(r,[...n,...o],{cwd:a,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:n}=await b({file:t,tags:e}),a=g.dirname(t),o={libraryAtom:{doc:{...n},fileName:"index"},projectDir:a,projectFilePath:t,projectFileContent:r,projectFileParsed:n};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:r}=await b({file:i,tags:e}),n=w.parseDocument(t);o.devops={filePath:i,fileContent:t,yamlDocument:n,doc:{...r},type:"library.deploy",save:async()=>{h.writeFileSync(o.devops.filePath,n.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 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:n,projectFileParsed:a}=r,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(n,".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:n,projectFileParsed:a}=r,o=a.input;if(!o)throw new Error("Config schema not found in project file.");const i=g.resolve(n,".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:n}=t,a=e.config,o=await _({name:a,dir:n,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:n,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:n}=r,a=n.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)}}))}(A,{name:"run"}),A.demandCommand(1,"You need at least one command before moving on").help().argv,Nt}());module.exports=ar;
@@ -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"),r=require("fs"),i=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("@fnet/npm-list-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"),O=require("node:os"),$=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("@fnet/list-files"),K=require("lodash.pick"),G=require("lodash.omit");function H(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function V(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var X,Y,Z,Q,ee,te,ne,oe,re,ie,ae,se,ce,le,pe,de,fe,ue,me,ge,he,ye,we,ve,be,xe,ke,je,_e,De,Pe,Se,Ae,Te,Ee,Oe,$e,Ce,Ie={};function Ne(){if(te)return ee;te=1;const e=k;return ee=({feature:t,features:n,packageDevDependencies:o})=>{const{name:r,packages:i,options:a,extraCheck:s,explicit:c}=t,l=`${r}_enabled`,p=n.rollup_output||{},d=Object.keys(p);let f=a||{};const u=n[r]?.options;u&&(f=e(f,u));const m=!n[r]||!1===n[r]?.enabled;d.forEach((e=>{const t=n.rollup_output[e];if(t){if(Reflect.has(t,r)){if(m||!t[r]||!1===t[r]?.enabled)return void delete t[r];!0===t[r]&&(t[r]={enabled:!0,options:f})}else{if(m||c||!1===n[l])return;t[r]={enabled:!0}}t[r]=t[r]||{},t[r].options={...f,...t[r].options}}}));let g=d.some((e=>!0===n.rollup_output[e][r]?.enabled));s&&(g=s()&&g),n[l]=g,g&&i.forEach((e=>o.push({package:e[0],version:e[1]})))}}function Me(){if(Te)return Ae;Te=1;const e=k,t=d,n=f,o=j,r=function(){if(oe)return ne;oe=1;const e=Ne();return ne=t=>{const{atom:n,packageDevDependencies:o}=t,r=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:r,packageDevDependencies:o})},ne}(),i=function(){if(ie)return re;ie=1;const e=Ne();return re=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:r,packageDevDependencies:o})},re}(),a=function(){if(se)return ae;se=1;const e=Ne();return ae=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:r,packageDevDependencies:o})},ae}(),s=function(){if(le)return ce;le=1;const e=Ne();return ce=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:r,packageDevDependencies:o})},ce}(),c=function(){if(de)return pe;de=1;const e=Ne();return pe=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:r,packageDevDependencies:o})},pe}(),l=function(){if(ue)return fe;ue=1;const e=Ne();return fe=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:r,packageDevDependencies:o})},fe}(),p=function(){if(ge)return me;ge=1;const e=Ne();return me=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:r,packageDevDependencies:o})},me}(),u=function(){if(ye)return he;ye=1;const e=Ne();return he=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:r,packageDevDependencies:o})},he}(),m=function(){if(ve)return we;ve=1;const e=Ne();return we=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:r,packageDevDependencies:o})},we}(),g=function(){if(xe)return be;xe=1;const e=Ne();return be=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:r,packageDevDependencies:o})},be}(),h=function(){if(je)return ke;je=1;const e=Ne();return ke=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:r,packageDevDependencies:o})},ke}(),y=function(){if(De)return _e;De=1;const e=Ne();return _e=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features,i={};!0===r.app?.enabled&&(i.targets=i.targets||[],i.targets.push({src:"./src/app/index.html",dest:r.app.dir}),Reflect.has(r.app,"copy")||Reflect.has(r,"copy")||(r.copy=!0)),e({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:i},features:r,packageDevDependencies:o})},_e}(),w=function(){if(Se)return Pe;Se=1;const e=Ne();return Pe=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features,i=r.css&&!1!==r.css.enabled;let a=[];i&&(a.push(["rollup-plugin-postcss","^4"]),a.push(["sass","^1.66"]),(r.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:r,packageDevDependencies:o})},Pe}();function v({dir:e,name:o="index"}){let r=n.resolve(e,`./${o}.tsx`);if(t.existsSync(r)||(r=n.resolve(e,`./${o}.ts`)),t.existsSync(r)||(r=n.resolve(e,`./${o}.jsx`)),t.existsSync(r)||(r=n.resolve(e,`./${o}.js`)),!t.existsSync(r))return{};const i=r,a=n.extname(r);return{file:i,ext:a,ts:".ts"===a||".tsx"===a,name:o}}return Ae=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),y(t),h(t),g(t),m(t),p(t),u(t),l(t),c(t),s(t),a(t),r(t),i(t)},Ae}function Fe(){if(Oe)return Ee;Oe=1;const e=_;return Ee=async({atom:t,packageDependencies:n,packageDevDependencies:o,setProgress:r})=>{if(r("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";r("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"})},Ee}function Re(){if(Ce)return $e;Ce=1;const e=d,t=f,n=p;return $e=async({atom:o,setProgress:r,context:i,packageDependencies:a})=>{if(!0!==o.doc.features.app.enabled)return;await r({message:"Creating app folder"});const s={atom:o,packageDependencies:a,ts:Date.now()},c=i.templateDir,l=t.resolve(i.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})},$e}const qe=require("@fnet/npm-pick-versions"),Ue=require("object-hash"),Le=require("node:fs"),Be=require("node:path");var Je,ze,We,Ke,Ge,He,Ve,Xe,Ye,Ze,Qe,et,tt,nt,ot,rt,it,at,st,ct,lt,pt,dt,ft,ut,mt,gt,ht,yt,wt,vt,bt,xt,kt,jt,_t,Dt,Pt,St,At,Tt,Et,Ot,$t,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,hn,yn,wn,vn,bn,xn,kn,jn,_n,Dn,Pn,Sn,An,Tn,En,On,$n,Cn,In,Nn,Mn,Fn=V(Object.freeze({__proto__:null,default:async({projectDir:e,name:t,setProgress:n,count:o=1})=>{let r;const i=Ue(["npm-pick-versions",t,o]),a=Be.join(e,".cache"),s=Be.join(a,i+".json");return Le.existsSync(s)?(n&&n(`Picking npm version of ${t} from cache ...`),r=JSON.parse(Le.readFileSync(s,"utf8"))):(n&&n(`Picking npm version of ${t} ...`),r=await qe({name:t,count:o}),Le.mkdirSync(a,{recursive:!0}),Le.writeFileSync(s,JSON.stringify(r),"utf8")),r}}));function Rn(){if(ze)return Je;ze=1;const e=u,t=d,n=f,o=j,r=Fn;return Je=async({atom:i,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&&i.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===i.doc.features.app.enabled&&f.push({file:n.resolve(a.projectDir,"src/app/index.js"),dev:!1!==i.doc.features.app.dev}),!0===i.doc.features.cli.enabled&&f.push({file:n.resolve(a.projectDir,"src/cli/index.js"),dev:!1!==i.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 p=await o({file:n,recursive:!0}),d=!0===i.doc.features.all_parsed_imports?p.all:p.required;for await(const t of d){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 r({name:t.package,projectDir:a.projectDir,setProgress:l});(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const u={atom:i,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 r of o){const o=n.resolve(w,r);if(!t.lstatSync(o).isFile())continue;const i=n.resolve(e,r);t.copyFileSync(o,i)}}},Je}function qn(){if(Ke)return We;Ke=1;const e=d,t=f,n=p;return We=async({atom:o,setProgress:r,context:i,packageDependencies:a})=>{if(!0!==o.doc.features.cli.enabled)return;await r({message:"Creating cli."});const s={atom:o,packageDependencies:a},c=i.templateDir,l=t.resolve(i.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})},We}function Un(){if(He)return Ge;He=1;const e=d,t=f,n=u,o=j;return Ge=async({atom:r,setProgress:i,context:a,packageDependencies:s})=>{await i({message:"Creating rollup file."});const c={atom:r,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=r.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")},Ge}function Ln(){if(Xe)return Ve;Xe=1;const e=d,t=f,n=u,o=D,r=P,i=S;return Ve=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 h=new o({allErrors:!0,useDefaults:!0,formats:{email:!0},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});i(h);const y=h.compile(p),w=r(h,y);e.writeFileSync(t.resolve(m,"src/default/validate_input.js"),w,"utf8")},Ve}function Bn(){if(Ze)return Ye;Ze=1;const e=d,t=f,n=u;return Ye=async({atom:o,setProgress:r,context:i,packageDependencies:a})=>{await r({message:"Creating .gitignore"});const s={atom:o,packageDependencies:a},c=i.templateCommonDir,l=n.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),n.configure(c)).render(s),p=i.projectDir,d=t.resolve(p,".gitignore");e.writeFileSync(d,l,"utf8")},Ye}function Jn(){if(et)return Qe;et=1;const e=d,t=f,n=u;return Qe=async({atom:o,setProgress:r,context:i,packageDependencies:a})=>{await r({message:"Creating tsconfig.json."});const s={atom:o,packageDependencies:a},c=i.templateCommonDir,l=n.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),n.configure(c)).render(s),p=i.projectDir,d=t.resolve(p,"tsconfig.json");e.writeFileSync(d,l,"utf8")},Qe}function zn(){if(nt)return tt;nt=1;const e=u,t=d,n=f,o=s;return tt=async({atom:r,context:i,setProgress:a,Atom:s})=>{const c="readme.md",l=`Creating ${c}`;if(await a({message:l}),i.project?.readme){const r=i.projectDir,a={content:i.project.readme.doc.content},s=n.resolve(i.project.projectDir,"fnet/how-to.md");if(t.existsSync(s)){const e=t.readFileSync(s,"utf8");a.howto=e}const l=n.resolve(i.project.projectDir,"fnet/input.yaml");if(t.existsSync(l)){const e=await o({file:l,tags:i.tags});a.input=e.content}const p=i.templateCommonDir,d=e.compile(t.readFileSync(n.resolve(p,`${c}.njk`),"utf8"),e.configure(p)).render(a),f=n.resolve(r,`${c}`);t.writeFileSync(f,d,"utf8")}else if(r.id){const o=await s.first({type:"wiki",parent_id:r.id});if(!o||"markdown"!==o.doc?.["content-type"])return;const{content:a,...l}=o.doc,p={content:a},d=i.templateCommonDir,f=e.compile(t.readFileSync(n.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(p),u=i.projectDir,m=n.resolve(u,`${c}`);t.writeFileSync(m,f,"utf8")}},tt}function Wn(){if(rt)return ot;rt=1;const e=a,t=n;return ot=async({setProgress:n,context:o})=>{const r=o.projectDir;await n({message:"Prettifiying source files."});let i=t.join("src","**","*");if(0!==e.exec(`prettier --write ${i} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:r}).code)throw new Error("Couldnt format files.")}}function Kn(){if(at)return it;at=1;const e=a;return it=async({atom:t,setProgress:n,context:o})=>{if(!t.doc.features.dts_enabled)return;const r=o.projectDir;await n({message:"Creating .d.ts"});if(0!==e.exec("tsc",{cwd:r}).code)throw new Error("Couldnt create .d.ts files.")},it}function Gn(){if(ct)return st;ct=1;const e=a;return st=async({setProgress:t,atom:n,context:o})=>{const r=o.projectDir;await t({message:"Installing npm packages."});if(0!==e.exec(`npm install ${n.doc.features.npm_install_flags}`,{cwd:r}).code)throw new Error("Couldnt install npm packages.")},st}function Hn(){if(pt)return lt;pt=1;const e=a;return lt=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 Vn(){if(zt)return Jt;zt=1;const e=function(){if(ft)return dt;ft=1;const e=A,n=t;return dt=async({setProgress:t,context:o,deploymentProject:r,deploymentProjectTarget:i,buildId:a})=>{await t({message:"Deploying it as gitlab project."});const s=o.projectDir;let c="fnet-to-gitlab";const l=i.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='${i.params.name}'`,c+=` --projectBranch='${i.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==i.dryRun&&(await e({cmd:c}),r.isDirty=!0)},dt}(),o=function(){if(mt)return ut;mt=1;const e=d,n=f,o=T,r=A,i=t;return ut=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:h}=await i({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 r({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(ht)return gt;ht=1;const e=d,n=f,o=T,r=a,s=t,l=E,p=c,u=i;return gt=async({atom:t,setProgress:i,context:a,deploymentProject:c,deploymentProjectTarget:d,yamlTarget:f})=>{await i({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}),r=a.project.projectDir,i=n.resolve(r,".fnet");e.existsSync(i)||e.mkdirSync(i),e.writeFileSync(n.resolve(i,`${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!==r.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)}},gt}(),l=function(){if(wt)return yt;wt=1;const e=d,n=f,o=O,r=u,i=$,a=t;return yt=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,h="workflow"===t.type?"WF":"LIB";let y;if("simple"===p.deploy.template)y={atom:t,packageDependencies:f,red:{tab:{id:p.deploy.id||i.util.generateId(),label:`${h}/${t.id?t.id:o.hostname()}/${t.name}/${p.deploy.name||p.deploy.template}`},function:{id:i.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:i.util.generateId(),...p.params?.inject,payload:"json"===p.params?.inject?.payloadType?`'${JSON.stringify(p.params?.inject?.payload)}'`:p.params?.inject?.payload},debug:{id:i.util.generateId()}}};else if("cronjob"===p.deploy.template){let r=p.params?.schedules?cloneDeep(p.params?.schedules):void 0;r?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),y={atom:t,packageDependencies:f,red:{tab:{id:p.deploy.id||i.util.generateId(),label:`${h}/${t.id?t.id:o.hostname()}/${p.deploy.name||p.deploy.template}`},function:{id:i.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:i.util.generateId(),schedules:r},debug:{id:i.util.generateId()}}}}else{if("http"!==p.deploy.template)return;y={atom:t,packageDependencies:f,red:{tab:{id:p.deploy.id||i.util.generateId(),label:`${h}/${t.id?t.id:o.hostname()}/${p.deploy.name||p.deploy.template}`},function:{id:i.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:i.util.generateId(),method:p.params.method||"get",url:p.params.url},httpout:{id:i.util.generateId()},debug:{id:i.util.generateId()}}}}let w=r.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}},yt}(),p=function(){if(bt)return vt;bt=1;const e=r,o=n,i=t;return vt=async({atom:t,Atom:n,setProgress:r,context:a,packageDependencies:s,deploymentProject:c,deploymentProjectTarget:l})=>{await r({message:"Deploying it as workflow lib."});const p=(await i({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(kt)return xt;kt=1;const e=t,n=C,o=m,r=T;return xt=async({atom:t,target:i,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as ios-app package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=r.inc(i.version||"0.1.0","patch");i.params.version=f,i.version=f,p.set("version",f);const u=o(i.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},xt}(),h=function(){if(_t)return jt;_t=1;const e=t,n=I,o=m,r=T;return jt=async({atom:t,target:i,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as macos-app package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=r.inc(i.version||"0.1.0","patch");i.params.version=f,i.version=f,p.set("version",f);const u=o(i.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},jt}(),y=function(){if(Pt)return Dt;Pt=1;const e=t,n=N,o=m,r=T;return Dt=async({atom:t,target:i,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as electron package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=r.inc(i.version||"0.1.0","patch");i.params.version=f,i.version=f,p.set("version",f);const u=o(i.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},Dt}(),w=function(){if(At)return St;At=1;const e=t,n=M,o=m,r=T;return St=async({atom:t,target:i,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as webos package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=r.inc(i.version||"0.1.0","patch");i.params.version=f,i.version=f,p.set("version",f);const u=o(i.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},St}(),v=function(){if(Et)return Tt;Et=1;const e=t,n=F,o=m,r=T;return Tt=async({atom:t,target:i,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as nextjs package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=r.inc(i.version||"0.1.0","patch");i.params.version=f,i.version=f,p.set("version",f);const u=o(i.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},Tt}(),x=function(){if($t)return Ot;$t=1;const e=t,n=R,o=m,r=T;return Ot=async({atom:t,target:i,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as docker package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=r.inc(i.version||"0.1.0","patch");i.params.version=f,i.version=f,p.set("version",f);const u=o(i.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},Ot}(),k=function(){if(It)return Ct;It=1;const e=d,n=f,o=T,r=A,i=t,a=b.default;return Ct=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:h}=await i({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 r({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.")},Ct}(),j=function(){if(Mt)return Nt;Mt=1;const e=T,n=t,o=b.default;return Nt=async({setProgress:t,context:r,deploymentProject:i,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:r.projectDir,tags:r.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}`);i.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.")},Nt}(),_=function(){if(Rt)return Ft;Rt=1;const e=T,n=t,o=b.default,i=r,a=A,s=q;return Ft=async({setProgress:t,context:r,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:r.project.projectDir,tags:r.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='${r.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",i.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.")},Ft}(),D=function(){if(Ut)return qt;Ut=1;const e=T,n=t,o=b.default,i=r,a=A,s=q;return qt=async({setProgress:t,context:r,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:r.project.projectDir,tags:r.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='${r.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",i.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.")},qt}(),P=function(){if(Bt)return Lt;Bt=1;const e=t,n=U,o=m,r=T;return Lt=async({atom:t,target:i,onProgress:a,projectDir:s,dependencies:c,context:l,yamlTarget:p})=>{a&&await a({message:"Deploying it as Rust package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:l.tags}):void 0,f=r.inc(i.version||"0.1.0","patch");i.params.version=f,i.version=f,p.set("version",f);const u=o(i.params);u.dependencies=o(c);const m={atom:t,params:u,config:d?.config,src:s,dest:s};return{deployer:await n(m)}},Lt}();return Jt=async t=>{const{atom:n,packageDependencies:r,context:i,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=y:"docker"===a.type?e=x:"ios"===a.type?e=g:"macos"===a.type?e=h:"rust"===a.type&&(e=P),!e)return;await e({atom:n,target:a,onProgress:c,projectDir:i.projectDir,dependencies:r,context:i,yamlTarget:f}),d.isDirty=!0}},Jt}function Xn(){if(Kt)return Wt;Kt=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:r}){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 r(n.definition.condition));await n({node:t}),o({node:t})}return Wt={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],r=`${t}`;o.hasOwnProperty("default")&&(r="default",o=o.default);const i={name:o.condition||r,childs:[],parent:e,definition:o,index:e.childs.length,context:{}};e.childs.push(i),await n({node:i})}e.resolve=t},resolve:t}}function Yn(){if(ln)return cn;ln=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition);const i=t.context.transform;i.args&&(i.args=await r(i.args)),i.result&&(i.result=await r(i.result));const a=t.workflow.parent;t.context.lib=a.context.libs.find((e=>e.name===i.call)),await n({node:t}),o({node:t})}return cn={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],r=Object.keys(o)[0],i={name:r,childs:[],parent:e,definition:o[r],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(i),await n({node:i})}e.resolve=t},resolve:t}}function Zn(){if(dn)return pn;dn=1;const e=Yn();return pn={hits:async function({node:e}){return e.definition.hasOwnProperty("shell")},init:async function(t){const{node:n}=t,o="shell",r=n.definition,i=typeof r[o];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${o} usage`);r.call="npm:@fnet/shell",r.args="string"===i?{...r.args,cmd:r[o]}:r[o],delete r[o],await e.init(t)}}}function Qn(){return On?En:(On=1,En=({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 eo(){if(Cn)return $n;Cn=1;const e=d,n=f,o=i,r=a,c=u,l=m,p=g,k=function(){if(Y)return X;Y=1;const e=h,t=y;return X=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:_}=w,D=function(){if(Q)return Z;Q=1;const{Api:e}=v,t=b.default,n=x;return Z=class{init({config:o,accessToken:r}){return new Promise(((i,a)=>{if(e.set_api_url(o.data.url),r)return e.set_req_token(r),void i(r);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),i(t.data.access_token)})).catch((t=>{e.set_req_token(),a(t)}))}))}},Z}(),P=Me(),S=Fe(),A=Re(),T=Rn(),E=qn(),O=Un(),$=Ln(),C=Bn(),I=Jn(),N=zn(),M=Wn(),F=Kn(),R=Gn(),q=Hn(),U=Fn,H=Vn(),{Atom:V}=v,ee=L,te=B,ne=t,oe=j,re=J,ie=s,ae=z,se=W,ce=function(){if(Ht)return Gt;Ht=1;const e=J,t=Xn();return Gt={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,r=Object.keys(o.definition),i=await Promise.all(r.map((t=>e({expression:t})))),a=[],s=i.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=i.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)}}}(),le=function(){if(Xt)return Vt;Xt=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 Vt={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}}(),pe=function(){if(Zt)return Yt;Zt=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:r}){t.context.transform=e(t.definition);const i=t.context.transform;for(let e=0;e<i.assign?.length;e++){let t=i.assign[e],n=Object.keys(t)[0],o=t[n],a={key:await r(n),value:await r(o)};i.assign[e]=a}await n({node:t}),o({node:t})}return Yt={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}}(),de=function(){if(en)return Qt;en=1;const e=m,t=K,n=G;async function o({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition),t.context.transform.for.in=await r(t.definition.for.in),await n({node:t}),o({node:t})}return Qt={hits:async function({node:e}){return e.definition.hasOwnProperty("for")},init:async function({node:e,initNode:r}){if(e.type="for",e.blockAutoJumpToParent=!0,e.blockAutoJumpToSibling=!1,!e.definition.for.hasOwnProperty("steps")){const o=["value","in"],[r,i]=[t(e.definition.for,o),n(e.definition.for,o)];e.definition.for=r,e.definition.for.steps=[{[`${e.name}_step`]:i}]}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],i={name:o,childs:[],parent:e,definition:n[o],index:e.childs.length,context:{}};e.childs.push(i),await r({node:i})}e.resolve=o},resolve:o}}(),fe=Xn(),ue=nn?tn:(nn=1,tn={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:r}){}}),me=function(){if(rn)return on;rn=1;const e=m;async function t({node:t,resolveTypeCommon:n,transformExpression:o}){t.context.transform=t.context.transform||e(t.definition);const r=t.context.transform;r.raise=await o(r.raise),await n({node:t})}return on={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}}(),ge=function(){if(sn)return an;sn=1;const e=m;async function t({node:t,resolveTypeCommon:n,transformExpression:o}){t.context.transform=t.context.transform||e(t.definition);const r=t.context.transform;r.return=await o(r.return),await n({node:t})}return an={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}}(),he=Yn(),ye=Zn(),we=function(){if(un)return fn;un=1;const e=Yn();return fn={hits:async function({node:e}){return e.definition.hasOwnProperty("config")},init:async function(t){const{node:n}=t,o="config",r=n.definition,i=typeof r[o];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${o} usage`);r.call="npm:@fnet/config",r.args="string"===i?{...r.args,name:r[o]}:r[o],delete r[o],await e.init(t)}}}(),ve=function(){if(gn)return mn;gn=1;const e=Yn();return mn={hits:async function({node:e}){return e.definition.hasOwnProperty("yaml")},init:async function(t){const{node:n}=t,o="yaml",r=n.definition,i=typeof r[o];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${o} usage`);r.call="npm:@fnet/yaml",r.args="string"===i?{...r.args,file:r[o]}:r[o],delete r[o],await e.init(t)}}}(),be=function(){if(yn)return hn;async function e({node:e}){e.context.next=e.childs[0]}return yn=1,hn={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],r={name:o,childs:[],parent:t,definition:e[o],index:t.childs.length,context:{}};t.childs.push(r),await n({node:r})}t.resolve=e},resolve:e}}(),xe=function(){if(vn)return wn;vn=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition);const i=t.context.transform;i.props&&(i.props=await r(i.props));const a=t.workflow.parent;t.context.lib=a.context.libs.find((e=>e.name===i.form)),await n({node:t}),o({node:t})}return wn={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],r=Object.keys(o)[0],i={name:r,childs:[],parent:e,definition:o[r],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(i),await n({node:i})}e.resolve=t},resolve:t}}(),ke=function(){if(xn)return bn;xn=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:r,transformValue:i}){t.context.transform=t.context.transform||e(t.definition),await n({node:t})}return bn={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}}(),je=function(){if(jn)return kn;jn=1;const e=m;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition);const i=t.context.transform;i.next=await r(i.next),await n({node:t}),o({node:t})}return kn={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}}(),_e=function(){if(Dn)return _n;Dn=1;const e=Yn();return _n={hits:async function({node:e}){return e.definition.hasOwnProperty("prompt")},init:async function(t){const{node:n}=t,o="prompt",r=n.definition,i=typeof r[o];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${o} usage`);r.call="npm:@fnet/prompt",r.args="string"===i?{...r.args,message:r[o]}:r[o],delete r[o],await e.init(t)}}}(),De=function(){if(Sn)return Pn;Sn=1;const e=Yn();return Pn={hits:async function({node:e}){return e.definition.hasOwnProperty("html-script")},init:async function(t){const{node:n}=t,o="html-script",r=n.definition,i=typeof r[o];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${o} usage`);r.call="npm:@flownet/lib-load-browser-script-url",r.args="string"===i?{...r.args,src:r[o]}:r[o],delete r[o],await e.init(t)}}}(),Pe=function(){if(Tn)return An;Tn=1;const e=Yn();return An={hits:async function({node:e}){return e.definition.hasOwnProperty("html-link")},init:async function(t){const{node:n}=t,o="html-link",r=n.definition,i=typeof r[o];if("string"!==i&&"object"!==i)throw new Error(`Unsupported ${o} usage`);r.call="npm:@flownet/lib-load-browser-link-url",r.args="string"===i?{...r.args,src:r[o]}:r[o],delete r[o],await e.init(t)}}}(),Se=Qn();return $n=class{#e;#t;#n;#o;#r;#i;#a;#s;#c;#l;#p;#d;#f;#u;#m;#g;#h;#y;#w;#v;#b;constructor(e){this.#e=new D,this.#t=e,this.#i=[],this.#a=[],this.#s={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#v={packageDependencies:this.#i,packageDevDependencies:this.#a,setProgress:this.setProgress.bind(this),context:this.#t,Atom:V,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||_(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.setProgress({message:"Initialization started."}),await this.initAuth(),await this.initWorkflow(),await P(this.#v),await S(this.#v),await this.transformWorkflow({workflow:this.#o});const e=await this.initNodeTree({workflow:this.#o});await this.initNodeTreeIndex({root:e}),await this.initNodeCalls({root:e}),await this.initNodeCallLibs({root:e}),await this.initNodeForms({root:e}),await this.initNodeFormLibs({root:e}),await this.initAtomLibsAndDeps({libs:e.context.libs,packageDependencies:this.#i}),await this.resolveNodeTree({root:e}),this.#l=e}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e?.message||e}),e}}async initAuth(){this.#t.id&&(this.#c=await this.#e.init({config:this.#u}),this.#v.atomAccessToken=this.#c)}async initWorkflow(){const e=this.#t.id;this.#n=this.#t.project?.workflowAtom||await V.get({id:e}),this.#o="string"==typeof this.#n.doc.content?(await ie({content:this.#n.doc.content})).parsed:this.#n.doc.content;let t=this.#n.doc.bundleName;t=t||(this.#n.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#n.doc.bundleName=t,this.#n.type=this.#n.type||"workflow",this.#v.atom=this.#n}async initDependencies(){this.#i.push({package:"get-value",version:"^3.0"}),this.#i.push({package:"set-value",version:"^4.1"}),this.#n.doc.features.form_enabled?(this.#i.push({package:"react",version:"^18.2"}),this.#i.push({package:"react-dom",version:"^18.2"}),this.#i.push({package:"@flownet/react-app",version:"^0.1"}),this.#i.push({package:"@flownet/react-app-state",version:"^0.1"})):this.#i.push({package:"@fnet/args",version:"^0.1"}),this.#i.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 r=e.existsSync(t),i=r&&e.statSync(t);r&&i.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(){this.setProgress({message:"Initializing library directory."});const t=this.#t.projectDir,o=this.#t.coreDir;this.setProgress({message:"Cleaning project directory."});const r=se({dir:t,ignore:["node_modules",".cache"],absolute:!0});for(const t of r)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."}),e.existsSync(t)||e.mkdirSync(t,{recursive:!0});const i=n.join(t,"src");e.existsSync(i)||e.mkdirSync(i,{recursive:!0});const a=n.join(i,"core");this.#k(o,a);const s=n.join(i,"default","blocks");e.existsSync(s)||e.mkdirSync(s,{recursive:!0})}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#t.templateDir;this.#r=c.configure(e,{watch:!1,dev:!0}),this.#v.njEnv=this.#r}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,...r}=n;e[t]={try:r,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 le.hits(t))await le.init(t);else if(await de.hits(t))await de.init(t);else if(await fe.hits(t))await fe.init(t);else if(await ce.hits(t))await ce.init(t);else if(await ue.hits(t))await ue.init(t);else if(await pe.hits(t))await pe.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 ve.hits(t))await ve.init(t);else if(await De.hits(t))await De.init(t);else if(await Pe.hits(t))await Pe.init(t);else if(await xe.hits(t))await xe.init(t);else if(await ke.hits(t))await ke.init(t);else if(await _e.hits(t))await _e.init(t);else if(await be.hits(t))await be.init(t);else{if(!await je.hits(t))throw new Error("Undefined step type.");await je.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 r=[];let i=e;for(;i?.parent;)r.push(i.index),i=i.parent;r.reverse(),e.codeKey=`B_${r.join("_")}_${e.type}`,e.pathKey=`${r.join(".")}`,e.typeId=_(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},r=t.find((e=>e.name===o.name&&e.type===o.type));r||t.push(o),e.target=r||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"},r=t.find((e=>e.name===o.name&&e.type===o.type));r||t.push(o),e.target=r||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],r=await this.findAtomLibrary({url:o.name,libRef:o});o.atom=r;const i=r.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));i?.forEach((e=>{const n=t.find((t=>t.package===e.package));n?"string"==typeof e.path?(n.path||[]).some((t=>t===e.path))||(n.path=n.path||[],n.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(n.path||[]).some((t=>t===e))||(n.path=n.path||[],n.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e,libRef:t}){const o=ee({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 V.first({where:{name:e,parent_id:this.#u.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await V.first({where:{name:t[0],parent_id:this.#u.env.ATOM_LIBRARIES_ID,type:"folder"}});return await V.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=[],r=await oe({file:e,recursive:!0}),i=!0===this.#n.doc.features.all_parsed_imports?r.all:r.required;for await(const e of i){if("npm"!==e.type)continue;if(t.find((t=>t.package===e.package)))continue;const n=await U({name:e.package,projectDir:this.#t.projectDir,setProgress:this.#v.setProgress});t.push({package:e.package,subpath:e.subpath,version:n.minorRange,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 U({name:o.pathname,projectDir:this.#t.projectDir,setProgress:this.#v.setProgress});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.minorRange,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 r=o[t].atom,i=this.#t.projectDir;if("local:"===r.protocol){const t=n.resolve(this.#t.projectSrcDir,`${r.fileName||r.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")}r.relativePath=o.split(n.sep).join("/"),this.#n.typesDir=`./types/${n.basename(i)}/src`}else if("npm:"===r.protocol)r.relativePath=r.name;else{const t=`${i}/src/libs/${r.id}.js`,o=r.doc.contents?.find((e=>"esm"===e.format))||r.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,r=c.compile(e.readFileSync(n.resolve(o,"src/default/engine.js.njk"),"utf8"),this.#r).render({...t,ui:{package:"@flownet/react-app"}}),i=this.#t.projectDir,a=n.resolve(i,"src/default/index.js");e.writeFileSync(a,r,"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,r=c.compile(e.readFileSync(n.resolve(o,"src/default/workflow.js.njk"),"utf8"),this.#r).render(t),i=this.#t.projectDir,a=n.resolve(i,`src/default/${t.codeKey}.js`);e.writeFileSync(a,r,"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 r=this.#t.templateDir;return o=c.compile(e.readFileSync(n.resolve(r,`src/default/blocks/${t.type}.js.njk`),"utf8"),this.#r),this.#s[t.type]=o,o}createStepFile({node:t}){const o=this.#t.projectDir,r=`${t.codeKey}.js`,i=n.resolve(o,`src/default/blocks/${r}`);e.writeFileSync(i,t.context.render,"utf8"),t.context.fileName=r,t.context.filePath=i}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 re({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",r=`Creating ${t}`;await this.setProgress({message:r});const{content:i,...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.#r).render(s),d=this.#t.projectDir,f=n.resolve(d,`${t}`);e.writeFileSync(f,p,"utf8")}async createProjectMainYaml(){const t="flow.main.yaml",r=`Creating ${t}`;await this.setProgress({message:r});const i={content:o.stringify(this.#o)},a=this.#t.templateDir,s=c.compile(e.readFileSync(n.resolve(a,`${t}.njk`),"utf8"),this.#r).render(i),l=this.#t.projectDir,p=n.resolve(l,`${t}`);e.writeFileSync(p,s,"utf8")}async runPrettifier(){const e=this.#t.projectDir,t=r.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 V.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 V.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||{}),r=n||{};for(let e=0;e<o.length;e++){const n=t.doc[o[e]];n.name=o[e];const i=r.get(o[e]);await H({...this.#v,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:i})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#t.id)return;let o=await V.first({name:t.params.name,parent_id:this.#u.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:n.version}),await V.update(o,{id:o.id})):o=await V.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 N(this.#v),await I(this.#v),await C(this.#v),await $(this.#v),await E(this.#v),await A(this.#v),await O(this.#v),await T(this.#v),await M(this.#v),await F(this.#v),this.#h&&(await R(this.#v),await q(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 to=function(){if(Mn)return Ie;Mn=1;const u=process.cwd(),{spawn:m}=e;t({name:["redis"],dir:u,optional:!0});const g=n,h=o,y=r,w=i,v=a,b=s,x=t,k=c,j=l,_=p,D=eo(),P=function(){if(Nn)return In;Nn=1;const e=d,t=f;return In=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=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(P,"./@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(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:r}=t,i=process.argv.slice(3);m(n,[...o,...i],{cwd:r,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(!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}),r=g.dirname(t),i=o.main||"flow.main.yaml";let a=g.resolve(r,i);if(!y.existsSync(a)&&(a=g.resolve(r,i+".yaml"),!y.existsSync(a)))throw new Error(`${i} 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:r,projectFilePath:t,projectFileContent:n,projectFileParsed:o,projectMainFilePath:a,projectMainFileContent:s,projectMainFileParsed:c};let p=g.resolve(r,"fnet/targets.yaml");if(!y.existsSync(p)&&(p=g.resolve(r,"flow.devops.yaml"),y.existsSync(p))){const e=g.resolve(r,"fnet");y.existsSync(e)||y.mkdirSync(e),y.copyFileSync(p,g.resolve(r,"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(r,"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(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:r}=n,i=r.input;if(!i)throw new Error("Config schema not found in project file.");const a=await k({schema:i,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:r}=n,i=r.input;if(!i)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:i,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,r=e.config,i=await x({name:r,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),a=i?.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,r=o.commands;if(!r)throw new Error("Commands not found in project file.");const i=r[e.group];if(!i)throw new Error(`Command group '${e.group}' not found in project file.`);await j({commands:i})}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,Ie}(),no=H(to);module.exports=no;
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("@fnet/npm-list-versions"),D=require("@fnet/npm-pick-versions"),P=require("object-hash"),S=require("ajv/dist/2020"),A=require("ajv/dist/standalone"),T=require("ajv-formats"),E=require("@fnet/shell"),$=require("semver"),O=require("@fnet/up-list-files"),C=require("node:os"),I=require("@node-red/util"),N=require("@flownet/lib-to-ios-app"),M=require("@flownet/lib-to-macos-app"),F=require("@flownet/lib-to-electron"),R=require("@flownet/lib-to-webos"),q=require("@flownet/lib-to-nextjs"),U=require("@flownet/lib-to-docker"),L=require("form-data"),B=require("@fnet/to-rust"),J=require("@flownet/lib-parse-node-url"),z=require("@flownet/lib-bpmn-from-flow"),W=require("@fnet/expression"),K=require("chalk"),G=require("@fnet/list-files"),H=require("lodash.pick"),V=require("lodash.omit");function X(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var 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,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,ht,yt,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,hn,yn,wn,vn,bn,xn,kn,jn,_n,Dn,Pn,Sn,An,Tn,En,$n={};function On(){if(ne)return te;ne=1;const e=k;return te=({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 Cn(){if(Ee)return Te;Ee=1;const e=k,t=d,n=f,o=j,i=function(){if(ie)return oe;ie=1;const e=On();return oe=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})},oe}(),r=function(){if(ae)return re;ae=1;const e=On();return re=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})},re}(),a=function(){if(ce)return se;ce=1;const e=On();return se=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})},se}(),s=function(){if(pe)return le;pe=1;const e=On();return le=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})},le}(),c=function(){if(fe)return de;fe=1;const e=On();return de=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})},de}(),l=function(){if(me)return ue;me=1;const e=On();return ue=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})},ue}(),p=function(){if(he)return ge;he=1;const e=On();return ge=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:i,packageDevDependencies:o})},ge}(),u=function(){if(we)return ye;we=1;const e=On();return ye=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:i,packageDevDependencies:o})},ye}(),m=function(){if(be)return ve;be=1;const e=On();return ve=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:i,packageDevDependencies:o})},ve}(),g=function(){if(ke)return xe;ke=1;const e=On();return xe=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})},xe}(),h=function(){if(_e)return je;_e=1;const e=On();return je=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:i,packageDevDependencies:o})},je}(),y=function(){if(Pe)return De;Pe=1;const e=On();return De=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})},De}(),w=function(){if(Ae)return Se;Ae=1;const e=On();return Se=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})},Se}();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 Te=async t=>{const{atom:d,context:f,setProgress:b}=t;b("Initializing features..."),d.doc.features=d.doc.features||{};const x=d.doc.features;if(x.runtime=x.runtime||{},x.runtime.type=x.runtime.type||"node","node"!==x.runtime.type)return;x.runtime.version=x.runtime.version||"22",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),y(t),h(t),g(t),m(t),p(t),u(t),l(t),c(t),s(t),a(t),i(t),r(t)},Te}function In(){if(Oe)return $e;Oe=1;const e=_;return $e=async({atom:t,packageDependencies:n,packageDevDependencies:o,setProgress:i})=>{if("node"===t.doc.features.runtime.type){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"})}},$e}function Nn(){if(Ie)return Ce;Ie=1;const e=d,t=f,n=p;return Ce=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})},Ce}function Mn(){if(Me)return Ne;Me=1;const e=D,t=P,n=d,o=f;return Ne=async({projectDir:i,name:r,setProgress:a,count:s=1})=>{let c;const l=t(["npm-pick-versions",r,s]),p=o.join(i,".cache"),d=o.join(p,l+".json");return n.existsSync(d)?(a&&a(`Picking npm version of ${r} from cache ...`),c=JSON.parse(n.readFileSync(d,"utf8"))):(a&&a(`Picking npm version of ${r} ...`),c=await e({name:r,count:s}),n.mkdirSync(p,{recursive:!0}),n.writeFileSync(d,JSON.stringify(c),"utf8")),c}}function Fn(){if(Re)return Fe;Re=1;const e=u,t=d,n=f,o=j,i=Mn();return Fe=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 p=await o({file:n,recursive:!0}),d=!0===r.doc.features.all_parsed_imports?p.all:p.required;for await(const t of d){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,projectDir:a.projectDir,setProgress:l});(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:n.minorRange,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)}}},Fe}function Rn(){if(Ue)return qe;Ue=1;const e=d,t=f,n=p;return qe=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})},qe}function qn(){if(Be)return Le;Be=1;const e=d,t=f,n=u,o=j;return Le=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 h=t.resolve(g,"rollup.config.mjs");e.writeFileSync(h,m,"utf8")},Le}function Un(){if(ze)return Je;ze=1;const e=d,t=f,n=u,o=S,i=A,r=T;return Je=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 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")},Je}function Ln(){if(Ke)return We;Ke=1;const e=d,t=f,n=u;return We=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")},We}function Bn(){if(He)return Ge;He=1;const e=d,t=f,n=u;return Ge=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")},Ge}function Jn(){if(Xe)return Ve;Xe=1;const e=u,t=d,n=f,o=s;return Ve=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")}},Ve}function zn(){if(Ze)return Ye;Ze=1;const e=n,t=l;return Ye=async({setProgress:n,context:o})=>{const i=o.projectDir;await n({message:"Prettifiying source files."});let r=e.join("src","**","*");await t({commands:{steps:[`prettier --write ${r} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:i}})}}function Wn(){if(et)return Qe;et=1;const e=a;return Qe=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.")},Qe}function Kn(){if(nt)return tt;nt=1;const e=a;return tt=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.")},tt}function Gn(){if(it)return ot;it=1;const e=a;return ot=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 Hn(){if(Rt)return Ft;Rt=1;const e=function(){if(at)return rt;at=1;const e=E,n=t;return rt=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)},rt}(),o=function(){if(ct)return st;ct=1;const e=d,n=f,o=$,i=E,r=t;return st=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: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(pt)return lt;pt=1;const e=d,n=f,o=$,i=a,s=t,l=O,p=c,u=r;return lt=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"),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)}},lt}(),l=function(){if(ft)return dt;ft=1;const e=d,n=f,o=C,i=u,r=I,a=t;return dt=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,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}},dt}(),p=function(){if(mt)return ut;mt=1;const e=i,o=n,r=t;return ut=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(ht)return gt;ht=1;const e=t,n=N,o=m,i=$;return gt=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)}},gt}(),h=function(){if(wt)return yt;wt=1;const e=t,n=M,o=m,i=$;return yt=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)}},yt}(),y=function(){if(bt)return vt;bt=1;const e=t,n=F,o=m,i=$;return vt=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)}},vt}(),w=function(){if(kt)return xt;kt=1;const e=t,n=R,o=m,i=$;return xt=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)}},xt}(),v=function(){if(_t)return jt;_t=1;const e=t,n=q,o=m,i=$;return jt=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)}},jt}(),x=function(){if(Pt)return Dt;Pt=1;const e=t,n=U,o=m,i=$;return Dt=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)}},Dt}(),k=function(){if(At)return St;At=1;const e=d,n=f,o=$,i=E,r=t,a=b.default;return St=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: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.")},St}(),j=function(){if(Et)return Tt;Et=1;const e=$,n=t,o=b.default;return Tt=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 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.")},Tt}(),_=function(){if(Ot)return $t;Ot=1;const e=$,n=t,o=b.default,r=i,a=E,s=L;return $t=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 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.")},$t}(),D=function(){if(It)return Ct;It=1;const e=$,n=t,o=b.default,r=i,a=E,s=L;return Ct=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 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.")},Ct}(),P=function(){if(Mt)return Nt;Mt=1;const e=t,n=B,o=m,i=$;return Nt=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)}},Nt}();return Ft=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=y:"docker"===a.type?e=x:"ios"===a.type?e=g:"macos"===a.type?e=h:"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}},Ft}function Vn(){if(Ut)return qt;Ut=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 qt={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 Xn(){if(nn)return tn;nn=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 tn={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 Yn(){if(rn)return on;rn=1;const e=Xn();return on={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 Zn(){return Dn?_n:(Dn=1,_n=({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 Qn(){if(Sn)return Pn;Sn=1;const e=d,n=f,o=r,i=a,c=u,l=m,p=g,k=function(){if(Z)return Y;Z=1;const e=h,t=y;return Y=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:_}=w,D=function(){if(ee)return Q;ee=1;const{Api:e}=v,t=b.default,n=x;return Q=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)}))}))}},Q}(),P=Cn(),S=In(),A=Nn(),T=Fn(),E=Rn(),$=qn(),O=Un(),C=Ln(),I=Bn(),N=Jn(),M=zn(),F=Wn(),R=Kn(),q=Gn(),U=Mn(),L=Hn(),{Atom:B}=v,X=J,te=z,ne=t,oe=j,ie=W,re=s,ae=K,se=G,ce=function(){if(Bt)return Lt;Bt=1;const e=W,t=Vn();return Lt={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)}}}(),le=function(){if(zt)return Jt;zt=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 Jt={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}}(),pe=function(){if(Kt)return Wt;Kt=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 Wt={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}}(),de=function(){if(Ht)return Gt;Ht=1;const e=m,t=H,n=V;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 Gt={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}}(),fe=Vn(),ue=Xt?Vt:(Xt=1,Vt={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}){}}),me=function(){if(Zt)return Yt;Zt=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 Yt={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}}(),ge=function(){if(en)return Qt;en=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 Qt={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}}(),he=Xn(),ye=Yn(),we=function(){if(sn)return an;sn=1;const e=Xn();return an={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)}}}(),ve=function(){if(ln)return cn;ln=1;const e=Xn();return cn={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)}}}(),be=function(){if(dn)return pn;async function e({node:e}){e.context.next=e.childs[0]}return dn=1,pn={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}}(),xe=function(){if(un)return fn;un=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 fn={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}}(),ke=function(){if(gn)return mn;gn=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 mn={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}}(),je=function(){if(yn)return hn;yn=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 hn={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}}(),_e=function(){if(vn)return wn;vn=1;const e=Xn();return wn={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)}}}(),De=function(){if(xn)return bn;xn=1;const e=Xn();return bn={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)}}}(),Pe=function(){if(jn)return kn;jn=1;const e=Xn();return kn={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=Zn();return Pn=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 D,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:B,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||_(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.setProgress({message:"Initialization started."}),await this.initAuth(),await this.initWorkflow(),await P(this.#v),await S(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 B.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(){this.setProgress({message:"Initializing library directory."});const t=this.#t.projectDir,o=this.#t.coreDir;this.setProgress({message:"Cleaning project directory."});const i=se({dir:t,ignore:["node_modules",".cache"],absolute:!0});for(const t of i)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."}),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(){this.setProgress({message:"Initializing nunjucks."});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 le.hits(t))await le.init(t);else if(await de.hits(t))await de.init(t);else if(await fe.hits(t))await fe.init(t);else if(await ce.hits(t))await ce.init(t);else if(await ue.hits(t))await ue.init(t);else if(await pe.hits(t))await pe.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 ve.hits(t))await ve.init(t);else if(await De.hits(t))await De.init(t);else if(await Pe.hits(t))await Pe.init(t);else if(await xe.hits(t))await xe.init(t);else if(await ke.hits(t))await ke.init(t);else if(await _e.hits(t))await _e.init(t);else if(await be.hits(t))await be.init(t);else{if(!await je.hits(t))throw new Error("Undefined step type.");await je.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=_(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=X({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 B.first({where:{name:e,parent_id:this.#u.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await B.first({where:{name:t[0],parent_id:this.#u.env.ATOM_LIBRARIES_ID,type:"folder"}});return await B.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 U({name:e.package,projectDir:this.#t.projectDir,setProgress:this.#v.setProgress});t.push({package:e.package,subpath:e.subpath,version:n.minorRange,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 U({name:o.pathname,projectDir:this.#t.projectDir,setProgress:this.#v.setProgress});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.minorRange,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 B.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 B.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 L({...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 B.first({name:t.params.name,parent_id:this.#u.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:n.version}),await B.update(o,{id:o.id})):o=await B.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 N(this.#v),await I(this.#v),await C(this.#v),await O(this.#v),await E(this.#v),await A(this.#v),await $(this.#v),await T(this.#v),await M(this.#v),await F(this.#v),this.#h&&(await R(this.#v),await q(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 eo=function(){if(En)return $n;En=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=Qn(),P=function(){if(Tn)return An;Tn=1;const e=d,t=f;return An=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=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(P,"./@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(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(!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(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");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"}).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,$n}(),to=X(eo);module.exports=to;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fnet/cli",
3
- "version": "0.69.0",
3
+ "version": "0.70.0",
4
4
  "files": [
5
5
  "dist"
6
6
  ],