@fnet/cli 0.79.4 → 0.80.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.
- package/dist/builder/wf-cli.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
- package/dist/builder/schemas/to-npm.yaml +0 -14
- package/dist/schemas/to-npm.yaml +0 -14
package/dist/builder/wf-cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var e=require("child_process"),t=require("@fnet/prompt"),n=require("@fnet/config"),o=require("path"),r=require("yargs/yargs"),i=require("fs"),s=require("yaml"),a=require("shelljs"),c=require("@fnet/yaml"),l=require("@fnet/object-from-schema"),p=require("@fnet/shell-flow"),d=require("@flownet/lib-render-templates-dir"),f=require("node:fs"),u=require("node:path"),m=require("nunjucks"),g=require("lodash.clonedeep"),h=require("isobject"),y=require("redis"),w=require("@flownet/lib-is-redis-online"),v=require("nanoid"),b=require("@flownet/lib-atom-api-js"),x=require("axios"),k=require("qs"),j=require("lodash.merge"),_=require("@flownet/lib-parse-imports-js"),D=require("@fnet/npm-list-versions"),P=require("@fnet/npm-pick-versions"),S=require("object-hash"),A=require("ajv/dist/2020"),T=require("ajv/dist/standalone"),E=require("ajv-formats"),$=require("@fnet/shell"),O=require("semver"),C=require("@fnet/up-list-files"),I=require("node:os"),N=require("@node-red/util"),M=require("@flownet/lib-to-ios-app"),R=require("@flownet/lib-to-macos-app"),F=require("@flownet/lib-to-electron"),q=require("@flownet/lib-to-webos"),B=require("@flownet/lib-to-nextjs"),L=require("@flownet/lib-to-docker"),U=require("form-data"),J=require("@fnet/to-rust"),z=require("@fnet/to-pyip"),W=require("@flownet/lib-parse-node-url"),K=require("@flownet/lib-bpmn-from-flow"),G=require("@fnet/expression"),V=require("chalk"),H=require("@fnet/list-files"),X=require("lodash.pick"),Y=require("lodash.omit");function Z(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Q,ee,te,ne,oe,re,ie,se,ae,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,Re,Fe,qe,Be,Le,Ue,Je,ze,We,Ke,Ge,Ve,He,Xe,Ye,Ze,Qe,et,tt,nt,ot,rt,it,st,at,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,Rt,Ft,qt,Bt,Lt,Ut,Jt,zt,Wt,Kt,Gt,Vt,Ht,Xt,Yt,Zt,Qt,en,tn,nn,on,rn,sn,an,cn,ln,pn,dn,fn,un,mn,gn,hn,yn,wn,vn,bn,xn,kn,jn,_n,Dn={};function Pn(){if(re)return oe;re=1;const e=j;return oe=({feature:t,features:n,packageDevDependencies:o})=>{const{name:r,packages:i,options:s,extraCheck:a,explicit:c}=t,l=`${r}_enabled`,p=n.rollup_output||{},d=Object.keys(p);let f=s||{};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));a&&(g=a()&&g),n[l]=g,g&&i.forEach((e=>o.push({package:e[0],version:e[1]})))}}function Sn(){if(Oe)return $e;Oe=1;const e=j,t=f,n=u,o=_,r=function(){if(se)return ie;se=1;const e=Pn();return ie=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})},ie}(),i=function(){if(ce)return ae;ce=1;const e=Pn();return ae=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})},ae}(),s=function(){if(pe)return le;pe=1;const e=Pn();return le=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})},le}(),a=function(){if(fe)return de;fe=1;const e=Pn();return de=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})},de}(),c=function(){if(me)return ue;me=1;const e=Pn();return ue=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})},ue}(),l=function(){if(he)return ge;he=1;const e=Pn();return ge=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})},ge}(),p=function(){if(we)return ye;we=1;const e=Pn();return ye=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:r,packageDevDependencies:o})},ye}(),d=function(){if(be)return ve;be=1;const e=Pn();return ve=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:r,packageDevDependencies:o})},ve}(),m=function(){if(ke)return xe;ke=1;const e=Pn();return xe=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:r,packageDevDependencies:o})},xe}(),g=function(){if(_e)return je;_e=1;const e=Pn();return je=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})},je}(),h=function(){if(Pe)return De;Pe=1;const e=Pn();return De=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:r,packageDevDependencies:o})},De}(),y=function(){if(Ae)return Se;Ae=1;const e=Pn();return Se=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})},Se}(),w=function(){if(Ee)return Te;Ee=1;const e=Pn();return Te=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features,i=r.css&&!1!==r.css.enabled;let s=[];i&&(s.push(["rollup-plugin-postcss","^4"]),s.push(["sass","^1.66"]),(r.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":s.push(["postcss-import","^15"]);break;case"postcss-url":s.push(["postcss-url","^10"]);break;case"postcss-preset-env":s.push(["postcss-preset-env","^9"]);break;case"autoprefixer":s.push(["autoprefixer","^10"]);break;case"cssnano":s.push(["cssnano","^6"])}}))),e({feature:{name:"css",packages:s},features:r,packageDevDependencies:o})},Te}();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,s=n.extname(r);return{file:i,ext:s,ts:".ts"===s||".tsx"===s,name:o}}return $e=async t=>{const{atom:f,context:u,setProgress:b}=t;b("Initializing features..."),f.doc.features=f.doc.features||{};const x=f.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(u.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"===f.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===f.doc.form||!0===f.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===f.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===f.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),d(t),l(t),c(t),a(t),s(t),r(t),i(t)},$e}function An(){if(Ie)return Ce;Ie=1;const e=D;return Ce=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.19"}),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"})},Ce}function Tn(){if(Me)return Ne;Me=1;const e=f,t=u,n=d;return Ne=async({atom:o,setProgress:r,context:i,packageDependencies:s})=>{if(!0!==o.doc.features.app.enabled)return;await r({message:"Creating app folder"});const a={atom:o,packageDependencies:s,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:a})},Ne}function En(){if(Fe)return Re;Fe=1;const e=P,t=S,n=f,o=u;return Re=async({projectDir:r,name:i,setProgress:s,count:a=1})=>{let c;const l=t(["npm-pick-versions",i,a]),p=o.join(r,".cache"),d=o.join(p,l+".json");return n.existsSync(d)?(s&&s(`Picking npm version of ${i} from cache ...`),c=JSON.parse(n.readFileSync(d,"utf8"))):(s&&s(`Picking npm version of ${i} ...`),c=await e({name:i,count:a}),n.mkdirSync(p,{recursive:!0}),n.writeFileSync(d,JSON.stringify(c),"utf8")),c}}function $n(){if(Be)return qe;Be=1;const e=m,t=f,n=u,o=_,r=En();return qe=async({atom:i,context:s,packageDependencies:a,packageDevDependencies:c,setProgress:l})=>{await l({message:"Creating package.json."});a.filter((e=>!0===e.dev)).forEach((e=>{c.find((t=>t.package===e.package))||c.push(e);const t=a.findIndex((t=>t.package===e.package));a.splice(t,1)}));const p=a.find((e=>"react"===e.package)),d=a.find((e=>"react-dom"===e.package));p&&!d?a.push({package:"react-dom",version:p.version}):p&&d&&(d.version=p.version),p&&i.doc.features.react_version>=17&&(a.find((e=>"@emotion/react"===e.package))||a.push({package:"@emotion/react",version:"^11"}),a.find((e=>"@emotion/styled"===e.package))||a.push({package:"@emotion/styled",version:"^11"}));const f=[];!0===i.doc.features.app.enabled&&f.push({file:n.resolve(s.projectDir,"src/app/index.js"),dev:!1!==i.doc.features.app.dev}),!0===i.doc.features.cli.enabled&&f.push({file:n.resolve(s.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(a.find((e=>e.package===t.package)))continue;if(c.find((e=>e.package===t.package)))continue;const n=await r({name:t.package,projectDir:s.projectDir,setProgress:l});(!0===e.dev?c:a).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const u={atom:i,packageDependencies:a,packageDevDependencies:c},m=s.templateCommonDir,g=e.compile(t.readFileSync(n.resolve(m,"package.json.njk"),"utf8"),e.configure(m)).render(u),h=s.projectDir,y=n.resolve(h,"package.json");t.writeFileSync(y,g,"utf8");const w=n.resolve(s.project.projectDir,"fnet");if(t.existsSync(w)){const e=n.resolve(s.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)}}},qe}function On(){if(Ue)return Le;Ue=1;const e=f,t=u,n=d;return Le=async({atom:o,setProgress:r,context:i,packageDependencies:s})=>{if(!0!==o.doc.features.cli.enabled)return;await r({message:"Creating cli."});const a={atom:o,packageDependencies:s},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:a})},Le}function Cn(){if(ze)return Je;ze=1;const e=f,t=u,n=m,o=_;return Je=async({atom:r,setProgress:i,context:s,packageDependencies:a})=>{await i({message:"Creating rollup file."});const c={atom:r,packageDependencies:a},l=t.resolve(s.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=s.templateCommonDir;let m=n.compile(e.readFileSync(t.resolve(u,"rollup.config.mjs.njk"),"utf8"),n.configure(u)).render(c);const g=s.projectDir;let h=t.resolve(g,"rollup.config.mjs");e.writeFileSync(h,m,"utf8")},Je}function In(){if(Ke)return We;Ke=1;const e=f,t=u,n=m,o=A,r=T,i=E;return We=async({atom:s,setProgress:a,context:c,njEnv:l})=>{if(!0!==s.doc.features.cli.enabled)return;await a({message:"Creating yargs."});let p={};if(p=s.doc.input?s.doc.input:{type:"object",properties:{},required:[]},s.doc.features.cli.fargs&&!1!==s.doc.features.cli.fargs?.enabled){const e=s.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:s},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")},We}function Nn(){if(Ve)return Ge;Ve=1;const e=f,t=u,n=m;return Ge=async({atom:o,setProgress:r,context:i,packageDependencies:s})=>{await r({message:"Creating .gitignore"});const a={atom:o,packageDependencies:s},c=i.templateCommonDir,l=n.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),n.configure(c)).render(a),p=i.projectDir,d=t.resolve(p,".gitignore");e.writeFileSync(d,l,"utf8")},Ge}function Mn(){if(Xe)return He;Xe=1;const e=f,t=u,n=m;return He=async({atom:o,setProgress:r,context:i,packageDependencies:s})=>{await r({message:"Creating tsconfig.json."});const a={atom:o,packageDependencies:s},c=i.templateCommonDir,l=n.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),n.configure(c)).render(a),p=i.projectDir,d=t.resolve(p,"tsconfig.json");e.writeFileSync(d,l,"utf8")},He}function Rn(){if(Ze)return Ye;Ze=1;const e=m,t=f,n=u,o=c;return Ye=async({atom:r,context:i,setProgress:s,Atom:a})=>{const c="readme.md",l=`Creating ${c}`;if(await s({message:l}),i.project?.readme){const r=i.projectDir,s={content:i.project.readme.doc.content},a=n.resolve(i.project.projectDir,"fnet/how-to.md");if(t.existsSync(a)){const e=t.readFileSync(a,"utf8");s.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});s.input=e.content}const p=i.templateCommonDir,d=e.compile(t.readFileSync(n.resolve(p,`${c}.njk`),"utf8"),e.configure(p)).render(s),f=n.resolve(r,`${c}`);t.writeFileSync(f,d,"utf8")}else if(r.id){const o=await a.first({type:"wiki",parent_id:r.id});if(!o||"markdown"!==o.doc?.["content-type"])return;const{content:s,...l}=o.doc,p={content:s},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")}},Ye}function Fn(){if(et)return Qe;et=1;const e=o,t=p;return Qe=async({setProgress:n,context:o})=>{const r=o.projectDir;await n({message:"Prettifiying source files."});let i=e.join("src","**","*");await t({commands:{steps:[`prettier --write ${i} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:r}})}}function qn(){if(nt)return tt;nt=1;const e=a;return tt=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.")},tt}function Bn(){if(rt)return ot;rt=1;const e=a;return ot=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.")},ot}function Ln(){if(st)return it;st=1;const e=a;return it=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 Un(){if(Ut)return Lt;Ut=1;const e=function(){if(ct)return at;ct=1;const e=$,t=n;return at=async({setProgress:n,context:o,deploymentProject:r,deploymentProjectTarget:i,buildId:s})=>{await n({message:"Deploying it as gitlab project."});const a=o.projectDir;let c="fnet-to-gitlab";const l=i.params.config||"gitlab",p=await t({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='${a}'`,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)}}(),t=function(){if(pt)return lt;pt=1;const e=f,t=u,o=O,r=$,i=n;return lt=async({setProgress:n,context:s,deploymentProject:a,deploymentProjectTarget:c,registerToPackageManager:l,yamlTarget:p})=>{await n({message:"Deploying it as gcs package."});const d=s.projectDir,f=t.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:s.projectDir,tags:s.tags});let y="fnet-files-to-gcs";y+=` --projectId='${h.env.GCS_PROJECT_ID}'`,y+=` --bucketName='${h.env.GCS_BUCKET_NAME}'`,y+=` --keyFilename='${t.resolve(t.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&&(a.isDirty=!0,c.version=m.version,p.set("version",m.version),await l({target:c,packageJSON:m}))}}(),r=function(){if(ft)return dt;ft=1;const e=f,t=u,o=O,r=a,i=n,c=C,p=l,d=s;return dt=async({atom:n,setProgress:s,context:a,deploymentProject:l,deploymentProjectTarget:f,yamlTarget:u})=>{await s({message:"Deploying it as npm package."});const m=a.projectDir,g=t.resolve(m,"package.json"),h=e.readFileSync(g),y=JSON.parse(h);y.name=f.params.name,y.version=o.inc(f.version,"patch");const w=f.params.bin?.name||f.params.bin;!1!==f.params.bin?.enabled&&w&&"string"==typeof w&&(y.bin={[w]:"dist/cli/esm/index.js",[n.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=f.config||"npm";let b=(await i({name:v,dir:a.projectDir,tags:a.tags,optional:!0}))?.data;if(!b){const n=c({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===n.length)throw new Error("Couldnt find schema to create npm config");const o=await p({schema:n[0],tags:a.tags}),r=a.project.projectDir,i=t.resolve(r,".fnet");e.existsSync(i)||e.mkdirSync(i),e.writeFileSync(t.resolve(i,`${v}.fnet`),d.stringify(o)),b=o}if(e.writeFileSync(t.resolve(m,".npmrc"),`//registry.npmjs.org/:_authToken=${b.env.NPM_TOKEN}`),!0!==f.dryRun){if(0!==r.exec("npm publish --access public",{cwd:m}).code)throw new Error("Couldnt publish to npm");e.writeFileSync(g,h),l.isDirty=!0,f.version=y.version,u.set("version",y.version)}},dt}(),c=function(){if(mt)return ut;mt=1;const e=f,t=u,o=I,r=m,i=N,s=n;return ut=async({atom:n,setProgress:a,context:c,deploymentProject:l,deploymentProjectTarget:p,buildId:d,packageDependencies:f,njEnv:u})=>{await a({message:"Deploying it as node-red flow."});const m=c.projectDir,g=c.templateDir,h="workflow"===n.type?"WF":"LIB";let y;if("simple"===p.deploy.template)y={atom:n,packageDependencies:f,red:{tab:{id:p.deploy.id||i.util.generateId(),label:`${h}/${n.id?n.id:o.hostname()}/${n.name}/${p.deploy.name||p.deploy.template}`},function:{id:i.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.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:n,packageDependencies:f,red:{tab:{id:p.deploy.id||i.util.generateId(),label:`${h}/${n.id?n.id:o.hostname()}/${p.deploy.name||p.deploy.template}`},function:{id:i.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},cronjob:{id:i.util.generateId(),schedules:r},debug:{id:i.util.generateId()}}}}else{if("http"!==p.deploy.template)return;y={atom:n,packageDependencies:f,red:{tab:{id:p.deploy.id||i.util.generateId(),label:`${h}/${n.id?n.id:o.hostname()}/${p.deploy.name||p.deploy.template}`},function:{id:i.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.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(t.resolve(g,`deploy/node-red/${p.deploy.template}.yaml.njk`),"utf8"),u).render(y);if(e.writeFileSync(t.resolve(m,"node-red.yaml"),w),w=yaml.load(w),!0===p.dryRun)return;l.isDirty=!0;const v=(await s({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}},ut}(),p=function(){if(ht)return gt;ht=1;const e=i,t=o,r=n;return gt=async({atom:n,Atom:o,setProgress:i,context:s,packageDependencies:a,deploymentProject:c,deploymentProjectTarget:l})=>{await i({message:"Deploying it as workflow lib."});const p=(await r({name:"atom",dir:s.projectDir,tags:s.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 o.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 o.get({id:l.deploy.id}),!d)return}else{if(d=await o.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=s.projectDir;d.doc.contents=[{content:e.readFileSync(t.resolve(g,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(t.resolve(g,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(t.resolve(g,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],d.doc.name=u,d.doc.dependencies=a,"workflow.lib"===n.type?d.doc.subtype="library":"workflow"===n.type&&(d.doc.subtype="workflow"),d=await o.update(d,{id:d.id})}}(),d=function(){if(wt)return yt;wt=1;const e=n,t=M,o=g,r=O;return yt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as ios-app package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},yt}(),h=function(){if(bt)return vt;bt=1;const e=n,t=R,o=g,r=O;return vt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as macos-app package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},vt}(),y=function(){if(kt)return xt;kt=1;const e=n,t=F,o=g,r=O;return xt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as electron package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},xt}(),w=function(){if(_t)return jt;_t=1;const e=n,t=q,o=g,r=O;return jt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as webos package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},jt}(),v=function(){if(Pt)return Dt;Pt=1;const e=n,t=B,o=g,r=O;return Dt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as nextjs package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},Dt}(),b=function(){if(At)return St;At=1;const e=n,t=L,o=g,r=O;return St=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as docker package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},St}(),k=function(){if(Et)return Tt;Et=1;const e=f,t=u,o=O,r=$,i=n,s=x.default;return Tt=async({setProgress:n,context:a,deploymentProject:c,deploymentProjectTarget:l,yamlTarget:p})=>{await n({message:"Deploying it as fnet package."});const d=a.projectDir,f=t.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:a.projectDir,tags:a.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 s({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='${t.resolve(t.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 s({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.")}}(),j=function(){if(Ot)return $t;Ot=1;const e=O,t=n,o=x.default;return $t=async({setProgress:n,context:r,deploymentProject:i,deploymentProjectTarget:s,yamlTarget:a})=>{await n({message:"Deploying it as fnet form."});const{file:c,data:l}=await t({name:s.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(s.version,"patch");s.params.version=g,s.version=g,a.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:s.params.name,version:s.params.version,docs:s.params.docs,configs:s.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`}}),u.data?.error)throw new Error("Error publishing fnet form.")}}(),_=function(){if(It)return Ct;It=1;const e=O,t=n,o=x.default,r=i,s=$,a=U;return Ct=async({setProgress:n,context:i,deploymentProject:c,deploymentProjectTarget:l,yamlTarget:p})=>{await n({message:"Deploying it as fnet flow."});const{file:d,data:f}=await t({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 s({cmd:x});if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new a;_.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.")}}(),D=function(){if(Mt)return Nt;Mt=1;const e=O,t=n,o=x.default,r=i,s=$,a=U;return Nt=async({setProgress:n,context:i,deploymentProject:c,deploymentProjectTarget:l,yamlTarget:p})=>{await n({message:"Deploying it as fnet node."});const{file:d,data:f}=await t({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 s({cmd:x});if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new a;_.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.")}}(),P=function(){if(Ft)return Rt;Ft=1;const e=n,t=J,o=g,r=O;return Rt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as Rust package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},Rt}(),S=function(){if(Bt)return qt;Bt=1;const e=n,t=z,o=g,r=O;return qt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as pyip package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},qt}();return Lt=async n=>{const{atom:o,packageDependencies:i,context:s,deploymentProjectTarget:a,setProgress:l,deploymentProject:f,yamlTarget:u}=n;if(!0===a.enabled)if("lib"===a.type)await p({...n});else if("red"===a.type)await c({...n});else if("npm"===a.type)await r({...n});else if("gcs"===a.type)await t({...n});else if("gitlab"===a.type)await e({...n});else if("fnet-package"===a.type)await k({...n});else if("fnet-form"===a.type)await j({...n});else if("fnet-node"===a.type)await D({...n});else if("fnet-flow"===a.type)await _({...n});else{let e;if("nextjs"===a.type?e=v:"webos"===a.type?e=w:"electron"===a.type?e=y:"docker"===a.type?e=b:"ios"===a.type?e=d:"macos"===a.type?e=h:"rust"===a.type?e=P:"pyip"===a.type&&(e=S),!e)return;await e({atom:o,target:a,onProgress:l,projectDir:s.projectDir,dependencies:i,context:s,yamlTarget:u}),f.isDirty=!0}},Lt}function Jn(){if(zt)return Jt;zt=1;const e=g;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 Jt={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 zn(){if(an)return sn;an=1;const e=g;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 s=t.workflow.parent;t.context.lib=s.context.libs.find((e=>e.name===i.call)),await n({node:t}),o({node:t})}return sn={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 Wn(){return yn?hn:(yn=1,hn=({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 Kn(){if(vn)return wn;vn=1;const e=zn();class t{#e;#t;#n;constructor({key:e,npm:t,master:n}){this.#e=e,this.#t=t,this.#n=n}hits({node:e}){return e.definition.hasOwnProperty(this.#e)}async init(t){const{node:n}=t,o=this.#e,r=n.definition,i=typeof r[o];r.call=`npm:${this.#t}`,r.args="object"!==i?{...r.args,[`${this.#n}`]:r[o]}:r[o],delete r[o],console.log(`[npm-block] ${this.#e} --\x3e ${this.#t}`),await e.init(t)}}return wn=e=>new t(e)}function Gn(){if(xn)return bn;xn=1;const e=f,t=u,o=s,r=a,i=m,l=g,p=h,d=function(){if(ee)return Q;ee=1;const e=y,t=w;return Q=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:j}=v,D=function(){if(ne)return te;ne=1;const{Api:e}=b,t=x.default,n=k;return te=class{init({config:o,accessToken:r}){return new Promise(((i,s)=>{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(),s(t)}))}))}}}(),P=Sn(),S=An(),A=Tn(),T=$n(),E=On(),$=Cn(),O=In(),C=Nn(),I=Mn(),N=Rn(),M=Fn(),R=qn(),F=Bn(),q=Ln(),B=En(),L=Un(),{Atom:U}=b,J=W,z=K,Z=n,oe=_,re=G,ie=c,se=V,ae=H,ce=function(){if(Kt)return Wt;Kt=1;const e=G,t=Jn();return Wt={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})))),s=[],a=i.find((e=>"if"===e?.processor)),c=o.definition[a.expression];s.push({name:`${o.name}_if`,definition:c,processor:a}),delete o.definition[a.expression];const l=i.filter((e=>"elseif"===e?.processor));let p=0;for(const e of l){const t=o.definition[e.expression];s.push({name:`${o.name}_elseif_${p++}`,definition:t,processor:e}),delete o.definition[e.expression]}o.definition.switch=[];for(const e of s)o.definition.switch.push({condition:e.processor.statement,...e.definition});if(o.definition?.else){const e=o.definition.else;o.definition.switch.push({default:e}),delete o.definition.else}await t.init(n)}}}(),le=function(){if(Vt)return Gt;Vt=1;const e=g;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 Gt={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(Xt)return Ht;Xt=1;const e=g;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],s={key:await r(n),value:await r(o)};i.assign[e]=s}await n({node:t}),o({node:t})}return Ht={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(Zt)return Yt;Zt=1;const e=g,t=X,n=Y;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 Yt={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=Jn(),ue=en?Qt:(en=1,Qt={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(nn)return tn;nn=1;const e=g;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 tn={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(rn)return on;rn=1;const e=g;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 on={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=zn(),ye=function(){if(ln)return cn;async function e({node:e}){e.context.next=e.childs[0]}return ln=1,cn={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}}(),we=function(){if(dn)return pn;dn=1;const e=g;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 s=t.workflow.parent;t.context.lib=s.context.libs.find((e=>e.name===i.form)),await n({node:t}),o({node:t})}return pn={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}}(),ve=function(){if(un)return fn;un=1;const e=g;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 fn={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}}(),be=function(){if(gn)return mn;gn=1;const e=g;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 mn={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}}(),xe=Wn(),ke=Kn();return bn=class{#o;#r;#i;#s;#a;#c;#l;#p;#d;#f;#u;#m;#g;#h;#y;#w;#v;#b;#x;#k;#j;#_=[];constructor(e){this.#o=new D,this.#r=e,this.#c=[],this.#l=[],this.#p={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#_.push(ke({key:"config",npm:"@fnet/config",master:"name"})),this.#_.push(ke({key:"yaml",npm:"@fnet/yaml",master:"file"})),this.#_.push(ke({key:"prompt",npm:"@fnet/prompt",master:"message"})),this.#_.push(ke({key:"html-link",npm:"@flownet/lib-load-browser-link-url",master:"src"})),this.#_.push(ke({key:"html-script",npm:"@flownet/lib-load-browser-script-url",master:"src"})),this.#_.push(ke({key:"http-server",npm:"@fnet/node-express",master:"server_port"})),this.#_.push(ke({key:"shell",npm:"@fnet/shell",master:"cmd"})),this.#_.push(ke({key:"shell-flow",npm:"@fnet/shell-flow",master:"commands"})),this.#_.push(ke({key:"list-files",npm:"@fnet/list-files",master:"pattern"})),this.#_.push(ke({key:"up-list-files",npm:"@fnet/up-list-files",master:"pattern"})),this.#_.push(ke({key:"auto-conda-env",npm:"@fnet/auto-conda-env",master:"envDir"})),this.#_.push(ke({key:"ollama-chat",npm:"@fnet/ollama-chat",master:"model"})),this.#k={packageDependencies:this.#c,packageDevDependencies:this.#l,setProgress:this.setProgress.bind(this),context:this.#r,Atom:U,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#j={initNode:this.initNode.bind(this),cloneDeep:l,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:xe,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 d(),this.#u=this.#r.buildId||j(24),this.#k.buildId=this.#u,this.#y=this.#r.mode,this.#w=["all","deploy","build","file"].includes(this.#y),this.#v=["all","deploy","build"].includes(this.#y),this.#b=["all","deploy"].includes(this.#y),this.#x=["all","deploy","build","file","bpmn"].includes(this.#y),this.#g=this.#r.protocol,this.#m="BUILD:"+this.#u,this.#h=(await Z({optional:!0,name:"atom",dir:this.#r.projectDir,tags:this.#r.tags}))?.data;try{await this.setProgress({message:"Initialization started."}),await this.initAuth(),await this.initWorkflow(),await P(this.#k),await S(this.#k),await this.transformWorkflow({workflow:this.#s});const e=await this.initNodeTree({workflow:this.#s});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.#c}),await this.resolveNodeTree({root:e}),this.#f=e}catch(e){throw await this._cache_set(this.#m,{status:"FAILED",message:e?.message||e}),e}}async initAuth(){this.#r.id&&(this.#d=await this.#o.init({config:this.#h}),this.#k.atomAccessToken=this.#d)}async initWorkflow(){const e=this.#r.id;this.#i=this.#r.project?.workflowAtom||await U.get({id:e}),this.#s="string"==typeof this.#i.doc.content?(await ie({content:this.#i.doc.content})).parsed:this.#i.doc.content;let t=this.#i.doc.bundleName;t=t||(this.#i.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#i.doc.bundleName=t,this.#i.type=this.#i.type||"workflow",this.#k.atom=this.#i}async initDependencies(){this.#c.push({package:"get-value",version:"^3.0"}),this.#c.push({package:"set-value",version:"^4.1"}),this.#i.doc.features.form_enabled?(this.#c.push({package:"react",version:"^18.2"}),this.#c.push({package:"react-dom",version:"^18.2"}),this.#c.push({package:"@flownet/react-app",version:"^0.1"}),this.#c.push({package:"@flownet/react-app-state",version:"^0.1"})):this.#c.push({package:"@fnet/args",version:"^0.1"}),this.#c.push({package:"chalk",version:"^4"})}#D(n){console.log("filePath",n),e.statSync(n).isDirectory()?(e.readdirSync(n).forEach((e=>{const o=t.join(n,e);this.#D(o)})),e.rmSync(n)):e.unlinkSync(n)}#P(n,o){const r=e.existsSync(n),i=r&&e.statSync(n);r&&i.isDirectory()?(e.mkdirSync(o,{recursive:!0}),e.readdirSync(n).forEach((e=>{this.#P(t.join(n,e),t.join(o,e))}))):e.copyFileSync(n,o)}async initWorkflowDir(){this.setProgress({message:"Initializing library directory."});const n=this.#r.projectDir,o=this.#r.coreDir;this.setProgress({message:"Cleaning project directory."});const r=ae({dir:n,ignore:[".cache","node_modules",".conda"],absolute:!0});for(const t of r)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."}),e.existsSync(n)||e.mkdirSync(n,{recursive:!0});const i=t.join(n,"src");e.existsSync(i)||e.mkdirSync(i,{recursive:!0});const s=t.join(i,"core");this.#P(o,s);const a=t.join(i,"default","blocks");e.existsSync(a)||e.mkdirSync(a,{recursive:!0})}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#r.templateDir;this.#a=i.configure(e,{watch:!1,dev:!0}),this.#k.njEnv=this.#a}transformWorkflow({workflow:e}){for(const t of Object.values(e))t.steps=t.steps||[],t.steps=t.steps.map((e=>this.transformStep({step:e})))}transformStep({step:e}){if(Array.isArray(e))throw new Error("Step must be an object.");const[t,n]=Object.entries(e)[0];if(n.hasOwnProperty("onerror")){const{onerror:o,...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.#i}};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.#j,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(this.#_.find((e=>e.hits(t)))){const e=this.#_.find((e=>e.hits(t)));await e.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 ye.hits(t))await ye.init(t);else{if(!await be.hits(t))throw new Error("Undefined step type.");await be.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:n}){const o=t.join(e.parent.indexKey,e.name);e.indexKey=o,n[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=j(24);for await(const t of e.childs)await this.initNodeIndex({node:t,index:n})}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:n}){const o=J({url:e});if(!o)throw new Error(`Invalid package name: ${e}`);if(o.protocol||(o.protocol=this.#g),"ac:"===o.protocol){const t=o.pathname.split("/");if(1===t.length)return await U.first({where:{name:e,parent_id:this.#h.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await U.first({where:{name:t[0],parent_id:this.#h.env.ATOM_LIBRARIES_ID,type:"folder"}});return await U.first({where:{name:t[1],parent_id:e.id,type:"workflow.lib"}})}}else{if("local:"===o.protocol){const e=t.resolve(this.#r.projectSrcDir,`${o.pathname}.js`),n=[],r=await oe({file:e,recursive:!0}),i=!0===this.#i.doc.features.all_parsed_imports?r.all:r.required;for await(const e of i){if("npm"!==e.type)continue;if(n.find((t=>t.package===e.package)))continue;const t=await B({name:e.package,projectDir:this.#r.projectDir,setProgress:this.#k.setProgress});n.push({package:e.package,subpath:e.subpath,version:t.minorRange,type:"npm"})}return{name:o.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:n},protocol:o.protocol}}if("npm:"===o.protocol){const e=await B({name:o.pathname,projectDir:this.#r.projectDir,setProgress:this.#k.setProgress});return{name:o.pathname,doc:{type:"workflow.lib",subtype:"flow"===n?.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.#j,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:n}){await this.setProgress({message:"Creating external lib files."}),this.#i.typesDir="./types";const o=n.context.libs.filter((e=>"atom"===e.type));for(let n=0;n<o.length;n++){const r=o[n].atom,i=this.#r.projectDir;if("local:"===r.protocol){const n=t.resolve(this.#r.projectSrcDir,`${r.fileName||r.name}.js`),o=t.relative(`${this.#r.projectDir}/src/default/blocks`,n);if(!e.existsSync(n)){e.mkdirSync(t.dirname(n),{recursive:!0});let o="export default async (args)=>{\n";o+="}",e.writeFileSync(n,o,"utf8")}r.relativePath=o.split(t.sep).join("/"),this.#i.typesDir=`./types/${t.basename(i)}/src`}else if("npm:"===r.protocol)r.relativePath=r.name;else{const n=`${i}/src/libs/${r.id}.js`,o=r.doc.contents?.find((e=>"esm"===e.format))||r.doc;e.writeFileSync(t.normalize(n),o.content,"utf8")}}}async createEngine({root:n}){await this.setProgress({message:"Creating engine file."});const o=this.#r.templateDir,r=i.compile(e.readFileSync(t.resolve(o,"src/default/engine.js.njk"),"utf8"),this.#a).render({...n,ui:{package:"@flownet/react-app"}}),s=this.#r.projectDir,a=t.resolve(s,"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:n}){const o=this.#r.templateDir,r=i.compile(e.readFileSync(t.resolve(o,"src/default/workflow.js.njk"),"utf8"),this.#a).render(n),s=this.#r.projectDir,a=t.resolve(s,`src/default/${n.codeKey}.js`);e.writeFileSync(a,r,"utf8");for await(const e of n.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:n}){let o=this.#p[n.type];if(o)return o;const r=this.#r.templateDir;return o=i.compile(e.readFileSync(t.resolve(r,`src/default/blocks/${n.type}.js.njk`),"utf8"),this.#a),this.#p[n.type]=o,o}createStepFile({node:n}){const o=this.#r.projectDir,r=`${n.codeKey}.js`,i=t.resolve(o,`src/default/blocks/${r}`);e.writeFileSync(i,n.context.render,"utf8"),n.context.fileName=r,n.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++){const o=t[n],r=await re({expression:o});if(r)if("e"===r.processor){const t=e[o].replace(/(\r\n|\n|\r)/g,"");e[r.statement]=`$::${t}::`,delete e[o]}else e[o]=await this.transformValue(e[o]);else e[o]=await this.transformValue(e[o])}}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 n="flow.yaml",r=`Creating ${n}`;await this.setProgress({message:r});const{content:s,...a}=this.#i.doc,c={content:o.stringify(a)},l=this.#r.templateDir,p=i.compile(e.readFileSync(t.resolve(l,`${n}.njk`),"utf8"),this.#a).render(c),d=this.#r.projectDir,f=t.resolve(d,`${n}`);e.writeFileSync(f,p,"utf8")}async createProjectMainYaml(){const n="flow.main.yaml",r=`Creating ${n}`;await this.setProgress({message:r});const s={content:o.stringify(this.#s)},a=this.#r.templateDir,c=i.compile(e.readFileSync(t.resolve(a,`${n}.njk`),"utf8"),this.#a).render(s),l=this.#r.projectDir,p=t.resolve(l,`${n}`);e.writeFileSync(p,c,"utf8")}async runPrettifier(){const e=this.#r.projectDir,n=r.exec("prettier --write .",{cwd:t.resolve(e,"src")});if(0!==n.code)throw new Error(n.stderr)}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#r.project?.devops){const e=[this.#r.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.#i.id){const e=await U.list({type:"workflow.deploy",parent_id:this.#i.id});for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&(n=await U.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 L({...this.#k,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:i})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#r.id)return;let o=await U.first({name:t.params.name,parent_id:this.#h.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:n.version}),await U.update(o,{id:o.id})):o=await U.create({parent_id:this.#h.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(se.blue(t)),await this._cache_set(this.#m,{status:"IN_PROGRESS",message:t})}async build(){if(this.#x&&!this.#w)return await this.createNetwork();try{const n=this.#x?await z({root:this.#f}):void 0;if(this.#w){if(await this.initWorkflowDir(),await this.initNunjucks(),this.#x){const o=this.#r.project?.projectDir||this.#r.projectDir;e.writeFileSync(t.resolve(o,"./fnet/flow.bpmn"),n.diagramXML,"utf8")}await this.createAtomLibFiles({root:this.#f}),await this.createEngine({root:this.#f}),await this.createNodeTree({root:this.#f}),await this.createProjectYaml(),await this.createProjectMainYaml(),await N(this.#k),await I(this.#k),await C(this.#k),await O(this.#k),await E(this.#k),await A(this.#k),await $(this.#k),await T(this.#k),await M(this.#k),await R(this.#k),this.#v&&(await F(this.#k),await q(this.#k),this.#b&&await this.deploy())}await this._cache_set(this.#m,{status:"COMPLETED",data:{network:n}})}catch(e){throw await this._cache_set(this.#m,{status:"FAILED",message:e.message||e}),e}}async createNetwork(){try{const e=await z({root:this.#f});await this._cache_set(this.#m,{status:"COMPLETED",data:{...e}})}catch(e){throw await this._cache_set(this.#m,{status:"FAILED",message:e.message||e}),e}}}}var Vn=Z(function(){if(_n)return Dn;_n=1;const m=process.cwd(),{spawn:g}=e,h=t;n({name:["redis"],dir:m,optional:!0});const y=o,w=r,v=i,b=s,x=a,k=c,j=n,_=l,D=p,P=d,S=Gn(),A=function(){if(jn)return kn;jn=1;const e=f,t=u;return kn=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}),T="win32"===process.platform?";":":";process.env.PATH=`${y.join(A,"/.bin")}${T}${process.env.PATH}`;let E=w(process.argv.slice(2)).command("create","Initialize flow node project",(e=>e.option("name",{type:"string"}).option("vscode",{type:"boolean",default:!0,alias:"vs"}).option("runtime",{type:"string",default:"node",choices:["node"]})),(async e=>{try{const t=y.resolve(A,"./@fnet/cli-project-flow/dist/template/project"),n=y.resolve(m,e.name);v.existsSync(n)||v.mkdirSync(n),await P({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let o=x.exec("fnet build",{cwd:n});if(0!==o.code)throw new Error("Failed to build project.");if(x.which("git")&&(o=x.exec("git init --initial-branch=main",{cwd:n}),0!==o.code))throw new Error("Failed to initialize git.");if(x.which("code")&&e.vscode&&(o=x.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=y.resolve(A,"@fnet/cli-project-flow/dist/template/project"),n=process.cwd(),o=await O(e);if(e.update){if(await P({dir:t,outDir:n,context:{name:o.project.projectFileParsed.name,runtime:"node"},copyUnmatchedAlso:!0}),0!==x.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 O(e),n=new S(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 O({...e,mode:"all"}),n=new S(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 O({...e,mode:"file"}),n=new S(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 $(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 O(e),{projectDir:r}=t,i=process.argv.slice(3);g(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 O(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:y.resolve(m,`./.output/${e.id}`),templateDir:y.resolve(A,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:y.resolve(A,"./@fnet/cli-project-common/dist/template/default"),coreDir:y.resolve(A,"./@fnet/cli-project-flow/dist/template/core"),tags:e.ftag}}{const t=await async function({tags:e}){const t=y.resolve(m,"flow.yaml");if(!v.existsSync(t))throw new Error("flow.yaml file not found in current directory.");const{raw:n,parsed:o}=await k({file:t,tags:e}),r=y.dirname(t),i=o.main||"flow.main.yaml";let s=y.resolve(r,i);if(!v.existsSync(s)&&(s=y.resolve(r,i+".yaml"),!v.existsSync(s)))throw new Error(`${i} file not found in ${s}.`);const{raw:a,parsed:c}=await k({file:s,tags:e}),l={workflowAtom:{doc:{...o,"content-type":"yaml",content:a}},projectDir:r,projectFilePath:t,projectFileContent:n,projectFileParsed:o,projectMainFilePath:s,projectMainFileContent:a,projectMainFileParsed:c};let p=y.resolve(r,"fnet/targets.yaml");if(!v.existsSync(p)&&(p=y.resolve(r,"flow.devops.yaml"),v.existsSync(p))){const e=y.resolve(r,"fnet");v.existsSync(e)||v.mkdirSync(e),v.copyFileSync(p,y.resolve(r,"fnet/targets.yaml")),v.unlinkSync(p)}if(v.existsSync(p)){const{raw:t,parsed:n}=await k({file:p,tags:e}),o=b.parseDocument(t);l.devops={filePath:p,fileContent:t,yamlDocument:o,doc:{...n},type:"workflow.deploy",save:async()=>{v.writeFileSync(l.devops.filePath,o.toString())}}}const d=y.resolve(r,"readme.md");if(v.existsSync(d)){const e=v.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:y.resolve(A,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:y.resolve(A,"./@fnet/cli-project-common/dist/template/default"),coreDir:y.resolve(A,"./@fnet/cli-project-flow/dist/template/core"),projectDir:y.resolve(t.projectDir,"./.workspace"),projectSrcDir:y.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return E=E.command("input [name]","Create or modify an input config file",(e=>e.positional("name",{type:"string",demandOption:!1}).help(!1).version(!1)),(async e=>{try{const t=await O(e),{project:n}=t,{projectDir:o,projectFileParsed:r}=n,i=r.input;if(!i)throw new Error("Config schema not found in project file.");if(!Reflect.has(e,"name")){const{inputName:t}=await h({type:"input",name:"inputName",message:"Input name:",initial:"dev"});e.name=t}const s=y.resolve(o,".fnet");v.existsSync(s)||v.mkdirSync(s);const a=y.resolve(s,`${e.name}.fnet`),c=v.existsSync(a),l=await _({schema:i,format:"yaml",ref:c?a:void 0});v.writeFileSync(a,l)}catch(e){console.error(e.message),process.exit(1)}})),E=$(E,{bin:"npm"}),E=$(E,{bin:"node"}),E=$(E,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),E=$(E,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),E=$(E,{name:"app",bin:"npm",preArgs:["run","app","--"]}),E=$(E,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),E=$(E,{bin:"npx"}),E=$(E,{bin:"cdk"}),E=$(E,{bin:"aws"}),E=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 O(e),{projectDir:o}=t,r=e.config,i=await j({name:r,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),s=i?.data?.env||void 0,a=e.command,c=process.argv.slice(5);g(a,[...n,...c],{cwd:o,stdio:"inherit",shell:!0,env:{...process.env,...s}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(E,{name:"with"}),E=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 O(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 D({commands:i})}catch(e){console.error(e.message),process.exit(1)}}))}(E,{name:"run"}),E.demandCommand(1,"You need at least one command before moving on").help().argv,Dn}());module.exports=Vn;
|
|
2
|
+
"use strict";var e=require("child_process"),t=require("@fnet/prompt"),n=require("@fnet/config"),o=require("path"),r=require("yargs/yargs"),i=require("fs"),s=require("yaml"),a=require("shelljs"),c=require("@fnet/yaml"),l=require("@fnet/object-from-schema"),p=require("@fnet/shell-flow"),d=require("@flownet/lib-render-templates-dir"),f=require("node:fs"),u=require("node:path"),m=require("nunjucks"),g=require("lodash.clonedeep"),h=require("isobject"),y=require("redis"),w=require("@flownet/lib-is-redis-online"),v=require("nanoid"),b=require("@flownet/lib-atom-api-js"),x=require("axios"),k=require("qs"),j=require("lodash.merge"),_=require("@flownet/lib-parse-imports-js"),D=require("@fnet/npm-list-versions"),P=require("@fnet/npm-pick-versions"),S=require("object-hash"),A=require("ajv/dist/2020"),T=require("ajv/dist/standalone"),E=require("ajv-formats"),$=require("@fnet/shell"),O=require("semver"),C=require("@fnet/up-list-files"),I=require("node:os"),N=require("@node-red/util"),M=require("@flownet/lib-to-ios-app"),R=require("@flownet/lib-to-macos-app"),F=require("@flownet/lib-to-electron"),q=require("@flownet/lib-to-webos"),B=require("@flownet/lib-to-nextjs"),L=require("@flownet/lib-to-docker"),U=require("form-data"),J=require("@fnet/to-rust"),z=require("@fnet/to-pyip"),W=require("@flownet/lib-parse-node-url"),K=require("@flownet/lib-bpmn-from-flow"),G=require("@fnet/expression"),V=require("chalk"),H=require("@fnet/list-files"),X=require("lodash.pick"),Y=require("lodash.omit");function Z(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Q,ee,te,ne,oe,re,ie,se,ae,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,Re,Fe,qe,Be,Le,Ue,Je,ze,We,Ke,Ge,Ve,He,Xe,Ye,Ze,Qe,et,tt,nt,ot,rt,it,st,at,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,Rt,Ft,qt,Bt,Lt,Ut,Jt,zt,Wt,Kt,Gt,Vt,Ht,Xt,Yt,Zt,Qt,en,tn,nn,on,rn,sn,an,cn,ln,pn,dn,fn,un,mn,gn,hn,yn,wn,vn,bn,xn,kn,jn,_n,Dn={};function Pn(){if(re)return oe;re=1;const e=j;return oe=({feature:t,features:n,packageDevDependencies:o})=>{const{name:r,packages:i,options:s,extraCheck:a,explicit:c}=t,l=`${r}_enabled`,p=n.rollup_output||{},d=Object.keys(p);let f=s||{};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));a&&(g=a()&&g),n[l]=g,g&&i.forEach((e=>o.push({package:e[0],version:e[1]})))}}function Sn(){if(Oe)return $e;Oe=1;const e=j,t=f,n=u,o=_,r=function(){if(se)return ie;se=1;const e=Pn();return ie=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})},ie}(),i=function(){if(ce)return ae;ce=1;const e=Pn();return ae=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})},ae}(),s=function(){if(pe)return le;pe=1;const e=Pn();return le=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})},le}(),a=function(){if(fe)return de;fe=1;const e=Pn();return de=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})},de}(),c=function(){if(me)return ue;me=1;const e=Pn();return ue=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})},ue}(),l=function(){if(he)return ge;he=1;const e=Pn();return ge=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})},ge}(),p=function(){if(we)return ye;we=1;const e=Pn();return ye=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:r,packageDevDependencies:o})},ye}(),d=function(){if(be)return ve;be=1;const e=Pn();return ve=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:r,packageDevDependencies:o})},ve}(),m=function(){if(ke)return xe;ke=1;const e=Pn();return xe=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:r,packageDevDependencies:o})},xe}(),g=function(){if(_e)return je;_e=1;const e=Pn();return je=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})},je}(),h=function(){if(Pe)return De;Pe=1;const e=Pn();return De=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:r,packageDevDependencies:o})},De}(),y=function(){if(Ae)return Se;Ae=1;const e=Pn();return Se=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})},Se}(),w=function(){if(Ee)return Te;Ee=1;const e=Pn();return Te=t=>{const{atom:n,packageDevDependencies:o}=t,r=n.doc.features,i=r.css&&!1!==r.css.enabled;let s=[];i&&(s.push(["rollup-plugin-postcss","^4"]),s.push(["sass","^1.66"]),(r.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":s.push(["postcss-import","^15"]);break;case"postcss-url":s.push(["postcss-url","^10"]);break;case"postcss-preset-env":s.push(["postcss-preset-env","^9"]);break;case"autoprefixer":s.push(["autoprefixer","^10"]);break;case"cssnano":s.push(["cssnano","^6"])}}))),e({feature:{name:"css",packages:s},features:r,packageDevDependencies:o})},Te}();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,s=n.extname(r);return{file:i,ext:s,ts:".ts"===s||".tsx"===s,name:o}}return $e=async t=>{const{atom:f,context:u,setProgress:b}=t;b("Initializing features..."),f.doc.features=f.doc.features||{};const x=f.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(u.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"===f.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===f.doc.form||!0===f.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===f.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===f.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),d(t),l(t),c(t),a(t),s(t),r(t),i(t)},$e}function An(){if(Ie)return Ce;Ie=1;const e=D;return Ce=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.19"}),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"})},Ce}function Tn(){if(Me)return Ne;Me=1;const e=f,t=u,n=d;return Ne=async({atom:o,setProgress:r,context:i,packageDependencies:s})=>{if(!0!==o.doc.features.app.enabled)return;await r({message:"Creating app folder"});const a={atom:o,packageDependencies:s,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:a})},Ne}function En(){if(Fe)return Re;Fe=1;const e=P,t=S,n=f,o=u;return Re=async({projectDir:r,name:i,setProgress:s,count:a=1})=>{let c;const l=t(["npm-pick-versions",i,a]),p=o.join(r,".cache"),d=o.join(p,l+".json");return n.existsSync(d)?(s&&s(`Picking npm version of ${i} from cache ...`),c=JSON.parse(n.readFileSync(d,"utf8"))):(s&&s(`Picking npm version of ${i} ...`),c=await e({name:i,count:a}),n.mkdirSync(p,{recursive:!0}),n.writeFileSync(d,JSON.stringify(c),"utf8")),c}}function $n(){if(Be)return qe;Be=1;const e=m,t=f,n=u,o=_,r=En();return qe=async({atom:i,context:s,packageDependencies:a,packageDevDependencies:c,setProgress:l})=>{await l({message:"Creating package.json."});a.filter((e=>!0===e.dev)).forEach((e=>{c.find((t=>t.package===e.package))||c.push(e);const t=a.findIndex((t=>t.package===e.package));a.splice(t,1)}));const p=a.find((e=>"react"===e.package)),d=a.find((e=>"react-dom"===e.package));p&&!d?a.push({package:"react-dom",version:p.version}):p&&d&&(d.version=p.version),p&&i.doc.features.react_version>=17&&(a.find((e=>"@emotion/react"===e.package))||a.push({package:"@emotion/react",version:"^11"}),a.find((e=>"@emotion/styled"===e.package))||a.push({package:"@emotion/styled",version:"^11"}));const f=[];!0===i.doc.features.app.enabled&&f.push({file:n.resolve(s.projectDir,"src/app/index.js"),dev:!1!==i.doc.features.app.dev}),!0===i.doc.features.cli.enabled&&f.push({file:n.resolve(s.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(a.find((e=>e.package===t.package)))continue;if(c.find((e=>e.package===t.package)))continue;const n=await r({name:t.package,projectDir:s.projectDir,setProgress:l});(!0===e.dev?c:a).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const u={atom:i,packageDependencies:a,packageDevDependencies:c},m=s.templateCommonDir,g=e.compile(t.readFileSync(n.resolve(m,"package.json.njk"),"utf8"),e.configure(m)).render(u),h=s.projectDir,y=n.resolve(h,"package.json");t.writeFileSync(y,g,"utf8");const w=n.resolve(s.project.projectDir,"fnet");if(t.existsSync(w)){const e=n.resolve(s.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)}}},qe}function On(){if(Ue)return Le;Ue=1;const e=f,t=u,n=d;return Le=async({atom:o,setProgress:r,context:i,packageDependencies:s})=>{if(!0!==o.doc.features.cli.enabled)return;await r({message:"Creating cli."});const a={atom:o,packageDependencies:s},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:a})},Le}function Cn(){if(ze)return Je;ze=1;const e=f,t=u,n=m,o=_;return Je=async({atom:r,setProgress:i,context:s,packageDependencies:a})=>{await i({message:"Creating rollup file."});const c={atom:r,packageDependencies:a},l=t.resolve(s.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=s.templateCommonDir;let m=n.compile(e.readFileSync(t.resolve(u,"rollup.config.mjs.njk"),"utf8"),n.configure(u)).render(c);const g=s.projectDir;let h=t.resolve(g,"rollup.config.mjs");e.writeFileSync(h,m,"utf8")},Je}function In(){if(Ke)return We;Ke=1;const e=f,t=u,n=m,o=A,r=T,i=E;return We=async({atom:s,setProgress:a,context:c,njEnv:l})=>{if(!0!==s.doc.features.cli.enabled)return;await a({message:"Creating yargs."});let p={};if(p=s.doc.input?s.doc.input:{type:"object",properties:{},required:[]},s.doc.features.cli.fargs&&!1!==s.doc.features.cli.fargs?.enabled){const e=s.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:s},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")},We}function Nn(){if(Ve)return Ge;Ve=1;const e=f,t=u,n=m;return Ge=async({atom:o,setProgress:r,context:i,packageDependencies:s})=>{await r({message:"Creating .gitignore"});const a={atom:o,packageDependencies:s},c=i.templateCommonDir,l=n.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),n.configure(c)).render(a),p=i.projectDir,d=t.resolve(p,".gitignore");e.writeFileSync(d,l,"utf8")},Ge}function Mn(){if(Xe)return He;Xe=1;const e=f,t=u,n=m;return He=async({atom:o,setProgress:r,context:i,packageDependencies:s})=>{await r({message:"Creating tsconfig.json."});const a={atom:o,packageDependencies:s},c=i.templateCommonDir,l=n.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),n.configure(c)).render(a),p=i.projectDir,d=t.resolve(p,"tsconfig.json");e.writeFileSync(d,l,"utf8")},He}function Rn(){if(Ze)return Ye;Ze=1;const e=m,t=f,n=u,o=c;return Ye=async({atom:r,context:i,setProgress:s,Atom:a})=>{const c="readme.md",l=`Creating ${c}`;if(await s({message:l}),i.project?.readme){const r=i.projectDir,s={content:i.project.readme.doc.content},a=n.resolve(i.project.projectDir,"fnet/how-to.md");if(t.existsSync(a)){const e=t.readFileSync(a,"utf8");s.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});s.input=e.content}const p=i.templateCommonDir,d=e.compile(t.readFileSync(n.resolve(p,`${c}.njk`),"utf8"),e.configure(p)).render(s),f=n.resolve(r,`${c}`);t.writeFileSync(f,d,"utf8")}else if(r.id){const o=await a.first({type:"wiki",parent_id:r.id});if(!o||"markdown"!==o.doc?.["content-type"])return;const{content:s,...l}=o.doc,p={content:s},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")}},Ye}function Fn(){if(et)return Qe;et=1;const e=o,t=p;return Qe=async({setProgress:n,context:o})=>{const r=o.projectDir;await n({message:"Prettifiying source files."});let i=e.join("src","**","*");await t({commands:{steps:[`prettier --write ${i} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:r}})}}function qn(){if(nt)return tt;nt=1;const e=a;return tt=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.")},tt}function Bn(){if(rt)return ot;rt=1;const e=a;return ot=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.")},ot}function Ln(){if(st)return it;st=1;const e=a;return it=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 Un(){if(Ut)return Lt;Ut=1;const e=function(){if(ct)return at;ct=1;const e=$,t=n;return at=async({setProgress:n,context:o,deploymentProject:r,deploymentProjectTarget:i,buildId:s})=>{await n({message:"Deploying it as gitlab project."});const a=o.projectDir;let c="fnet-to-gitlab";const l=i.params.config||"gitlab",p=await t({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='${a}'`,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)}}(),t=function(){if(pt)return lt;pt=1;const e=f,t=u,o=O,r=$,i=n;return lt=async({setProgress:n,context:s,deploymentProject:a,deploymentProjectTarget:c,registerToPackageManager:l,yamlTarget:p})=>{await n({message:"Deploying it as gcs package."});const d=s.projectDir,f=t.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:s.projectDir,tags:s.tags});let y="fnet-files-to-gcs";y+=` --projectId='${h.env.GCS_PROJECT_ID}'`,y+=` --bucketName='${h.env.GCS_BUCKET_NAME}'`,y+=` --keyFilename='${t.resolve(t.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&&(a.isDirty=!0,c.version=m.version,p.set("version",m.version),await l({target:c,packageJSON:m}))}}(),r=function(){if(ft)return dt;ft=1;const e=f,t=u,o=O,r=a,i=n,c=C,p=l,d=s;return dt=async({atom:n,setProgress:s,context:a,deploymentProject:l,deploymentProjectTarget:f,yamlTarget:u})=>{await s({message:"Deploying it as npm package."});const m=a.projectDir,g=t.resolve(m,"package.json"),h=e.readFileSync(g),y=JSON.parse(h);y.name=f.params.name,y.version=o.inc(f.version,"patch");const w=f.params.bin?.name||f.params.bin;!1!==f.params.bin?.enabled&&w&&"string"==typeof w&&(y.bin={[w]:"dist/cli/esm/index.js",[n.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=f.config||"npm";let b=(await i({name:v,dir:a.projectDir,tags:a.tags,optional:!0}))?.data;if(!b){const n=c({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===n.length)throw new Error("Couldnt find schema to create npm config");const o=await p({schema:n[0],tags:a.tags}),r=a.project.projectDir,i=t.resolve(r,".fnet");e.existsSync(i)||e.mkdirSync(i),e.writeFileSync(t.resolve(i,`${v}.fnet`),d.stringify(o)),b=o}if(e.writeFileSync(t.resolve(m,".npmrc"),`//registry.npmjs.org/:_authToken=${b.env.NPM_TOKEN}`),!0!==f.dryRun){if(0!==r.exec("npm publish --access public",{cwd:m}).code)throw new Error("Couldnt publish to npm");e.writeFileSync(g,h),l.isDirty=!0,f.version=y.version,u.set("version",y.version)}},dt}(),c=function(){if(mt)return ut;mt=1;const e=f,t=u,o=I,r=m,i=N,s=n;return ut=async({atom:n,setProgress:a,context:c,deploymentProject:l,deploymentProjectTarget:p,buildId:d,packageDependencies:f,njEnv:u})=>{await a({message:"Deploying it as node-red flow."});const m=c.projectDir,g=c.templateDir,h="workflow"===n.type?"WF":"LIB";let y;if("simple"===p.deploy.template)y={atom:n,packageDependencies:f,red:{tab:{id:p.deploy.id||i.util.generateId(),label:`${h}/${n.id?n.id:o.hostname()}/${n.name}/${p.deploy.name||p.deploy.template}`},function:{id:i.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.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:n,packageDependencies:f,red:{tab:{id:p.deploy.id||i.util.generateId(),label:`${h}/${n.id?n.id:o.hostname()}/${p.deploy.name||p.deploy.template}`},function:{id:i.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},cronjob:{id:i.util.generateId(),schedules:r},debug:{id:i.util.generateId()}}}}else{if("http"!==p.deploy.template)return;y={atom:n,packageDependencies:f,red:{tab:{id:p.deploy.id||i.util.generateId(),label:`${h}/${n.id?n.id:o.hostname()}/${p.deploy.name||p.deploy.template}`},function:{id:i.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(m,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.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(t.resolve(g,`deploy/node-red/${p.deploy.template}.yaml.njk`),"utf8"),u).render(y);if(e.writeFileSync(t.resolve(m,"node-red.yaml"),w),w=yaml.load(w),!0===p.dryRun)return;l.isDirty=!0;const v=(await s({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}},ut}(),p=function(){if(ht)return gt;ht=1;const e=i,t=o,r=n;return gt=async({atom:n,Atom:o,setProgress:i,context:s,packageDependencies:a,deploymentProject:c,deploymentProjectTarget:l})=>{await i({message:"Deploying it as workflow lib."});const p=(await r({name:"atom",dir:s.projectDir,tags:s.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 o.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 o.get({id:l.deploy.id}),!d)return}else{if(d=await o.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=s.projectDir;d.doc.contents=[{content:e.readFileSync(t.resolve(g,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(t.resolve(g,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(t.resolve(g,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],d.doc.name=u,d.doc.dependencies=a,"workflow.lib"===n.type?d.doc.subtype="library":"workflow"===n.type&&(d.doc.subtype="workflow"),d=await o.update(d,{id:d.id})}}(),d=function(){if(wt)return yt;wt=1;const e=n,t=M,o=g,r=O;return yt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as ios-app package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},yt}(),h=function(){if(bt)return vt;bt=1;const e=n,t=R,o=g,r=O;return vt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as macos-app package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},vt}(),y=function(){if(kt)return xt;kt=1;const e=n,t=F,o=g,r=O;return xt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as electron package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},xt}(),w=function(){if(_t)return jt;_t=1;const e=n,t=q,o=g,r=O;return jt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as webos package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},jt}(),v=function(){if(Pt)return Dt;Pt=1;const e=n,t=B,o=g,r=O;return Dt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as nextjs package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},Dt}(),b=function(){if(At)return St;At=1;const e=n,t=L,o=g,r=O;return St=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as docker package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},St}(),k=function(){if(Et)return Tt;Et=1;const e=f,t=u,o=O,r=$,i=n,s=x.default;return Tt=async({setProgress:n,context:a,deploymentProject:c,deploymentProjectTarget:l,yamlTarget:p})=>{await n({message:"Deploying it as fnet package."});const d=a.projectDir,f=t.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:a.projectDir,tags:a.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 s({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='${t.resolve(t.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 s({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.")}}(),j=function(){if(Ot)return $t;Ot=1;const e=O,t=n,o=x.default;return $t=async({setProgress:n,context:r,deploymentProject:i,deploymentProjectTarget:s,yamlTarget:a})=>{await n({message:"Deploying it as fnet form."});const{file:c,data:l}=await t({name:s.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(s.version,"patch");s.params.version=g,s.version=g,a.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:s.params.name,version:s.params.version,docs:s.params.docs,configs:s.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`}}),u.data?.error)throw new Error("Error publishing fnet form.")}}(),_=function(){if(It)return Ct;It=1;const e=O,t=n,o=x.default,r=i,s=$,a=U;return Ct=async({setProgress:n,context:i,deploymentProject:c,deploymentProjectTarget:l,yamlTarget:p})=>{await n({message:"Deploying it as fnet flow."});const{file:d,data:f}=await t({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 s({cmd:x});if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new a;_.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.")}}(),D=function(){if(Mt)return Nt;Mt=1;const e=O,t=n,o=x.default,r=i,s=$,a=U;return Nt=async({setProgress:n,context:i,deploymentProject:c,deploymentProjectTarget:l,yamlTarget:p})=>{await n({message:"Deploying it as fnet node."});const{file:d,data:f}=await t({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 s({cmd:x});if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new a;_.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.")}}(),P=function(){if(Ft)return Rt;Ft=1;const e=n,t=J,o=g,r=O;return Rt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as Rust package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},Rt}(),S=function(){if(Bt)return qt;Bt=1;const e=n,t=z,o=g,r=O;return qt=async({atom:n,target:i,onProgress:s,projectDir:a,dependencies:c,context:l,yamlTarget:p})=>{s&&await s({message:"Deploying it as pyip package."});const d=i?.config?await e({name:i.config,dir:a,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:n,params:u,config:d?.config,src:a,dest:a};return{deployer:await t(m)}},qt}();return Lt=async n=>{const{atom:o,packageDependencies:i,context:s,deploymentProjectTarget:a,setProgress:l,deploymentProject:f,yamlTarget:u}=n;if(!0===a.enabled)if("lib"===a.type)await p({...n});else if("red"===a.type)await c({...n});else if("npm"===a.type)await r({...n});else if("gcs"===a.type)await t({...n});else if("gitlab"===a.type)await e({...n});else if("fnet-package"===a.type)await k({...n});else if("fnet-form"===a.type)await j({...n});else if("fnet-node"===a.type)await D({...n});else if("fnet-flow"===a.type)await _({...n});else{let e;if("nextjs"===a.type?e=v:"webos"===a.type?e=w:"electron"===a.type?e=y:"docker"===a.type?e=b:"ios"===a.type?e=d:"macos"===a.type?e=h:"rust"===a.type?e=P:"pyip"===a.type&&(e=S),!e)return;await e({atom:o,target:a,onProgress:l,projectDir:s.projectDir,dependencies:i,context:s,yamlTarget:u}),f.isDirty=!0}},Lt}function Jn(){if(zt)return Jt;zt=1;const e=g;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 Jt={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 zn(){if(an)return sn;an=1;const e=g;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 s=t.workflow.parent;t.context.lib=s.context.libs.find((e=>e.name===i.call)),await n({node:t}),o({node:t})}return sn={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 Wn(){return yn?hn:(yn=1,hn=({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{if(!0===e.module)return;let t=e.parent,n=e.index+1;for(;t.parent&&(!t.blockAutoJumpToParent||!t.blockAutoJumpToSibling);)if(Reflect.has(t,"blockAutoJumpToParent")||Reflect.has(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 Kn(){if(vn)return wn;vn=1;const e=zn();class t{#e;#t;#n;constructor({key:e,npm:t,master:n}){this.#e=e,this.#t=t,this.#n=n}hits({node:e}){return e.definition.hasOwnProperty(this.#e)}async init(t){const{node:n}=t,o=this.#e,r=n.definition,i=typeof r[o];r.call=`npm:${this.#t}`,r.args="object"!==i?{...r.args,[`${this.#n}`]:r[o]}:r[o],delete r[o],console.log(`[npm-block] ${this.#e} --\x3e ${this.#t}`),await e.init(t)}}return wn=e=>new t(e)}function Gn(){if(xn)return bn;xn=1;const e=f,t=u,o=s,r=a,i=m,l=g,p=h,d=function(){if(ee)return Q;ee=1;const e=y,t=w;return Q=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:j}=v,D=function(){if(ne)return te;ne=1;const{Api:e}=b,t=x.default,n=k;return te=class{init({config:o,accessToken:r}){return new Promise(((i,s)=>{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(),s(t)}))}))}}}(),P=Sn(),S=An(),A=Tn(),T=$n(),E=On(),$=Cn(),O=In(),C=Nn(),I=Mn(),N=Rn(),M=Fn(),R=qn(),F=Bn(),q=Ln(),B=En(),L=Un(),{Atom:U}=b,J=W,z=K,Z=n,oe=_,re=G,ie=c,se=V,ae=H,ce=function(){if(Kt)return Wt;Kt=1;const e=G,t=Jn();return Wt={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})))),s=[],a=i.find((e=>"if"===e?.processor)),c=o.definition[a.expression];s.push({name:`${o.name}_if`,definition:c,processor:a}),delete o.definition[a.expression];const l=i.filter((e=>"elseif"===e?.processor));let p=0;for(const e of l){const t=o.definition[e.expression];s.push({name:`${o.name}_elseif_${p++}`,definition:t,processor:e}),delete o.definition[e.expression]}o.definition.switch=[];for(const e of s)o.definition.switch.push({condition:e.processor.statement,...e.definition});if(o.definition?.else){const e=o.definition.else;o.definition.switch.push({default:e}),delete o.definition.else}await t.init(n)}}}(),le=function(){if(Vt)return Gt;Vt=1;const e=g;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 Gt={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(Xt)return Ht;Xt=1;const e=g;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],s={key:await r(n),value:await r(o)};i.assign[e]=s}await n({node:t}),o({node:t})}return Ht={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(Zt)return Yt;Zt=1;const e=g,t=X,n=Y;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 Yt={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=Jn(),ue=en?Qt:(en=1,Qt={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(nn)return tn;nn=1;const e=g;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 tn={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(rn)return on;rn=1;const e=g;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 on={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=zn(),ye=function(){if(ln)return cn;async function e({node:e}){e.context.next=e.childs[0]}return ln=1,cn={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}}(),we=function(){if(dn)return pn;dn=1;const e=g;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 s=t.workflow.parent;t.context.lib=s.context.libs.find((e=>e.name===i.form)),await n({node:t}),o({node:t})}return pn={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}}(),ve=function(){if(un)return fn;un=1;const e=g;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 fn={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}}(),be=function(){if(gn)return mn;gn=1;const e=g;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 mn={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}}(),xe=Wn(),ke=Kn();return bn=class{#o;#r;#i;#s;#a;#c;#l;#p;#d;#f;#u;#m;#g;#h;#y;#w;#v;#b;#x;#k;#j;#_=[];constructor(e){this.#o=new D,this.#r=e,this.#c=[],this.#l=[],this.#p={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#_.push(ke({key:"config",npm:"@fnet/config",master:"name"})),this.#_.push(ke({key:"yaml",npm:"@fnet/yaml",master:"file"})),this.#_.push(ke({key:"prompt",npm:"@fnet/prompt",master:"message"})),this.#_.push(ke({key:"html-link",npm:"@flownet/lib-load-browser-link-url",master:"src"})),this.#_.push(ke({key:"html-script",npm:"@flownet/lib-load-browser-script-url",master:"src"})),this.#_.push(ke({key:"http-server",npm:"@fnet/node-express",master:"server_port"})),this.#_.push(ke({key:"shell",npm:"@fnet/shell",master:"cmd"})),this.#_.push(ke({key:"shell-flow",npm:"@fnet/shell-flow",master:"commands"})),this.#_.push(ke({key:"list-files",npm:"@fnet/list-files",master:"pattern"})),this.#_.push(ke({key:"up-list-files",npm:"@fnet/up-list-files",master:"pattern"})),this.#_.push(ke({key:"auto-conda-env",npm:"@fnet/auto-conda-env",master:"envDir"})),this.#_.push(ke({key:"ollama-chat",npm:"@fnet/ollama-chat",master:"model"})),this.#k={packageDependencies:this.#c,packageDevDependencies:this.#l,setProgress:this.setProgress.bind(this),context:this.#r,Atom:U,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#j={initNode:this.initNode.bind(this),cloneDeep:l,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:xe,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 d(),this.#u=this.#r.buildId||j(24),this.#k.buildId=this.#u,this.#y=this.#r.mode,this.#w=["all","deploy","build","file"].includes(this.#y),this.#v=["all","deploy","build"].includes(this.#y),this.#b=["all","deploy"].includes(this.#y),this.#x=["all","deploy","build","file","bpmn"].includes(this.#y),this.#g=this.#r.protocol,this.#m="BUILD:"+this.#u,this.#h=(await Z({optional:!0,name:"atom",dir:this.#r.projectDir,tags:this.#r.tags}))?.data;try{await this.setProgress({message:"Initialization started."}),await this.initAuth(),await this.initWorkflow(),await P(this.#k),await S(this.#k),await this.transformWorkflow({workflow:this.#s});const e=await this.initNodeTree({workflow:this.#s});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.#c}),await this.resolveNodeTree({root:e}),this.#f=e}catch(e){throw await this._cache_set(this.#m,{status:"FAILED",message:e?.message||e}),e}}async initAuth(){this.#r.id&&(this.#d=await this.#o.init({config:this.#h}),this.#k.atomAccessToken=this.#d)}async initWorkflow(){const e=this.#r.id;this.#i=this.#r.project?.workflowAtom||await U.get({id:e}),this.#s="string"==typeof this.#i.doc.content?(await ie({content:this.#i.doc.content})).parsed:this.#i.doc.content;let t=this.#i.doc.bundleName;t=t||(this.#i.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#i.doc.bundleName=t,this.#i.type=this.#i.type||"workflow",this.#k.atom=this.#i}async initDependencies(){this.#c.push({package:"get-value",version:"^3.0"}),this.#c.push({package:"set-value",version:"^4.1"}),this.#i.doc.features.form_enabled?(this.#c.push({package:"react",version:"^18.2"}),this.#c.push({package:"react-dom",version:"^18.2"}),this.#c.push({package:"@flownet/react-app",version:"^0.1"}),this.#c.push({package:"@flownet/react-app-state",version:"^0.1"})):this.#c.push({package:"@fnet/args",version:"^0.1"}),this.#c.push({package:"chalk",version:"^4"})}#D(n){console.log("filePath",n),e.statSync(n).isDirectory()?(e.readdirSync(n).forEach((e=>{const o=t.join(n,e);this.#D(o)})),e.rmSync(n)):e.unlinkSync(n)}#P(n,o){const r=e.existsSync(n),i=r&&e.statSync(n);r&&i.isDirectory()?(e.mkdirSync(o,{recursive:!0}),e.readdirSync(n).forEach((e=>{this.#P(t.join(n,e),t.join(o,e))}))):e.copyFileSync(n,o)}async initWorkflowDir(){this.setProgress({message:"Initializing library directory."});const n=this.#r.projectDir,o=this.#r.coreDir;this.setProgress({message:"Cleaning project directory."});const r=ae({dir:n,ignore:[".cache","node_modules",".conda"],absolute:!0});for(const t of r)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."}),e.existsSync(n)||e.mkdirSync(n,{recursive:!0});const i=t.join(n,"src");e.existsSync(i)||e.mkdirSync(i,{recursive:!0});const s=t.join(i,"core");this.#P(o,s);const a=t.join(i,"default","blocks");e.existsSync(a)||e.mkdirSync(a,{recursive:!0})}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#r.templateDir;this.#a=i.configure(e,{watch:!1,dev:!0}),this.#k.njEnv=this.#a}transformWorkflow({workflow:e}){for(const t of Object.values(e))t.steps=t.steps||[],t.steps=t.steps.map((e=>this.transformStep({step:e})))}transformStep({step:e}){if(Array.isArray(e))throw new Error("Step must be an object.");const[t,n]=Object.entries(e)[0];if(n.hasOwnProperty("onerror")){const{onerror:o,...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.#i}};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.#j,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(this.#_.find((e=>e.hits(t)))){const e=this.#_.find((e=>e.hits(t)));await e.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 ye.hits(t))await ye.init(t);else{if(!await be.hits(t))throw new Error("Undefined step type.");await be.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:n}){const o=t.join(e.parent.indexKey,e.name);e.indexKey=o,n[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=j(24);for await(const t of e.childs)await this.initNodeIndex({node:t,index:n})}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:n}){const o=J({url:e});if(!o)throw new Error(`Invalid package name: ${e}`);if(o.protocol||(o.protocol=this.#g),"ac:"===o.protocol){const t=o.pathname.split("/");if(1===t.length)return await U.first({where:{name:e,parent_id:this.#h.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await U.first({where:{name:t[0],parent_id:this.#h.env.ATOM_LIBRARIES_ID,type:"folder"}});return await U.first({where:{name:t[1],parent_id:e.id,type:"workflow.lib"}})}}else{if("local:"===o.protocol){const e=t.resolve(this.#r.projectSrcDir,`${o.pathname}.js`),n=[],r=await oe({file:e,recursive:!0}),i=!0===this.#i.doc.features.all_parsed_imports?r.all:r.required;for await(const e of i){if("npm"!==e.type)continue;if(n.find((t=>t.package===e.package)))continue;const t=await B({name:e.package,projectDir:this.#r.projectDir,setProgress:this.#k.setProgress});n.push({package:e.package,subpath:e.subpath,version:t.minorRange,type:"npm"})}return{name:o.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:n},protocol:o.protocol}}if("npm:"===o.protocol){const e=await B({name:o.pathname,projectDir:this.#r.projectDir,setProgress:this.#k.setProgress});return{name:o.pathname,doc:{type:"workflow.lib",subtype:"flow"===n?.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.#j,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:n}){await this.setProgress({message:"Creating external lib files."}),this.#i.typesDir="./types";const o=n.context.libs.filter((e=>"atom"===e.type));for(let n=0;n<o.length;n++){const r=o[n].atom,i=this.#r.projectDir;if("local:"===r.protocol){const n=t.resolve(this.#r.projectSrcDir,`${r.fileName||r.name}.js`),o=t.relative(`${this.#r.projectDir}/src/default/blocks`,n);if(!e.existsSync(n)){e.mkdirSync(t.dirname(n),{recursive:!0});let o="export default async (args)=>{\n";o+="}",e.writeFileSync(n,o,"utf8")}r.relativePath=o.split(t.sep).join("/"),this.#i.typesDir=`./types/${t.basename(i)}/src`}else if("npm:"===r.protocol)r.relativePath=r.name;else{const n=`${i}/src/libs/${r.id}.js`,o=r.doc.contents?.find((e=>"esm"===e.format))||r.doc;e.writeFileSync(t.normalize(n),o.content,"utf8")}}}async createEngine({root:n}){await this.setProgress({message:"Creating engine file."});const o=this.#r.templateDir,r=i.compile(e.readFileSync(t.resolve(o,"src/default/engine.js.njk"),"utf8"),this.#a).render({...n,ui:{package:"@flownet/react-app"}}),s=this.#r.projectDir,a=t.resolve(s,"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:n}){const o=this.#r.templateDir,r=i.compile(e.readFileSync(t.resolve(o,"src/default/workflow.js.njk"),"utf8"),this.#a).render(n),s=this.#r.projectDir,a=t.resolve(s,`src/default/${n.codeKey}.js`);e.writeFileSync(a,r,"utf8");for await(const e of n.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:n}){let o=this.#p[n.type];if(o)return o;const r=this.#r.templateDir;return o=i.compile(e.readFileSync(t.resolve(r,`src/default/blocks/${n.type}.js.njk`),"utf8"),this.#a),this.#p[n.type]=o,o}createStepFile({node:n}){const o=this.#r.projectDir,r=`${n.codeKey}.js`,i=t.resolve(o,`src/default/blocks/${r}`);e.writeFileSync(i,n.context.render,"utf8"),n.context.fileName=r,n.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++){const o=t[n],r=await re({expression:o});if(r)if("e"===r.processor){const t=e[o].replace(/(\r\n|\n|\r)/g,"");e[r.statement]=`$::${t}::`,delete e[o]}else e[o]=await this.transformValue(e[o]);else e[o]=await this.transformValue(e[o])}}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 n="flow.yaml",r=`Creating ${n}`;await this.setProgress({message:r});const{content:s,...a}=this.#i.doc,c={content:o.stringify(a)},l=this.#r.templateDir,p=i.compile(e.readFileSync(t.resolve(l,`${n}.njk`),"utf8"),this.#a).render(c),d=this.#r.projectDir,f=t.resolve(d,`${n}`);e.writeFileSync(f,p,"utf8")}async createProjectMainYaml(){const n="flow.main.yaml",r=`Creating ${n}`;await this.setProgress({message:r});const s={content:o.stringify(this.#s)},a=this.#r.templateDir,c=i.compile(e.readFileSync(t.resolve(a,`${n}.njk`),"utf8"),this.#a).render(s),l=this.#r.projectDir,p=t.resolve(l,`${n}`);e.writeFileSync(p,c,"utf8")}async runPrettifier(){const e=this.#r.projectDir,n=r.exec("prettier --write .",{cwd:t.resolve(e,"src")});if(0!==n.code)throw new Error(n.stderr)}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#r.project?.devops){const e=[this.#r.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.#i.id){const e=await U.list({type:"workflow.deploy",parent_id:this.#i.id});for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&(n=await U.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 L({...this.#k,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:i})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#r.id)return;let o=await U.first({name:t.params.name,parent_id:this.#h.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:n.version}),await U.update(o,{id:o.id})):o=await U.create({parent_id:this.#h.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(se.blue(t)),await this._cache_set(this.#m,{status:"IN_PROGRESS",message:t})}async build(){if(this.#x&&!this.#w)return await this.createNetwork();try{const n=this.#x?await z({root:this.#f}):void 0;if(this.#w){if(await this.initWorkflowDir(),await this.initNunjucks(),this.#x){const o=this.#r.project?.projectDir||this.#r.projectDir;e.writeFileSync(t.resolve(o,"./fnet/flow.bpmn"),n.diagramXML,"utf8")}await this.createAtomLibFiles({root:this.#f}),await this.createEngine({root:this.#f}),await this.createNodeTree({root:this.#f}),await this.createProjectYaml(),await this.createProjectMainYaml(),await N(this.#k),await I(this.#k),await C(this.#k),await O(this.#k),await E(this.#k),await A(this.#k),await $(this.#k),await T(this.#k),await M(this.#k),await R(this.#k),this.#v&&(await F(this.#k),await q(this.#k),this.#b&&await this.deploy())}await this._cache_set(this.#m,{status:"COMPLETED",data:{network:n}})}catch(e){throw await this._cache_set(this.#m,{status:"FAILED",message:e.message||e}),e}}async createNetwork(){try{const e=await z({root:this.#f});await this._cache_set(this.#m,{status:"COMPLETED",data:{...e}})}catch(e){throw await this._cache_set(this.#m,{status:"FAILED",message:e.message||e}),e}}}}var Vn=Z(function(){if(_n)return Dn;_n=1;const m=process.cwd(),{spawn:g}=e,h=t;n({name:["redis"],dir:m,optional:!0});const y=o,w=r,v=i,b=s,x=a,k=c,j=n,_=l,D=p,P=d,S=Gn(),A=function(){if(jn)return kn;jn=1;const e=f,t=u;return kn=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}),T="win32"===process.platform?";":":";process.env.PATH=`${y.join(A,"/.bin")}${T}${process.env.PATH}`;let E=w(process.argv.slice(2)).command("create","Initialize flow node project",(e=>e.option("name",{type:"string"}).option("vscode",{type:"boolean",default:!0,alias:"vs"}).option("runtime",{type:"string",default:"node",choices:["node"]})),(async e=>{try{const t=y.resolve(A,"./@fnet/cli-project-flow/dist/template/project"),n=y.resolve(m,e.name);v.existsSync(n)||v.mkdirSync(n),await P({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let o=x.exec("fnet build",{cwd:n});if(0!==o.code)throw new Error("Failed to build project.");if(x.which("git")&&(o=x.exec("git init --initial-branch=main",{cwd:n}),0!==o.code))throw new Error("Failed to initialize git.");if(x.which("code")&&e.vscode&&(o=x.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=y.resolve(A,"@fnet/cli-project-flow/dist/template/project"),n=process.cwd(),o=await O(e);if(e.update){if(await P({dir:t,outDir:n,context:{name:o.project.projectFileParsed.name,runtime:"node"},copyUnmatchedAlso:!0}),0!==x.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 O(e),n=new S(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 O({...e,mode:"all"}),n=new S(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 O({...e,mode:"file"}),n=new S(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 $(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 O(e),{projectDir:r}=t,i=process.argv.slice(3);g(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 O(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:y.resolve(m,`./.output/${e.id}`),templateDir:y.resolve(A,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:y.resolve(A,"./@fnet/cli-project-common/dist/template/default"),coreDir:y.resolve(A,"./@fnet/cli-project-flow/dist/template/core"),tags:e.ftag}}{const t=await async function({tags:e}){const t=y.resolve(m,"flow.yaml");if(!v.existsSync(t))throw new Error("flow.yaml file not found in current directory.");const{raw:n,parsed:o}=await k({file:t,tags:e}),r=y.dirname(t),i=o.main||"flow.main.yaml";let s=y.resolve(r,i);if(!v.existsSync(s)&&(s=y.resolve(r,i+".yaml"),!v.existsSync(s)))throw new Error(`${i} file not found in ${s}.`);const{raw:a,parsed:c}=await k({file:s,tags:e}),l={workflowAtom:{doc:{...o,"content-type":"yaml",content:a}},projectDir:r,projectFilePath:t,projectFileContent:n,projectFileParsed:o,projectMainFilePath:s,projectMainFileContent:a,projectMainFileParsed:c};let p=y.resolve(r,"fnet/targets.yaml");if(!v.existsSync(p)&&(p=y.resolve(r,"flow.devops.yaml"),v.existsSync(p))){const e=y.resolve(r,"fnet");v.existsSync(e)||v.mkdirSync(e),v.copyFileSync(p,y.resolve(r,"fnet/targets.yaml")),v.unlinkSync(p)}if(v.existsSync(p)){const{raw:t,parsed:n}=await k({file:p,tags:e}),o=b.parseDocument(t);l.devops={filePath:p,fileContent:t,yamlDocument:o,doc:{...n},type:"workflow.deploy",save:async()=>{v.writeFileSync(l.devops.filePath,o.toString())}}}const d=y.resolve(r,"readme.md");if(v.existsSync(d)){const e=v.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:y.resolve(A,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:y.resolve(A,"./@fnet/cli-project-common/dist/template/default"),coreDir:y.resolve(A,"./@fnet/cli-project-flow/dist/template/core"),projectDir:y.resolve(t.projectDir,"./.workspace"),projectSrcDir:y.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return E=E.command("input [name]","Create or modify an input config file",(e=>e.positional("name",{type:"string",demandOption:!1}).help(!1).version(!1)),(async e=>{try{const t=await O(e),{project:n}=t,{projectDir:o,projectFileParsed:r}=n,i=r.input;if(!i)throw new Error("Config schema not found in project file.");if(!Reflect.has(e,"name")){const{inputName:t}=await h({type:"input",name:"inputName",message:"Input name:",initial:"dev"});e.name=t}const s=y.resolve(o,".fnet");v.existsSync(s)||v.mkdirSync(s);const a=y.resolve(s,`${e.name}.fnet`),c=v.existsSync(a),l=await _({schema:i,format:"yaml",ref:c?a:void 0});v.writeFileSync(a,l)}catch(e){console.error(e.message),process.exit(1)}})),E=$(E,{bin:"npm"}),E=$(E,{bin:"node"}),E=$(E,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),E=$(E,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),E=$(E,{name:"app",bin:"npm",preArgs:["run","app","--"]}),E=$(E,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),E=$(E,{bin:"npx"}),E=$(E,{bin:"cdk"}),E=$(E,{bin:"aws"}),E=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 O(e),{projectDir:o}=t,r=e.config,i=await j({name:r,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),s=i?.data?.env||void 0,a=e.command,c=process.argv.slice(5);g(a,[...n,...c],{cwd:o,stdio:"inherit",shell:!0,env:{...process.env,...s}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(E,{name:"with"}),E=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 O(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 D({commands:i})}catch(e){console.error(e.message),process.exit(1)}}))}(E,{name:"run"}),E.demandCommand(1,"You need at least one command before moving on").help().argv,Dn}());module.exports=Vn;
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var e,t,
|
|
2
|
+
"use strict";var e,t,s=require("@fnet/config"),i=require("redis"),r=require("@flownet/lib-is-redis-online"),n=require("express"),o=require("helmet"),l=require("cors"),c=require("path"),d=require("shelljs"),a=require("nanoid"),u=require("request-ip"),h=require("express-session"),p=require("keycloak-connect"),f=require("qs");function w(){if(t)return e;t=1;const s=i,n=r;return e=async()=>{if(!await n({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=s.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e}}var _,b,m,y,k={name:"@fnet/cli",version:"0.43.0",files:["dist"],scripts:{start:"node src/index.js",build:"rollup --config --bundleConfigAsCjs",deploy:"npm install && npm run build && npm publish --access public",watch:"rollup --config --watch --sourcemap --bundleConfigAsCjs --environment DEVELOPMENT"},repository:{type:"git",url:"git+https://gitlab.com/fnetai/cli.git"},license:"MIT",dependencies:{"@flownet/lib-atom-api-js":"^0.1.10","@flownet/lib-bpmn-from-flow":"^0.1.8","@flownet/lib-is-redis-online":"^0.1.13","@flownet/lib-list-npm-versions":"^0.1.31","@flownet/lib-parse-imports-js":"^0.3.1","@flownet/lib-parse-node-url":"^0.1.16","@flownet/lib-pick-npm-versions":"^0.1.12","@flownet/lib-render-templates-dir":"^0.1.12","@flownet/lib-to-docker":"^0.3.1","@flownet/lib-to-electron":"^0.3.1","@flownet/lib-to-gitlab":"^0.1.21","@flownet/lib-to-ios-app":"^0.3.1","@flownet/lib-to-macos-app":"^0.3.1","@flownet/lib-to-nextjs":"^0.3.1","@flownet/lib-to-webos":"^0.3.1","@fnet/cli-project-common":"^0.1.26","@fnet/cli-project-flow":"^0.1.9","@fnet/cli-project-node":"^0.1.12","@fnet/config":"^0.2.8","@fnet/dir-zipper":"^0.1.5","@fnet/expression":"^0.1.16","@fnet/files-to-gcs":"^0.3.6","@fnet/object-from-schema":"^0.1.2","@fnet/shell":"^0.1.13","@fnet/yaml":"^0.1.12","@fnet/yargs-options-from-schema":"^0.1.1","@node-red/util":"^4.0.2",axios:"^1.5.0",chalk:"^4.1.2",cors:"^2.8.5",express:"^4.18.2","express-session":"^1.17.3","form-data":"^4.0.0","get-value":"^3.0.1",helmet:"^7.1.0",isobject:"^4.0.0","js-yaml":"^4.1.0","keycloak-connect":"^25.0.5","lodash.clonedeep":"^4.5.0","lodash.merge":"^4.6.2","lodash.omit":"^4.5.0","lodash.pick":"^3.1.0",nanoid:"^3.3.6",nunjucks:"^3.2.4",prettier:"^3.0.3",qs:"^6.11.2",redis:"^4.6.10","request-ip":"^3.3.0",semver:"^7.5.4",serve:"^14.2.3","set-value":"^4.1.0",shelljs:"^0.8.5",typescript:"^5.2.2",yargs:"^17.7.2"},bin:{fnet:"dist/builder/wf-cli.js",flib:"dist/builder/lib-cli.js",fsrv:"dist/index.js",fnode:"dist/builder/lib-cli.js"},devDependencies:{"@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-json":"^6.0.0","@rollup/plugin-node-resolve":"^15.2.1","@rollup/plugin-replace":"^5.0.2","@rollup/plugin-terser":"^0.4.3",rollup:"^4.9.6"}};const g=process.cwd(),j=s;(async function(){await j({name:["server","redis"],dir:g,optional:!0});const e=await w()();if(!e)throw new Error("Redis is offline.");const t=k,s=n,i=o,r=l,v=function(){if(b)return _;b=1;const e=n,t=c,s=d,{nanoid:i}=a;return _=class{#e;constructor(e){this._keycloak=e.keycloak,this._router=this._initRouter(),this._redis_client=e.redisClient,this._expire_ttl=3600,this._expire_ttl_short=300,this.#e=e.wdir}_initRouter(){let t=e.Router();return t.post("/workflow/builder/create",this._buildHandler.bind(this)),t.post("/workflow/builder/status",this._statusHandler.bind(this)),t.post("/workflow/builder/network",this._networkHandler.bind(this)),t}join(e,t){t.use(e,this._router)}async _cache_set(e,t,s){await this._redis_client.SETEX(e,s||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async _cache_get(e){const t=await this._redis_client.GET(e).catch(console.error);return JSON.parse(t)}_buildHandler(e,t){this._build({...e.body}).then((e=>{t.status(200).send(e)})).catch((e=>{t.status(500).send()}))}_networkHandler(e,t){this._network({...e.body}).then((e=>{t.status(200).send(e)})).catch((e=>{t.status(500).send()}))}_statusHandler(e,t){try{const s=e.body.id;if(!s)throw new Error("Build Id is not defined.");const i="BUILD:"+s;this._cache_get(i).then((e=>{t.send(e)})).catch((e=>{t.status(500).send()}))}catch(e){t.status(500).send()}}async _build(e){const r=e.id;if(!r)throw new Error("Workflow Id is not defined.");const n=i(24),o=`node ${t.resolve(__dirname,"builder/wf-cli.js")} build --id=${r} --buildId=${n} --mode=all`;return s.exec(o,{async:!0,cwd:this.#e}),{id:n}}async _network(e){const r=e.id;if(!r)throw new Error("Workflow Id is not defined.");const n=i(24),o=`node ${t.resolve(__dirname,"builder/wf-cli.js")} build --id=${r} --buildId=${n} --mode=bpmn`;s.exec(o,{cwd:this.#e});const l="BUILD:"+n;return await this._cache_get(l)}}}(),E=function(){if(y)return m;y=1;const e=n,t=c,s=d,{nanoid:i}=a;return m=class{#e;constructor(e){this._keycloak=e.keycloak,this._router=this._initRouter(),this._redis_client=e.redisClient,this._expire_ttl=3600,this._expire_ttl_short=300,this.#e=e.wdir}_initRouter(){let t=e.Router();return t.post("/library/builder/create",this._buildHandler.bind(this)),t.post("/library/builder/status",this._statusHandler.bind(this)),t}join(e,t){t.use(e,this._router)}async _cache_set(e,t,s){await this._redis_client.SETEX(e,s||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async _cache_get(e){const t=await this._redis_client.GET(e).catch(console.error);return JSON.parse(t)}_buildHandler(e,t){this._build({...e.body}).then((e=>{t.status(200).send(e)})).catch((e=>{t.status(500).send()}))}_statusHandler(e,t){try{const s=e.body.id;if(!s)throw new Error("Build Id is not defined.");const i="BUILD:"+s;this._cache_get(i).then((e=>{t.send(e)})).catch((e=>{t.status(500).send()}))}catch(e){t.status(500).send()}}async _build(e){const r=e.id;if(!r)throw new Error("Library Id is not defined.");const n=i(24),o=`node ${t.resolve(__dirname,"builder/lib-cli.js")} build --id=${r} --buildId=${n} --mode=all}`;return s.exec(o,{async:!0,cwd:this.#e}),{id:n}}}}(),x=u,q=h,S=new(0,q.MemoryStore),I=new p({store:S}),R=s(),T=f;R.set("query parser",(function(e){return T.parse(e,{depth:12})})),R.use(q({secret:process.env.SESSION_SECRET,resave:!1,saveUninitialized:!0,store:S})),R.use(r()),R.use(i()),R.use(s.json({limit:"1024kb"})),R.get("/healthz",(function(e,t){t.sendStatus(200)})),R.use(x.mw()),R.use(I.middleware()),new v({keycloak:I,wdir:g,redisClient:e}).join("/v1",R),new E({keycloak:I,wdir:g,redisClient:e}).join("/v1",R),R.listen(process.env.HTTP_PORT||8080),console.log(`[${t.version}] ${t.name} started.`)})().catch((e=>{console.error(e.message),process.exit(1)})),module.exports={};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fnet/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.80.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist"
|
|
6
6
|
],
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@flownet/lib-to-webos": "^0.3.1",
|
|
33
33
|
"@fnet/auto-conda-env": "^0.1.23",
|
|
34
34
|
"@fnet/cli-project-common": "^0.3.1",
|
|
35
|
-
"@fnet/cli-project-flow": "^0.
|
|
35
|
+
"@fnet/cli-project-flow": "^0.3.1",
|
|
36
36
|
"@fnet/cli-project-node": "^0.3.19",
|
|
37
37
|
"@fnet/cli-project-schemas": "^0.1.1",
|
|
38
38
|
"@fnet/config": "^0.2.8",
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
$schema: "https://json-schema.org/draft/2020-12/schema"
|
|
2
|
-
type: object
|
|
3
|
-
properties:
|
|
4
|
-
env:
|
|
5
|
-
type: object
|
|
6
|
-
description: "Environment configuration"
|
|
7
|
-
properties:
|
|
8
|
-
NPM_TOKEN:
|
|
9
|
-
type: string
|
|
10
|
-
description: "NPM token"
|
|
11
|
-
required:
|
|
12
|
-
- NPM_TOKEN
|
|
13
|
-
required:
|
|
14
|
-
- env
|
package/dist/schemas/to-npm.yaml
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
$schema: "https://json-schema.org/draft/2020-12/schema"
|
|
2
|
-
type: object
|
|
3
|
-
properties:
|
|
4
|
-
env:
|
|
5
|
-
type: object
|
|
6
|
-
description: "Environment configuration"
|
|
7
|
-
properties:
|
|
8
|
-
NPM_TOKEN:
|
|
9
|
-
type: string
|
|
10
|
-
description: "NPM token"
|
|
11
|
-
required:
|
|
12
|
-
- NPM_TOKEN
|
|
13
|
-
required:
|
|
14
|
-
- env
|