@fnet/cli 0.96.1 → 0.98.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e=require("child_process"),t=require("@fnet/prompt"),n=require("node:fs"),r=require("node:path"),a=require("@fnet/config"),o=require("path"),i=require("yargs/yargs"),s=require("fs"),c=require("yaml"),p=require("@fnet/shelljs"),l=require("os"),d=require("@fnet/yaml"),u=require("@fnet/object-from-schema"),m=require("@fnet/shell-flow"),f=require("@flownet/lib-render-templates-dir"),g=require("node:os"),y=require("nunjucks"),h=require("redis"),w=require("@flownet/lib-is-redis-online"),v=require("nanoid"),b=require("@flownet/lib-atom-api-js"),j=require("axios"),_=require("qs"),D=require("lodash.merge"),k=require("@flownet/lib-parse-imports-js"),x=require("@fnet/npm-list-versions"),P=require("@fnet/npm-pick-versions"),S=require("object-hash"),A=require("ajv/dist/2020"),E=require("ajv/dist/standalone"),$=require("ajv-formats"),T=require("@fnet/auto-conda-env"),I=require("semver"),O=require("@fnet/up-list-files"),C=require("@node-red/util"),M=require("@flownet/lib-to-ios-app"),R=require("lodash.clonedeep"),F=require("@flownet/lib-to-macos-app"),q=require("@flownet/lib-to-electron"),N=require("@flownet/lib-to-webos"),L=require("@flownet/lib-to-nextjs"),U=require("@flownet/lib-to-docker"),B=require("form-data"),z=require("@fnet/to-rust"),J=require("@fnet/to-pyip"),H=require("@flownet/lib-parse-node-url"),W=require("@fnet/list-files"),K=require("chalk");function G(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function X(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})})),n}var Y,V,Z,Q,ee,te,ne,re,ae,oe,ie,se,ce,pe,le,de,ue,me,fe,ge,ye,he,we,ve,be,je,_e,De,ke,xe,Pe,Se,Ae,Ee,$e,Te,Ie,Oe,Ce,Me,Re,Fe,qe,Ne,Le,Ue,Be,ze,Je,He,We,Ke,Ge,Xe,Ye,Ve,Ze,Qe,et,tt,nt,rt,at,ot,it,st,ct,pt,lt,dt,ut,mt,ft,gt,yt,ht,wt,vt,bt,jt,_t,Dt,kt,xt,Pt,St,At,Et,$t,Tt,It,Ot,Ct,Mt,Rt,Ft,qt,Nt,Lt,Ut,Bt,zt,Jt,Ht,Wt,Kt,Gt,Xt,Yt,Vt,Zt,Qt={},en=X(Object.freeze({__proto__:null,default:e=>{const t=process.env.PATH||"",a="win32"===process.platform?(process.env.PATHEXT||".EXE;.CMD;.BAT;.COM").split(";"):[""],o=t.split(r.delimiter);for(const t of o)for(const o of a){const a=r.join(t,"win32"===process.platform?e+o:e);if(n.existsSync(a))return a}return null}}));function tn(){if(te)return ee;te=1;const e=D;return ee=({feature:t,features:n,packageDevDependencies:r})=>{const{name:a,packages:o,options:i,extraCheck:s,explicit:c}=t,p=`${a}_enabled`,l=n.rollup_output||{},d=Object.keys(l);let u=i||{};const m=n[a]?.options;m&&(u=e(u,m));const f=!n[a]||!1===n[a]?.enabled;d.forEach((e=>{const t=n.rollup_output[e];if(t){if(Reflect.has(t,a)){if(f||!t[a]||!1===t[a]?.enabled)return void delete t[a];!0===t[a]&&(t[a]={enabled:!0,options:u})}else{if(f||c||!1===n[p])return;t[a]={enabled:!0}}t[a]=t[a]||{},t[a].options={...u,...t[a].options}}}));let g=d.some((e=>!0===n.rollup_output[e][a]?.enabled));s&&(g=s()&&g),n[p]=g,g&&o.forEach((e=>r.push({package:e[0],version:e[1]})))}}function nn(){if(Ee)return Ae;Ee=1;const e=D,t=n,a=r,o=k,i=function(){if(re)return ne;re=1;const e=tn();return ne=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"workbox",packages:[["rollup-plugin-workbox","^8"]],options:{generate:{swDest:"dist/app/esm/sw.js",globDirectory:"dist/app/esm",globPatterns:["**/*.{html,js,css,png,jpg}"],skipWaiting:!0,clientsClaim:!0}},explicit:!0},features:a,packageDevDependencies:r})},ne}(),s=function(){if(oe)return ae;oe=1;const e=tn();return ae=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:a,packageDevDependencies:r})},ae}(),c=function(){if(se)return ie;se=1;const e=tn();return ie=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:a,packageDevDependencies:r})},ie}(),p=function(){if(pe)return ce;pe=1;const e=tn();return ce=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:a,packageDevDependencies:r})},ce}(),l=function(){if(de)return le;de=1;const e=tn();return le=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:a,packageDevDependencies:r})},le}(),d=function(){if(me)return ue;me=1;const e=tn();return ue=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:a,packageDevDependencies:r})},ue}(),u=function(){if(ge)return fe;ge=1;const e=tn();return fe=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:a,packageDevDependencies:r})},fe}(),m=function(){if(he)return ye;he=1;const e=tn();return ye=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:a,packageDevDependencies:r})},ye}(),f=function(){if(ve)return we;ve=1;const e=tn();return we=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:a,packageDevDependencies:r})},we}(),g=function(){if(je)return be;je=1;const e=tn();return be=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:a,packageDevDependencies:r})},be}(),y=function(){if(De)return _e;De=1;const e=tn();return _e=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:a,packageDevDependencies:r})},_e}(),h=function(){if(xe)return ke;xe=1;const e=tn();return ke=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features,o={};!0===a.app?.enabled&&(o.targets=o.targets||[],o.targets.push({src:"./src/app/index.html",dest:a.app.dir}),Reflect.has(a.app,"copy")||Reflect.has(a,"copy")||(a.copy=!0)),e({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:o},features:a,packageDevDependencies:r})},ke}(),w=function(){if(Se)return Pe;Se=1;const e=tn();return Pe=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features,o=a.css&&!1!==a.css.enabled;let i=[];o&&(i.push(["rollup-plugin-postcss","^4"]),i.push(["sass","^1.66"]),(a.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":i.push(["postcss-import","^15"]);break;case"postcss-url":i.push(["postcss-url","^10"]);break;case"postcss-preset-env":i.push(["postcss-preset-env","^9"]);break;case"autoprefixer":i.push(["autoprefixer","^10"]);break;case"cssnano":i.push(["cssnano","^6"])}}))),e({feature:{name:"css",packages:i},features:a,packageDevDependencies:r})},Pe}();function v({dir:e,name:n="index"}){let r=a.resolve(e,`./${n}.tsx`);if(t.existsSync(r)||(r=a.resolve(e,`./${n}.ts`)),t.existsSync(r)||(r=a.resolve(e,`./${n}.jsx`)),t.existsSync(r)||(r=a.resolve(e,`./${n}.js`)),!t.existsSync(r))return{};const o=r,i=a.extname(r);return{file:o,ext:i,ts:".ts"===i||".tsx"===i,name:n}}return Ae=async t=>{const{atom:n,context:r,setProgress:b}=t;b("Initializing features..."),n.doc.features=n.doc.features||{};const j=n.doc.features;j.project=j.project||{},j.project.format=j.project.format||j.project_format||"esm",j.project_format=j.project.format,j.dts_enabled=!0===j.dts||void 0!==j.dts&&!1!==j.dts;const _=a.resolve(r.project.projectDir),D=v({dir:a.resolve(_,"./app")});if(D.file){b("Parsing app entry imports...");let e=await o({file:D.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));j.app_uses_jsx=t,j.app_has_entry=!0,e=await o({file:D.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),j.app_entry_uses_jsx=t,j.app_entry_is_ts=D.ts,j.app_entry_ext=D.ext}const k=v({dir:a.resolve(_,"./cli")});if(k.file){b("Parsing cli entry imports...");let e=await o({file:k.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));j.cli_uses_jsx=t,j.cli_has_entry=!0,e=await o({file:k.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),j.cli_entry_uses_jsx=t,j.cli_entry_is_ts=k.ts,j.cli_entry_ext=k.ext}if("workflow.lib"===n.type){const e=v({dir:a.resolve(_,"./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));j.src_uses_jsx=n,j.src_has_entry=!0,t=await o({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),j.src_entry_uses_jsx=n,j.src_entry_is_ts=e.ts,j.src_entry_ext=e.ext}}const x=Reflect.has(j,"app_entry_uses_jsx")?!0===j.app_entry_uses_jsx:!0===j.src_entry_uses_jsx,P=Reflect.has(j,"cli_entry_uses_jsx")?!0===j.cli_entry_uses_jsx:!0===j.src_entry_uses_jsx;j.form_enabled=x||P||!0===j.form||!0===j.form?.enabled,j.multiple_enabled=j.multiple_enabled||!0===j.multiple||!0===j.multiple?.enabled,!1===j.app?j.app={enabled:!1}:!0===j.app?j.app={enabled:!0,extend:!0===j.app_has_entry,export:!0,react:x}:j.app={enabled:!0,extend:!0===j.app_has_entry,export:!0,react:x,...j.app||{}},j.app.enabled=!0===j.app.enabled&&(!0===n.doc.features.form_enabled||!0===j.app.extend||!0===j.app.enabled),j.app.format=j.app.format||"esm",j.app.folder=j.app.folder||j.app.format||"default",!1===j.cli?j.cli={enabled:!1}:!0===j.cli?j.cli={enabled:!0,extend:!0===j.cli_has_entry,export:!0,react:P}:j.cli={enabled:!0,extend:!0===j.cli_has_entry,export:!0,react:P,...j.cli||{}},j.cli.enabled=!0===j.cli.enabled&&(!1===n.doc.features.form_enabled||!0===j.cli.extend||!0===j.cli.enabled),j.cli.format=j.cli.format||"esm",j.cli.folder=j.cli.folder||j.cli.folder||"esm",j.cli.node_options=j.cli.node?.options||j.cli.node_options||"",j.json=j.cli.enabled||j.json;const S={cjs:{format:"cjs",context:j.form_enabled?"window":"global",babel:!0===j.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==j.cjs,copy:!1},esm:{format:"esm",context:j.form_enabled?"window":"global",babel:!0===j.src_uses_jsx||!1,browser:!1,replace:!0,terser:!1,enabled:!1!==j.esm,copy:!0},iife:{format:"iife",context:j.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!0===j.iife,terser:!0,copy:!1}};!0===j.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===j.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===j.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===j.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===j.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===j.app.enabled&&(j.app.dir=`./dist/app/${j.app.folder}`,S.app={format:j.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:j.app.dir,terser:!0,output_exports:!1===j.app.export?"none":"auto",browsersync:!0}),!0===j.cli.enabled&&(j.cli.dir=`./dist/cli/${j.cli.folder}`,S.cli={format:j.cli.format,context:"global",babel:!0===j.src_uses_jsx||!0===j.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:j.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===j.cli.export?"none":"auto"});const A={server:".",startPath:`${a.normalize(j.app.dir||".")}`,files:[a.normalize("./dist/**/*")],cors:!0,open:!1};j.babel_options=e({targets:{browsers:"last 9 versions, not dead",node:"18"}},j.babel_options||j.babel?.options),j.browsersync_options=e(A,j.browsersync_options||j.browsersync?.options||{}),j.replace_options=e({},j.replace_options||j.replace?.options||{}),Reflect.has(j.browsersync_options,"proxy")&&delete j.browsersync_options.server,j.rollup=j.rollup||{},j.rollup_output=e(S,j.rollup_output||j.rollup?.output||{}),j.preact_enabled=!0===j.preact||j.preact&&!1!==j.preact?.enabled;let E=Object.keys(S);for(const t of E){const n=S[t];n&&(!1!==j.rollup[t]?(n.babel_options=n.babel_options||j.babel_options,n.browsersync_options=e(j.browsersync_options,n.browsersync_options),n.replace_options=e(j.replace_options,n.replace_options),j.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"),(j.form_enabled||j.babel)&&(n.babel=!0)):delete j.rollup_output[t])}E=Object.keys(j.rollup_output),j.babel_enabled=E.some((e=>!0===j.rollup_output[e].babel)),j.browser_enabled=E.some((e=>!0===j.rollup_output[e].babel)),j.browsersync_enabled=!1!==j.browsersync&&E.some((e=>!0===j.rollup_output[e].browsersync)),j.browsersync_enabled=j.browsersync_enabled&&j.app.enabled,j.dependency_auto_enabled=!1!==j.dependency_auto&&!1!==j.dependency_auto?.enabled,j.npm_install_flags=j.npm_install_flags||"",j.react_version=j.react_version||j.react?.version||18,w(t),h(t),y(t),g(t),f(t),u(t),m(t),d(t),l(t),p(t),c(t),i(t),s(t)},Ae}function rn(){if(Oe)return Ie;Oe=1;const e=x;return Ie=async({atom:t,packageDependencies:n,packageDevDependencies:r,setProgress:a})=>{a("Initializing dependencies");const o=t.doc.dependencies||[];if(o.filter((e=>!e.dev)).forEach((e=>n.push(e))),o.filter((e=>e.dev)).forEach((e=>r.push(e))),"workflow"===t.type&&(n.push({package:"get-value",version:"^3"}),n.push({package:"set-value",version:"^4"})),t.doc.features.form_enabled&&t.doc.features.dependency_auto_enabled){let r="^18.2";a("Fetching React versions");r=`^${(await e({name:"react",groupBy:{major:!0}})).find((e=>e[0]===t.doc.features.react_version.toString()))[0]}`,n.push({package:"react",version:r}),n.push({package:"react-dom",version:r}),"workflow"===t.type&&(n.push({package:"@fnet/react-app",version:"^0.1"}),n.push({package:"@fnet/react-app-state",version:"^0.1"}))}t.doc.features.preact_enabled&&n.push({package:"preact",version:"^10"}),!0===t.doc.features.cli.enabled&&(n.push({package:"@fnet/args",version:"^0.1"}),r.push({package:"ajv",version:"^8"}),t.doc.features.cli.fargs&&!1!==t.doc.features.cli.fargs?.enabled&&n.push({package:"@fnet/config",version:"0.2.21"})),t.doc.features.render&&!1!==t.doc.features.render.enabled&&r.push({package:"@flownet/lib-render-templates-dir",version:"0.1.19"}),r.push({package:"@babel/core",version:"^7"}),r.push({package:"@rollup/plugin-commonjs",version:"^28"}),r.push({package:"@rollup/plugin-node-resolve",version:"^16"}),r.push({package:"@rollup/plugin-replace",version:"^6"}),r.push({package:"rollup",version:"^4"}),t.doc.features.dts_enabled&&r.push({package:"rollup-plugin-dts",version:"^6"}),r.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),r.push({package:"@rollup/plugin-alias",version:"^5"}),r.push({package:"fs-extra",version:"^11"}),t.doc.features.babel_enabled&&(r.push({package:"@rollup/plugin-babel",version:"^6"}),r.push({package:"@babel/preset-env",version:"^7"}),r.push({package:"@babel/preset-react",version:"^7"}),t.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":r.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":r.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":r.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":r.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":r.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),r.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),t.doc.features.browsersync_enabled&&r.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})},Ie}function an(){if(Fe)return Re;Fe=1;const e=n,t=r,a=f;return Re=async({atom:n,setProgress:r,context:o,packageDependencies:i})=>{if(!0!==n.doc.features.app.enabled)return;await r({message:"Creating app folder"});const s={atom:n,packageDependencies:i,ts:Date.now()},c=o.templateDir,p=t.resolve(o.projectDir,"src/app");e.existsSync(p)||e.mkdirSync(p,{recursive:!0});let l=["index.js.njk"];!1!==n.doc.features.app.html&&l.push("index.html.njk"),await a({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:s})},Re}function on(){if(Ne)return qe;Ne=1;const e=P,t=S,a=n,o=r;return qe=async({projectDir:n,name:r,setProgress:i,count:s=1})=>{let c;const p=t(["npm-pick-versions",r,s]),l=o.join(n,".cache"),d=o.join(l,p+".json");return a.existsSync(d)?(i&&i(`Picking npm version of ${r} from cache ...`),c=JSON.parse(a.readFileSync(d,"utf8"))):(i&&i(`Picking npm version of ${r} ...`),c=await e({name:r,count:s}),a.mkdirSync(l,{recursive:!0}),a.writeFileSync(d,JSON.stringify(c),"utf8")),c}}function sn(){if(Ue)return Le;Ue=1;const e=y,t=n,a=r,o=k,i=on();return Le=async({atom:n,context:r,packageDependencies:s,packageDevDependencies:c,setProgress:p})=>{await p({message:"Creating package.json."});s.filter((e=>!0===e.dev)).forEach((e=>{c.find((t=>t.package===e.package))||c.push(e);const t=s.findIndex((t=>t.package===e.package));s.splice(t,1)}));const l=s.find((e=>"react"===e.package)),d=s.find((e=>"react-dom"===e.package));l&&!d?s.push({package:"react-dom",version:l.version}):l&&d&&(d.version=l.version),l&&n.doc.features.react_version>=17&&(s.find((e=>"@emotion/react"===e.package))||s.push({package:"@emotion/react",version:"^11"}),s.find((e=>"@emotion/styled"===e.package))||s.push({package:"@emotion/styled",version:"^11"}));const u=[];!0===n.doc.features.app.enabled&&u.push({file:a.resolve(r.projectDir,"src/app/index.js"),dev:!1!==n.doc.features.app.dev}),!0===n.doc.features.cli.enabled&&u.push({file:a.resolve(r.projectDir,"src/cli/index.js"),dev:!1!==n.doc.features.cli.dev});for await(const e of u){const n=e.file;if(!t.existsSync(n))throw new Error(`App file not found: ${n}`);const a=(await o({file:n,recursive:!0})).all;for await(const t of a){if("npm"!==t.type)continue;if(s.find((e=>e.package===t.package)))continue;if(c.find((e=>e.package===t.package)))continue;const n=await i({name:t.package,projectDir:r.projectDir,setProgress:p});(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const m={atom:n,packageDependencies:s,packageDevDependencies:c},f=r.templateCommonDir,g=e.compile(t.readFileSync(a.resolve(f,"package.json.njk"),"utf8"),e.configure(f)).render(m),y=r.projectDir,h=a.resolve(y,"package.json");t.writeFileSync(h,g,"utf8");const w=a.resolve(r.project.projectDir,"fnet");if(t.existsSync(w)){const e=a.resolve(r.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const n=t.readdirSync(w);for(const r of n){const n=a.resolve(w,r);if(!t.lstatSync(n).isFile())continue;const o=a.resolve(e,r);t.copyFileSync(n,o)}}},Le}function cn(){if(ze)return Be;ze=1;const e=n,t=r,a=f;return Be=async({atom:n,setProgress:r,context:o,packageDependencies:i})=>{if(!0!==n.doc.features.cli.enabled)return;await r({message:"Creating cli."});const s={atom:n,packageDependencies:i},c=o.templateDir,p=t.resolve(o.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await a({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:p,context:s})},Be}function pn(){if(Ke)return We;Ke=1;const e=n,t=r,a=y,o=k;return We=async({atom:n,setProgress:r,context:i,packageDependencies:s})=>{await r({message:"Creating rollup file."});const c={atom:n,packageDependencies:s},p=t.resolve(i.projectDir,"src","default/index.js");if(!e.existsSync(p))throw new Error(`Entry file not found: ${p}`);const l=(await o({file:p,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=n.doc.features.rollup_output,u=Object.keys(d);for(let e=0;e<u.length;e++){const t=d[u[e]];if(!0===t.browser&&l.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(l.map((e=>({key:e,value:e})))),t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{};for(let e=0;e<l.length;e++){const n=l[e];t.alias.entries[n]=`node:${n}`,t.alias.entries[`node:${n}`]=n}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(l)}}const m=i.templateCommonDir;let f=a.compile(e.readFileSync(t.resolve(m,"rollup.config.mjs.njk"),"utf8"),a.configure(m)).render(c);const g=i.projectDir;let y=t.resolve(g,"rollup.config.mjs");e.writeFileSync(y,f,"utf8")},We}function ln(){if(Xe)return Ge;Xe=1;const e=n,t=r,a=y,o=A,i=E,s=$;return Ge=async({atom:n,setProgress:r,context:c,njEnv:p})=>{if(!0!==n.doc.features.cli.enabled)return;await r({message:"Creating yargs."});let l={};if(l=n.doc.input?n.doc.input:{type:"object",properties:{},required:[]},n.doc.features.cli.fargs&&!1!==n.doc.features.cli.fargs?.enabled){const e=n.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},r={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),l.properties&&(l.properties.fargs=t,l.properties.ftag=r)}const d={options:l,imports:[],atom:n},u=c.templateDir,m=a.compile(e.readFileSync(t.resolve(u,"src/default/to.args.js.njk"),"utf8"),p).render(d),f=c.projectDir,g=t.resolve(f,"src/default/to.args.js");e.writeFileSync(g,m,"utf8");const y=new o({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});s(y);const h=y.compile(l),w=i(y,h);e.writeFileSync(t.resolve(f,"src/default/validate_input.js"),w,"utf8")},Ge}function dn(){if(Ve)return Ye;Ve=1;const e=n,t=r,a=y;return Ye=async({atom:n,setProgress:r,context:o,packageDependencies:i})=>{await r({message:"Creating .gitignore"});const s={atom:n,packageDependencies:i},c=o.templateCommonDir,p=a.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),a.configure(c)).render(s),l=o.projectDir,d=t.resolve(l,".gitignore");e.writeFileSync(d,p,"utf8")},Ye}function un(){if(Qe)return Ze;Qe=1;const e=n,t=r,a=y;return Ze=async({atom:n,setProgress:r,context:o,packageDependencies:i})=>{await r({message:"Creating tsconfig.json."});const s={atom:n,packageDependencies:i},c=o.templateCommonDir,p=a.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),a.configure(c)).render(s),l=o.projectDir,d=t.resolve(l,"tsconfig.json");e.writeFileSync(d,p,"utf8")},Ze}function mn(){if(tt)return et;tt=1;const e=y,t=n,a=r,o=d;return et=async({atom:n,context:r,setProgress:i,Atom:s})=>{const c="readme.md",p=`Creating ${c}`;if(await i({message:p}),r.project?.readme){const n=r.projectDir,i={content:r.project.readme.doc.content},s=a.resolve(r.project.projectDir,"fnet/how-to.md");if(t.existsSync(s)){const e=t.readFileSync(s,"utf8");i.howto=e}const p=a.resolve(r.project.projectDir,"fnet/input.yaml");if(t.existsSync(p)){const e=await o({file:p,tags:r.tags});i.input=e.content}const l=r.templateCommonDir,d=e.compile(t.readFileSync(a.resolve(l,`${c}.njk`),"utf8"),e.configure(l)).render(i),u=a.resolve(n,`${c}`);t.writeFileSync(u,d,"utf8")}else if(n.id){const o=await s.first({type:"wiki",parent_id:n.id});if(!o||"markdown"!==o.doc?.["content-type"])return;const{content:i,...p}=o.doc,l={content:i},d=r.templateCommonDir,u=e.compile(t.readFileSync(a.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(l),m=r.projectDir,f=a.resolve(m,`${c}`);t.writeFileSync(f,u,"utf8")}},et}function fn(){if(rt)return nt;rt=1;const e=o,t=m;return nt=async({setProgress:n,context:r})=>{const a=r.projectDir;await n({message:"Prettifiying source files."});let o=e.join("src","**","*");await t({commands:{steps:[`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:a}})}}function gn(){if(ot)return at;ot=1;const e=p;return at=async({atom:t,setProgress:n,context:r})=>{if(!t.doc.features.dts_enabled)return;const a=r.projectDir;await n({message:"Creating .d.ts"});if(0!==(await e("tsc",{cwd:a})).code)throw new Error("Couldnt create .d.ts files.")},at}function yn(){if(st)return it;st=1;const e=p;return it=async({setProgress:t,atom:n,context:r})=>{const a=r.projectDir;await t({message:"Installing npm packages."});if(0!==(await e(`npm install ${n.doc.features.npm_install_flags}`,{cwd:a})).code)throw new Error("Couldnt install npm packages.")},it}function hn(){if(pt)return ct;pt=1;const e=r,t=T,n=f;return ct=async r=>{const{setProgress:a,atom:o,context:i}=r;a({message:"Installing Python packages"});const s=i.projectDir,c=await t({pythonVersion:"3.12",packages:[{package:"fnet-import-parser",version:"0.1.9"}]}),{errors:p,result:l}=await c.runBin("fnet_import_parser",["--entry_file",e.join(s,"src","default","index.py")],{captureName:"result"});if(p)throw new Error(p.format());const d=JSON.parse(l.items[0].stdout),u=d.required["third-party"]?.map((e=>({package:e.metadata?.package||e.path,version:e.metadata?.version||void 0,channel:e.metadata?.channel||void 0})))||[],m=o.doc.dependencies||[];for(const e of u)m.some((t=>t.package===e.package))||m.push(e);const f=e.join(s,".conda"),g=await t({envDir:f,pythonVersion:o.doc.features.runtime.version||"3.12",packages:m});i.pythonEnv=g,r.packageDependencies=m;const y=o.doc.features.render?.dirs||[];for(const t of y)t.dir=e.resolve(s,t.dir),t.outDir=e.resolve(s,t.outDir),await n(t);let h={params:{}};h.params.package_name=o.doc.name,h.params.version="0.1.0",h.params.bin_name=o.doc.name,h.params.python_requires=o.doc.features.runtime.version||">=3.12",h.params.dependencies=m,h.params.scripts=JSON.stringify({cli:`PYTHONPATH='${e.join("src")}' '${e.relative(i.projectDir,g.pythonBin)}' '${e.join("src","cli","index.py")}'`}),await n({pattern:["setup.py.njk","package.json.njk","pyproject.toml.njk"],dir:i.templateDir,outDir:i.projectDir,context:h})},ct}function wn(){if(dt)return lt;dt=1;const e=p;return lt=async({setProgress:t,context:n})=>{const r=n.projectDir;await t({message:"Building main project."});if(0!==(await e("npm run build",{cwd:r})).code)throw new Error("Couldnt build project.")}}function vn(){if(Kt)return Wt;Kt=1;const e=function(){if(mt)return ut;mt=1;const e=p,t=a;return ut=async({setProgress:n,context:r,deploymentProject:a,deploymentProjectTarget:o,buildId:i})=>{await n({message:"Deploying it as gitlab project."});const s=r.projectDir;let c="fnet-to-gitlab";const p=o.params.config||"gitlab",l=await t({name:p,dir:r.projectDir,tags:r.tags});if(!l)throw new Error(`Couldnt load config ${p}`);const{data:d}=l.data;c+=` --projectGroupId=${d.projectGroupId}`,c+=` --projectPath='${s}'`,c+=` --projectName='${o.params.name}'`,c+=` --projectBranch='${o.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==o.dryRun&&(await e(c),a.isDirty=!0)}}(),t=function(){if(gt)return ft;gt=1;const e=n,t=r,o=I,i=p,s=a;return ft=async({setProgress:n,context:r,deploymentProject:a,deploymentProjectTarget:c,registerToPackageManager:p,yamlTarget:l})=>{await n({message:"Deploying it as gcs package."});const d=r.projectDir,u=t.resolve(d,"package.json"),m=e.readFileSync(u),f=JSON.parse(m);f.name=c.params.name,f.version=o.inc(c.version,"patch"),delete f.scripts,delete f.devDependencies,e.writeFileSync(u,JSON.stringify(f,null,"\t"));const{file:g,data:y}=await s({name:c.config||"gcs",dir:r.projectDir,tags:r.tags});let h="fnet-files-to-gcs";h+=` --projectId='${y.env.GCS_PROJECT_ID}'`,h+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,h+=` --keyFilename='${t.resolve(t.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,h+=` --dir='${d}'`,h+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",h+=` --destDir='${f.name}/${f.version}'`,h+=" --metadata.cacheControl='public, max-age=31536000, immutable'",y.env.DOMAIN&&(h+=` --domain='${y.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(h+=" --dryRun"),await i(h),e.writeFileSync(u,m),!0!==c.dryRun&&(a.isDirty=!0,c.version=f.version,l.set("version",f.version),await p({target:c,packageJSON:f}))}}(),i=function(){if(ht)return yt;ht=1;const e=n,t=r,o=I,i=p,s=a,l=O,d=u,m=c;return yt=async({atom:n,setProgress:r,context:a,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:u})=>{await r({message:"Deploying it as npm package."});const f=a.projectDir,g=t.resolve(f,"package.json"),y=e.readFileSync(g),h=JSON.parse(y);h.name=p.params.name,h.version=o.inc(p.version,"patch");const w=p.params.bin?.name||p.params.bin;!1!==p.params.bin?.enabled&&w&&"string"==typeof w&&(h.bin={[w]:"dist/cli/esm/index.js"}),delete h.scripts,delete h.devDependencies,h.scripts={serve:"npx serve ."},e.writeFileSync(g,JSON.stringify(h,null,"\t"));const v=p.config||"npm";let b=(await s({name:v,dir:a.projectDir,tags:a.tags,optional:!0}))?.data;if(!b){const n=l({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 r=await d({schema:n[0],tags:a.tags}),o=a.project.projectDir,i=t.resolve(o,".fnet");e.existsSync(i)||e.mkdirSync(i),e.writeFileSync(t.resolve(i,`${v}.fnet`),m.stringify(r)),b=r}if(e.writeFileSync(t.resolve(f,".npmrc"),`//registry.npmjs.org/:_authToken=${b.env.NPM_TOKEN}`),!0!==p.dryRun){if(0!==(await i("npm publish --access public",{cwd:f})).code)throw new Error("Couldnt publish to npm");e.writeFileSync(g,y),c.isDirty=!0,p.version=h.version,u.set("version",h.version)}}}(),l=function(){if(vt)return wt;vt=1;const e=n,t=r,o=g,i=y,s=C,c=a;return wt=async({atom:n,setProgress:r,context:a,deploymentProject:p,deploymentProjectTarget:l,buildId:d,packageDependencies:u,njEnv:m})=>{await r({message:"Deploying it as node-red flow."});const f=a.projectDir,g=a.templateDir,y="workflow"===n.type?"WF":"LIB";let h;if("simple"===l.deploy.template)h={atom:n,packageDependencies:u,red:{tab:{id:l.deploy.id||s.util.generateId(),label:`${y}/${n.id?n.id:o.hostname()}/${n.name}/${l.deploy.name||l.deploy.template}`},function:{id:s.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},inject:{id:s.util.generateId(),...l.params?.inject,payload:"json"===l.params?.inject?.payloadType?`'${JSON.stringify(l.params?.inject?.payload)}'`:l.params?.inject?.payload},debug:{id:s.util.generateId()}}};else if("cronjob"===l.deploy.template){let r=l.params?.schedules?cloneDeep(l.params?.schedules):void 0;r?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),h={atom:n,packageDependencies:u,red:{tab:{id:l.deploy.id||s.util.generateId(),label:`${y}/${n.id?n.id:o.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:s.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},cronjob:{id:s.util.generateId(),schedules:r},debug:{id:s.util.generateId()}}}}else{if("http"!==l.deploy.template)return;h={atom:n,packageDependencies:u,red:{tab:{id:l.deploy.id||s.util.generateId(),label:`${y}/${n.id?n.id:o.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:s.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},httpin:{id:s.util.generateId(),method:l.params.method||"get",url:l.params.url},httpout:{id:s.util.generateId()},debug:{id:s.util.generateId()}}}}let w=i.compile(e.readFileSync(t.resolve(g,`deploy/node-red/${l.deploy.template}.yaml.njk`),"utf8"),m).render(h);if(e.writeFileSync(t.resolve(f,"node-red.yaml"),w),w=yaml.load(w),!0===l.dryRun)return;p.isDirty=!0;const v=(await c({name:a.redConfig||"red",dir:a.projectDir,tags:a.tags}))?.data,b=l.deploy.url||v.env.RED_URL,j={};if(!1!==l.deploy.auth&&(j.Authorization="Bearer "+atomAccessToken),l.deploy.id)!0===l.actions?.delete?(await axios({method:"DELETE",url:`${b}/flow/${l.deploy.id}`,headers:j}),delete l.actions.delete,delete l.deploy.id,l.enabled=!1):await axios({method:"PUT",url:`${b}/flow/${l.deploy.id}`,data:w,headers:j});else{const e=await axios({method:"POST",url:`${b}/flow`,data:w,headers:j});l.deploy.id=e.data.id}},wt}(),d=function(){if(jt)return bt;jt=1;const e=s,t=o,n=a;return bt=async({atom:r,Atom:a,setProgress:o,context:i,packageDependencies:s,deploymentProject:c,deploymentProjectTarget:p})=>{await o({message:"Deploying it as workflow lib."});const l=(await n({name:"atom",dir:i.projectDir,tags:i.tags}))?.data;let d,u,m,f=p.deploy.name.split("/");if(1===f.length)u=l.env.ATOM_LIBRARIES_ID,m=p.deploy.name;else{if(2!==f.length)throw new Error("Wrong name path.");{const e=await a.first({where:{name:f[0],parent_id:l.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");u=e.id,m=f[1]}}if(!0===p.dryRun)return;if(c.isDirty=!0,p.deploy.id){if(d=await a.get({id:p.deploy.id}),!d)return}else{if(d=await a.create({parent_id:u,doc:{name:m,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!d)return;p.deploy.id=d.id}const g=i.projectDir;d.doc.contents=[{content:e.readFileSync(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=m,d.doc.dependencies=s,"workflow.lib"===r.type?d.doc.subtype="library":"workflow"===r.type&&(d.doc.subtype="workflow"),d=await a.update(d,{id:d.id})}}(),m=function(){if(Dt)return _t;Dt=1;const e=a,t=M,n=R,r=I;return _t=async({atom:a,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as ios-app package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=n(o.params);m.dependencies=n(c);const f={atom:a,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},_t}(),f=function(){if(xt)return kt;xt=1;const e=a,t=F,n=R,r=I;return kt=async({atom:a,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as macos-app package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=n(o.params);m.dependencies=n(c);const f={atom:a,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},kt}(),h=function(){if(St)return Pt;St=1;const e=a,t=q,n=R,r=I;return Pt=async({atom:a,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as electron package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=n(o.params);m.dependencies=n(c);const f={atom:a,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},Pt}(),w=function(){if(Et)return At;Et=1;const e=a,t=N,n=R,r=I;return At=async({atom:a,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as webos package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=n(o.params);m.dependencies=n(c);const f={atom:a,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},At}(),v=function(){if(Tt)return $t;Tt=1;const e=a,t=L,n=R,r=I;return $t=async({atom:a,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as nextjs package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=n(o.params);m.dependencies=n(c);const f={atom:a,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},$t}(),b=function(){if(Ot)return It;Ot=1;const e=a,t=U,n=R,r=I;return It=async({atom:a,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as docker package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=n(o.params);m.dependencies=n(c);const f={atom:a,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},It}(),_=function(){if(Mt)return Ct;Mt=1;const e=n,t=r,o=I,i=p,s=a,c=j.default;return Ct=async({setProgress:n,context:r,deploymentProject:a,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet package."});const d=r.projectDir,u=t.resolve(d,"package.json"),m=e.readFileSync(u),f=JSON.parse(m);f.name=p.params.name,f.version=o.inc(p.version,"patch"),delete f.scripts,delete f.devDependencies,e.writeFileSync(u,JSON.stringify(f,null,"\t"));const{file:g,data:y}=await s({name:p.config||"fnet-package",dir:r.projectDir,tags:r.tags});if(!y.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${g}`);if(!y.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${g}`);if(!y.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${g}`);const h=`${y.env.ATOM_API_URL}/v1/auth/token`,w=y.env.ATOM_API_USERNAME,v=y.env.ATOM_API_PASSWORD;let b=await c({method:"POST",url:h,data:{username:w,password:v},headers:{"Content-Type":"application/json"}});const j=b.data?.access_token;if(!j)throw new Error(`Invalid access_token from ${h}`);let _="fnet-files-to-gcs";if(_+=` --projectId='${y.env.GCS_PROJECT_ID}'`,_+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,_+=` --keyFilename='${t.resolve(t.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,_+=` --dir='${d}'`,_+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",_+=` --destDir='${f.name}/${f.version}'`,_+=" --metadata.cacheControl='public, max-age=31536000, immutable'",y.env.DOMAIN&&(_+=` --domain='${y.env.DOMAIN}'`),!0!==p.dry_run&&!0!==p.params.dry_run||(_+=" --dryRun"),await i(_),e.writeFileSync(u,m),!0===p.dryRun)return;a.isDirty=!0,p.version=f.version,l.set("version",f.version);const D=`${y.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(b=await c({method:"POST",url:D,data:{name:f.name,version:f.version,version_domain:y.env.DOMAIN,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${j}`}}),b.data?.error)throw new Error("Failed to publish fnet package.")}}(),D=function(){if(Ft)return Rt;Ft=1;const e=I,t=a,n=j.default;return Rt=async({setProgress:r,context:a,deploymentProject:o,deploymentProjectTarget:i,yamlTarget:s})=>{await r({message:"Deploying it as fnet form."});const{file:c,data:p}=await t({name:i.config||"fnet-form",dir:a.projectDir,tags:a.tags});if(!p.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${c}`);if(!p.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${c}`);if(!p.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${c}`);const l=`${p.env.ATOM_API_URL}/v1/auth/token`,d=p.env.ATOM_API_USERNAME,u=p.env.ATOM_API_PASSWORD;let m=await n({method:"POST",url:l,data:{username:d,password:u},headers:{"Content-Type":"application/json"}});const f=m.data?.access_token;if(!f)throw new Error(`Invalid access_token from ${l}`);o.isDirty=!0;const g=e.inc(i.version,"patch");i.params.version=g,i.version=g,s.set("version",g);const y=`${p.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(m=await n({method:"POST",url:y,data:{name:i.params.name,version:i.params.version,docs:i.params.docs,configs:i.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${f}`}}),m.data?.error)throw new Error("Error publishing fnet form.")}}(),k=function(){if(Nt)return qt;Nt=1;const e=I,t=a,n=j.default,r=s,o=p,i=B;return qt=async({setProgress:a,context:s,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await a({message:"Deploying it as fnet flow."});const{file:d,data:u}=await t({name:p.config||"fnet-flow",dir:s.project.projectDir,tags:s.tags});if(!u.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!u.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!u.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const m=`${u.env.ATOM_API_URL}/v1/auth/token`,f=u.env.ATOM_API_USERNAME,g=u.env.ATOM_API_PASSWORD;let y=await n({method:"POST",url:m,data:{username:f,password:g},headers:{"Content-Type":"application/json"}});const h=y.data?.access_token;if(!h)throw new Error(`Invalid access_token from ${m}`);c.isDirty=!0;const w=e.inc(p.version,"patch");p.params.version=w,p.version=w,l.set("version",w);const v=`${u.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(y=await n({method:"POST",url:v,data:{name:p.params.name,version:p.params.version,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`}}),y.data?.error)throw new Error("Error publishing fnet flow.");const b=y.data?.upload.id;let j="fnet-dir-zipper";j+=` --sourceDir='${s.project.projectDir}'`,j+=" --pattern=**/*",j+=" --stdout_format=json";const _=await o(j);if(0!==_.code)throw new Error(_.stderr);const D=JSON.parse(_.stdout).path;let k=new i;k.append("file",r.createReadStream(D));const x=await n.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...k.getHeaders(),Authorization:`Bearer ${h}`},data:k});if(x.data?.error)throw new Error("Error uploading fnet flow.")}}(),x=function(){if(Ut)return Lt;Ut=1;const e=I,t=a,n=j.default,r=s,o=p,i=B;return Lt=async({setProgress:a,context:s,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await a({message:"Deploying it as fnet node."});const{file:d,data:u}=await t({name:p.config||"fnet-node",dir:s.project.projectDir,tags:s.tags});if(!u.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!u.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!u.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const m=`${u.env.ATOM_API_URL}/v1/auth/token`,f=u.env.ATOM_API_USERNAME,g=u.env.ATOM_API_PASSWORD;let y=await n({method:"POST",url:m,data:{username:f,password:g},headers:{"Content-Type":"application/json"}});const h=y.data?.access_token;if(!h)throw new Error(`Invalid access_token from ${m}`);c.isDirty=!0;const w=e.inc(p.version,"patch");p.params.version=w,p.version=w,l.set("version",w);const v=`${u.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(y=await n({method:"POST",url:v,data:{name:p.params.name,version:p.params.version,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`}}),y.data?.error)throw new Error("Error publishing fnet node.");const b=y.data?.upload.id;let j="fnet-dir-zipper";j+=` --sourceDir='${s.project.projectDir}'`,j+=" --pattern=**/*",j+=" --stdout_format=json";const _=await o(j);if(0!==_.code)throw new Error(_.stderr);const D=JSON.parse(_.stdout).path;let k=new i;k.append("file",r.createReadStream(D));const x=await n.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...k.getHeaders(),Authorization:`Bearer ${h}`},data:k});if(x.data?.error)throw new Error("Error uploading fnet node.")}}(),P=function(){if(zt)return Bt;zt=1;const e=a,t=z,n=R,r=I;return Bt=async({atom:a,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as Rust package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=n(o.params);m.dependencies=n(c);const f={atom:a,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},Bt}(),S=function(){if(Ht)return Jt;Ht=1;const e=a,t=J,n=R,r=I;return Jt=async({atom:a,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as pypi package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=n(o.params);m.dependencies=n(c);const f={atom:a,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},Jt}();return Wt=async n=>{const{atom:r,packageDependencies:a,context:o,deploymentProjectTarget:s,setProgress:c,deploymentProject:p,yamlTarget:u}=n;if(!0===s.enabled)if("lib"===s.type)await d({...n});else if("red"===s.type)await l({...n});else if("npm"===s.type)await i({...n});else if("gcs"===s.type)await t({...n});else if("gitlab"===s.type)await e({...n});else if("fnet-package"===s.type)await _({...n});else if("fnet-form"===s.type)await D({...n});else if("fnet-node"===s.type)await x({...n});else if("fnet-flow"===s.type)await k({...n});else{let e;if("nextjs"===s.type?e=v:"webos"===s.type?e=w:"electron"===s.type?e=h:"docker"===s.type?e=b:"ios"===s.type?e=m:"macos"===s.type?e=f:"rust"===s.type?e=P:"pypi"===s.type&&(e=S),!e)return;await e({atom:r,target:s,onProgress:c,projectDir:o.projectDir,dependencies:a,context:o,yamlTarget:u}),p.isDirty=!0}},Wt}function bn(){if(Xt)return Gt;Xt=1;const e=n,t=r,o=g,i=c,s=y,p=function(){if(V)return Y;V=1;const e=h,t=w;return Y=async()=>{if(!await t({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const n=e.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await n.connect(),n}}(),{nanoid:l}=v,d=function(){if(Q)return Z;Q=1;const{Api:e}=b,t=j.default,n=_;return Z=class{init({config:r,accessToken:a}){return new Promise(((o,i)=>{if(e.set_api_url(r.data.url),a)return e.set_req_token(a),void o(a);t({method:"POST",url:`${r.data.issuer}/protocol/openid-connect/token`,data:n.stringify(r.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((t=>{e.set_req_token(t.data.access_token),o(t.data.access_token)})).catch((t=>{e.set_req_token(),i(t)}))}))}}}(),u=nn(),m=(Te||(Te=1,$e=async e=>{const{atom:t,context:n,setProgress:r}=e;r("Initializing features..."),t.doc.features=t.doc.features||{};const a=t.doc.features;!1===a.cli?a.cli={enabled:!1}:(a.cli,a.cli={enabled:!0}),a.cli.enabled=!0===a.cli.enabled&&(!1===t.doc.features.form_enabled||!0===a.cli.extend||!0===a.cli.enabled)}),$e),D=rn(),x=Me?Ce:(Me=1,Ce=async({atom:e,packageDependencies:t,packageDevDependencies:n,setProgress:r})=>{r("Initializing dependencies")}),P=an(),S=sn(),A=cn(),E=function(){if(He)return Je;He=1;const e=n,t=r,a=f;return Je=async({atom:n,setProgress:r,context:o,packageDependencies:i})=>{if(!0!==n.doc.features.cli.enabled)return;await r({message:"Creating cli."});const s={atom:n,packageDependencies:i},c=o.templateDir,p=t.join(o.projectDir,"src","cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await a({pattern:["index.py.njk","__init__.py.njk"],dir:t.join(c,"src","cli"),outDir:p,context:s})},Je}(),$=pn(),T=ln(),I=dn(),O=un(),C=mn(),M=fn(),R=gn(),F=yn(),q=hn(),N=wn(),L=on(),U=vn(),{Atom:B}=b,z=H,J=a,G=k,X=W,ee=K;return Gt=class{#e;#t;#n;#r;#a;#o;#i;#s;#c;#p;#l;#d;#u;#m;#f;#g;#y;constructor(e){this.#e=new d,this.#t=e,this.#o=[],this.#i=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#o,packageDevDependencies:this.#i,setProgress:this.setProgress.bind(this),context:this.#t,Atom:B,registerToPackageManager:this.registerToPackageManager.bind(this)}}async _cache_set(e,t,n){this._redis_client&&await this._redis_client.SETEX(e,n||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async initAuth(){this.#t.id&&(this.#s=await this.#e.init({config:this.#d}),this.#y.atomAccessToken=this.#s)}async initLibrary(){const e=this.#t.id;this.#n=this.#t.project?.libraryAtom||await B.get({id:e});let t=this.#n.doc.bundleName;t=t||(this.#n.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#n.doc.bundleName=t,this.#n.type=this.#n.type||"workflow.lib",this.#y.atom=this.#n}async initLibraryDir(){this.setProgress({message:"Initializing library directory."});const n=this.#t.projectDir;this.setProgress({message:"Cleaning project directory."});const r=X({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."});let a=n;e.existsSync(a)||e.mkdirSync(a,{recursive:!0}),a=t.join(n,"src"),e.existsSync(a)||e.mkdirSync(a,{recursive:!0}),a=t.join(n,"src","default"),e.existsSync()||e.mkdirSync(a,{recursive:!0})}async initLibraryDirPython(){this.setProgress({message:"Initializing library directory."});const n=this.#t.projectDir;this.setProgress({message:"Cleaning project directory."});const r=X({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."});let a=n;e.existsSync(a)||e.mkdirSync(a,{recursive:!0}),a=t.join(n,"src"),e.existsSync(a)||e.mkdirSync(a,{recursive:!0}),a=t.join(n,"src","default");const i=this.#t.projectSrcDir;if(!e.existsSync(a))try{"win32"===o.platform()?e.symlinkSync(i,a,"junction"):e.symlinkSync(i,a,"dir")}catch(e){throw new Error(`Couldn't create symlink. Error: ${e.message}`)}}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#t.templateDir;this.#r=s.configure(e,{watch:!1,dev:!0}),this.#y.njEnv=this.#r}async initLibs(){this.setProgress({message:"Initializing external libs."});const e=[{name:this.#n.doc.name,type:"atom",parent_id:this.#n.parent_id}];this.#a=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.#o})}async initLibsPython(){this.setProgress({message:"Initializing external libs."});const e=this.#n;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=[{name:this.#n.doc.name,type:"atom",parent_id:this.#n.parent_id,atom:e}];this.#a=t}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const n=e.filter((e=>"atom"===e.type));for(let e=0;e<n.length;e++){const r=n[e],a=await this.findAtomLibrary({url:r.name});r.atom=a;const o=a.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));o?.forEach((e=>{const n=t.find((t=>t.package===e.package));n?"string"==typeof e.path?(n.path||[]).some((t=>t===e.path))||(n.path=n.path||[],n.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(n.path||[]).some((t=>t===e))||(n.path=n.path||[],n.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const n=z({url:e});if(!n)throw new Error(`Invalid package name: ${e}`);if(n.protocol||(n.protocol=this.#l),"ac:"===n.protocol){const t=n.pathname.split("/");if(1===t.length)return await B.first({where:{name:e,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await B.first({where:{name:t[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await B.first({where:{name:t[1],parent_id:e.id,type:"workflow.lib"}})}}else if("local:"===n.protocol){const e=this.#n;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const n=t.resolve(this.#t.projectSrcDir,"index.js"),r=await G({file:n,recursive:!0}),a=e.doc.dependencies,o=r.all;for await(const e of o){if("npm"!==e.type)continue;if(a.find((t=>t.package===e.package)))continue;const t=await L({name:e.package,projectDir:this.#t.projectDir,setProgress:this.#y.setProgress});a.push({package:e.package,subpath:e.subpath,version:t.minorRange,type:"npm"})}return e}}async createAtomLibFiles({libs:n}){await this.setProgress({message:"Creating external lib files."}),this.#n.typesDir="./types";const r=n.filter((e=>"atom"===e.type));for(let n=0;n<r.length;n++){const a=r[n].atom,o=this.#t.projectDir;if("local:"===a.protocol){const n=t.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.js`),r=t.relative(t.join(this.#t.projectDir,"src","default"),n);if(!e.existsSync(n)){e.mkdirSync(t.dirname(n),{recursive:!0});let r="export default async (args)=>{\n";r+="}",e.writeFileSync(n,r,"utf8")}a.relativePath=r.split(t.sep).join("/"),this.#n.typesDir=`./types/${t.basename(o)}/src`}else{const n=t.join(o,"src","libs",`${a.id}.js`),r=a.doc.contents?.find((e=>"esm"===e.format))||a.doc;e.writeFileSync(n,r.content,"utf8")}}}async createAtomLibFilesPython({libs:n}){await this.setProgress({message:"Creating external lib files."});const r=n.filter((e=>"atom"===e.type));for(let n=0;n<r.length;n++){const a=r[n].atom;if("local:"===a.protocol){const n=t.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.py`);if(!e.existsSync(n)){e.mkdirSync(t.dirname(n),{recursive:!0});let r="def default():\n";r+=' print("Hello world!")\n',e.writeFileSync(n,r,"utf8")}}}}async createEngine(){await this.setProgress({message:"Creating engine file."});const n={libs:this.#a.filter((e=>"atom"===e.type)),libraryAtom:this.#n,atom:this.#n},r=this.#t.templateDir,a=s.compile(e.readFileSync(t.resolve(r,t.join("src","default","engine.js.njk")),"utf8"),this.#r).render(n),o=this.#t.projectDir,i=t.resolve(o,t.join("src","default","index.js"));e.writeFileSync(i,a,"utf8")}async createProjectYaml(){const n="node.yaml",r=`Creating ${n}`;await this.setProgress({message:r});const{content:a,...o}=this.#n.doc,c={content:i.stringify(o)},p=this.#t.templateDir,l=s.compile(e.readFileSync(t.resolve(p,`${n}.njk`),"utf8"),this.#r).render(c),d=this.#t.projectDir,u=t.resolve(d,`${n}`);e.writeFileSync(u,l,"utf8")}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#t.project?.devops){const e=[this.#t.project?.devops];for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&await n.save()}}else if(this.#n.id){const e=await B.list({type:"library.deploy",parent_id:this.#n.id});for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&(n=await B.update(n,{id:n.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:n}=t;if(t.doc.targets&&Array.isArray(t.doc.targets))throw new Error("Deployment project targets are deprecated. Please update targets in the yaml file.");const r=Object.keys(t.doc||{}),a=n||{};for(let e=0;e<r.length;e++){const n=t.doc[r[e]];n.name=r[e];const o=a.get(r[e]);await U({...this.#y,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:o})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#t.id)return;let r=await B.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});r?(r.doc.versions.splice(0,0,{v:n.version}),await B.update(r,{id:r.id})):r=await B.create({parent_id:this.#d.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(ee.blue(t)),await this._cache_set(this.#p,{status:"IN_PROGRESS",message:t})}async initNode(){await u(this.#y),await D(this.#y),await this.initLibraryDir(),await this.initNunjucks(),await this.initLibs()}async initPython(){await m(this.#y),await x(this.#y),await this.initLibraryDirPython(),await this.initNunjucks(),await this.initLibsPython()}async nodeBuild(){this.#m&&(await this.createAtomLibFiles({libs:this.#a}),await this.createEngine(),await this.createProjectYaml(),await C(this.#y),await O(this.#y),await I(this.#y),await T(this.#y),await A(this.#y),await P(this.#y),await $(this.#y),await S(this.#y),await M(this.#y),await R(this.#y),this.#f&&(await F(this.#y),await N(this.#y),this.#g&&await this.deploy()))}async pythonBuild(){this.#m&&(await this.createAtomLibFilesPython({libs:this.#a}),await this.createProjectYaml(),await C(this.#y),await I(this.#y),await E(this.#y),this.#f&&(await q(this.#y),this.#g&&await this.deploy()))}async init(){this._redis_client=await p(),this.#c=this.#t.buildId||l(24),this.#y.buildId=this.#c,this.#u=this.#t.mode,this.#m=["all","deploy","build","file"].includes(this.#u),this.#f=["all","deploy","build"].includes(this.#u),this.#g=["all","deploy"].includes(this.#u),this.#l=this.#t.protocol,this.#p="BUILD:"+this.#c,this.#d=(await J({optional:!0,name:this.#t.atomConfig||"atom",dir:this.#t.projectDir,tags:this.#t.tags}))?.data;try{await this.setProgress({message:"Initialization started."}),await this.initAuth(),await this.initLibrary(),"node"===this.#n.doc.features.runtime.type?await this.initNode():"python"===this.#n.doc.features.runtime.type&&await this.initPython()}catch(e){throw await this._cache_set(this.#p,{status:"FAILED",message:e?.message||e}),e}}async build(){try{"node"===this.#n.doc.features.runtime.type?await this.nodeBuild():"python"===this.#n.doc.features.runtime.type&&await this.pythonBuild(),await this._cache_set(this.#p,{status:"COMPLETED"})}catch(e){throw await this._cache_set(this.#p,{status:"FAILED",message:e.message||e}),console.log(e),e}}},Gt}var jn=function(){if(Zt)return Qt;Zt=1;const g=process.cwd(),{spawn:y}=e,h=t,w=en;a({name:["redis"],dir:g,optional:!0});const v=o,b=i,j=s,_=c,D=p,k=l,x=d,P=a,S=u,A=m,E=f,$=bn(),T=function(){if(Vt)return Yt;Vt=1;const e=n,t=r;return Yt=function({baseDir:n=__dirname}){let r=n;for(;r!==t.parse(r).root;){const n=t.join(r,"node_modules");if(e.existsSync(n))return n;r=t.dirname(r)}return null}}()({baseDir:__dirname}),I="win32"===process.platform?";":":";process.env.PATH=`${v.join(T,"/.bin")}${I}${process.env.PATH}`;let O=b(process.argv.slice(2)).command("create","Create flow node project",(e=>e.option("name",{type:"Project name",demandOption:!0}).option("vscode",{type:"boolean",default:!0,alias:"vs"}).option("runtime",{type:"string",default:"node",choices:["node","python"]})),(async e=>{try{const t=v.resolve(T,"@fnet/cli-project-node/dist/template/project"),n=v.resolve(g,e.name);j.existsSync(n)||j.mkdirSync(n),await E({dir:t,outDir:n,context:{name:e.name,runtime:e.runtime,platform:k.platform()},copyUnmatchedAlso:!0});let r=await D("fnode build",{cwd:n});if(0!==r.code)throw new Error("Failed to build project.");if(w("git")&&(r=await D("git init --initial-branch=main",{cwd:n}),0!==r.code))throw new Error("Failed to initialize git.");if(w("code")&&e.vscode&&(r=await D(`cd ${n} && code .`),0!==r.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})).command("project","Flow node project",(e=>e.option("update",{type:"boolean",default:!1,alias:"-u"})),(async e=>{try{const t=v.resolve(T,"@fnet/cli-project-node/dist/template/project"),n=process.cwd(),r=await R(e);if(e.update){if(await E({dir:t,outDir:n,context:{name:r.project.projectFileParsed.name,runtime:r.project.runtime.type,platform:k.platform()},copyUnmatchedAlso:!0}),0!==(await D("fnode build",{cwd:n})).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(e){console.error("Project failed.",e.message),process.exit(1)}})).command("build","Build flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"]}).option("ftag",{type:"array"})),(async e=>{try{const t=await R(e),n=new $(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})).command("deploy","Build and deploy flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await R({...e,mode:"all"}),n=new $(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})).command("file","Just create files",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await R({...e,mode:"file"}),n=new $(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}}));function C(e,{name:t,bin:n,preArgs:r=[]}){return e.command(`${t||n} [commands..]`,`${n} ${r.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const t=await R(e),{projectDir:a}=t,o=e=>e.includes(" ")?"win32"===process.platform?`"${e.replace(/(["^])/g,"^$1")}"`:`"${e.replace(/(["\\$`])/g,"\\$1")}"`:e,i=process.argv.slice(3).map(o);y(n,[...r,...i],{cwd:a,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}function M(e,{name:t,bin:n,preArgs:r=[]}){return e.command(`${t||n} [commands..]`,`${n} ${r.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const a=await R(e),{projectDir:o}=a,i=e=>e.includes(" ")?"win32"===process.platform?`"${e.replace(/(["^])/g,"^$1")}"`:`"${e.replace(/(["\\$`])/g,"\\$1")}"`:e,s=process.argv.slice(3).map(i);n=v.join(o,".conda","bin",n||t);y(n,[...r,...s],{cwd:o,stdio:"inherit",shell:!0,env:{PYTHONPATH:o}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function R(e){if(e.id)return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",templateDir:v.resolve(T,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:v.resolve(T,"./@fnet/cli-project-common/dist/template/default"),projectDir:v.resolve(g,`./.output/${e.id}`),tags:e.ftag};{const t=await async function({tags:e}){const t=v.resolve(g,"node.yaml");if(!j.existsSync(t))throw new Error("node.yaml file not found in current directory.");const{raw:n,parsed:r}=await x({file:t,tags:e}),a=v.dirname(t);r.features=r.features||{};const o=r.features;o.runtime=o.runtime||{},o.runtime.type=o.runtime.type||"node","python"===o.runtime.type?o.runtime.template=o.runtime.template||"python":o.runtime.template=o.runtime.template||"default";const i={libraryAtom:{doc:{...r},fileName:"index"},projectDir:a,projectFilePath:t,projectFileContent:n,projectFileParsed:r,runtime:o.runtime};let s=v.resolve(a,"fnet/targets.yaml");if(!j.existsSync(s)&&(s=v.resolve(a,"node.devops.yaml"),j.existsSync(s))){const e=v.resolve(a,"fnet");j.existsSync(e)||j.mkdirSync(e),j.copyFileSync(s,v.resolve(a,"fnet/targets.yaml")),j.unlinkSync(s)}if(j.existsSync(s)){const{raw:t,parsed:n}=await x({file:s,tags:e}),r=_.parseDocument(t);i.devops={filePath:s,fileContent:t,yamlDocument:r,doc:{...n},type:"library.deploy",save:async()=>{j.writeFileSync(i.devops.filePath,r.toString())}}}const c=v.resolve(a,"readme.md");if(j.existsSync(c)){const e=j.readFileSync(c,"utf8");i.readme={filePath:c,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return i}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:v.resolve(T,`./@fnet/cli-project-node/dist/template/${t.runtime.template}`),templateCommonDir:v.resolve(T,`./@fnet/cli-project-common/dist/template/${t.runtime.template}`),projectDir:v.resolve(t.projectDir,"./.workspace"),projectSrcDir:v.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return O=O.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 R(e),{project:n}=t,{projectDir:r,projectFileParsed:a}=n,o=a.input;if(!o)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 i=v.resolve(r,".fnet");j.existsSync(i)||j.mkdirSync(i);const s=v.resolve(i,`${e.name}.fnet`),c=j.existsSync(s),p=await S({schema:o,format:"yaml",ref:c?s:void 0});j.writeFileSync(s,p)}catch(e){console.error(e.message),process.exit(1)}})),O=C(O,{bin:"npm"}),O=C(O,{bin:"node"}),O=C(O,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),O=C(O,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),O=C(O,{name:"app",bin:"npm",preArgs:["run","app","--"]}),O=C(O,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),O=C(O,{bin:"npx"}),O=C(O,{bin:"cdk"}),O=C(O,{bin:"aws"}),O=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 R(e),{projectDir:r}=t,a=e.config,o=await P({name:a,dir:r,transferEnv:!1,optional:!0,tags:t.tags}),i=o?.data?.env||void 0,s=e.command,c=process.argv.slice(5);y(s,[...n,...c],{cwd:j.existsSync(r)?r:g,stdio:"inherit",shell:!0,env:{...process.env,...i}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(O,{name:"with"}),O=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 R(e),{project:n}=t,{projectFileParsed:r}=n,a=r.commands;if(!a)throw new Error("Commands not found in project file.");const o=a[e.group];if(!o)throw new Error(`Command group '${e.group}' not found in project file.`);await A({commands:o})}catch(e){console.error(e.message),process.exit(1)}}))}(O,{name:"run"}),O=M(O,{name:"python"}),O=M(O,{name:"python3"}),O=M(O,{name:"pip"}),O=M(O,{name:"pip3"}),O.demandCommand(1,"You need at least one command before moving on").help().argv,Qt}(),_n=G(jn);module.exports=_n;
2
+ "use strict";var e=require("child_process"),t=require("@fnet/prompt"),n=require("node:fs"),r=require("node:path"),o=require("@fnet/config"),a=require("path"),i=require("yargs/yargs"),s=require("fs"),c=require("yaml"),p=require("@fnet/shelljs"),l=require("os"),d=require("@fnet/yaml"),u=require("@fnet/object-from-schema"),f=require("@fnet/shell-flow"),m=require("@flownet/lib-render-templates-dir"),g=require("node:os"),y=require("nunjucks"),h=require("redis"),w=require("@flownet/lib-is-redis-online"),v=require("node:crypto"),b=require("@flownet/lib-atom-api-js"),j=require("lodash.merge"),_=require("@flownet/lib-parse-imports-js"),k=require("@fnet/npm-list-versions"),D=require("@fnet/npm-pick-versions"),x=require("object-hash"),S=require("ajv/dist/2020.js"),P=require("ajv/dist/standalone/index.js"),A=require("ajv-formats"),E=require("@fnet/auto-conda-env"),$=require("semver"),T=require("@fnet/up-list-files"),O=require("@node-red/util"),I=require("@flownet/lib-to-ios-app"),C=require("lodash.clonedeep"),M=require("@flownet/lib-to-macos-app"),R=require("@flownet/lib-to-electron"),F=require("@flownet/lib-to-webos"),N=require("@flownet/lib-to-nextjs"),q=require("@flownet/lib-to-docker"),L=require("form-data"),U=require("@fnet/to-rust"),J=require("@fnet/to-pyip"),z=require("@flownet/lib-parse-node-url"),B=require("@fnet/list-files"),H=require("chalk");function W(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function K(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})})),n}var G,X,Y,V,Z,Q,ee,te,ne,re,oe,ae,ie,se,ce,pe,le,de,ue,fe,me,ge,ye,he,we,ve,be,je,_e,ke,De,xe,Se,Pe,Ae,Ee,$e,Te,Oe,Ie,Ce,Me,Re,Fe,Ne,qe,Le,Ue,Je,ze,Be,He,We,Ke,Ge,Xe,Ye,Ve,Ze,Qe,et,tt,nt,rt,ot,at,it,st,ct,pt,lt,dt,ut,ft,mt,gt,yt,ht,wt,vt,bt,jt,_t,kt,Dt,xt,St,Pt,At,Et,$t,Tt,Ot,It,Ct,Mt,Rt,Ft,Nt,qt,Lt,Ut,Jt,zt,Bt,Ht,Wt,Kt,Gt,Xt,Yt,Vt={},Zt=K(Object.freeze({__proto__:null,default:e=>{const t=process.env.PATH||"",o="win32"===process.platform?(process.env.PATHEXT||".EXE;.CMD;.BAT;.COM").split(";"):[""],a=t.split(r.delimiter);for(const t of a)for(const a of o){const o=r.join(t,"win32"===process.platform?e+a:e);if(n.existsSync(o))return o}return null}}));function Qt(){if(Q)return Z;Q=1;const e=j;return Z=({feature:t,features:n,packageDevDependencies:r})=>{const{name:o,packages:a,options:i,extraCheck:s,explicit:c}=t,p=`${o}_enabled`,l=n.rollup_output||{},d=Object.keys(l);let u=i||{};const f=n[o]?.options;f&&(u=e(u,f));const m=!n[o]||!1===n[o]?.enabled;d.forEach((e=>{const t=n.rollup_output[e];if(t){if(Reflect.has(t,o)){if(m||!t[o]||!1===t[o]?.enabled)return void delete t[o];!0===t[o]&&(t[o]={enabled:!0,options:u})}else{if(m||c||!1===n[p])return;t[o]={enabled:!0}}t[o]=t[o]||{},t[o].options={...u,...t[o].options}}}));let g=d.some((e=>!0===n.rollup_output[e][o]?.enabled));s&&(g=s()&&g),n[p]=g,g&&a.forEach((e=>r.push({package:e[0],version:e[1]})))}}function en(){if(Pe)return Se;Pe=1;const e=j,t=n,o=r,a=_,i=function(){if(te)return ee;te=1;const e=Qt();return ee=t=>{const{atom:n,packageDevDependencies:r}=t,o=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:o,packageDevDependencies:r})},ee}(),s=function(){if(re)return ne;re=1;const e=Qt();return ne=t=>{const{atom:n,packageDevDependencies:r}=t,o=n.doc.features;e({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:o,packageDevDependencies:r})},ne}(),c=function(){if(ae)return oe;ae=1;const e=Qt();return oe=t=>{const{atom:n,packageDevDependencies:r}=t,o=n.doc.features;e({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:o,packageDevDependencies:r})},oe}(),p=function(){if(se)return ie;se=1;const e=Qt();return ie=t=>{const{atom:n,packageDevDependencies:r}=t,o=n.doc.features;e({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:o,packageDevDependencies:r})},ie}(),l=function(){if(pe)return ce;pe=1;const e=Qt();return ce=t=>{const{atom:n,packageDevDependencies:r}=t,o=n.doc.features;e({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:o,packageDevDependencies:r})},ce}(),d=function(){if(de)return le;de=1;const e=Qt();return le=t=>{const{atom:n,packageDevDependencies:r}=t,o=n.doc.features;e({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:o,packageDevDependencies:r})},le}(),u=function(){if(fe)return ue;fe=1;const e=Qt();return ue=t=>{const{atom:n,packageDevDependencies:r}=t,o=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:o,packageDevDependencies:r})},ue}(),f=function(){if(ge)return me;ge=1;const e=Qt();return me=t=>{const{atom:n,packageDevDependencies:r}=t,o=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:o,packageDevDependencies:r})},me}(),m=function(){if(he)return ye;he=1;const e=Qt();return ye=t=>{const{atom:n,packageDevDependencies:r}=t,o=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:o,packageDevDependencies:r})},ye}(),g=function(){if(ve)return we;ve=1;const e=Qt();return we=t=>{const{atom:n,packageDevDependencies:r}=t,o=n.doc.features;e({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:o,packageDevDependencies:r})},we}(),y=function(){if(je)return be;je=1;const e=Qt();return be=t=>{const{atom:n,packageDevDependencies:r}=t,o=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:o,packageDevDependencies:r})},be}(),h=function(){if(ke)return _e;ke=1;const e=Qt();return _e=t=>{const{atom:n,packageDevDependencies:r}=t,o=n.doc.features,a={};!0===o.app?.enabled&&(a.targets=a.targets||[],a.targets.push({src:"./src/app/index.html",dest:o.app.dir}),Reflect.has(o.app,"copy")||Reflect.has(o,"copy")||(o.copy=!0)),e({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:a},features:o,packageDevDependencies:r})},_e}(),w=function(){if(xe)return De;xe=1;const e=Qt();return De=t=>{const{atom:n,packageDevDependencies:r}=t,o=n.doc.features,a=o.css&&!1!==o.css.enabled;let i=[];a&&(i.push(["rollup-plugin-postcss","^4"]),i.push(["sass","^1.66"]),(o.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":i.push(["postcss-import","^15"]);break;case"postcss-url":i.push(["postcss-url","^10"]);break;case"postcss-preset-env":i.push(["postcss-preset-env","^9"]);break;case"autoprefixer":i.push(["autoprefixer","^10"]);break;case"cssnano":i.push(["cssnano","^6"])}}))),e({feature:{name:"css",packages:i},features:o,packageDevDependencies:r})},De}();function v({dir:e,name:n="index"}){let r=o.resolve(e,`./${n}.tsx`);if(t.existsSync(r)||(r=o.resolve(e,`./${n}.ts`)),t.existsSync(r)||(r=o.resolve(e,`./${n}.jsx`)),t.existsSync(r)||(r=o.resolve(e,`./${n}.js`)),!t.existsSync(r))return{};const a=r,i=o.extname(r);return{file:a,ext:i,ts:".ts"===i||".tsx"===i,name:n}}return Se=async t=>{const{atom:n,context:r,setProgress:b}=t;b("Initializing features..."),n.doc.features=n.doc.features||{};const j=n.doc.features;j.project=j.project||{},j.project.format=j.project.format||j.project_format||"esm",j.project_format=j.project.format,j.dts_enabled=!0===j.dts||void 0!==j.dts&&!1!==j.dts;const _=o.resolve(r.project.projectDir),k=v({dir:o.resolve(_,"./app")});if(k.file){b("Parsing app entry imports...");let e=await a({file:k.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));j.app_uses_jsx=t,j.app_has_entry=!0,e=await a({file:k.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),j.app_entry_uses_jsx=t,j.app_entry_is_ts=k.ts,j.app_entry_ext=k.ext}const D=v({dir:o.resolve(_,"./cli")});if(D.file){b("Parsing cli entry imports...");let e=await a({file:D.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));j.cli_uses_jsx=t,j.cli_has_entry=!0,e=await a({file:D.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),j.cli_entry_uses_jsx=t,j.cli_entry_is_ts=D.ts,j.cli_entry_ext=D.ext}if("workflow.lib"===n.type){const e=v({dir:o.resolve(_,"./src")});if(e.file){b("Parsing src entry imports...");let t=await a({file:e.file,recursive:!0}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));j.src_uses_jsx=n,j.src_has_entry=!0,t=await a({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),j.src_entry_uses_jsx=n,j.src_entry_is_ts=e.ts,j.src_entry_ext=e.ext}}const x=Reflect.has(j,"app_entry_uses_jsx")?!0===j.app_entry_uses_jsx:!0===j.src_entry_uses_jsx,S=Reflect.has(j,"cli_entry_uses_jsx")?!0===j.cli_entry_uses_jsx:!0===j.src_entry_uses_jsx;j.form_enabled=x||S||!0===j.form||!0===j.form?.enabled,j.multiple_enabled=j.multiple_enabled||!0===j.multiple||!0===j.multiple?.enabled,!1===j.app?j.app={enabled:!1}:!0===j.app?j.app={enabled:!0,extend:!0===j.app_has_entry,export:!0,react:x}:j.app={enabled:!0,extend:!0===j.app_has_entry,export:!0,react:x,...j.app||{}},j.app.enabled=!0===j.app.enabled&&(!0===n.doc.features.form_enabled||!0===j.app.extend||!0===j.app.enabled),j.app.format=j.app.format||"esm",j.app.folder=j.app.folder||j.app.format||"default",!1===j.cli?j.cli={enabled:!1}:!0===j.cli?j.cli={enabled:!0,extend:!0===j.cli_has_entry,export:!0,react:S}:j.cli={enabled:!0,extend:!0===j.cli_has_entry,export:!0,react:S,...j.cli||{}},j.cli.enabled=!0===j.cli.enabled&&(!1===n.doc.features.form_enabled||!0===j.cli.extend||!0===j.cli.enabled),j.cli.format=j.cli.format||"esm",j.cli.folder=j.cli.folder||j.cli.folder||"esm",j.cli.node_options=j.cli.node?.options||j.cli.node_options||"",j.json=j.cli.enabled||j.json;const P={cjs:{format:"cjs",context:j.form_enabled?"window":"global",babel:!0===j.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==j.cjs,copy:!1},esm:{format:"esm",context:j.form_enabled?"window":"global",babel:!0===j.src_uses_jsx||!1,browser:!1,replace:!0,terser:!1,enabled:!1!==j.esm,copy:!0},iife:{format:"iife",context:j.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!0===j.iife,terser:!0,copy:!1}};!0===j.webos&&(P.webos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/webos",copy:!1,babel_options:{targets:{chrome:"79"}}}),!0===j.electron&&(P.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===j.nextjs&&(P.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===j.ios&&(P.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===j.macos&&(P.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===j.app.enabled&&(j.app.dir=`./dist/app/${j.app.folder}`,P.app={format:j.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:j.app.dir,terser:!0,output_exports:!1===j.app.export?"none":"auto",browsersync:!0}),!0===j.cli.enabled&&(j.cli.dir=`./dist/cli/${j.cli.folder}`,P.cli={format:j.cli.format,context:"global",babel:!0===j.src_uses_jsx||!0===j.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:j.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===j.cli.export?"none":"auto"});const A={server:".",startPath:`${o.normalize(j.app.dir||".")}`,files:[o.normalize("./dist/**/*")],cors:!0,open:!1};j.babel_options=e({targets:{browsers:"last 9 versions, not dead",node:"18"}},j.babel_options||j.babel?.options),j.browsersync_options=e(A,j.browsersync_options||j.browsersync?.options||{}),j.replace_options=e({},j.replace_options||j.replace?.options||{}),Reflect.has(j.browsersync_options,"proxy")&&delete j.browsersync_options.server,j.rollup=j.rollup||{},j.rollup_output=e(P,j.rollup_output||j.rollup?.output||{}),j.preact_enabled=!0===j.preact||j.preact&&!1!==j.preact?.enabled;let E=Object.keys(P);for(const t of E){const n=P[t];n&&(!1!==j.rollup[t]?(n.babel_options=n.babel_options||j.babel_options,n.browsersync_options=e(j.browsersync_options,n.browsersync_options),n.replace_options=e(j.replace_options,n.replace_options),j.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"),(j.form_enabled||j.babel)&&(n.babel=!0)):delete j.rollup_output[t])}E=Object.keys(j.rollup_output),j.babel_enabled=E.some((e=>!0===j.rollup_output[e].babel)),j.browser_enabled=E.some((e=>!0===j.rollup_output[e].babel)),j.browsersync_enabled=!1!==j.browsersync&&E.some((e=>!0===j.rollup_output[e].browsersync)),j.browsersync_enabled=j.browsersync_enabled&&j.app.enabled,j.dependency_auto_enabled=!1!==j.dependency_auto&&!1!==j.dependency_auto?.enabled,j.npm_install_flags=j.npm_install_flags||"",j.react_version=j.react_version||j.react?.version||18,w(t),h(t),y(t),g(t),m(t),u(t),f(t),d(t),l(t),p(t),c(t),i(t),s(t)},Se}function tn(){if(Te)return $e;Te=1;const e=k;return $e=async({atom:t,packageDependencies:n,packageDevDependencies:r,setProgress:o})=>{o("Initializing dependencies");const a=t.doc.dependencies||[];if(a.filter((e=>!e.dev)).forEach((e=>n.push(e))),a.filter((e=>e.dev)).forEach((e=>r.push(e))),"workflow"===t.type&&(n.push({package:"get-value",version:"^3"}),n.push({package:"set-value",version:"^4"})),t.doc.features.form_enabled&&t.doc.features.dependency_auto_enabled){let r="^18.2";o("Fetching React versions");r=`^${(await e({name:"react",groupBy:{major:!0}})).find((e=>e[0]===t.doc.features.react_version.toString()))[0]}`,n.push({package:"react",version:r}),n.push({package:"react-dom",version:r}),"workflow"===t.type&&(n.push({package:"@fnet/react-app",version:"^0.1"}),n.push({package:"@fnet/react-app-state",version:"^0.1"}))}t.doc.features.preact_enabled&&n.push({package:"preact",version:"^10"}),!0===t.doc.features.cli.enabled&&(n.push({package:"@fnet/args",version:"^0.1"}),r.push({package:"ajv",version:"^8"}),t.doc.features.cli.fargs&&!1!==t.doc.features.cli.fargs?.enabled&&n.push({package:"@fnet/config",version:"0.2.21"})),t.doc.features.render&&!1!==t.doc.features.render.enabled&&r.push({package:"@flownet/lib-render-templates-dir",version:"0.1.19"}),r.push({package:"@babel/core",version:"^7"}),r.push({package:"@rollup/plugin-commonjs",version:"^28"}),r.push({package:"@rollup/plugin-node-resolve",version:"^16"}),r.push({package:"@rollup/plugin-replace",version:"^6"}),r.push({package:"rollup",version:"^4"}),t.doc.features.dts_enabled&&r.push({package:"rollup-plugin-dts",version:"^6"}),r.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),r.push({package:"@rollup/plugin-alias",version:"^5"}),r.push({package:"fs-extra",version:"^11"}),t.doc.features.babel_enabled&&(r.push({package:"@rollup/plugin-babel",version:"^6"}),r.push({package:"@babel/preset-env",version:"^7"}),r.push({package:"@babel/preset-react",version:"^7"}),t.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":r.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":r.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":r.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":r.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":r.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),r.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),t.doc.features.browsersync_enabled&&r.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})},$e}function nn(){if(Me)return Ce;Me=1;const e=n,t=r,o=m;return Ce=async({atom:n,setProgress:r,context:a,packageDependencies:i})=>{if(!0!==n.doc.features.app.enabled)return;await r({message:"Creating app folder"});const s={atom:n,packageDependencies:i,ts:Date.now()},c=a.templateDir,p=t.resolve(a.projectDir,"src/app");e.existsSync(p)||e.mkdirSync(p,{recursive:!0});let l=["index.js.njk"];!1!==n.doc.features.app.html&&l.push("index.html.njk"),await o({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:s})},Ce}function rn(){if(Fe)return Re;Fe=1;const e=D,t=x,o=n,a=r;return Re=async({projectDir:n,name:r,setProgress:i,count:s=1})=>{let c;const p=t(["npm-pick-versions",r,s]),l=a.join(n,".cache"),d=a.join(l,p+".json");return o.existsSync(d)?(i&&i(`Picking npm version of ${r} from cache ...`),c=JSON.parse(o.readFileSync(d,"utf8"))):(i&&i(`Picking npm version of ${r} ...`),c=await e({name:r,count:s}),o.mkdirSync(l,{recursive:!0}),o.writeFileSync(d,JSON.stringify(c),"utf8")),c}}function on(){if(qe)return Ne;qe=1;const e=y,t=n,o=r,a=_,i=rn();return Ne=async({atom:n,context:r,packageDependencies:s,packageDevDependencies:c,setProgress:p})=>{await p({message:"Creating package.json."});s.filter((e=>!0===e.dev)).forEach((e=>{c.find((t=>t.package===e.package))||c.push(e);const t=s.findIndex((t=>t.package===e.package));s.splice(t,1)}));const l=s.find((e=>"react"===e.package)),d=s.find((e=>"react-dom"===e.package));l&&!d?s.push({package:"react-dom",version:l.version}):l&&d&&(d.version=l.version),l&&n.doc.features.react_version>=17&&(s.find((e=>"@emotion/react"===e.package))||s.push({package:"@emotion/react",version:"^11"}),s.find((e=>"@emotion/styled"===e.package))||s.push({package:"@emotion/styled",version:"^11"}));const u=[];!0===n.doc.features.app.enabled&&u.push({file:o.resolve(r.projectDir,"src/app/index.js"),dev:!1!==n.doc.features.app.dev}),!0===n.doc.features.cli.enabled&&u.push({file:o.resolve(r.projectDir,"src/cli/index.js"),dev:!1!==n.doc.features.cli.dev});for await(const e of u){const n=e.file;if(!t.existsSync(n))throw new Error(`App file not found: ${n}`);const o=(await a({file:n,recursive:!0})).all;for await(const t of o){if("npm"!==t.type)continue;if(s.find((e=>e.package===t.package)))continue;if(c.find((e=>e.package===t.package)))continue;const n=await i({name:t.package,projectDir:r.projectDir,setProgress:p});(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const f={atom:n,packageDependencies:s,packageDevDependencies:c},m=r.templateCommonDir,g=e.compile(t.readFileSync(o.resolve(m,"package.json.njk"),"utf8"),e.configure(m)).render(f),y=r.projectDir,h=o.resolve(y,"package.json");t.writeFileSync(h,g,"utf8");const w=o.resolve(r.project.projectDir,"fnet");if(t.existsSync(w)){const e=o.resolve(r.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const n=t.readdirSync(w);for(const r of n){const n=o.resolve(w,r);if(!t.lstatSync(n).isFile())continue;const a=o.resolve(e,r);t.copyFileSync(n,a)}}},Ne}function an(){if(Ue)return Le;Ue=1;const e=n,t=r,o=m;return Le=async({atom:n,setProgress:r,context:a,packageDependencies:i})=>{if(!0!==n.doc.features.cli.enabled)return;await r({message:"Creating cli."});const s={atom:n,packageDependencies:i},c=a.templateDir,p=t.resolve(a.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await o({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:p,context:s})},Le}function sn(){if(He)return Be;He=1;const e=n,t=r,o=y,a=_;return Be=async({atom:n,setProgress:r,context:i,packageDependencies:s})=>{await r({message:"Creating rollup file."});const c={atom:n,packageDependencies:s},p=t.resolve(i.projectDir,"src","default/index.js");if(!e.existsSync(p))throw new Error(`Entry file not found: ${p}`);const l=(await a({file:p,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=n.doc.features.rollup_output,u=Object.keys(d);for(let e=0;e<u.length;e++){const t=d[u[e]];if(!0===t.browser&&l.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(l.map((e=>({key:e,value:e})))),t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{};for(let e=0;e<l.length;e++){const n=l[e];t.alias.entries[n]=`node:${n}`,t.alias.entries[`node:${n}`]=n}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(l)}}const f=i.templateCommonDir;let m=o.compile(e.readFileSync(t.resolve(f,"rollup.config.mjs.njk"),"utf8"),o.configure(f)).render(c);const g=i.projectDir;let y=t.resolve(g,"rollup.config.mjs");e.writeFileSync(y,m,"utf8")},Be}function cn(){if(Ke)return We;Ke=1;const e=n,t=r,o=y,a=S,i=P,s=A;return We=async({atom:n,setProgress:r,context:c,njEnv:p})=>{if(!0!==n.doc.features.cli.enabled)return;await r({message:"Creating yargs."});let l={};if(l=n.doc.input?n.doc.input:{type:"object",properties:{},required:[]},n.doc.features.cli.fargs&&!1!==n.doc.features.cli.fargs?.enabled){const e=n.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},r={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),l.properties&&(l.properties.fargs=t,l.properties.ftag=r)}const d={options:l,imports:[],atom:n},u=c.templateDir,f=o.compile(e.readFileSync(t.resolve(u,"src/default/to.args.js.njk"),"utf8"),p).render(d),m=c.projectDir,g=t.resolve(m,"src/default/to.args.js");e.writeFileSync(g,f,"utf8");const y=new a({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});s(y);const h=y.compile(l),w=i(y,h);e.writeFileSync(t.resolve(m,"src/default/validate_input.js"),w,"utf8")},We}function pn(){if(Xe)return Ge;Xe=1;const e=n,t=r,o=y;return Ge=async({atom:n,setProgress:r,context:a,packageDependencies:i})=>{await r({message:"Creating .gitignore"});const s={atom:n,packageDependencies:i},c=a.templateCommonDir,p=o.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),o.configure(c)).render(s),l=a.projectDir,d=t.resolve(l,".gitignore");e.writeFileSync(d,p,"utf8")},Ge}function ln(){if(Ve)return Ye;Ve=1;const e=n,t=r,o=y;return Ye=async({atom:n,setProgress:r,context:a,packageDependencies:i})=>{await r({message:"Creating tsconfig.json."});const s={atom:n,packageDependencies:i},c=a.templateCommonDir,p=o.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),o.configure(c)).render(s),l=a.projectDir,d=t.resolve(l,"tsconfig.json");e.writeFileSync(d,p,"utf8")},Ye}function dn(){if(Qe)return Ze;Qe=1;const e=y,t=n,o=r,a=d;return Ze=async({atom:n,context:r,setProgress:i,Atom:s})=>{const c="readme.md",p=`Creating ${c}`;if(await i({message:p}),r.project?.readme){const n=r.projectDir,i={content:r.project.readme.doc.content},s=o.resolve(r.project.projectDir,"fnet/how-to.md");if(t.existsSync(s)){const e=t.readFileSync(s,"utf8");i.howto=e}const p=o.resolve(r.project.projectDir,"fnet/input.yaml");if(t.existsSync(p)){const e=await a({file:p,tags:r.tags});i.input=e.content}const l=r.templateCommonDir,d=e.compile(t.readFileSync(o.resolve(l,`${c}.njk`),"utf8"),e.configure(l)).render(i),u=o.resolve(n,`${c}`);t.writeFileSync(u,d,"utf8")}else if(n.id){const a=await s.first({type:"wiki",parent_id:n.id});if(!a||"markdown"!==a.doc?.["content-type"])return;const{content:i,...p}=a.doc,l={content:i},d=r.templateCommonDir,u=e.compile(t.readFileSync(o.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(l),f=r.projectDir,m=o.resolve(f,`${c}`);t.writeFileSync(m,u,"utf8")}},Ze}function un(){if(tt)return et;tt=1;const e=a,t=f;return et=async({setProgress:n,context:r})=>{const o=r.projectDir;await n({message:"Prettifiying source files."});let a=e.join("src","**","*");await t({commands:{steps:[`prettier --write ${a} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:o}})}}function fn(){if(rt)return nt;rt=1;const e=p;return nt=async({atom:t,setProgress:n,context:r})=>{if(!t.doc.features.dts_enabled)return;const o=r.projectDir;await n({message:"Creating .d.ts"});if(0!==(await e("tsc",{cwd:o})).code)throw new Error("Couldnt create .d.ts files.")},nt}function mn(){if(at)return ot;at=1;const e=p,t=Zt;return ot=async({setProgress:n,atom:r,context:o})=>{const a=o.projectDir;await n({message:"Installing npm packages."});const i=t("bun")?"bun":"npm";if(0!==(await e(`${i} install ${r.doc.features.npm_install_flags}`,{cwd:a})).code)throw new Error("Couldnt install npm packages.")},ot}function gn(){if(st)return it;st=1;const e=r,t=E,n=m;return it=async r=>{const{setProgress:o,atom:a,context:i}=r;o({message:"Installing Python packages"});const s=i.projectDir,c=await t({pythonVersion:"3.12",packages:[{package:"fnet-import-parser",version:"0.1.9"}]}),{errors:p,result:l}=await c.runBin("fnet_import_parser",["--entry_file",e.join(s,"src","default","index.py")],{captureName:"result"});if(p)throw new Error(p.format());const d=JSON.parse(l.items[0].stdout),u=d.required["third-party"]?.map((e=>({package:e.metadata?.package||e.path,version:e.metadata?.version||void 0,channel:e.metadata?.channel||void 0})))||[],f=a.doc.dependencies||[];for(const e of u)f.some((t=>t.package===e.package))||f.push(e);const m=e.join(s,".conda"),g=await t({envDir:m,pythonVersion:a.doc.features.runtime.version||"3.12",packages:f});i.pythonEnv=g,r.packageDependencies=f;const y=a.doc.features.render?.dirs||[];for(const t of y)t.dir=e.resolve(s,t.dir),t.outDir=e.resolve(s,t.outDir),await n(t);let h={params:{}};h.params.package_name=a.doc.name,h.params.version="0.1.0",h.params.bin_name=a.doc.name,h.params.python_requires=a.doc.features.runtime.version||">=3.12",h.params.dependencies=f,h.params.scripts=JSON.stringify({cli:`PYTHONPATH='${e.join("src")}' '${e.relative(i.projectDir,g.pythonBin)}' '${e.join("src","cli","index.py")}'`}),await n({pattern:["setup.py.njk","package.json.njk","pyproject.toml.njk"],dir:i.templateDir,outDir:i.projectDir,context:h})},it}function yn(){if(pt)return ct;pt=1;const e=p;return ct=async({setProgress:t,context:n})=>{const r=n.projectDir;await t({message:"Building main project."});if(0!==(await e("npm run build",{cwd:r})).code)throw new Error("Couldnt build project.")}}function hn(){if(Ht)return Bt;Ht=1;const e=function(){if(dt)return lt;dt=1;const e=p,t=o;return lt=async({setProgress:n,context:r,deploymentProject:o,deploymentProjectTarget:a,buildId:i})=>{await n({message:"Deploying it as gitlab project."});const s=r.projectDir;let c="fnet-to-gitlab";const p=a.params.config||"gitlab",l=await t({name:p,dir:r.projectDir,tags:r.tags});if(!l)throw new Error(`Couldnt load config ${p}`);const{data:d}=l.data;c+=` --projectGroupId=${d.projectGroupId}`,c+=` --projectPath='${s}'`,c+=` --projectName='${a.params.name}'`,c+=` --projectBranch='${a.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==a.dryRun&&(await e(c),o.isDirty=!0)}}(),t=function(){if(ft)return ut;ft=1;const e=n,t=r,a=$,i=p,s=o;return ut=async({setProgress:n,context:r,deploymentProject:o,deploymentProjectTarget:c,registerToPackageManager:p,yamlTarget:l})=>{await n({message:"Deploying it as gcs package."});const d=r.projectDir,u=t.resolve(d,"package.json"),f=e.readFileSync(u),m=JSON.parse(f);m.name=c.params.name,m.version=a.inc(c.version,"patch"),delete m.scripts,delete m.devDependencies,e.writeFileSync(u,JSON.stringify(m,null,"\t"));const{file:g,data:y}=await s({name:c.config||"gcs",dir:r.projectDir,tags:r.tags});let h="fnet-files-to-gcs";h+=` --projectId='${y.env.GCS_PROJECT_ID}'`,h+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,h+=` --keyFilename='${t.resolve(t.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,h+=` --dir='${d}'`,h+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",h+=` --destDir='${m.name}/${m.version}'`,h+=" --metadata.cacheControl='public, max-age=31536000, immutable'",y.env.DOMAIN&&(h+=` --domain='${y.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(h+=" --dryRun"),await i(h),e.writeFileSync(u,f),!0!==c.dryRun&&(o.isDirty=!0,c.version=m.version,l.set("version",m.version),await p({target:c,packageJSON:m}))}}(),i=function(){if(gt)return mt;gt=1;const e=n,t=r,a=$,i=p,s=o,l=T,d=u,f=c,m=Zt;return mt=async({atom:n,setProgress:r,context:o,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:u})=>{await r({message:"Deploying it as npm package."});const g=o.projectDir,y=t.resolve(g,"package.json"),h=e.readFileSync(y),w=JSON.parse(h);w.name=p.params.name,w.version=a.inc(p.version,"patch");const v=p.params.bin?.name||p.params.bin;!1!==p.params.bin?.enabled&&v&&"string"==typeof v&&(w.bin={[v]:"dist/cli/esm/index.js"}),delete w.scripts,delete w.devDependencies,w.scripts={serve:"npx serve ."},e.writeFileSync(y,JSON.stringify(w,null,"\t"));const b=p.config||"npm";let j=(await s({name:b,dir:o.projectDir,tags:o.tags,optional:!0}))?.data;if(!j){const n=l({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 r=await d({schema:n[0],tags:o.tags}),a=o.project.projectDir,i=t.resolve(a,".fnet");e.existsSync(i)||e.mkdirSync(i),e.writeFileSync(t.resolve(i,`${b}.fnet`),f.stringify(r)),j=r}if(e.writeFileSync(t.resolve(g,".npmrc"),`//registry.npmjs.org/:_authToken=${j.env.NPM_TOKEN}`),!0===p.dryRun)return;const _=m("bun")?"bun":"npm";if(0!==(await i(`${_} publish --access public`,{cwd:g})).code)throw new Error("Couldnt publish to npm");e.writeFileSync(y,h),c.isDirty=!0,p.version=w.version,u.set("version",w.version)}}(),l=function(){if(ht)return yt;ht=1;const e=n,t=r,a=g,i=y,s=O,c=o;return yt=async({atom:n,setProgress:r,context:o,deploymentProject:p,deploymentProjectTarget:l,buildId:d,packageDependencies:u,njEnv:f})=>{await r({message:"Deploying it as node-red flow."});const m=o.projectDir,g=o.templateDir,y="workflow"===n.type?"WF":"LIB";let h;if("simple"===l.deploy.template)h={atom:n,packageDependencies:u,red:{tab:{id:l.deploy.id||s.util.generateId(),label:`${y}/${n.id?n.id:a.hostname()}/${n.name}/${l.deploy.name||l.deploy.template}`},function:{id:s.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:s.util.generateId(),...l.params?.inject,payload:"json"===l.params?.inject?.payloadType?`'${JSON.stringify(l.params?.inject?.payload)}'`:l.params?.inject?.payload},debug:{id:s.util.generateId()}}};else if("cronjob"===l.deploy.template){let r=l.params?.schedules?cloneDeep(l.params?.schedules):void 0;r?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),h={atom:n,packageDependencies:u,red:{tab:{id:l.deploy.id||s.util.generateId(),label:`${y}/${n.id?n.id:a.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:s.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:s.util.generateId(),schedules:r},debug:{id:s.util.generateId()}}}}else{if("http"!==l.deploy.template)return;h={atom:n,packageDependencies:u,red:{tab:{id:l.deploy.id||s.util.generateId(),label:`${y}/${n.id?n.id:a.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:s.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:s.util.generateId(),method:l.params.method||"get",url:l.params.url},httpout:{id:s.util.generateId()},debug:{id:s.util.generateId()}}}}let w=i.compile(e.readFileSync(t.resolve(g,`deploy/node-red/${l.deploy.template}.yaml.njk`),"utf8"),f).render(h);if(e.writeFileSync(t.resolve(m,"node-red.yaml"),w),w=yaml.load(w),!0===l.dryRun)return;p.isDirty=!0;const v=(await c({name:o.redConfig||"red",dir:o.projectDir,tags:o.tags}))?.data,b=l.deploy.url||v.env.RED_URL,j={};if(!1!==l.deploy.auth&&(j.Authorization="Bearer "+atomAccessToken),l.deploy.id)if(!0===l.actions?.delete){const e=await fetch(`${b}/flow/${l.deploy.id}`,{method:"DELETE",headers:j});if(!e.ok)throw new Error(`Failed to delete flow: ${e.statusText}`);delete l.actions.delete,delete l.deploy.id,l.enabled=!1}else{const e=await fetch(`${b}/flow/${l.deploy.id}`,{method:"PUT",headers:{...j,"Content-Type":"application/json"},body:JSON.stringify(w)});if(!e.ok)throw new Error(`Failed to update flow: ${e.statusText}`)}else{const e=await fetch(`${b}/flow`,{method:"POST",headers:{...j,"Content-Type":"application/json"},body:JSON.stringify(w)});if(!e.ok)throw new Error(`Failed to create flow: ${e.statusText}`);const t=await e.json();l.deploy.id=t.id}},yt}(),d=function(){if(vt)return wt;vt=1;const e=s,t=a,n=o;return wt=async({atom:r,Atom:o,setProgress:a,context:i,packageDependencies:s,deploymentProject:c,deploymentProjectTarget:p})=>{await a({message:"Deploying it as workflow lib."});const l=(await n({name:"atom",dir:i.projectDir,tags:i.tags}))?.data;let d,u,f,m=p.deploy.name.split("/");if(1===m.length)u=l.env.ATOM_LIBRARIES_ID,f=p.deploy.name;else{if(2!==m.length)throw new Error("Wrong name path.");{const e=await o.first({where:{name:m[0],parent_id:l.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");u=e.id,f=m[1]}}if(!0===p.dryRun)return;if(c.isDirty=!0,p.deploy.id){if(d=await o.get({id:p.deploy.id}),!d)return}else{if(d=await o.create({parent_id:u,doc:{name:f,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!d)return;p.deploy.id=d.id}const g=i.projectDir;d.doc.contents=[{content:e.readFileSync(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=f,d.doc.dependencies=s,"workflow.lib"===r.type?d.doc.subtype="library":"workflow"===r.type&&(d.doc.subtype="workflow"),d=await o.update(d,{id:d.id})}}(),f=function(){if(jt)return bt;jt=1;const e=o,t=I,n=C,r=$;return bt=async({atom:o,target:a,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as ios-app package."});const d=a?.config?await e({name:a.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(a.version||"0.1.0","patch");a.params.version=u,a.version=u,l.set("version",u);const f=n(a.params);f.dependencies=n(c);const m={atom:o,params:f,config:d?.config,src:s,dest:s};return{deployer:await t(m)}},bt}(),m=function(){if(kt)return _t;kt=1;const e=o,t=M,n=C,r=$;return _t=async({atom:o,target:a,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as macos-app package."});const d=a?.config?await e({name:a.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(a.version||"0.1.0","patch");a.params.version=u,a.version=u,l.set("version",u);const f=n(a.params);f.dependencies=n(c);const m={atom:o,params:f,config:d?.config,src:s,dest:s};return{deployer:await t(m)}},_t}(),h=function(){if(xt)return Dt;xt=1;const e=o,t=R,n=C,r=$;return Dt=async({atom:o,target:a,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as electron package."});const d=a?.config?await e({name:a.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(a.version||"0.1.0","patch");a.params.version=u,a.version=u,l.set("version",u);const f=n(a.params);f.dependencies=n(c);const m={atom:o,params:f,config:d?.config,src:s,dest:s};return{deployer:await t(m)}},Dt}(),w=function(){if(Pt)return St;Pt=1;const e=o,t=F,n=C,r=$;return St=async({atom:o,target:a,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as webos package."});const d=a?.config?await e({name:a.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(a.version||"0.1.0","patch");a.params.version=u,a.version=u,l.set("version",u);const f=n(a.params);f.dependencies=n(c);const m={atom:o,params:f,config:d?.config,src:s,dest:s};return{deployer:await t(m)}},St}(),v=function(){if(Et)return At;Et=1;const e=o,t=N,n=C,r=$;return At=async({atom:o,target:a,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as nextjs package."});const d=a?.config?await e({name:a.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(a.version||"0.1.0","patch");a.params.version=u,a.version=u,l.set("version",u);const f=n(a.params);f.dependencies=n(c);const m={atom:o,params:f,config:d?.config,src:s,dest:s};return{deployer:await t(m)}},At}(),b=function(){if(Tt)return $t;Tt=1;const e=o,t=q,n=C,r=$;return $t=async({atom:o,target:a,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as docker package."});const d=a?.config?await e({name:a.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(a.version||"0.1.0","patch");a.params.version=u,a.version=u,l.set("version",u);const f=n(a.params);f.dependencies=n(c);const m={atom:o,params:f,config:d?.config,src:s,dest:s};return{deployer:await t(m)}},$t}(),j=function(){if(It)return Ot;It=1;const e=n,t=r,a=$,i=p,s=o;return Ot=async({setProgress:n,context:r,deploymentProject:o,deploymentProjectTarget:c,yamlTarget:p})=>{await n({message:"Deploying it as fnet package."});const l=r.projectDir,d=t.resolve(l,"package.json"),u=e.readFileSync(d),f=JSON.parse(u);f.name=c.params.name,f.version=a.inc(c.version,"patch"),delete f.scripts,delete f.devDependencies,e.writeFileSync(d,JSON.stringify(f,null,"\t"));const{file:m,data:g}=await s({name:c.config||"fnet-package",dir:r.projectDir,tags:r.tags});if(!g.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${m}`);if(!g.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${m}`);if(!g.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${m}`);const y=`${g.env.ATOM_API_URL}/v1/auth/token`,h=g.env.ATOM_API_USERNAME,w=g.env.ATOM_API_PASSWORD,v=await fetch(y,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:h,password:w})});if(!v.ok)throw new Error(`Failed to fetch token: ${v.statusText}`);const b=await v.json(),j=b?.access_token;if(!j)throw new Error(`Invalid access_token from ${y}`);let _="fnet-files-to-gcs";if(_+=` --projectId='${g.env.GCS_PROJECT_ID}'`,_+=` --bucketName='${g.env.GCS_BUCKET_NAME}'`,_+=` --keyFilename='${t.resolve(t.dirname(m),g.env.GCS_UPLOADER_KEY_FILE)}'`,_+=` --dir='${l}'`,_+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",_+=` --destDir='${f.name}/${f.version}'`,_+=" --metadata.cacheControl='public, max-age=31536000, immutable'",g.env.DOMAIN&&(_+=` --domain='${g.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(_+=" --dryRun"),await i(_),e.writeFileSync(d,u),!0===c.dryRun)return;o.isDirty=!0,c.version=f.version,p.set("version",f.version);const k=`${g.env.ATOM_API_URL}/v1/service/fnet-package/publish`,D=await fetch(k,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${j}`},body:JSON.stringify({name:f.name,version:f.version,version_domain:g.env.DOMAIN,docs:c.params.docs,configs:c.params.configs})});if(!D.ok)throw new Error(`Failed to publish fnet package: ${D.statusText}`);const x=await D.json();if(x?.error)throw new Error("Failed to publish fnet package.")}}(),_=function(){if(Mt)return Ct;Mt=1;const e=$,t=o;return Ct=async({setProgress:n,context:r,deploymentProject:o,deploymentProjectTarget:a,yamlTarget:i})=>{await n({message:"Deploying it as fnet form."});const{file:s,data:c}=await t({name:a.config||"fnet-form",dir:r.projectDir,tags:r.tags});if(!c.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${s}`);if(!c.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${s}`);if(!c.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${s}`);const p=`${c.env.ATOM_API_URL}/v1/auth/token`,l=c.env.ATOM_API_USERNAME,d=c.env.ATOM_API_PASSWORD,u=await fetch(p,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:l,password:d})});if(!u.ok)throw new Error(`Failed to fetch token: ${u.statusText}`);const f=await u.json(),m=f?.access_token;if(!m)throw new Error(`Invalid access_token from ${p}`);o.isDirty=!0;const g=e.inc(a.version,"patch");a.params.version=g,a.version=g,i.set("version",g);const y=`${c.env.ATOM_API_URL}/v1/service/fnet-form/publish`,h=await fetch(y,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${m}`},body:JSON.stringify({name:a.params.name,version:a.params.version,docs:a.params.docs,configs:a.params.configs})});if(!h.ok)throw new Error(`Error publishing fnet form: ${h.statusText}`);const w=await h.json();if(w?.error)throw new Error("Error publishing fnet form.")}}(),k=function(){if(Ft)return Rt;Ft=1;const e=$,t=o,n=s,r=p,a=L;return Rt=async({setProgress:o,context:i,deploymentProject:s,deploymentProjectTarget:c,yamlTarget:p})=>{await o({message:"Deploying it as fnet flow."});const{file:l,data:d}=await t({name:c.config||"fnet-flow",dir:i.project.projectDir,tags:i.tags});if(!d.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${l}`);if(!d.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${l}`);if(!d.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${l}`);const u=`${d.env.ATOM_API_URL}/v1/auth/token`,f=d.env.ATOM_API_USERNAME,m=d.env.ATOM_API_PASSWORD,g=await fetch(u,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:f,password:m})});if(!g.ok)throw new Error(`Failed to fetch token: ${g.statusText}`);const y=await g.json(),h=y?.access_token;if(!h)throw new Error(`Invalid access_token from ${u}`);s.isDirty=!0;const w=e.inc(c.version,"patch");c.params.version=w,c.version=w,p.set("version",w);const v=`${d.env.ATOM_API_URL}/v1/service/fnet-flow/publish`,b=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`},body:JSON.stringify({name:c.params.name,version:c.params.version,docs:c.params.docs,configs:c.params.configs})});if(!b.ok)throw new Error(`Error publishing fnet flow: ${b.statusText}`);const j=await b.json();if(j?.error)throw new Error("Error publishing fnet flow.");const _=j?.upload.id;let k="fnet-dir-zipper";k+=` --sourceDir='${i.project.projectDir}'`,k+=" --pattern=**/*",k+=" --stdout_format=json";const D=await r(k);if(0!==D.code)throw new Error(D.stderr);const x=JSON.parse(D.stdout).path;let S=new a;S.append("file",n.createReadStream(x));const P=await fetch(`${d.env.ATOM_API_URL}/v1/service/upload/single/${_}`,{method:"POST",headers:{...S.getHeaders(),Authorization:`Bearer ${h}`},body:S});if(!P.ok)throw new Error(`Error uploading fnet flow: ${P.statusText}`);const A=await P.json();if(A?.error)throw new Error("Error uploading fnet flow.")}}(),D=function(){if(qt)return Nt;qt=1;const e=$,t=o,n=s,r=p,a=L;return Nt=async({setProgress:o,context:i,deploymentProject:s,deploymentProjectTarget:c,yamlTarget:p})=>{await o({message:"Deploying it as fnet node."});const{file:l,data:d}=await t({name:c.config||"fnet-node",dir:i.project.projectDir,tags:i.tags});if(!d.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${l}`);if(!d.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${l}`);if(!d.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${l}`);const u=`${d.env.ATOM_API_URL}/v1/auth/token`,f=d.env.ATOM_API_USERNAME,m=d.env.ATOM_API_PASSWORD,g=await fetch(u,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:f,password:m})});if(!g.ok)throw new Error(`Failed to fetch token: ${g.statusText}`);const y=await g.json(),h=y?.access_token;if(!h)throw new Error(`Invalid access_token from ${u}`);s.isDirty=!0;const w=e.inc(c.version,"patch");c.params.version=w,c.version=w,p.set("version",w);const v=`${d.env.ATOM_API_URL}/v1/service/fnet-node/publish`,b=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`},body:JSON.stringify({name:c.params.name,version:c.params.version,docs:c.params.docs,configs:c.params.configs})});if(!b.ok)throw new Error(`Error publishing fnet node: ${b.statusText}`);const j=await b.json();if(j?.error)throw new Error("Error publishing fnet node.");const _=j?.upload.id;let k="fnet-dir-zipper";k+=` --sourceDir='${i.project.projectDir}'`,k+=" --pattern=**/*",k+=" --stdout_format=json";const D=await r(k);if(0!==D.code)throw new Error(D.stderr);const x=JSON.parse(D.stdout).path;let S=new a;S.append("file",n.createReadStream(x));const P=await fetch(`${d.env.ATOM_API_URL}/v1/service/upload/single/${_}`,{method:"POST",headers:{...S.getHeaders(),Authorization:`Bearer ${h}`},body:S});if(!P.ok)throw new Error(`Error uploading fnet node: ${P.statusText}`);const A=await P.json();if(A?.error)throw new Error("Error uploading fnet node.")}}(),x=function(){if(Ut)return Lt;Ut=1;const e=o,t=U,n=C,r=$;return Lt=async({atom:o,target:a,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as Rust package."});const d=a?.config?await e({name:a.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(a.version||"0.1.0","patch");a.params.version=u,a.version=u,l.set("version",u);const f=n(a.params);f.dependencies=n(c);const m={atom:o,params:f,config:d?.config,src:s,dest:s};return{deployer:await t(m)}},Lt}(),S=function(){if(zt)return Jt;zt=1;const e=o,t=J,n=C,r=$;return Jt=async({atom:o,target:a,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as pypi package."});const d=a?.config?await e({name:a.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=r.inc(a.version||"0.1.0","patch");a.params.version=u,a.version=u,l.set("version",u);const f=n(a.params);f.dependencies=n(c);const m={atom:o,params:f,config:d?.config,src:s,dest:s};return{deployer:await t(m)}},Jt}();return Bt=async n=>{const{atom:r,packageDependencies:o,context:a,deploymentProjectTarget:s,setProgress:c,deploymentProject:p,yamlTarget:u}=n;if(!0===s.enabled)if("lib"===s.type)await d({...n});else if("red"===s.type)await l({...n});else if("npm"===s.type)await i({...n});else if("gcs"===s.type)await t({...n});else if("gitlab"===s.type)await e({...n});else if("fnet-package"===s.type)await j({...n});else if("fnet-form"===s.type)await _({...n});else if("fnet-node"===s.type)await D({...n});else if("fnet-flow"===s.type)await k({...n});else{let e;if("nextjs"===s.type?e=v:"webos"===s.type?e=w:"electron"===s.type?e=h:"docker"===s.type?e=b:"ios"===s.type?e=f:"macos"===s.type?e=m:"rust"===s.type?e=x:"pypi"===s.type&&(e=S),!e)return;await e({atom:r,target:s,onProgress:c,projectDir:a.projectDir,dependencies:o,context:a,yamlTarget:u}),p.isDirty=!0}},Bt}function wn(){if(Kt)return Wt;Kt=1;const e=n,t=r,a=g,i=c,s=y,p=function(){if(X)return G;X=1;const e=h,t=w;return G=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}}(),{randomUUID:l}=v,d=function(){if(V)return Y;V=1;const{Api:e}=b;return Y=class{init({config:t,accessToken:n}){return new Promise(((r,o)=>{if(e.set_api_url(t.data.url),n)return e.set_req_token(n),void r(n);fetch(`${t.data.issuer}/protocol/openid-connect/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t.data.grant.params)}).then((async e=>{if(!e.ok)throw new Error(await e.text());return e.json()})).then((t=>{e.set_req_token(t.access_token),r(t.access_token)})).catch((t=>{e.set_req_token(),o(t)}))}))}}}(),u=en(),f=(Ee||(Ee=1,Ae=async e=>{const{atom:t,context:n,setProgress:r}=e;r("Initializing features..."),t.doc.features=t.doc.features||{};const o=t.doc.features;!1===o.cli?o.cli={enabled:!1}:(o.cli,o.cli={enabled:!0}),o.cli.enabled=!0===o.cli.enabled&&(!1===t.doc.features.form_enabled||!0===o.cli.extend||!0===o.cli.enabled)}),Ae),j=tn(),k=Ie?Oe:(Ie=1,Oe=async({atom:e,packageDependencies:t,packageDevDependencies:n,setProgress:r})=>{r("Initializing dependencies")}),D=nn(),x=on(),S=an(),P=function(){if(ze)return Je;ze=1;const e=n,t=r,o=m;return Je=async({atom:n,setProgress:r,context:a,packageDependencies:i})=>{if(!0!==n.doc.features.cli.enabled)return;await r({message:"Creating cli."});const s={atom:n,packageDependencies:i},c=a.templateDir,p=t.join(a.projectDir,"src","cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await o({pattern:["index.py.njk","__init__.py.njk"],dir:t.join(c,"src","cli"),outDir:p,context:s})},Je}(),A=sn(),E=cn(),$=pn(),T=ln(),O=dn(),I=un(),C=fn(),M=mn(),R=gn(),F=yn(),N=rn(),q=hn(),{Atom:L}=b,U=z,J=o,W=_,K=B,Z=H;return Wt=class{#e;#t;#n;#r;#o;#a;#i;#s;#c;#p;#l;#d;#u;#f;#m;#g;#y;constructor(e){this.#e=new d,this.#t=e,this.#a=[],this.#i=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#a,packageDevDependencies:this.#i,setProgress:this.setProgress.bind(this),context:this.#t,Atom:L,registerToPackageManager:this.registerToPackageManager.bind(this)}}async _cache_set(e,t,n){this._redis_client&&await this._redis_client.SETEX(e,n||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async initAuth(){this.#t.id&&(this.#s=await this.#e.init({config:this.#d}),this.#y.atomAccessToken=this.#s)}async initLibrary(){const e=this.#t.id;this.#n=this.#t.project?.libraryAtom||await L.get({id:e});let t=this.#n.doc.bundleName;t=t||(this.#n.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#n.doc.bundleName=t,this.#n.type=this.#n.type||"workflow.lib",this.#y.atom=this.#n}async initLibraryDir(){this.setProgress({message:"Initializing library directory."});const n=this.#t.projectDir;this.setProgress({message:"Cleaning project directory."});const r=K({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."});let o=n;e.existsSync(o)||e.mkdirSync(o,{recursive:!0}),o=t.join(n,"src"),e.existsSync(o)||e.mkdirSync(o,{recursive:!0}),o=t.join(n,"src","default"),e.existsSync()||e.mkdirSync(o,{recursive:!0})}async initLibraryDirPython(){this.setProgress({message:"Initializing library directory."});const n=this.#t.projectDir;this.setProgress({message:"Cleaning project directory."});const r=K({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."});let o=n;e.existsSync(o)||e.mkdirSync(o,{recursive:!0}),o=t.join(n,"src"),e.existsSync(o)||e.mkdirSync(o,{recursive:!0}),o=t.join(n,"src","default");const i=this.#t.projectSrcDir;if(!e.existsSync(o))try{"win32"===a.platform()?e.symlinkSync(i,o,"junction"):e.symlinkSync(i,o,"dir")}catch(e){throw new Error(`Couldn't create symlink. Error: ${e.message}`)}}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#t.templateDir;this.#r=s.configure(e,{watch:!1,dev:!0}),this.#y.njEnv=this.#r}async initLibs(){this.setProgress({message:"Initializing external libs."});const e=[{name:this.#n.doc.name,type:"atom",parent_id:this.#n.parent_id}];this.#o=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.#a})}async initLibsPython(){this.setProgress({message:"Initializing external libs."});const e=this.#n;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=[{name:this.#n.doc.name,type:"atom",parent_id:this.#n.parent_id,atom:e}];this.#o=t}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const n=e.filter((e=>"atom"===e.type));for(let e=0;e<n.length;e++){const r=n[e],o=await this.findAtomLibrary({url:r.name});r.atom=o;const a=o.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));a?.forEach((e=>{const n=t.find((t=>t.package===e.package));n?"string"==typeof e.path?(n.path||[]).some((t=>t===e.path))||(n.path=n.path||[],n.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(n.path||[]).some((t=>t===e))||(n.path=n.path||[],n.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const n=U({url:e});if(!n)throw new Error(`Invalid package name: ${e}`);if(n.protocol||(n.protocol=this.#l),"ac:"===n.protocol){const t=n.pathname.split("/");if(1===t.length)return await L.first({where:{name:e,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await L.first({where:{name:t[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await L.first({where:{name:t[1],parent_id:e.id,type:"workflow.lib"}})}}else if("local:"===n.protocol){const e=this.#n;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const n=t.resolve(this.#t.projectSrcDir,"index.js"),r=await W({file:n,recursive:!0}),o=e.doc.dependencies,a=r.all;for await(const e of a){if("npm"!==e.type)continue;if(o.find((t=>t.package===e.package)))continue;const t=await N({name:e.package,projectDir:this.#t.projectDir,setProgress:this.#y.setProgress});o.push({package:e.package,subpath:e.subpath,version:t.minorRange,type:"npm"})}return e}}async createAtomLibFiles({libs:n}){await this.setProgress({message:"Creating external lib files."}),this.#n.typesDir="./types";const r=n.filter((e=>"atom"===e.type));for(let n=0;n<r.length;n++){const o=r[n].atom,a=this.#t.projectDir;if("local:"===o.protocol){const n=t.resolve(this.#t.projectSrcDir,`${o.fileName||o.name}.js`),r=t.relative(t.join(this.#t.projectDir,"src","default"),n);if(!e.existsSync(n)){e.mkdirSync(t.dirname(n),{recursive:!0});let r="export default async (args)=>{\n";r+="}",e.writeFileSync(n,r,"utf8")}o.relativePath=r.split(t.sep).join("/"),this.#n.typesDir=`./types/${t.basename(a)}/src`}else{const n=t.join(a,"src","libs",`${o.id}.js`),r=o.doc.contents?.find((e=>"esm"===e.format))||o.doc;e.writeFileSync(n,r.content,"utf8")}}}async createAtomLibFilesPython({libs:n}){await this.setProgress({message:"Creating external lib files."});const r=n.filter((e=>"atom"===e.type));for(let n=0;n<r.length;n++){const o=r[n].atom;if("local:"===o.protocol){const n=t.resolve(this.#t.projectSrcDir,`${o.fileName||o.name}.py`);if(!e.existsSync(n)){e.mkdirSync(t.dirname(n),{recursive:!0});let r="def default():\n";r+=' print("Hello world!")\n',e.writeFileSync(n,r,"utf8")}}}}async createEngine(){await this.setProgress({message:"Creating engine file."});const n={libs:this.#o.filter((e=>"atom"===e.type)),libraryAtom:this.#n,atom:this.#n},r=this.#t.templateDir,o=s.compile(e.readFileSync(t.resolve(r,t.join("src","default","engine.js.njk")),"utf8"),this.#r).render(n),a=this.#t.projectDir,i=t.resolve(a,t.join("src","default","index.js"));e.writeFileSync(i,o,"utf8")}async createProjectYaml(){const n="node.yaml",r=`Creating ${n}`;await this.setProgress({message:r});const{content:o,...a}=this.#n.doc,c={content:i.stringify(a)},p=this.#t.templateDir,l=s.compile(e.readFileSync(t.resolve(p,`${n}.njk`),"utf8"),this.#r).render(c),d=this.#t.projectDir,u=t.resolve(d,`${n}`);e.writeFileSync(u,l,"utf8")}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#t.project?.devops){const e=[this.#t.project?.devops];for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&await n.save()}}else if(this.#n.id){const e=await L.list({type:"library.deploy",parent_id:this.#n.id});for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&(n=await L.update(n,{id:n.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:n}=t;if(t.doc.targets&&Array.isArray(t.doc.targets))throw new Error("Deployment project targets are deprecated. Please update targets in the yaml file.");const r=Object.keys(t.doc||{}),o=n||{};for(let e=0;e<r.length;e++){const n=t.doc[r[e]];n.name=r[e];const a=o.get(r[e]);await q({...this.#y,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:a})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#t.id)return;let r=await L.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});r?(r.doc.versions.splice(0,0,{v:n.version}),await L.update(r,{id:r.id})):r=await L.create({parent_id:this.#d.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(Z.blue(t)),await this._cache_set(this.#p,{status:"IN_PROGRESS",message:t})}async initNode(){await u(this.#y),await j(this.#y),await this.initLibraryDir(),await this.initNunjucks(),await this.initLibs()}async initPython(){await f(this.#y),await k(this.#y),await this.initLibraryDirPython(),await this.initNunjucks(),await this.initLibsPython()}async nodeBuild(){this.#f&&(await this.createAtomLibFiles({libs:this.#o}),await this.createEngine(),await this.createProjectYaml(),await O(this.#y),await T(this.#y),await $(this.#y),await E(this.#y),await S(this.#y),await D(this.#y),await A(this.#y),await x(this.#y),await I(this.#y),await C(this.#y),this.#m&&(await M(this.#y),await F(this.#y),this.#g&&await this.deploy()))}async pythonBuild(){this.#f&&(await this.createAtomLibFilesPython({libs:this.#o}),await this.createProjectYaml(),await O(this.#y),await $(this.#y),await P(this.#y),this.#m&&(await R(this.#y),this.#g&&await this.deploy()))}async init(){this._redis_client=await p(),this.#c=this.#t.buildId||l(),this.#y.buildId=this.#c,this.#u=this.#t.mode,this.#f=["all","deploy","build","file"].includes(this.#u),this.#m=["all","deploy","build"].includes(this.#u),this.#g=["all","deploy"].includes(this.#u),this.#l=this.#t.protocol,this.#p="BUILD:"+this.#c,this.#d=(await J({optional:!0,name:this.#t.atomConfig||"atom",dir:this.#t.projectDir,tags:this.#t.tags}))?.data;try{await this.setProgress({message:"Initialization started."}),await this.initAuth(),await this.initLibrary(),"node"===this.#n.doc.features.runtime.type?await this.initNode():"python"===this.#n.doc.features.runtime.type&&await this.initPython()}catch(e){throw await this._cache_set(this.#p,{status:"FAILED",message:e?.message||e}),e}}async build(){try{"node"===this.#n.doc.features.runtime.type?await this.nodeBuild():"python"===this.#n.doc.features.runtime.type&&await this.pythonBuild(),await this._cache_set(this.#p,{status:"COMPLETED"})}catch(e){throw await this._cache_set(this.#p,{status:"FAILED",message:e.message||e}),console.log(e),e}}},Wt}var vn=function(){if(Yt)return Vt;Yt=1;const g=process.cwd(),{spawn:y}=e,h=t,w=Zt;o({name:["redis"],dir:g,optional:!0});const v=a,b=i,j=s,_=c,k=p,D=l,x=d,S=o,P=u,A=f,E=m,$=wn(),T=function(){if(Xt)return Gt;Xt=1;const e=n,t=r;return Gt=function({baseDir:n=__dirname}){let r=n;for(;r!==t.parse(r).root;){const n=t.join(r,"node_modules");if(e.existsSync(n))return n;r=t.dirname(r)}return null}}()({baseDir:__dirname}),O="win32"===process.platform?";":":";process.env.PATH=`${v.join(T,"/.bin")}${O}${process.env.PATH}`;let I=b(process.argv.slice(2)).command("create","Create flow node project",(e=>e.option("name",{type:"Project name",demandOption:!0}).option("vscode",{type:"boolean",default:!0,alias:"vs"}).option("runtime",{type:"string",default:"node",choices:["node","python"]})),(async e=>{try{const t=v.resolve(T,"@fnet/cli-project-node/dist/template/project"),n=v.resolve(g,e.name);j.existsSync(n)||j.mkdirSync(n),await E({dir:t,outDir:n,context:{name:e.name,runtime:e.runtime,platform:D.platform()},copyUnmatchedAlso:!0});let r=await k("fnode build",{cwd:n});if(0!==r.code)throw new Error("Failed to build project.");if(w("git")&&(r=await k("git init --initial-branch=main",{cwd:n}),0!==r.code))throw new Error("Failed to initialize git.");if(w("code")&&e.vscode&&(r=await k(`cd ${n} && code .`),0!==r.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})).command("project","Flow node project",(e=>e.option("update",{type:"boolean",default:!1,alias:"-u"})),(async e=>{try{const t=v.resolve(T,"@fnet/cli-project-node/dist/template/project"),n=process.cwd(),r=await R(e);if(e.update){if(await E({dir:t,outDir:n,context:{name:r.project.projectFileParsed.name,runtime:r.project.runtime.type,platform:D.platform()},copyUnmatchedAlso:!0}),0!==(await k("fnode build",{cwd:n})).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(e){console.error("Project failed.",e.message),process.exit(1)}})).command("build","Build flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"]}).option("ftag",{type:"array"})),(async e=>{try{const t=await R(e),n=new $(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})).command("deploy","Build and deploy flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await R({...e,mode:"all"}),n=new $(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})).command("file","Just create files",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await R({...e,mode:"file"}),n=new $(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}}));function C(e,{name:t,bin:n,preArgs:r=[]}){return e.command(`${t||n} [commands..]`,`${n} ${r.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const t=await R(e),{projectDir:o}=t,a=e=>e.includes(" ")?"win32"===process.platform?`"${e.replace(/(["^])/g,"^$1")}"`:`"${e.replace(/(["\\$`])/g,"\\$1")}"`:e,i=process.argv.slice(3).map(a);y(n,[...r,...i],{cwd:o,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}function M(e,{name:t,bin:n,preArgs:r=[]}){return e.command(`${t||n} [commands..]`,`${n} ${r.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const o=await R(e),{projectDir:a}=o,i=e=>e.includes(" ")?"win32"===process.platform?`"${e.replace(/(["^])/g,"^$1")}"`:`"${e.replace(/(["\\$`])/g,"\\$1")}"`:e,s=process.argv.slice(3).map(i);n=v.join(a,".conda","bin",n||t);y(n,[...r,...s],{cwd:a,stdio:"inherit",shell:!0,env:{PYTHONPATH:a}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function R(e){if(e.id)return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",templateDir:v.resolve(T,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:v.resolve(T,"./@fnet/cli-project-common/dist/template/default"),projectDir:v.resolve(g,`./.output/${e.id}`),tags:e.ftag};{const t=await async function({tags:e}){const t=v.resolve(g,"node.yaml");if(!j.existsSync(t))throw new Error("node.yaml file not found in current directory.");const{raw:n,parsed:r}=await x({file:t,tags:e}),o=v.dirname(t);r.features=r.features||{};const a=r.features;a.runtime=a.runtime||{},a.runtime.type=a.runtime.type||"node","python"===a.runtime.type?a.runtime.template=a.runtime.template||"python":a.runtime.template=a.runtime.template||"default";const i={libraryAtom:{doc:{...r},fileName:"index"},projectDir:o,projectFilePath:t,projectFileContent:n,projectFileParsed:r,runtime:a.runtime};let s=v.resolve(o,"fnet/targets.yaml");if(!j.existsSync(s)&&(s=v.resolve(o,"node.devops.yaml"),j.existsSync(s))){const e=v.resolve(o,"fnet");j.existsSync(e)||j.mkdirSync(e),j.copyFileSync(s,v.resolve(o,"fnet/targets.yaml")),j.unlinkSync(s)}if(j.existsSync(s)){const{raw:t,parsed:n}=await x({file:s,tags:e}),r=_.parseDocument(t);i.devops={filePath:s,fileContent:t,yamlDocument:r,doc:{...n},type:"library.deploy",save:async()=>{j.writeFileSync(i.devops.filePath,r.toString())}}}const c=v.resolve(o,"readme.md");if(j.existsSync(c)){const e=j.readFileSync(c,"utf8");i.readme={filePath:c,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return i}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:v.resolve(T,`./@fnet/cli-project-node/dist/template/${t.runtime.template}`),templateCommonDir:v.resolve(T,`./@fnet/cli-project-common/dist/template/${t.runtime.template}`),projectDir:v.resolve(t.projectDir,"./.workspace"),projectSrcDir:v.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return I=I.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 R(e),{project:n}=t,{projectDir:r,projectFileParsed:o}=n,a=o.input;if(!a)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 i=v.resolve(r,".fnet");j.existsSync(i)||j.mkdirSync(i);const s=v.resolve(i,`${e.name}.fnet`),c=j.existsSync(s),p=await P({schema:a,format:"yaml",ref:c?s:void 0});j.writeFileSync(s,p)}catch(e){console.error(e.message),process.exit(1)}})),I=C(I,{bin:"npm"}),I=C(I,{bin:"node"}),I=C(I,{bin:"bun"}),I=C(I,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),I=C(I,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),I=C(I,{name:"app",bin:"npm",preArgs:["run","app","--"]}),I=C(I,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),I=C(I,{bin:"npx"}),I=C(I,{bin:"cdk"}),I=C(I,{bin:"aws"}),I=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 R(e),{projectDir:r}=t,o=e.config,a=await S({name:o,dir:r,transferEnv:!1,optional:!0,tags:t.tags}),i=a?.data?.env||void 0,s=e.command,c=process.argv.slice(5);y(s,[...n,...c],{cwd:j.existsSync(r)?r:g,stdio:"inherit",shell:!0,env:{...process.env,...i}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(I,{name:"with"}),I=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 R(e),{project:n}=t,{projectFileParsed:r}=n,o=r.commands;if(!o)throw new Error("Commands not found in project file.");const a=o[e.group];if(!a)throw new Error(`Command group '${e.group}' not found in project file.`);await A({commands:a})}catch(e){console.error(e.message),process.exit(1)}}))}(I,{name:"run"}),I=M(I,{name:"python"}),I=M(I,{name:"python3"}),I=M(I,{name:"pip"}),I=M(I,{name:"pip3"}),I.demandCommand(1,"You need at least one command before moving on").help().argv,Vt}(),bn=W(vn);module.exports=bn;
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var e=require("child_process"),t=require("@fnet/prompt"),n=require("node:fs"),o=require("node:path"),i=require("@fnet/config"),r=require("path"),s=require("yargs/yargs"),a=require("fs"),c=require("yaml"),p=require("@fnet/shelljs"),l=require("@fnet/yaml"),d=require("@fnet/object-from-schema"),f=require("@fnet/shell-flow"),m=require("@flownet/lib-render-templates-dir"),u=require("nunjucks"),y=require("lodash.clonedeep"),h=require("isobject"),g=require("redis"),w=require("@flownet/lib-is-redis-online"),b=require("nanoid"),v=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"),E=require("@fnet/npm-pick-versions"),P=require("object-hash"),S=require("ajv/dist/2020"),A=require("ajv/dist/standalone"),T=require("ajv-formats"),$=require("semver"),O=require("@fnet/up-list-files"),N=require("node:os"),C=require("@node-red/util"),I=require("@flownet/lib-to-ios-app"),F=require("@flownet/lib-to-macos-app"),R=require("@flownet/lib-to-electron"),M=require("@flownet/lib-to-webos"),q=require("@flownet/lib-to-nextjs"),B=require("@flownet/lib-to-docker"),K=require("form-data"),L=require("@fnet/to-rust"),U=require("@fnet/to-pyip"),J=require("@flownet/lib-parse-node-url"),z=require("bpmn-moddle"),W=require("dagre"),G=require("@fnet/expression"),X=require("chalk"),H=require("@fnet/list-files"),V=require("@fnet/key-value-transformer"),Y=require("lodash.pick"),Z=require("lodash.omit");function Q(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function ee(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var te,ne,oe,ie,re,se,ae,ce,pe,le,de,fe,me,ue,ye,he,ge,we,be,ve,xe,ke,je,_e,De,Ee,Pe,Se,Ae,Te,$e,Oe,Ne,Ce,Ie,Fe,Re,Me,qe,Be,Ke,Le,Ue,Je,ze,We,Ge,Xe,He,Ve,Ye,Ze,Qe,et,tt,nt,ot,it,rt,st,at,ct,pt,lt,dt,ft,mt,ut,yt,ht,gt,wt,bt,vt,xt,kt,jt,_t,Dt,Et,Pt,St,At,Tt,$t,Ot,Nt,Ct,It,Ft,Rt,Mt,qt,Bt,Kt,Lt,Ut,Jt,zt={},Wt=ee(Object.freeze({__proto__:null,default:e=>{const t=process.env.PATH||"",i="win32"===process.platform?(process.env.PATHEXT||".EXE;.CMD;.BAT;.COM").split(";"):[""],r=t.split(o.delimiter);for(const t of r)for(const r of i){const i=o.join(t,"win32"===process.platform?e+r:e);if(n.existsSync(i))return i}return null}}));function Gt(){if(se)return re;se=1;const e=j;return re=({feature:t,features:n,packageDevDependencies:o})=>{const{name:i,packages:r,options:s,extraCheck:a,explicit:c}=t,p=`${i}_enabled`,l=n.rollup_output||{},d=Object.keys(l);let f=s||{};const m=n[i]?.options;m&&(f=e(f,m));const u=!n[i]||!1===n[i]?.enabled;d.forEach((e=>{const t=n.rollup_output[e];if(t){if(Reflect.has(t,i)){if(u||!t[i]||!1===t[i]?.enabled)return void delete t[i];!0===t[i]&&(t[i]={enabled:!0,options:f})}else{if(u||c||!1===n[p])return;t[i]={enabled:!0}}t[i]=t[i]||{},t[i].options={...f,...t[i].options}}}));let y=d.some((e=>!0===n.rollup_output[e][i]?.enabled));a&&(y=a()&&y),n[p]=y,y&&r.forEach((e=>o.push({package:e[0],version:e[1]})))},re}function Xt(){if(Ce)return Ne;Ce=1;const e=j,t=n,i=o,r=_,s=function(){if(ce)return ae;ce=1;const e=Gt();return ae=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"workbox",packages:[["rollup-plugin-workbox","^8"]],options:{generate:{swDest:"dist/app/esm/sw.js",globDirectory:"dist/app/esm",globPatterns:["**/*.{html,js,css,png,jpg}"],skipWaiting:!0,clientsClaim:!0}},explicit:!0},features:i,packageDevDependencies:o})},ae}(),a=function(){if(le)return pe;le=1;const e=Gt();return pe=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:i,packageDevDependencies:o})},pe}(),c=function(){if(fe)return de;fe=1;const e=Gt();return de=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:i,packageDevDependencies:o})},de}(),p=function(){if(ue)return me;ue=1;const e=Gt();return me=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:i,packageDevDependencies:o})},me}(),l=function(){if(he)return ye;he=1;const e=Gt();return ye=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:i,packageDevDependencies:o})},ye}(),d=function(){if(we)return ge;we=1;const e=Gt();return ge=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:i,packageDevDependencies:o})},ge}(),f=function(){if(ve)return be;ve=1;const e=Gt();return be=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:i,packageDevDependencies:o})},be}(),m=function(){if(ke)return xe;ke=1;const e=Gt();return xe=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:i,packageDevDependencies:o})},xe}(),u=function(){if(_e)return je;_e=1;const e=Gt();return je=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:i,packageDevDependencies:o})},je}(),y=function(){if(Ee)return De;Ee=1;const e=Gt();return De=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:i,packageDevDependencies:o})},De}(),h=function(){if(Se)return Pe;Se=1;const e=Gt();return Pe=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:i,packageDevDependencies:o})},Pe}(),g=function(){if(Te)return Ae;Te=1;const e=Gt();return Ae=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features,r={};!0===i.app?.enabled&&(r.targets=r.targets||[],r.targets.push({src:"./src/app/index.html",dest:i.app.dir}),Reflect.has(i.app,"copy")||Reflect.has(i,"copy")||(i.copy=!0)),e({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:r},features:i,packageDevDependencies:o})},Ae}(),w=function(){if(Oe)return $e;Oe=1;const e=Gt();return $e=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features,r=i.css&&!1!==i.css.enabled;let s=[];r&&(s.push(["rollup-plugin-postcss","^4"]),s.push(["sass","^1.66"]),(i.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:i,packageDevDependencies:o})},$e}();function b({dir:e,name:n="index"}){let o=i.resolve(e,`./${n}.tsx`);if(t.existsSync(o)||(o=i.resolve(e,`./${n}.ts`)),t.existsSync(o)||(o=i.resolve(e,`./${n}.jsx`)),t.existsSync(o)||(o=i.resolve(e,`./${n}.js`)),!t.existsSync(o))return{};const r=o,s=i.extname(o);return{file:r,ext:s,ts:".ts"===s||".tsx"===s,name:n}}return Ne=async t=>{const{atom:n,context:o,setProgress:v}=t;v("Initializing features..."),n.doc.features=n.doc.features||{};const x=n.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;const k=i.resolve(o.project.projectDir),j=b({dir:i.resolve(k,"./app")});if(j.file){v("Parsing app entry imports...");let e=await r({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 r({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 _=b({dir:i.resolve(k,"./cli")});if(_.file){v("Parsing cli entry imports...");let e=await r({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 r({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"===n.type){const e=b({dir:i.resolve(k,"./src")});if(e.file){v("Parsing src entry imports...");let t=await r({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 r({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,E=Reflect.has(x,"cli_entry_uses_jsx")?!0===x.cli_entry_uses_jsx:!0===x.src_entry_uses_jsx;x.form_enabled=D||E||!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===n.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:E}:x.cli={enabled:!0,extend:!0===x.cli_has_entry,export:!0,react:E,...x.cli||{}},x.cli.enabled=!0===x.cli.enabled&&(!1===n.doc.features.form_enabled||!0===x.cli.extend||!0===x.cli.enabled),x.cli.format=x.cli.format||"esm",x.cli.folder=x.cli.folder||x.cli.folder||"esm",x.cli.node_options=x.cli.node?.options||x.cli.node_options||"",x.json=x.cli.enabled||x.json;const P={cjs:{format:"cjs",context:x.form_enabled?"window":"global",babel:!0===x.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==x.cjs,copy:!1},esm:{format:"esm",context:x.form_enabled?"window":"global",babel:!0===x.src_uses_jsx||!1,browser:!1,replace:!0,terser:!1,enabled:!1!==x.esm,copy:!0},iife:{format:"iife",context:x.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!0===x.iife,terser:!0,copy:!1}};!0===x.webos&&(P.webos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/webos",copy:!1,babel_options:{targets:{chrome:"79"}}}),!0===x.electron&&(P.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===x.nextjs&&(P.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===x.ios&&(P.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===x.macos&&(P.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===x.app.enabled&&(x.app.dir=`./dist/app/${x.app.folder}`,P.app={format:x.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:x.app.dir,terser:!0,output_exports:!1===x.app.export?"none":"auto",browsersync:!0}),!0===x.cli.enabled&&(x.cli.dir=`./dist/cli/${x.cli.folder}`,P.cli={format:x.cli.format,context:"global",babel:!0===x.src_uses_jsx||!0===x.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:x.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===x.cli.export?"none":"auto"});const S={server:".",startPath:`${i.normalize(x.app.dir||".")}`,files:[i.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(S,x.browsersync_options||x.browsersync?.options||{}),x.replace_options=e({},x.replace_options||x.replace?.options||{}),Reflect.has(x.browsersync_options,"proxy")&&delete x.browsersync_options.server,x.rollup=x.rollup||{},x.rollup_output=e(P,x.rollup_output||x.rollup?.output||{}),x.preact_enabled=!0===x.preact||x.preact&&!1!==x.preact?.enabled;let A=Object.keys(P);for(const t of A){const n=P[t];n&&(!1!==x.rollup[t]?(n.babel_options=n.babel_options||x.babel_options,n.browsersync_options=e(x.browsersync_options,n.browsersync_options),n.replace_options=e(x.replace_options,n.replace_options),x.preact_enabled&&(n.alias_enabled=!0,n.alias=n.alias||{},n.alias.entries=n.alias.entries||{},n.alias.entries.react="preact/compat",n.alias.entries["react-dom"]="preact/compat"),(x.form_enabled||x.babel)&&(n.babel=!0)):delete x.rollup_output[t])}A=Object.keys(x.rollup_output),x.babel_enabled=A.some((e=>!0===x.rollup_output[e].babel)),x.browser_enabled=A.some((e=>!0===x.rollup_output[e].babel)),x.browsersync_enabled=!1!==x.browsersync&&A.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),g(t),h(t),y(t),u(t),f(t),m(t),d(t),l(t),p(t),c(t),s(t),a(t)},Ne}function Ht(){if(Fe)return Ie;Fe=1;const e=D;return Ie=async({atom:t,packageDependencies:n,packageDevDependencies:o,setProgress:i})=>{i("Initializing dependencies");const r=t.doc.dependencies||[];if(r.filter((e=>!e.dev)).forEach((e=>n.push(e))),r.filter((e=>e.dev)).forEach((e=>o.push(e))),"workflow"===t.type&&(n.push({package:"get-value",version:"^3"}),n.push({package:"set-value",version:"^4"})),t.doc.features.form_enabled&&t.doc.features.dependency_auto_enabled){let o="^18.2";i("Fetching React versions");o=`^${(await e({name:"react",groupBy:{major:!0}})).find((e=>e[0]===t.doc.features.react_version.toString()))[0]}`,n.push({package:"react",version:o}),n.push({package:"react-dom",version:o}),"workflow"===t.type&&(n.push({package:"@fnet/react-app",version:"^0.1"}),n.push({package:"@fnet/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:"^16"}),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"})},Ie}function Vt(){if(Me)return Re;Me=1;const e=n,t=o,i=m;return Re=async({atom:n,setProgress:o,context:r,packageDependencies:s})=>{if(!0!==n.doc.features.app.enabled)return;await o({message:"Creating app folder"});const a={atom:n,packageDependencies:s,ts:Date.now()},c=r.templateDir,p=t.resolve(r.projectDir,"src/app");e.existsSync(p)||e.mkdirSync(p,{recursive:!0});let l=["index.js.njk"];!1!==n.doc.features.app.html&&l.push("index.html.njk"),await i({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:a})},Re}function Yt(){if(Be)return qe;Be=1;const e=E,t=P,i=n,r=o;return qe=async({projectDir:n,name:o,setProgress:s,count:a=1})=>{let c;const p=t(["npm-pick-versions",o,a]),l=r.join(n,".cache"),d=r.join(l,p+".json");return i.existsSync(d)?(s&&s(`Picking npm version of ${o} from cache ...`),c=JSON.parse(i.readFileSync(d,"utf8"))):(s&&s(`Picking npm version of ${o} ...`),c=await e({name:o,count:a}),i.mkdirSync(l,{recursive:!0}),i.writeFileSync(d,JSON.stringify(c),"utf8")),c},qe}function Zt(){if(Le)return Ke;Le=1;const e=u,t=n,i=o,r=_,s=Yt();return Ke=async({atom:n,context:o,packageDependencies:a,packageDevDependencies:c,setProgress:p})=>{await p({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 l=a.find((e=>"react"===e.package)),d=a.find((e=>"react-dom"===e.package));l&&!d?a.push({package:"react-dom",version:l.version}):l&&d&&(d.version=l.version),l&&n.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===n.doc.features.app.enabled&&f.push({file:i.resolve(o.projectDir,"src/app/index.js"),dev:!1!==n.doc.features.app.dev}),!0===n.doc.features.cli.enabled&&f.push({file:i.resolve(o.projectDir,"src/cli/index.js"),dev:!1!==n.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 i=(await r({file:n,recursive:!0})).all;for await(const t of i){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 s({name:t.package,projectDir:o.projectDir,setProgress:p});(!0===e.dev?c:a).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const m={atom:n,packageDependencies:a,packageDevDependencies:c},u=o.templateCommonDir,y=e.compile(t.readFileSync(i.resolve(u,"package.json.njk"),"utf8"),e.configure(u)).render(m),h=o.projectDir,g=i.resolve(h,"package.json");t.writeFileSync(g,y,"utf8");const w=i.resolve(o.project.projectDir,"fnet");if(t.existsSync(w)){const e=i.resolve(o.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const n=t.readdirSync(w);for(const o of n){const n=i.resolve(w,o);if(!t.lstatSync(n).isFile())continue;const r=i.resolve(e,o);t.copyFileSync(n,r)}}},Ke}function Qt(){if(Je)return Ue;Je=1;const e=n,t=o,i=m;return Ue=async({atom:n,setProgress:o,context:r,packageDependencies:s})=>{if(!0!==n.doc.features.cli.enabled)return;await o({message:"Creating cli."});const a={atom:n,packageDependencies:s},c=r.templateDir,p=t.resolve(r.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await i({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:p,context:a})},Ue}function en(){if(We)return ze;We=1;const e=n,t=o,i=u,r=_;return ze=async({atom:n,setProgress:o,context:s,packageDependencies:a})=>{await o({message:"Creating rollup file."});const c={atom:n,packageDependencies:a},p=t.resolve(s.projectDir,"src","default/index.js");if(!e.existsSync(p))throw new Error(`Entry file not found: ${p}`);const l=(await r({file:p,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=n.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&&l.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(l.map((e=>({key:e,value:e})))),t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{};for(let e=0;e<l.length;e++){const n=l[e];t.alias.entries[n]=`node:${n}`,t.alias.entries[`node:${n}`]=n}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(l)}}const m=s.templateCommonDir;let u=i.compile(e.readFileSync(t.resolve(m,"rollup.config.mjs.njk"),"utf8"),i.configure(m)).render(c);const y=s.projectDir;let h=t.resolve(y,"rollup.config.mjs");e.writeFileSync(h,u,"utf8")},ze}function tn(){if(Xe)return Ge;Xe=1;const e=n,t=o,i=u,r=S,s=A,a=T;return Ge=async({atom:n,setProgress:o,context:c,njEnv:p})=>{if(!0!==n.doc.features.cli.enabled)return;await o({message:"Creating yargs."});let l={};if(l=n.doc.input?n.doc.input:{type:"object",properties:{},required:[]},n.doc.features.cli.fargs&&!1!==n.doc.features.cli.fargs?.enabled){const e=n.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},o={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),l.properties&&(l.properties.fargs=t,l.properties.ftag=o)}const d={options:l,imports:[],atom:n},f=c.templateDir,m=i.compile(e.readFileSync(t.resolve(f,"src/default/to.args.js.njk"),"utf8"),p).render(d),u=c.projectDir,y=t.resolve(u,"src/default/to.args.js");e.writeFileSync(y,m,"utf8");const h=new r({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});a(h);const g=h.compile(l),w=s(h,g);e.writeFileSync(t.resolve(u,"src/default/validate_input.js"),w,"utf8")},Ge}function nn(){if(Ve)return He;Ve=1;const e=n,t=o,i=u;return He=async({atom:n,setProgress:o,context:r,packageDependencies:s})=>{await o({message:"Creating .gitignore"});const a={atom:n,packageDependencies:s},c=r.templateCommonDir,p=i.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),i.configure(c)).render(a),l=r.projectDir,d=t.resolve(l,".gitignore");e.writeFileSync(d,p,"utf8")},He}function on(){if(Ze)return Ye;Ze=1;const e=n,t=o,i=u;return Ye=async({atom:n,setProgress:o,context:r,packageDependencies:s})=>{await o({message:"Creating tsconfig.json."});const a={atom:n,packageDependencies:s},c=r.templateCommonDir,p=i.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),i.configure(c)).render(a),l=r.projectDir,d=t.resolve(l,"tsconfig.json");e.writeFileSync(d,p,"utf8")},Ye}function rn(){if(et)return Qe;et=1;const e=u,t=n,i=o,r=l;return Qe=async({atom:n,context:o,setProgress:s,Atom:a})=>{const c="readme.md",p=`Creating ${c}`;if(await s({message:p}),o.project?.readme){const n=o.projectDir,s={content:o.project.readme.doc.content},a=i.resolve(o.project.projectDir,"fnet/how-to.md");if(t.existsSync(a)){const e=t.readFileSync(a,"utf8");s.howto=e}const p=i.resolve(o.project.projectDir,"fnet/input.yaml");if(t.existsSync(p)){const e=await r({file:p,tags:o.tags});s.input=e.content}const l=o.templateCommonDir,d=e.compile(t.readFileSync(i.resolve(l,`${c}.njk`),"utf8"),e.configure(l)).render(s),f=i.resolve(n,`${c}`);t.writeFileSync(f,d,"utf8")}else if(n.id){const r=await a.first({type:"wiki",parent_id:n.id});if(!r||"markdown"!==r.doc?.["content-type"])return;const{content:s,...p}=r.doc,l={content:s},d=o.templateCommonDir,f=e.compile(t.readFileSync(i.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(l),m=o.projectDir,u=i.resolve(m,`${c}`);t.writeFileSync(u,f,"utf8")}},Qe}function sn(){if(nt)return tt;nt=1;const e=r,t=f;return tt=async({setProgress:n,context:o})=>{const i=o.projectDir;await n({message:"Prettifiying source files."});let r=e.join("src","**","*");await t({commands:{steps:[`prettier --write ${r} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:i}})}}function an(){if(it)return ot;it=1;const e=p;return ot=async({atom:t,setProgress:n,context:o})=>{if(!t.doc.features.dts_enabled)return;const i=o.projectDir;await n({message:"Creating .d.ts"});if(0!==(await e("tsc",{cwd:i})).code)throw new Error("Couldnt create .d.ts files.")},ot}function cn(){if(st)return rt;st=1;const e=p;return rt=async({setProgress:t,atom:n,context:o})=>{const i=o.projectDir;await t({message:"Installing npm packages."});if(0!==(await e(`npm install ${n.doc.features.npm_install_flags}`,{cwd:i})).code)throw new Error("Couldnt install npm packages.")},rt}function pn(){if(ct)return at;ct=1;const e=p;return at=async({setProgress:t,context:n})=>{const o=n.projectDir;await t({message:"Building main project."});if(0!==(await e("npm run build",{cwd:o})).code)throw new Error("Couldnt build project.")}}function ln(){if(Jt)return Ut;Jt=1;const e=function(){if(lt)return pt;lt=1;const e=p,t=i;return pt=async({setProgress:n,context:o,deploymentProject:i,deploymentProjectTarget:r,buildId:s})=>{await n({message:"Deploying it as gitlab project."});const a=o.projectDir;let c="fnet-to-gitlab";const p=r.params.config||"gitlab",l=await t({name:p,dir:o.projectDir,tags:o.tags});if(!l)throw new Error(`Couldnt load config ${p}`);const{data:d}=l.data;c+=` --projectGroupId=${d.projectGroupId}`,c+=` --projectPath='${a}'`,c+=` --projectName='${r.params.name}'`,c+=` --projectBranch='${r.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==r.dryRun&&(await e(c),i.isDirty=!0)}}(),t=function(){if(ft)return dt;ft=1;const e=n,t=o,r=$,s=p,a=i;return dt=async({setProgress:n,context:o,deploymentProject:i,deploymentProjectTarget:c,registerToPackageManager:p,yamlTarget:l})=>{await n({message:"Deploying it as gcs package."});const d=o.projectDir,f=t.resolve(d,"package.json"),m=e.readFileSync(f),u=JSON.parse(m);u.name=c.params.name,u.version=r.inc(c.version,"patch"),delete u.scripts,delete u.devDependencies,e.writeFileSync(f,JSON.stringify(u,null,"\t"));const{file:y,data:h}=await a({name:c.config||"gcs",dir:o.projectDir,tags:o.tags});let g="fnet-files-to-gcs";g+=` --projectId='${h.env.GCS_PROJECT_ID}'`,g+=` --bucketName='${h.env.GCS_BUCKET_NAME}'`,g+=` --keyFilename='${t.resolve(t.dirname(y),h.env.GCS_UPLOADER_KEY_FILE)}'`,g+=` --dir='${d}'`,g+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",g+=` --destDir='${u.name}/${u.version}'`,g+=" --metadata.cacheControl='public, max-age=31536000, immutable'",h.env.DOMAIN&&(g+=` --domain='${h.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(g+=" --dryRun"),await s(g),e.writeFileSync(f,m),!0!==c.dryRun&&(i.isDirty=!0,c.version=u.version,l.set("version",u.version),await p({target:c,packageJSON:u}))}}(),s=function(){if(ut)return mt;ut=1;const e=n,t=o,r=$,s=p,a=i,l=O,f=d,m=c;return mt=async({atom:n,setProgress:o,context:i,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:d})=>{await o({message:"Deploying it as npm package."});const u=i.projectDir,y=t.resolve(u,"package.json"),h=e.readFileSync(y),g=JSON.parse(h);g.name=p.params.name,g.version=r.inc(p.version,"patch");const w=p.params.bin?.name||p.params.bin;!1!==p.params.bin?.enabled&&w&&"string"==typeof w&&(g.bin={[w]:"dist/cli/esm/index.js"}),delete g.scripts,delete g.devDependencies,g.scripts={serve:"npx serve ."},e.writeFileSync(y,JSON.stringify(g,null,"\t"));const b=p.config||"npm";let v=(await a({name:b,dir:i.projectDir,tags:i.tags,optional:!0}))?.data;if(!v){const n=l({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 f({schema:n[0],tags:i.tags}),r=i.project.projectDir,s=t.resolve(r,".fnet");e.existsSync(s)||e.mkdirSync(s),e.writeFileSync(t.resolve(s,`${b}.fnet`),m.stringify(o)),v=o}if(e.writeFileSync(t.resolve(u,".npmrc"),`//registry.npmjs.org/:_authToken=${v.env.NPM_TOKEN}`),!0!==p.dryRun){if(0!==(await s("npm publish --access public",{cwd:u})).code)throw new Error("Couldnt publish to npm");e.writeFileSync(y,h),c.isDirty=!0,p.version=g.version,d.set("version",g.version)}}}(),l=function(){if(ht)return yt;ht=1;const e=n,t=o,r=N,s=u,a=C,c=i;return yt=async({atom:n,setProgress:o,context:i,deploymentProject:p,deploymentProjectTarget:l,buildId:d,packageDependencies:f,njEnv:m})=>{await o({message:"Deploying it as node-red flow."});const u=i.projectDir,y=i.templateDir,h="workflow"===n.type?"WF":"LIB";let g;if("simple"===l.deploy.template)g={atom:n,packageDependencies:f,red:{tab:{id:l.deploy.id||a.util.generateId(),label:`${h}/${n.id?n.id:r.hostname()}/${n.name}/${l.deploy.name||l.deploy.template}`},function:{id:a.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(u,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},inject:{id:a.util.generateId(),...l.params?.inject,payload:"json"===l.params?.inject?.payloadType?`'${JSON.stringify(l.params?.inject?.payload)}'`:l.params?.inject?.payload},debug:{id:a.util.generateId()}}};else if("cronjob"===l.deploy.template){let o=l.params?.schedules?cloneDeep(l.params?.schedules):void 0;o?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),g={atom:n,packageDependencies:f,red:{tab:{id:l.deploy.id||a.util.generateId(),label:`${h}/${n.id?n.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:a.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(u,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},cronjob:{id:a.util.generateId(),schedules:o},debug:{id:a.util.generateId()}}}}else{if("http"!==l.deploy.template)return;g={atom:n,packageDependencies:f,red:{tab:{id:l.deploy.id||a.util.generateId(),label:`${h}/${n.id?n.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:a.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(u,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},httpin:{id:a.util.generateId(),method:l.params.method||"get",url:l.params.url},httpout:{id:a.util.generateId()},debug:{id:a.util.generateId()}}}}let w=s.compile(e.readFileSync(t.resolve(y,`deploy/node-red/${l.deploy.template}.yaml.njk`),"utf8"),m).render(g);if(e.writeFileSync(t.resolve(u,"node-red.yaml"),w),w=yaml.load(w),!0===l.dryRun)return;p.isDirty=!0;const b=(await c({name:i.redConfig||"red",dir:i.projectDir,tags:i.tags}))?.data,v=l.deploy.url||b.env.RED_URL,x={};if(!1!==l.deploy.auth&&(x.Authorization="Bearer "+atomAccessToken),l.deploy.id)!0===l.actions?.delete?(await axios({method:"DELETE",url:`${v}/flow/${l.deploy.id}`,headers:x}),delete l.actions.delete,delete l.deploy.id,l.enabled=!1):await axios({method:"PUT",url:`${v}/flow/${l.deploy.id}`,data:w,headers:x});else{const e=await axios({method:"POST",url:`${v}/flow`,data:w,headers:x});l.deploy.id=e.data.id}},yt}(),f=function(){if(wt)return gt;wt=1;const e=a,t=r,n=i;return gt=async({atom:o,Atom:i,setProgress:r,context:s,packageDependencies:a,deploymentProject:c,deploymentProjectTarget:p})=>{await r({message:"Deploying it as workflow lib."});const l=(await n({name:"atom",dir:s.projectDir,tags:s.tags}))?.data;let d,f,m,u=p.deploy.name.split("/");if(1===u.length)f=l.env.ATOM_LIBRARIES_ID,m=p.deploy.name;else{if(2!==u.length)throw new Error("Wrong name path.");{const e=await i.first({where:{name:u[0],parent_id:l.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");f=e.id,m=u[1]}}if(!0===p.dryRun)return;if(c.isDirty=!0,p.deploy.id){if(d=await i.get({id:p.deploy.id}),!d)return}else{if(d=await i.create({parent_id:f,doc:{name:m,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!d)return;p.deploy.id=d.id}const y=s.projectDir;d.doc.contents=[{content:e.readFileSync(t.resolve(y,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(t.resolve(y,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(t.resolve(y,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],d.doc.name=m,d.doc.dependencies=a,"workflow.lib"===o.type?d.doc.subtype="library":"workflow"===o.type&&(d.doc.subtype="workflow"),d=await i.update(d,{id:d.id})},gt}(),m=function(){if(vt)return bt;vt=1;const e=i,t=I,n=y,o=$;return bt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as ios-app package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},bt}(),h=function(){if(kt)return xt;kt=1;const e=i,t=F,n=y,o=$;return xt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as macos-app package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},xt}(),g=function(){if(_t)return jt;_t=1;const e=i,t=R,n=y,o=$;return jt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as electron package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},jt}(),w=function(){if(Et)return Dt;Et=1;const e=i,t=M,n=y,o=$;return Dt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as webos package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},Dt}(),b=function(){if(St)return Pt;St=1;const e=i,t=q,n=y,o=$;return Pt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as nextjs package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},Pt}(),v=function(){if(Tt)return At;Tt=1;const e=i,t=B,n=y,o=$;return At=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as docker package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},At}(),k=function(){if(Ot)return $t;Ot=1;const e=n,t=o,r=$,s=p,a=i,c=x.default;return $t=async({setProgress:n,context:o,deploymentProject:i,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet package."});const d=o.projectDir,f=t.resolve(d,"package.json"),m=e.readFileSync(f),u=JSON.parse(m);u.name=p.params.name,u.version=r.inc(p.version,"patch"),delete u.scripts,delete u.devDependencies,e.writeFileSync(f,JSON.stringify(u,null,"\t"));const{file:y,data:h}=await a({name:p.config||"fnet-package",dir:o.projectDir,tags:o.tags});if(!h.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${y}`);if(!h.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${y}`);if(!h.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${y}`);const g=`${h.env.ATOM_API_URL}/v1/auth/token`,w=h.env.ATOM_API_USERNAME,b=h.env.ATOM_API_PASSWORD;let v=await c({method:"POST",url:g,data:{username:w,password:b},headers:{"Content-Type":"application/json"}});const x=v.data?.access_token;if(!x)throw new Error(`Invalid access_token from ${g}`);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(y),h.env.GCS_UPLOADER_KEY_FILE)}'`,k+=` --dir='${d}'`,k+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",k+=` --destDir='${u.name}/${u.version}'`,k+=" --metadata.cacheControl='public, max-age=31536000, immutable'",h.env.DOMAIN&&(k+=` --domain='${h.env.DOMAIN}'`),!0!==p.dry_run&&!0!==p.params.dry_run||(k+=" --dryRun"),await s(k),e.writeFileSync(f,m),!0===p.dryRun)return;i.isDirty=!0,p.version=u.version,l.set("version",u.version);const j=`${h.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(v=await c({method:"POST",url:j,data:{name:u.name,version:u.version,version_domain:h.env.DOMAIN,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${x}`}}),v.data?.error)throw new Error("Failed to publish fnet package.")}}(),j=function(){if(Ct)return Nt;Ct=1;const e=$,t=i,n=x.default;return Nt=async({setProgress:o,context:i,deploymentProject:r,deploymentProjectTarget:s,yamlTarget:a})=>{await o({message:"Deploying it as fnet form."});const{file:c,data:p}=await t({name:s.config||"fnet-form",dir:i.projectDir,tags:i.tags});if(!p.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${c}`);if(!p.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${c}`);if(!p.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${c}`);const l=`${p.env.ATOM_API_URL}/v1/auth/token`,d=p.env.ATOM_API_USERNAME,f=p.env.ATOM_API_PASSWORD;let m=await n({method:"POST",url:l,data:{username:d,password:f},headers:{"Content-Type":"application/json"}});const u=m.data?.access_token;if(!u)throw new Error(`Invalid access_token from ${l}`);r.isDirty=!0;const y=e.inc(s.version,"patch");s.params.version=y,s.version=y,a.set("version",y);const h=`${p.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(m=await n({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 ${u}`}}),m.data?.error)throw new Error("Error publishing fnet form.")}}(),_=function(){if(Ft)return It;Ft=1;const e=$,t=i,n=x.default,o=a,r=p,s=K;return It=async({setProgress:i,context:a,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await i({message:"Deploying it as fnet flow."});const{file:d,data:f}=await t({name:p.config||"fnet-flow",dir:a.project.projectDir,tags:a.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 m=`${f.env.ATOM_API_URL}/v1/auth/token`,u=f.env.ATOM_API_USERNAME,y=f.env.ATOM_API_PASSWORD;let h=await n({method:"POST",url:m,data:{username:u,password:y},headers:{"Content-Type":"application/json"}});const g=h.data?.access_token;if(!g)throw new Error(`Invalid access_token from ${m}`);c.isDirty=!0;const w=e.inc(p.version,"patch");p.params.version=w,p.version=w,l.set("version",w);const b=`${f.env.ATOM_API_URL}/v1/service/fnet-flow/publish`;if(h=await n({method:"POST",url:b,data:{name:p.params.name,version:p.params.version,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${g}`}}),h.data?.error)throw new Error("Error publishing fnet flow.");const v=h.data?.upload.id;let x="fnet-dir-zipper";x+=` --sourceDir='${a.project.projectDir}'`,x+=" --pattern=**/*",x+=" --stdout_format=json";const k=await r(x);if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new s;_.append("file",o.createReadStream(j));const D=await n.request({method:"POST",maxBodyLength:1/0,url:`${f.env.ATOM_API_URL}/v1/service/upload/single/${v}`,headers:{..._.getHeaders(),Authorization:`Bearer ${g}`},data:_});if(D.data?.error)throw new Error("Error uploading fnet flow.")}}(),D=function(){if(Mt)return Rt;Mt=1;const e=$,t=i,n=x.default,o=a,r=p,s=K;return Rt=async({setProgress:i,context:a,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await i({message:"Deploying it as fnet node."});const{file:d,data:f}=await t({name:p.config||"fnet-node",dir:a.project.projectDir,tags:a.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 m=`${f.env.ATOM_API_URL}/v1/auth/token`,u=f.env.ATOM_API_USERNAME,y=f.env.ATOM_API_PASSWORD;let h=await n({method:"POST",url:m,data:{username:u,password:y},headers:{"Content-Type":"application/json"}});const g=h.data?.access_token;if(!g)throw new Error(`Invalid access_token from ${m}`);c.isDirty=!0;const w=e.inc(p.version,"patch");p.params.version=w,p.version=w,l.set("version",w);const b=`${f.env.ATOM_API_URL}/v1/service/fnet-node/publish`;if(h=await n({method:"POST",url:b,data:{name:p.params.name,version:p.params.version,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${g}`}}),h.data?.error)throw new Error("Error publishing fnet node.");const v=h.data?.upload.id;let x="fnet-dir-zipper";x+=` --sourceDir='${a.project.projectDir}'`,x+=" --pattern=**/*",x+=" --stdout_format=json";const k=await r(x);if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new s;_.append("file",o.createReadStream(j));const D=await n.request({method:"POST",maxBodyLength:1/0,url:`${f.env.ATOM_API_URL}/v1/service/upload/single/${v}`,headers:{..._.getHeaders(),Authorization:`Bearer ${g}`},data:_});if(D.data?.error)throw new Error("Error uploading fnet node.")}}(),E=function(){if(Bt)return qt;Bt=1;const e=i,t=L,n=y,o=$;return qt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as Rust package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},qt}(),P=function(){if(Lt)return Kt;Lt=1;const e=i,t=U,n=y,o=$;return Kt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as pypi package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},Kt}();return Ut=async n=>{const{atom:o,packageDependencies:i,context:r,deploymentProjectTarget:a,setProgress:c,deploymentProject:p,yamlTarget:d}=n;if(!0===a.enabled)if("lib"===a.type)await f({...n});else if("red"===a.type)await l({...n});else if("npm"===a.type)await s({...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=b:"webos"===a.type?e=w:"electron"===a.type?e=g:"docker"===a.type?e=v:"ios"===a.type?e=m:"macos"===a.type?e=h:"rust"===a.type?e=E:"pypi"===a.type&&(e=P),!e)return;await e({atom:o,target:a,onProgress:c,projectDir:r.projectDir,dependencies:i,context:r,yamlTarget:d}),p.isDirty=!0}},Ut}var dn,fn,mn,un,yn,hn,gn,wn,bn,vn,xn,kn,jn,_n,Dn,En,Pn,Sn,An,Tn,$n,On,Nn,Cn,In,Fn,Rn,Mn,qn,Bn,Kn,Ln,Un,Jn,zn,Wn,Gn,Xn,Hn,Vn,Yn,Zn,Qn,eo={name:"ATOM",uri:"http://atom.org/bpmn",prefix:"atom",types:[{name:"AtomExtension",extends:["bpmn:BaseElement"],properties:[{name:"atom",type:"atom:Atom",isMany:!1}]},{name:"Atom",properties:[{name:"type",type:"String",isAttr:!0}]}]};function to(){if(fn)return dn;fn=1;const e=z,t=W,n=y,o=eo;function i(e,t){return e.filter(((e,n,o)=>o.map((e=>e[t])).indexOf(e[t])===n))}function r(e){const{nodes:t,nodeIndex:n,root:o}=e,i=e.targetNodes||o.childs;i.forEach((t=>{const n="workflow"===t.type||"subworkflow"===t.type,o=!n&&t.childs.filter((e=>!e.virtual)).length>0;if(o&&(t.bpmn.type="bpmn:SubProcess"),n||o){const n=t.childs.filter((e=>!0!==e.module))[0];t.childs.filter((e=>!0===e.module)).forEach((n=>{const o=s({...e,parent:t,bpmnType:"bpmn:IntermediateCatchEvent",type:"inter",definitions:[{type:"bpmn:SignalEventDefinition"}]});o.bpmn.edges=[{from:o.indexKey,to:n.indexKey,type:"bpmn:SequenceFlow"}]}));const o=t.childs.find((e=>"try"===e.name&&"tryexcept"===t.type)),r=t.childs.filter((e=>"except"===e.name&&"tryexcept"===t.type));o&&r.length&&r.forEach((n=>{const i=s({location:t.childs.indexOf(n),...e,parent:t,bpmnType:"bpmn:BoundaryEvent",type:"boundary",attrs:{attachedToRef:o},definitions:[{type:"bpmn:ErrorEventDefinition"}]});i.bpmn.edges=[{from:i.indexKey,to:n.indexKey,type:"bpmn:SequenceFlow"}]}));const a=t.childs.find((e=>"raise"===e.type));if(a){const n=s({...e,parent:t,bpmnType:"bpmn:EndEvent",type:"end",name:"ERROR",definitions:[{type:"bpmn:ErrorEventDefinition"}]});a.bpmn.edges=[{from:a.indexKey,to:n.indexKey,type:"bpmn:SequenceFlow"}]}if(n)if(t.bpmn.starts.length>1){const n=s({...e,parent:t,bpmnType:"bpmn:StartEvent",type:"start"}),o=s({...e,parent:t,bpmnType:"bpmn:ExclusiveGateway",type:"switch"});n.bpmn.edges=[{from:n.indexKey,to:o.indexKey,type:"bpmn:SequenceFlow"}],o.bpmn.edges=t.bpmn.starts.map((e=>({...e,from:o.indexKey})));const i=o.bpmn.edges.find((e=>!0===e.next));if(i){const n=s({...e,parent:t,bpmnType:"bpmn:EndEvent",type:"end",name:i.to});i.to=n.indexKey}}else{const o=s({...e,parent:t,bpmnType:"bpmn:StartEvent",type:"start"});o.bpmn.edges.push({from:o.indexKey,to:n.indexKey,type:"bpmn:SequenceFlow"})}t.childs.filter((e=>!0!==e.virtual&&e.bpmn.outside.length&&"bpmn:EndEvent"!==e.bpmn.type)).forEach((n=>{n.bpmn.outside.forEach((o=>{const r=i.indexOf(t),a=s({...e,parent:t,bpmnType:"bpmn:EndEvent",type:"end",name:o.to,location:r+1});n.bpmn.edges.push({from:n.indexKey,to:a.indexKey,type:"bpmn:SequenceFlow"})}))}));t.childs.filter((e=>!0!==e.virtual&&e.bpmn.edges.length>1)).forEach((n=>{const o=i.indexOf(n),r=s({...e,parent:t,bpmnType:"bpmn:ExclusiveGateway",type:"switch",location:o+1});r.bpmn.edges=n.bpmn.edges.map((e=>({...e,from:r.indexKey}))),n.bpmn.edges=[{from:n.indexKey,to:r.indexKey,type:"bpmn:SequenceFlow"}],n.bpmn.outside=[]}))}r({...e,targetNodes:t.childs})}))}function s(e){const{parent:t,nodes:n,nodeIndex:o,bpmnType:i,type:r,name:s,outside:a,location:c,definitions:p,attrs:l}=e,d=t.childs.filter((e=>e.type===`v${r}`)).length,f={indexKey:`${t.indexKey}/_${r}${d}`,pathKey:`${t.pathKey}._${r}${d}`,type:`v${r}`,name:s,bpmn:{edges:[],outside:[],type:i,width:36,height:36,fill:"#c8e6c9",stroke:"#205022",definitions:p,attrs:l},virtual:!0,childs:[]};return t.childs.splice(c||0,0,f),n.push(f),o[f.indexKey]=f,f}function a(e){const{targetNode:n,targetFlowElementsContainer:o,targetPlaneElement:i,moddle:r,elementIndex:s,nodeIndex:c,diagrams:p,nodes:l}=e;!function(e){const{targetNode:t,targetFlowElementsContainer:n,targetPlaneElement:o,moddle:i,elementIndex:r,nodeIndex:s,nodes:a}=e,c=n.get("flowElements");n.$nodes=n.$nodes||[],t.childs.forEach((e=>{const t=i.create(e.bpmn.type,{id:`node.${e.pathKey}`,name:e.definition?.title||e.name});if(r[t.id]=t,t.$isNode=!0,t.$node=e,e.$flow=t,n.$nodes.push(t),c.push(t),e.bpmn.attrs){Object.keys(e.bpmn.attrs).forEach((n=>{"attachedToRef"===n&&t.set(n,e.bpmn.attrs[n].$flow)}))}if(e.bpmn.definitions){const n=e.bpmn.definitions.map((e=>{const t=i.create(e.type);return Object.keys(e.attrs||{}).forEach((n=>{t.set(n,e.attrs[n])})),t}));t.eventDefinitions=n}}))}(e),function(e){const{targetNode:t,targetFlowElementsContainer:n,targetPlaneElement:o,moddle:i,elementIndex:r,nodeIndex:s}=e,a=n.get("flowElements");n.$edges=n.$edges||[],t.childs.forEach((e=>{e.bpmn.edges.forEach((t=>{const o=e,c=s[t.to],p=`edge.${o.pathKey}_${c.pathKey}`;if(r[p])return;const l=r[`node.${o.pathKey}`],d=r[`node.${c.pathKey}`],f=i.create(t.type,{id:p,sourceRef:l,targetRef:d});r[f.id]=f,f.$is_edge=!0,l.get("outgoing").push(f),d.get("incoming").push(f),n.$edges.push({from:l,to:d,flow:f}),a.push(f)}))}))}(e),function(e){const{targetNode:n,targetFlowElementsContainer:o,targetPlaneElement:i,moddle:r,elementIndex:s,nodeIndex:a}=e,c=120,p=80,l=160,d=160,f=new t.graphlib.Graph;f.setDefaultEdgeLabel((()=>({}))),f.setGraph({rankdir:"TB",nodesep:c,ranksep:p,xranker:"longest-path"}),o.$nodes.forEach((e=>{f.setNode(e.id,{width:e.$node?.bpmn.width||c,height:e.$node?.bpmn.height||p,label:e.id})})),o.$edges.forEach((e=>{f.setEdge(e.from.id,e.to.id)})),t.layout(f),o.$nodes.forEach((e=>{const t=f.node(e.id);let n=t.width,o=t.height;const s=r.create("bpmndi:BPMNShape",{id:`shape.${e.id}`,bpmnElement:e,bounds:r.create("dc:Bounds",{x:l+t.x-t.width/2,y:d+t.y-t.height/2,width:n,height:o}),label:r.create("bpmndi:BPMNLabel")});e.$node.bpmn.fill&&s.set("bioc:fill",e.$node.bpmn.fill),e.$node.bpmn.stroke&&s.set("bioc:stroke",e.$node.bpmn.stroke);i.get("planeElement").push(s)})),o.$edges.forEach((e=>{const t=f.edge(e.from.id,e.to.id),n=r.create("bpmndi:BPMNEdge",{id:`edge.${e.from.id}_${e.to.id}`,bpmnElement:e.flow,label:r.create("bpmndi:BPMNLabel")});t.points.forEach((e=>{const t=r.create("dc:Point",{x:l+e.x,y:d+e.y});n.get("waypoint").push(t)}));i.get("planeElement").push(n)}))}(e),function(e){const{targetNode:t,targetFlowElementsContainer:n,targetPlaneElement:o,moddle:i,elementIndex:r,nodeIndex:s,diagrams:c}=e,p=t.childs.filter((e=>"bpmn:SubProcess"===e.bpmn.type));p.forEach((t=>{const n=r[`node.${t.pathKey}`],o=i.create("bpmndi:BPMNDiagram",{id:`diagram_${t.pathKey}`});r[o.id]=o,c.push(o);const s=i.create("bpmndi:BPMNPlane",{id:`plane_${t.pathKey}`});r[s.id]=s,o.plane=s,s.bpmnElement=n,a({...e,targetNode:t,targetFlowElementsContainer:n,targetPlaneElement:s})}))}(e)}async function c(t){const n=t.root,s=n.context.index,c=Object.keys(s).map((e=>s[e]));!function(e){const{nodes:t}=e;t.forEach((e=>{const t=[],n=[],o=i=>{i.context.next&&(t.push({from:i,to:i.context.next,type:"bpmn:SequenceFlow"}),i===e&&n.push({to:i.context.next,type:"bpmn:SequenceFlow",next:!0})),i.childs.forEach((t=>{i===e&&"switch"===e.type&&n.push({to:t,type:"bpmn:SequenceFlow"}),o(t)}))};o(e);const r=t.filter((t=>t.to.parent.indexKey===e.parent.indexKey)).map((t=>({...t,from:e.indexKey,to:t.to.indexKey}))),s=t.filter((t=>t.to.parent.indexKey!==e.parent.indexKey&&!t.to.indexKey.startsWith(e.indexKey+"/"))).map((t=>({...t,from:e.indexKey,to:t.to.indexKey}))),a=n.map((e=>({...e,to:e.to.indexKey})));e.bpmn=e.bpmn||{},e.bpmn.edges=i(r,"to"),e.bpmn.outside=i(s,"to"),e.bpmn.starts=i(a,"to"),e.bpmn.type=function(e){return"call"===e.type?"bpmn:ServiceTask":"form"===e.type?"bpmn:UserTask":"return"===e.type?"bpmn:EndEvent":"bpmn:Task"}(e),e.bpmn.width=120,e.bpmn.height=80,"return"===e.type&&(e.bpmn.width=36,e.bpmn.height=36)}))}({nodes:c}),r({nodes:c,nodeIndex:s,root:n});const p=new e({atom:o}),l={},d=p.create("bpmn:Definitions",{id:"definitions_0"});l[d.id]=d;for await(const e of n.childs){const t=d.get("rootElements"),o=d.get("diagrams"),i=p.create("bpmn:Process",{id:`process_${e.pathKey}`,documentation:[p.create("bpmn:Documentation",{text:`Atom Workflow - ${n.context.atom.name}`})]});l[i.id]=i,i.isExecutable=!0,t.push(i);const r=p.create("bpmndi:BPMNDiagram",{id:`diagram_${e.pathKey}`});l[r.id]=r,o.push(r);const f=p.create("bpmndi:BPMNPlane",{id:`plane_${e.pathKey}`});l[f.id]=f,r.plane=f,f.bpmnElement=i;a({targetNode:e,targetFlowElementsContainer:i,targetPlaneElement:f,moddle:p,elementIndex:l,nodeIndex:s,nodes:c,diagrams:o})}return{diagramXML:(await p.toXML(d,{format:!0})).xml}}return dn=async(e={})=>await c(n(e))}function no(){if(un)return mn;un=1;const e=V,t=G;return mn=async({node:n,initNode:o})=>{if(Reflect.has(n.definition,"modules")&&!Array.isArray(n.definition.modules)){const e=n.definition.modules;n.definition.modules=[],Object.keys(e).forEach((t=>{const o={...e[t]};"modules"===n.type&&(o.export=o.export||t),n.definition.modules.push({[t]:o})}))}const i=[],r=await e({data:n.definition,callback:(e,n,o)=>{const r=t({expression:e});if("m"===r?.processor){const e=o.slice(0,-1);e.push(r.statement);const t=e.join("_");return i.push({[t]:n}),[r.statement,`m::${t}`]}return[e,n]}});i.length>0&&(n.definition=r,n.definition.modules=n.definition.modules||[],n.definition.modules=n.definition.modules.concat(i)),n.hasModules=n.definition.modules?.length>0;for(let e=0;e<n.definition.modules?.length;e++){const t=n.definition.modules[e],i=Object.keys(t)[0],r={name:i,childs:[],parent:n,definition:t[i],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:n.childs.length,context:{}};n.childs.push(r),await o({node:r})}},mn}function oo(){return hn?yn:(hn=1,yn=async({node:e,transformExpression:t})=>{const n=e.context.transform;Reflect.has(n,"export")&&(n.export=await t(n.export)),Reflect.has(n,"return")&&(e.hasReturn=!0,n.return=await t(n.return)),n.hasOwnProperty("nextArgs")&&(e.hasNextArgs=!0,n.nextArgs=await t(n.nextArgs))})}function io(){if(wn)return gn;wn=1;const e=y,t=no(),n=oo();async function o({node:t,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition),t.context.transform;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,transformExpression:r}),await o({node:t}),i({node:t})}return gn={hits:async function({node:e}){return!!e.definition.hasOwnProperty("switch")},init:async function({node:e,initNode:n}){e.type="switch";const i=e.definition.switch||[];if(!i.every((e=>e.hasOwnProperty("condition")||e.hasOwnProperty("default"))))throw new Error("Switch must have condition or default");if(0===i.filter((e=>e.hasOwnProperty("condition"))).length)throw new Error("Switch must have at least one condition");const r=i.filter((e=>e.hasOwnProperty("default")));if(r.length>1)throw new Error("Switch must have only one default");if(1===r.length&&!i[i.length-1].hasOwnProperty("default"))throw new Error("Switch default must be the last child");e.hasDefaultCondition=1===r.length,await t({node:e,initNode:n}),e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0;for(let t=0;t<e.definition.switch.length;t++){let o=e.definition.switch[t],i=`${t}`;o.hasOwnProperty("default")&&(i="default",o=o.default);const r={name:o.condition||i,childs:[],parent:e,definition:o,index:e.childs.length,context:{}};e.childs.push(r),await n({node:r})}e.resolve=o},resolve:o}}function ro(){if(Cn)return Nn;Cn=1;const e=y,t=no(),n=oo();async function o({node:t,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition);const s=t.context.transform;if("function"===t.target?.atom?.doc?.type&&(s.call=await r(t.target.atom.name)),s.args&&(s.args=await r(s.args)),s.result){"string"==typeof s.result&&(s.result=[{[s.result]:"e::result"}]);for(let e=0;e<s.result?.length;e++){let t=s.result[e],n=Object.keys(t)[0],o=t[n],i={key:await r(n),value:await r(o)};s.result[e]=i}}const a=t.workflow.parent;s.import?t.context.lib=a.context.libs.find((e=>e.name===s.import)):t.context.lib=a.context.libs.find((e=>e.name===s.call)),await n({node:t,transformExpression:r}),await o({node:t}),i({node:t})}return Nn={hits:async function({node:e}){return e.definition.hasOwnProperty("call")},init:async function({node:e,initNode:n}){e.type="call",await t({node:e,initNode:n}),e.resolve=o},resolve:o}}function so(){return Wn?zn:(Wn=1,zn=({node:e})=>{const t=e.definition;if(!e.hasReturn)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 ao(){if(Xn)return Gn;Xn=1;const e=ro();class t{#e;#t;#n;#o;constructor({key:e,npm:t,master:n,extras:o}){this.#e=e,this.#t=t,this.#n=n,this.#o=o}hits({node:e}){return e.definition.hasOwnProperty(this.#e)}async init(t){const{node:n}=t,o=this.#e,i=n.definition,r=typeof i[o];if(i.call=`npm:${this.#t}`,i.args="object"!==r?{...i.args,[`${this.#n}`]:i[o]}:i[o],delete i[o],this.#o)for(const e in this.#o)i[e]=this.#o[e];console.log(`[npm-block] ${this.#e} --\x3e ${this.#t}`),await e.init(t)}}return Gn=e=>new t(e)}function co(){if(Vn)return Hn;Vn=1;const e=n,t=o,r=c,s=p,a=u,d=y,f=h,m=function(){if(ne)return te;ne=1;const e=g,t=w;return te=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}=b,D=function(){if(ie)return oe;ie=1;const{Api:e}=v,t=x.default,n=k;return oe=class{init({config:o,accessToken:i}){return new Promise(((r,s)=>{if(e.set_api_url(o.data.url),i)return e.set_req_token(i),void r(i);t({method:"POST",url:`${o.data.issuer}/protocol/openid-connect/token`,data:n.stringify(o.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((t=>{e.set_req_token(t.data.access_token),r(t.data.access_token)})).catch((t=>{e.set_req_token(),s(t)}))}))}}}(),E=Xt(),P=Ht(),S=Vt(),A=Zt(),T=Qt(),$=en(),O=tn(),N=nn(),C=on(),I=rn(),F=sn(),R=an(),M=cn(),q=pn(),B=Yt(),K=ln(),{Atom:L}=v,U=J,z=to(),W=i,V=_,Q=G,ee=l,re=X,se=H,ae=function(){if(vn)return bn;vn=1;const e=G,t=io();return bn={hits:async function({node:t}){return 1===Object.keys(t.definition).map((t=>e({expression:t}))).filter((e=>"if"===e?.processor)).length},init:async function(n){const{node:o}=n,i=Object.keys(o.definition).map((t=>e({expression:t}))),r=[],s=i.find((e=>"if"===e?.processor)),a=o.definition[s.expression];r.push({name:`${o.name}_if`,definition:a,processor:s}),delete o.definition[s.expression];const c=i.filter((e=>"elseif"===e?.processor));let p=0;for(const e of c){const t=o.definition[e.expression];r.push({name:`${o.name}_elseif_${p++}`,definition:t,processor:e}),delete o.definition[e.expression]}o.definition.switch=[];for(const e of r)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)}}}(),ce=function(){if(kn)return xn;kn=1;const e=y,t=no(),n=oo();async function o({node:t,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){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,transformExpression:r}),await o({node:t}),i({node:t})}return xn={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",await t({node:e,initNode:n}),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=o},resolve:o}}(),pe=function(){if(_n)return jn;_n=1;const e=y,t=no(),n=oo();async function o({node:t,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition);const s=t.context.transform;for(let e=0;e<s.assign?.length;e++){let t=s.assign[e],n=Object.keys(t)[0],o=t[n],i={key:await r(n),value:await r(o)};s.assign[e]=i}await n({node:t,transformExpression:r}),await o({node:t}),i({node:t})}return jn={hits:async function({node:e}){return e.definition.hasOwnProperty("assign")},init:async function({node:e,initNode:n}){e.type="assign",await t({node:e,initNode:n}),e.resolve=o},resolve:o}}(),le=function(){if(En)return Dn;En=1;const e=y,t=Y,n=Z,o=no(),i=oo();async function r({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 i({node:t,transformExpression:r}),await n({node:t}),o({node:t})}return Dn={hits:async function({node:e}){return e.definition.hasOwnProperty("for")},init:async function({node:e,initNode:i}){if(e.type="for",await o({node:e,initNode:i}),e.blockAutoJumpToParent=!0,e.blockAutoJumpToSibling=!1,!e.definition.for.hasOwnProperty("steps")){const o=["value","in"],[i,r]=[t(e.definition.for,o),n(e.definition.for,o)];e.definition.for=i,e.definition.for.steps=[{[`${e.name}_step`]:r}]}Array.isArray(e.definition.for.steps)||(e.definition.for.steps=[{[`${e.name}_step`]:e.definition.for.steps}]);for(let t=0;t<e.definition.for.steps.length;t++){const n=e.definition.for.steps[t],o=Object.keys(n)[0],r={name:o,childs:[],parent:e,definition:n[o],index:e.childs.length,context:{}};e.childs.push(r),await i({node:r})}e.resolve=r},resolve:r}}(),de=io(),fe=Sn?Pn:(Sn=1,Pn={hits:async function({node:e}){return!1},init:async function({node:e,initNode:t}){},resolve:async function({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o,transformValue:i}){}}),me=function(){if(Tn)return An;Tn=1;const e=y;async function t({node:t,resolveTypeCommon:n,transformExpression:o}){t.context.transform=t.context.transform||e(t.definition);const i=t.context.transform;i.raise=await o(i.raise),await n({node:t})}return An={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}}(),ue=function(){if(On)return $n;On=1;const e=y;async function t({node:t,resolveTypeCommon:n,transformExpression:o}){t.context.transform=t.context.transform||e(t.definition);const i=t.context.transform;t.hasReturn=!0,i.return=await o(i.return),await n({node:t})}return $n={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}}(),ye=ro(),he=function(){if(Fn)return In;Fn=1;const e=y,t=oo();async function n({node:n,transformExpression:o}){n.context.next=n.childs[0],n.context.transform=n.context.transform||e(n.definition),await t({node:n,transformExpression:o})}return In={hits:async function({node:e}){return e.definition.hasOwnProperty("steps")},init:async function({node:e,initNode:t}){e.type||(e.type="steps");const o=e.definition.steps||[];for await(const n of o){const o=Object.keys(n)[0],i={name:o,childs:[],parent:e,definition:n[o],index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=n},resolve:n}}(),ge=function(){if(Mn)return Rn;Mn=1;const e=y,t=no(),n=oo();async function o({node:t,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition);const s=t.context.transform;s.props&&(s.props=await r(s.props));const a=t.workflow.parent;t.context.lib=a.context.libs.find((e=>e.name===s.form)),await n({node:t,transformExpression:r}),await o({node:t}),i({node:t})}return Rn={hits:async function({node:e}){return e.definition.hasOwnProperty("form")},init:async function({node:e,initNode:n}){e.type="form",await t({node:e,initNode:n}),e.resolve=o},resolve:o}}(),we=function(){if(Bn)return qn;Bn=1;const e=y;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i,transformValue:r}){t.context.transform=t.context.transform||e(t.definition),await n({node:t})}return qn={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(Ln)return Kn;Ln=1;const e=y,t=oo();async function n({node:n,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){n.context.transform=n.context.transform||e(n.definition);const s=n.context.transform;s.next=await r(s.next),await t({node:n,transformExpression:r}),await o({node:n}),i({node:n})}return Kn={hits:async function({node:e}){return e.definition.hasOwnProperty("next")},init:async function({node:e,initNode:t}){e.type="jump",e.resolve=n},resolve:n}}(),ve=function(){if(Jn)return Un;Jn=1;const e=y,t=no(),n=oo();async function o({node:t,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition),t.context.transform,await n({node:t,transformExpression:r}),await o({node:t}),i({node:t})}return Un={hits:async function({node:e}){return e.definition.hasOwnProperty("modules")},init:async function({node:e,initNode:n}){e.type="modules",await t({node:e,initNode:n}),e.resolve=o},resolve:o}}(),xe=so(),ke=ao();return Hn=class{#i;#r;#s;#a;#c;#p;#l;#d;#f;#m;#u;#y;#h;#g;#w;#b;#v;#x;#k;#j;#_;#D=[];constructor(e){this.#i=new D,this.#r=e,this.#p=[],this.#l=[],this.#d={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#D.push(ke({key:"config",npm:"@fnet/config",master:"name"})),this.#D.push(ke({key:"yaml",npm:"@fnet/yaml",master:"file"})),this.#D.push(ke({key:"prompt",npm:"@fnet/prompt",master:"message"})),this.#D.push(ke({key:"html-link",npm:"@flownet/lib-load-browser-link-url",master:"src"})),this.#D.push(ke({key:"html-script",npm:"@flownet/lib-load-browser-script-url",master:"src"})),this.#D.push(ke({key:"http-server",npm:"@fnet/node-express",master:"server_port"})),this.#D.push(ke({key:"shell",npm:"@fnet/shell-flow",master:"commands"})),this.#D.push(ke({key:"list-files",npm:"@fnet/list-files",master:"pattern"})),this.#D.push(ke({key:"up-list-files",npm:"@fnet/up-list-files",master:"pattern"})),this.#D.push(ke({key:"auto-conda-env",npm:"@fnet/auto-conda-env",master:"envDir"})),this.#D.push(ke({key:"ollama-chat",npm:"@fnet/ollama-chat",master:"model"})),this.#D.push(ke({key:"ai",npm:"@fnet/ai",master:"prompt",extras:{subtype:"flow"}})),this.#D.push(ke({key:"invoke",npm:"@fnet/invoke",master:"method",extras:{}})),this.#D.push(ke({key:"fetch",npm:"@fnet/fetch",master:"url",extras:{}})),this.#D.push(ke({key:"filemap",npm:"@fnet/filemap",master:"target",extras:{}})),this.#j={packageDependencies:this.#p,packageDevDependencies:this.#l,setProgress:this.setProgress.bind(this),context:this.#r,Atom:L,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#_={initNode:this.initNode.bind(this),cloneDeep:d,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 m(),this.#u=this.#r.buildId||j(24),this.#j.buildId=this.#u,this.#w=this.#r.mode,this.#b=["all","deploy","build","file"].includes(this.#w),this.#v=["all","deploy","build"].includes(this.#w),this.#x=["all","deploy"].includes(this.#w),this.#k=["all","deploy","build","file","bpmn"].includes(this.#w),this.#h=this.#r.protocol,this.#y="BUILD:"+this.#u,this.#g=(await W({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(),this.transformWorkflow({workflow:this.#a});const e=await this.initNodeTree({workflow:this.#a});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.initEntryFiles({root:e,features:this.#s.doc.features}),await this.initFeaturesFromNodes({childs:e.childs,features:this.#s.doc.features}),await E(this.#j),await P(this.#j),await this.initAtomLibsAndDeps({libs:e.context.libs,packageDependencies:this.#p}),await this.resolveNodeTree({root:e}),this.#m=e}catch(e){throw await this._cache_set(this.#y,{status:"FAILED",message:e?.message||e}),e}}async initAuth(){this.#r.id&&(this.#f=await this.#i.init({config:this.#g}),this.#j.atomAccessToken=this.#f)}async initWorkflow(){const e=this.#r.id;this.#s=this.#r.project?.workflowAtom||await L.get({id:e}),this.#a="string"==typeof this.#s.doc.content?(await ee({content:this.#s.doc.content,tags:this.#r.tags})).parsed:this.#s.doc.content;let t=this.#s.doc.bundleName;t=t||(this.#s.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#s.doc.bundleName=t,this.#s.type=this.#s.type||"workflow",this.#j.atom=this.#s,this.#s.doc.features=this.#s.doc.features||{}}#E(n){console.log("filePath",n),e.statSync(n).isDirectory()?(e.readdirSync(n).forEach((e=>{const o=t.join(n,e);this.#E(o)})),e.rmSync(n)):e.unlinkSync(n)}#P(n,o){const i=e.existsSync(n),r=i&&e.statSync(n);i&&r.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 i=se({dir:n,ignore:[".cache","node_modules",".conda"],absolute:!0});for(const t of i)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."}),e.existsSync(n)||e.mkdirSync(n,{recursive:!0});const r=t.join(n,"src");e.existsSync(r)||e.mkdirSync(r,{recursive:!0});const s=t.join(r,"core");this.#P(o,s);const a=t.join(r,"default","blocks");e.existsSync(a)||e.mkdirSync(a,{recursive:!0})}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#r.templateDir;this.#c=a.configure(e,{watch:!1,dev:!0}),this.#j.njEnv=this.#c}transformWorkflow({workflow:e}){for(const t of Object.values(e))t.steps=t.steps||[],t.steps=t.steps.filter((e=>Object.keys(e).length>0)),t.steps=t.steps.map((e=>this.transformStep({step:e})))}transformStep({step:e}){if(Array.isArray(e))throw new Error("Step must be an object.");const[t,n]=Object.entries(e)[0];if(n.hasOwnProperty("onerror")){const{onerror:o,...i}=n;e[t]={try:i,except:o}}if(e[t].hasOwnProperty("steps")){const n=e[t].steps;if(!Array.isArray(n))throw new Error("Steps must be an array.");e[t].steps=n.map((e=>this.transformStep({step:e})))}return e}async initNodeTree({workflow:e}){const t=Object.keys(e),n={definition:e,name:void 0,type:"root",parent:void 0,childs:[],blockAutoJumpToParent:!0,blockAutoJumpToSibling:!0,index:0,depth:0,context:{libs:[],atom:this.#s}};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.#_,node:e};if(e.workflow=e.parent.workflow||e,e.depth=e.parent.depth+1,await ce.hits(t))await ce.init(t);else if(await le.hits(t))await le.init(t);else if(await de.hits(t))await de.init(t);else if(await ae.hits(t))await ae.init(t);else if(await fe.hits(t))await fe.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 ye.hits(t))await ye.init(t);else if(this.#D.find((e=>e.hits(t))))await this.#D.find((e=>e.hits(t))).init(t);else if(await ge.hits(t))await ge.init(t);else if(await we.hits(t))await we.init(t);else if(await he.hits(t))await he.init(t);else if(await be.hits(t))await be.init(t);else if(await ve.hits(t))await ve.init(t);else{if(!await ue.hits(t))throw new Error("Undefined step type.");await ue.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 i=[];let r=e;for(;r?.parent;)i.push(r.index),r=r.parent;i.reverse(),e.codeKey=`B_${i.join("_")}_${e.type}`,e.pathKey=`${i.join(".")}`,e.typeId=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.import||e.definition.call,o=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:n,type:"atom",definition:e.definition},i=t.find((e=>e.name===o.name&&e.type===o.type));i||t.push(o),e.target=i||o}return e.context.callLibs=t,e.context.libs=[...e.context.libs,...t],t}async findNodeCallTarget({refNode:e,curNode:t}){if(!t)return;const n=e.definition.call,o=t.childs.find((e=>e.name===n&&"subworkflow"===e.type));return o||await this.findNodeCallTarget({refNode:e,curNode:t.parent})}async initNodeForms({root:e}){const t=e.context.index,n=[];for await(const e of Object.keys(t)){const o=t[e];"form"===o.type&&n.push(o)}return e.context.forms=n,n}async initNodeFormLibs({root:e}){const t=[],n=e.context.forms;for await(const e of n){const n=e.definition.import||e.definition.form,o=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:n,type:"atom"},i=t.find((e=>e.name===o.name&&e.type===o.type));i||t.push(o),e.target=i||o}return e.context.formLibs=t,e.context.libs=[...e.context.libs,...t],t}async initFeaturesFromNodes({childs:e,features:t}){for await(const n of e)"form"!==n.type||Reflect.has(t,"form")||(t.form=!0),await this.initFeaturesFromNodes({childs:n.childs,features:t})}async initEntryFiles({root:e,features:t}){for await(const n of e.childs){let e;if("main"===n.name)e="index.js";else if("cli"===n.name)e="cli.js";else if("app"===n.name)e="app.js";else{if("api"!==n.name)continue;e="api.js"}t[`${n.name}_default_entry_file`]=e,n.entryFile=e}}async findNodeFormTarget({refNode:e,curNode:t}){if(!t)return;const n=e.definition.form,o=t.childs.find((e=>e.name===n&&"subworkflow"===e.type));return o||await this.findNodeFormTarget({refNode:e,curNode:t.parent})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const n=e.filter((e=>"atom"===e.type));for(let e=0;e<n.length;e++){const o=n[e],i=await this.findAtomLibrary({url:o.name,libRef:o});o.atom=i;const r=i.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));r?.forEach((e=>{const n=t.find((t=>t.package===e.package));n?"string"==typeof e.path?(n.path||[]).some((t=>t===e.path))||(n.path=n.path||[],n.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(n.path||[]).some((t=>t===e))||(n.path=n.path||[],n.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e,libRef:n}){const o=U({url:e});if(!o)throw new Error(`Invalid package name: ${e}`);if(o.protocol||(o.protocol=this.#h),"ac:"===o.protocol){const t=o.pathname.split("/");if(1===t.length)return await L.first({where:{name:e,parent_id:this.#g.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await L.first({where:{name:t[0],parent_id:this.#g.env.ATOM_LIBRARIES_ID,type:"folder"}});return await L.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=[],i=(await V({file:e,recursive:!0})).all;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.#j.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.#j.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}}if("use:"===o.protocol){return{name:o.pathname,doc:{type:"function",dependencies:[]},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=e.context.transform||d(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],type:typeof 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.#_,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.#s.typesDir="./types";const o=n.context.libs.filter((e=>"atom"===e.type));for(let n=0;n<o.length;n++){const i=o[n].atom,r=this.#r.projectDir;if("local:"===i.protocol){const n=t.resolve(this.#r.projectSrcDir,`${i.fileName||i.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")}i.relativePath=o.split(t.sep).join("/"),this.#s.typesDir=`./types/${t.basename(r)}/src`}else if("npm:"===i.protocol)i.relativePath=i.name;else if("use:"===i.protocol);else{const n=`${r}/src/libs/${i.id}.js`,o=i.doc.contents?.find((e=>"esm"===e.format))||i.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,i=a.compile(e.readFileSync(t.resolve(o,"src/default/engine.js.njk"),"utf8"),this.#c);for(let o=0;o<n.childs.length;o++){const r=n.childs[o];if(!r.entryFile)continue;const s=i.render({flow:r,ui:{package:"@fnet/react-app"}}),a=this.#r.projectDir,c=t.resolve(a,`src/default/${r.entryFile}`);e.writeFileSync(c,s,"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,i=a.compile(e.readFileSync(t.resolve(o,"src/default/workflow.js.njk"),"utf8"),this.#c).render(n),r=this.#r.projectDir,s=t.resolve(r,`src/default/${n.codeKey}.js`);e.writeFileSync(s,i,"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":case"modules":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.#d[n.type];if(o)return o;const i=this.#r.templateDir;return o=a.compile(e.readFileSync(t.resolve(i,`src/default/blocks/${n.type}.js.njk`),"utf8"),this.#c),this.#d[n.type]=o,o}createStepFile({node:n}){const o=this.#r.projectDir,i=`${n.codeKey}.js`,r=t.resolve(o,`src/default/blocks/${i}`);e.writeFileSync(r,n.context.render,"utf8"),n.context.fileName=i,n.context.filePath=r}async transformExpression(e){let t=await this.transformValue(e);return t=JSON.stringify(t),t=this.replaceSpecialPattern(t),t}async transformValue(e){if(Array.isArray(e))for(let t=0;t<e.length;t++)e[t]=await this.transformValue(e[t]);else if(f(e)){const t=Object.keys(e);for(let n=0;n<t.length;n++){const o=t[n],i=Q({expression:o});if(i)if("e"===i.processor){const t=e[o].replace(/(\r\n|\n|\r)/g,"");e[i.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=Q({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=`$::c.module['${o}']::`;break;case"fm":e=`$::flow.getModule('${o}')::`;break;case"f":e=`$::c.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="fnet.yaml",o=`Creating ${n}`;await this.setProgress({message:o});const{content:i,...s}=this.#s.doc,c={content:r.stringify(s)},p=this.#r.templateDir,l=a.compile(e.readFileSync(t.resolve(p,`${n}.njk`),"utf8"),this.#c).render(c),d=this.#r.projectDir,f=t.resolve(d,`${n}`);e.writeFileSync(f,l,"utf8")}async createProjectMainYaml(){const n="flow.main.yaml",o=`Creating ${n}`;await this.setProgress({message:o});const i={content:r.stringify(this.#a)},s=this.#r.templateDir,c=a.compile(e.readFileSync(t.resolve(s,`${n}.njk`),"utf8"),this.#c).render(i),p=this.#r.projectDir,l=t.resolve(p,`${n}`);e.writeFileSync(l,c,"utf8")}async runPrettifier(){const e=this.#r.projectDir,n=await s("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.#s.id){const e=await L.list({type:"workflow.deploy",parent_id:this.#s.id});for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&(n=await L.update(n,{id:n.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:n}=t;if(t.doc.targets&&Array.isArray(t.doc.targets))throw new Error("Deployment project targets are deprecated. Please update targets in the yaml file.");const o=Object.keys(t.doc||{}),i=n||{};for(let e=0;e<o.length;e++){const n=t.doc[o[e]];n.name=o[e];const r=i.get(o[e]);await K({...this.#j,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:r})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#r.id)return;let o=await L.first({name:t.params.name,parent_id:this.#g.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:n.version}),await L.update(o,{id:o.id})):o=await L.create({parent_id:this.#g.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(re.blue(t)),await this._cache_set(this.#y,{status:"IN_PROGRESS",message:t})}async build(){if(this.#k&&!this.#b)return await this.createNetwork();try{const n=this.#k?await z({root:this.#m}):void 0;if(this.#b){if(await this.initWorkflowDir(),await this.initNunjucks(),this.#k){let o=this.#r.project?.projectDir||this.#r.projectDir;o=t.resolve(o,"fnet"),e.existsSync(o)&&e.writeFileSync(t.resolve(o,"flow.bpmn"),n.diagramXML,"utf8")}await this.createAtomLibFiles({root:this.#m}),await this.createEngine({root:this.#m}),await this.createNodeTree({root:this.#m}),await this.createProjectYaml(),await I(this.#j),await C(this.#j),await N(this.#j),await O(this.#j),await T(this.#j),await S(this.#j),await $(this.#j),await A(this.#j),await F(this.#j),await R(this.#j),this.#v&&(await M(this.#j),await q(this.#j),this.#x&&await this.deploy())}await this._cache_set(this.#y,{status:"COMPLETED",data:{network:n}})}catch(e){throw await this._cache_set(this.#y,{status:"FAILED",message:e.message||e}),e}}async createNetwork(){try{const e=await z({root:this.#m});await this._cache_set(this.#y,{status:"COMPLETED",data:{...e}})}catch(e){throw await this._cache_set(this.#y,{status:"FAILED",message:e.message||e}),e}}}}var po=function(){if(Qn)return zt;Qn=1;const u=process.cwd(),{spawn:y}=e,h=t,g=Wt;i({name:["redis"],dir:u,optional:!0});const w=r,b=s,v=a,x=c,k=p,j=l,_=i,D=d,E=f,P=m,S=co(),A=function(){if(Zn)return Yn;Zn=1;const e=n,t=o;return Yn=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=`${w.join(A,"/.bin")}${T}${process.env.PATH}`;let $=b(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=w.resolve(A,"./@fnet/cli-project-flow/dist/template/project"),n=w.resolve(u,e.name);v.existsSync(n)||v.mkdirSync(n),await P({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let o=await k("fnet build",{cwd:n});if(0!==o.code)throw new Error("Failed to build project.");if(g("git")&&(o=await k("git init --initial-branch=main",{cwd:n}),0!==o.code))throw new Error("Failed to initialize git.");if(g("code")&&e.vscode&&(o=await k(`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=w.resolve(A,"@fnet/cli-project-flow/dist/template/project"),n=process.cwd(),o=await N(e);if(e.update){if(await P({dir:t,outDir:n,context:{name:o.project.projectFileParsed.name,runtime:"node"},copyUnmatchedAlso:!0}),0!==(await k("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 N(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 N({...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 N({...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 O(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 N(e),{projectDir:i}=t,r=e=>e.includes(" ")?"win32"===process.platform?`"${e.replace(/(["^])/g,"^$1")}"`:`"${e.replace(/(["\\$`])/g,"\\$1")}"`:e,s=process.argv.slice(3).map(r);y(n,[...o,...s],{cwd:i,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function N(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:w.resolve(u,`./.output/${e.id}`),templateDir:w.resolve(A,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:w.resolve(A,"./@fnet/cli-project-common/dist/template/default"),coreDir:w.resolve(A,"./@fnet/cli-project-flow/dist/template/core"),tags:e.ftag}}{const t=await async function({tags:e}){const t=w.resolve(u,"fnet.yaml");if(!v.existsSync(t))throw new Error("fnet.yaml file not found in current directory.");const{raw:n,parsed:o}=await j({file:t,tags:e}),i=w.dirname(t);let r;if("object"==typeof o.flows)r=o.flows;else{let t="flow.main.yaml";v.existsSync(w.join(i,"fnet","flows.yaml"))&&(t=w.join("fnet","flows.yaml"));const n=o.main||t;let s=w.resolve(i,n);if(v.existsSync(s)){const{parsed:t}=await j({file:s,tags:e});r=t}else r={main:{steps:[]}}}const s={workflowAtom:{doc:{...o,content:r}},projectDir:i,projectFilePath:t,projectFileContent:n,projectFileParsed:o};let a=w.resolve(i,"fnet/targets.yaml");if(!v.existsSync(a)&&(a=w.resolve(i,"flow.devops.yaml"),v.existsSync(a))){const e=w.resolve(i,"fnet");v.existsSync(e)||v.mkdirSync(e),v.copyFileSync(a,w.resolve(i,"fnet/targets.yaml")),v.unlinkSync(a)}if(v.existsSync(a)){const{raw:t,parsed:n}=await j({file:a,tags:e}),o=x.parseDocument(t);s.devops={filePath:a,fileContent:t,yamlDocument:o,doc:{...n},type:"workflow.deploy",save:async()=>{v.writeFileSync(s.devops.filePath,o.toString())}}}const c=w.resolve(i,"readme.md");if(v.existsSync(c)){const e=v.readFileSync(c,"utf8");s.readme={filePath:c,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return s}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:w.resolve(A,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:w.resolve(A,"./@fnet/cli-project-common/dist/template/default"),coreDir:w.resolve(A,"./@fnet/cli-project-flow/dist/template/core"),projectDir:w.resolve(t.projectDir,"./.workspace"),projectSrcDir:w.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return $=$.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 N(e),{project:n}=t,{projectDir:o,projectFileParsed:i}=n,r=i.input;if(!r)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=w.resolve(o,".fnet");v.existsSync(s)||v.mkdirSync(s);const a=w.resolve(s,`${e.name}.fnet`),c=v.existsSync(a),p=await D({schema:r,format:"yaml",ref:c?a:void 0});v.writeFileSync(a,p)}catch(e){console.error(e.message),process.exit(1)}})),$=O($,{bin:"npm"}),$=O($,{bin:"node"}),$=O($,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),$=O($,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),$=O($,{name:"app",bin:"npm",preArgs:["run","app","--"]}),$=O($,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),$=O($,{bin:"npx"}),$=O($,{bin:"cdk"}),$=O($,{bin:"aws"}),$=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 N(e),{projectDir:o}=t,i=e.config,r=await _({name:i,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),s=r?.data?.env||void 0,a=e.command,c=process.argv.slice(5);y(a,[...n,...c],{cwd:v.existsSync(o)?o:u,stdio:"inherit",shell:!0,env:{...process.env,...s}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}($,{name:"with"}),$=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 N(e),{project:n}=t,{projectFileParsed:o}=n,i=o.commands;if(!i)throw new Error("Commands not found in project file.");const r=i[e.group];if(!r)throw new Error(`Command group '${e.group}' not found in project file.`);await E({commands:r})}catch(e){console.error(e.message),process.exit(1)}}))}($,{name:"run"}),$.demandCommand(1,"You need at least one command before moving on").help().argv,zt}(),lo=Q(po);module.exports=lo;
2
+ "use strict";var e=require("child_process"),t=require("@fnet/prompt"),n=require("node:fs"),o=require("node:path"),i=require("@fnet/config"),r=require("path"),s=require("yargs/yargs"),a=require("fs"),c=require("yaml"),p=require("@fnet/shelljs"),l=require("@fnet/yaml"),d=require("@fnet/object-from-schema"),f=require("@fnet/shell-flow"),m=require("@flownet/lib-render-templates-dir"),u=require("nunjucks"),h=require("lodash.clonedeep"),y=require("isobject"),g=require("redis"),w=require("@flownet/lib-is-redis-online"),b=require("node:crypto"),v=require("@flownet/lib-atom-api-js"),x=require("lodash.merge"),k=require("@flownet/lib-parse-imports-js"),j=require("@fnet/npm-list-versions"),_=require("@fnet/npm-pick-versions"),D=require("object-hash"),E=require("ajv/dist/2020.js"),P=require("ajv/dist/standalone/index.js"),S=require("ajv-formats"),T=require("semver"),$=require("@fnet/up-list-files"),A=require("node:os"),O=require("@node-red/util"),N=require("@flownet/lib-to-ios-app"),C=require("@flownet/lib-to-macos-app"),I=require("@flownet/lib-to-electron"),F=require("@flownet/lib-to-webos"),R=require("@flownet/lib-to-nextjs"),M=require("@flownet/lib-to-docker"),q=require("form-data"),B=require("@fnet/to-rust"),K=require("@fnet/to-pyip"),L=require("@flownet/lib-parse-node-url"),J=require("bpmn-moddle"),U=require("dagre"),z=require("@fnet/expression"),W=require("chalk"),G=require("@fnet/list-files"),X=require("@fnet/key-value-transformer"),H=require("lodash.pick"),V=require("lodash.omit");function Y(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function Z(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var n=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:function(){return e[t]}})})),n}var Q,ee,te,ne,oe,ie,re,se,ae,ce,pe,le,de,fe,me,ue,he,ye,ge,we,be,ve,xe,ke,je,_e,De,Ee,Pe,Se,Te,$e,Ae,Oe,Ne,Ce,Ie,Fe,Re,Me,qe,Be,Ke,Le,Je,Ue,ze,We,Ge,Xe,He,Ve,Ye,Ze,Qe,et,tt,nt,ot,it,rt,st,at,ct,pt,lt,dt,ft,mt,ut,ht,yt,gt,wt,bt,vt,xt,kt,jt,_t,Dt,Et,Pt,St,Tt,$t,At,Ot,Nt,Ct,It,Ft,Rt,Mt,qt,Bt,Kt,Lt,Jt={},Ut=Z(Object.freeze({__proto__:null,default:e=>{const t=process.env.PATH||"",i="win32"===process.platform?(process.env.PATHEXT||".EXE;.CMD;.BAT;.COM").split(";"):[""],r=t.split(o.delimiter);for(const t of r)for(const r of i){const i=o.join(t,"win32"===process.platform?e+r:e);if(n.existsSync(i))return i}return null}}));function zt(){if(ie)return oe;ie=1;const e=x;return oe=({feature:t,features:n,packageDevDependencies:o})=>{const{name:i,packages:r,options:s,extraCheck:a,explicit:c}=t,p=`${i}_enabled`,l=n.rollup_output||{},d=Object.keys(l);let f=s||{};const m=n[i]?.options;m&&(f=e(f,m));const u=!n[i]||!1===n[i]?.enabled;d.forEach((e=>{const t=n.rollup_output[e];if(t){if(Reflect.has(t,i)){if(u||!t[i]||!1===t[i]?.enabled)return void delete t[i];!0===t[i]&&(t[i]={enabled:!0,options:f})}else{if(u||c||!1===n[p])return;t[i]={enabled:!0}}t[i]=t[i]||{},t[i].options={...f,...t[i].options}}}));let h=d.some((e=>!0===n.rollup_output[e][i]?.enabled));a&&(h=a()&&h),n[p]=h,h&&r.forEach((e=>o.push({package:e[0],version:e[1]})))},oe}function Wt(){if(Oe)return Ae;Oe=1;const e=x,t=n,i=o,r=k,s=function(){if(se)return re;se=1;const e=zt();return re=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"workbox",packages:[["rollup-plugin-workbox","^8"]],options:{generate:{swDest:"dist/app/esm/sw.js",globDirectory:"dist/app/esm",globPatterns:["**/*.{html,js,css,png,jpg}"],skipWaiting:!0,clientsClaim:!0}},explicit:!0},features:i,packageDevDependencies:o})},re}(),a=function(){if(ce)return ae;ce=1;const e=zt();return ae=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:i,packageDevDependencies:o})},ae}(),c=function(){if(le)return pe;le=1;const e=zt();return pe=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:i,packageDevDependencies:o})},pe}(),p=function(){if(fe)return de;fe=1;const e=zt();return de=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:i,packageDevDependencies:o})},de}(),l=function(){if(ue)return me;ue=1;const e=zt();return me=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:i,packageDevDependencies:o})},me}(),d=function(){if(ye)return he;ye=1;const e=zt();return he=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:i,packageDevDependencies:o})},he}(),f=function(){if(we)return ge;we=1;const e=zt();return ge=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:i,packageDevDependencies:o})},ge}(),m=function(){if(ve)return be;ve=1;const e=zt();return be=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:i,packageDevDependencies:o})},be}(),u=function(){if(ke)return xe;ke=1;const e=zt();return xe=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:i,packageDevDependencies:o})},xe}(),h=function(){if(_e)return je;_e=1;const e=zt();return je=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:i,packageDevDependencies:o})},je}(),y=function(){if(Ee)return De;Ee=1;const e=zt();return De=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:i,packageDevDependencies:o})},De}(),g=function(){if(Se)return Pe;Se=1;const e=zt();return Pe=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features,r={};!0===i.app?.enabled&&(r.targets=r.targets||[],r.targets.push({src:"./src/app/index.html",dest:i.app.dir}),Reflect.has(i.app,"copy")||Reflect.has(i,"copy")||(i.copy=!0)),e({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:r},features:i,packageDevDependencies:o})},Pe}(),w=function(){if($e)return Te;$e=1;const e=zt();return Te=t=>{const{atom:n,packageDevDependencies:o}=t,i=n.doc.features,r=i.css&&!1!==i.css.enabled;let s=[];r&&(s.push(["rollup-plugin-postcss","^4"]),s.push(["sass","^1.66"]),(i.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:i,packageDevDependencies:o})},Te}();function b({dir:e,name:n="index"}){let o=i.resolve(e,`./${n}.tsx`);if(t.existsSync(o)||(o=i.resolve(e,`./${n}.ts`)),t.existsSync(o)||(o=i.resolve(e,`./${n}.jsx`)),t.existsSync(o)||(o=i.resolve(e,`./${n}.js`)),!t.existsSync(o))return{};const r=o,s=i.extname(o);return{file:r,ext:s,ts:".ts"===s||".tsx"===s,name:n}}return Ae=async t=>{const{atom:n,context:o,setProgress:v}=t;v("Initializing features..."),n.doc.features=n.doc.features||{};const x=n.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;const k=i.resolve(o.project.projectDir),j=b({dir:i.resolve(k,"./app")});if(j.file){v("Parsing app entry imports...");let e=await r({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 r({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 _=b({dir:i.resolve(k,"./cli")});if(_.file){v("Parsing cli entry imports...");let e=await r({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 r({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"===n.type){const e=b({dir:i.resolve(k,"./src")});if(e.file){v("Parsing src entry imports...");let t=await r({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 r({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,E=Reflect.has(x,"cli_entry_uses_jsx")?!0===x.cli_entry_uses_jsx:!0===x.src_entry_uses_jsx;x.form_enabled=D||E||!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===n.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:E}:x.cli={enabled:!0,extend:!0===x.cli_has_entry,export:!0,react:E,...x.cli||{}},x.cli.enabled=!0===x.cli.enabled&&(!1===n.doc.features.form_enabled||!0===x.cli.extend||!0===x.cli.enabled),x.cli.format=x.cli.format||"esm",x.cli.folder=x.cli.folder||x.cli.folder||"esm",x.cli.node_options=x.cli.node?.options||x.cli.node_options||"",x.json=x.cli.enabled||x.json;const P={cjs:{format:"cjs",context:x.form_enabled?"window":"global",babel:!0===x.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==x.cjs,copy:!1},esm:{format:"esm",context:x.form_enabled?"window":"global",babel:!0===x.src_uses_jsx||!1,browser:!1,replace:!0,terser:!1,enabled:!1!==x.esm,copy:!0},iife:{format:"iife",context:x.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!0===x.iife,terser:!0,copy:!1}};!0===x.webos&&(P.webos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/webos",copy:!1,babel_options:{targets:{chrome:"79"}}}),!0===x.electron&&(P.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===x.nextjs&&(P.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===x.ios&&(P.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===x.macos&&(P.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===x.app.enabled&&(x.app.dir=`./dist/app/${x.app.folder}`,P.app={format:x.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:x.app.dir,terser:!0,output_exports:!1===x.app.export?"none":"auto",browsersync:!0}),!0===x.cli.enabled&&(x.cli.dir=`./dist/cli/${x.cli.folder}`,P.cli={format:x.cli.format,context:"global",babel:!0===x.src_uses_jsx||!0===x.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:x.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===x.cli.export?"none":"auto"});const S={server:".",startPath:`${i.normalize(x.app.dir||".")}`,files:[i.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(S,x.browsersync_options||x.browsersync?.options||{}),x.replace_options=e({},x.replace_options||x.replace?.options||{}),Reflect.has(x.browsersync_options,"proxy")&&delete x.browsersync_options.server,x.rollup=x.rollup||{},x.rollup_output=e(P,x.rollup_output||x.rollup?.output||{}),x.preact_enabled=!0===x.preact||x.preact&&!1!==x.preact?.enabled;let T=Object.keys(P);for(const t of T){const n=P[t];n&&(!1!==x.rollup[t]?(n.babel_options=n.babel_options||x.babel_options,n.browsersync_options=e(x.browsersync_options,n.browsersync_options),n.replace_options=e(x.replace_options,n.replace_options),x.preact_enabled&&(n.alias_enabled=!0,n.alias=n.alias||{},n.alias.entries=n.alias.entries||{},n.alias.entries.react="preact/compat",n.alias.entries["react-dom"]="preact/compat"),(x.form_enabled||x.babel)&&(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),g(t),y(t),h(t),u(t),f(t),m(t),d(t),l(t),p(t),c(t),s(t),a(t)},Ae}function Gt(){if(Ce)return Ne;Ce=1;const e=j;return Ne=async({atom:t,packageDependencies:n,packageDevDependencies:o,setProgress:i})=>{i("Initializing dependencies");const r=t.doc.dependencies||[];if(r.filter((e=>!e.dev)).forEach((e=>n.push(e))),r.filter((e=>e.dev)).forEach((e=>o.push(e))),"workflow"===t.type&&(n.push({package:"get-value",version:"^3"}),n.push({package:"set-value",version:"^4"})),t.doc.features.form_enabled&&t.doc.features.dependency_auto_enabled){let o="^18.2";i("Fetching React versions");o=`^${(await e({name:"react",groupBy:{major:!0}})).find((e=>e[0]===t.doc.features.react_version.toString()))[0]}`,n.push({package:"react",version:o}),n.push({package:"react-dom",version:o}),"workflow"===t.type&&(n.push({package:"@fnet/react-app",version:"^0.1"}),n.push({package:"@fnet/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:"^16"}),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"})},Ne}function Xt(){if(Fe)return Ie;Fe=1;const e=n,t=o,i=m;return Ie=async({atom:n,setProgress:o,context:r,packageDependencies:s})=>{if(!0!==n.doc.features.app.enabled)return;await o({message:"Creating app folder"});const a={atom:n,packageDependencies:s,ts:Date.now()},c=r.templateDir,p=t.resolve(r.projectDir,"src/app");e.existsSync(p)||e.mkdirSync(p,{recursive:!0});let l=["index.js.njk"];!1!==n.doc.features.app.html&&l.push("index.html.njk"),await i({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:a})},Ie}function Ht(){if(Me)return Re;Me=1;const e=_,t=D,i=n,r=o;return Re=async({projectDir:n,name:o,setProgress:s,count:a=1})=>{let c;const p=t(["npm-pick-versions",o,a]),l=r.join(n,".cache"),d=r.join(l,p+".json");return i.existsSync(d)?(s&&s(`Picking npm version of ${o} from cache ...`),c=JSON.parse(i.readFileSync(d,"utf8"))):(s&&s(`Picking npm version of ${o} ...`),c=await e({name:o,count:a}),i.mkdirSync(l,{recursive:!0}),i.writeFileSync(d,JSON.stringify(c),"utf8")),c},Re}function Vt(){if(Be)return qe;Be=1;const e=u,t=n,i=o,r=k,s=Ht();return qe=async({atom:n,context:o,packageDependencies:a,packageDevDependencies:c,setProgress:p})=>{await p({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 l=a.find((e=>"react"===e.package)),d=a.find((e=>"react-dom"===e.package));l&&!d?a.push({package:"react-dom",version:l.version}):l&&d&&(d.version=l.version),l&&n.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===n.doc.features.app.enabled&&f.push({file:i.resolve(o.projectDir,"src/app/index.js"),dev:!1!==n.doc.features.app.dev}),!0===n.doc.features.cli.enabled&&f.push({file:i.resolve(o.projectDir,"src/cli/index.js"),dev:!1!==n.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 i=(await r({file:n,recursive:!0})).all;for await(const t of i){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 s({name:t.package,projectDir:o.projectDir,setProgress:p});(!0===e.dev?c:a).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const m={atom:n,packageDependencies:a,packageDevDependencies:c},u=o.templateCommonDir,h=e.compile(t.readFileSync(i.resolve(u,"package.json.njk"),"utf8"),e.configure(u)).render(m),y=o.projectDir,g=i.resolve(y,"package.json");t.writeFileSync(g,h,"utf8");const w=i.resolve(o.project.projectDir,"fnet");if(t.existsSync(w)){const e=i.resolve(o.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const n=t.readdirSync(w);for(const o of n){const n=i.resolve(w,o);if(!t.lstatSync(n).isFile())continue;const r=i.resolve(e,o);t.copyFileSync(n,r)}}},qe}function Yt(){if(Le)return Ke;Le=1;const e=n,t=o,i=m;return Ke=async({atom:n,setProgress:o,context:r,packageDependencies:s})=>{if(!0!==n.doc.features.cli.enabled)return;await o({message:"Creating cli."});const a={atom:n,packageDependencies:s},c=r.templateDir,p=t.resolve(r.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await i({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:p,context:a})},Ke}function Zt(){if(Ue)return Je;Ue=1;const e=n,t=o,i=u,r=k;return Je=async({atom:n,setProgress:o,context:s,packageDependencies:a})=>{await o({message:"Creating rollup file."});const c={atom:n,packageDependencies:a},p=t.resolve(s.projectDir,"src","default/index.js");if(!e.existsSync(p))throw new Error(`Entry file not found: ${p}`);const l=(await r({file:p,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=n.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&&l.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(l.map((e=>({key:e,value:e})))),t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{};for(let e=0;e<l.length;e++){const n=l[e];t.alias.entries[n]=`node:${n}`,t.alias.entries[`node:${n}`]=n}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(l)}}const m=s.templateCommonDir;let u=i.compile(e.readFileSync(t.resolve(m,"rollup.config.mjs.njk"),"utf8"),i.configure(m)).render(c);const h=s.projectDir;let y=t.resolve(h,"rollup.config.mjs");e.writeFileSync(y,u,"utf8")},Je}function Qt(){if(We)return ze;We=1;const e=n,t=o,i=u,r=E,s=P,a=S;return ze=async({atom:n,setProgress:o,context:c,njEnv:p})=>{if(!0!==n.doc.features.cli.enabled)return;await o({message:"Creating yargs."});let l={};if(l=n.doc.input?n.doc.input:{type:"object",properties:{},required:[]},n.doc.features.cli.fargs&&!1!==n.doc.features.cli.fargs?.enabled){const e=n.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},o={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),l.properties&&(l.properties.fargs=t,l.properties.ftag=o)}const d={options:l,imports:[],atom:n},f=c.templateDir,m=i.compile(e.readFileSync(t.resolve(f,"src/default/to.args.js.njk"),"utf8"),p).render(d),u=c.projectDir,h=t.resolve(u,"src/default/to.args.js");e.writeFileSync(h,m,"utf8");const y=new r({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});a(y);const g=y.compile(l),w=s(y,g);e.writeFileSync(t.resolve(u,"src/default/validate_input.js"),w,"utf8")},ze}function en(){if(Xe)return Ge;Xe=1;const e=n,t=o,i=u;return Ge=async({atom:n,setProgress:o,context:r,packageDependencies:s})=>{await o({message:"Creating .gitignore"});const a={atom:n,packageDependencies:s},c=r.templateCommonDir,p=i.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),i.configure(c)).render(a),l=r.projectDir,d=t.resolve(l,".gitignore");e.writeFileSync(d,p,"utf8")},Ge}function tn(){if(Ve)return He;Ve=1;const e=n,t=o,i=u;return He=async({atom:n,setProgress:o,context:r,packageDependencies:s})=>{await o({message:"Creating tsconfig.json."});const a={atom:n,packageDependencies:s},c=r.templateCommonDir,p=i.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),i.configure(c)).render(a),l=r.projectDir,d=t.resolve(l,"tsconfig.json");e.writeFileSync(d,p,"utf8")},He}function nn(){if(Ze)return Ye;Ze=1;const e=u,t=n,i=o,r=l;return Ye=async({atom:n,context:o,setProgress:s,Atom:a})=>{const c="readme.md",p=`Creating ${c}`;if(await s({message:p}),o.project?.readme){const n=o.projectDir,s={content:o.project.readme.doc.content},a=i.resolve(o.project.projectDir,"fnet/how-to.md");if(t.existsSync(a)){const e=t.readFileSync(a,"utf8");s.howto=e}const p=i.resolve(o.project.projectDir,"fnet/input.yaml");if(t.existsSync(p)){const e=await r({file:p,tags:o.tags});s.input=e.content}const l=o.templateCommonDir,d=e.compile(t.readFileSync(i.resolve(l,`${c}.njk`),"utf8"),e.configure(l)).render(s),f=i.resolve(n,`${c}`);t.writeFileSync(f,d,"utf8")}else if(n.id){const r=await a.first({type:"wiki",parent_id:n.id});if(!r||"markdown"!==r.doc?.["content-type"])return;const{content:s,...p}=r.doc,l={content:s},d=o.templateCommonDir,f=e.compile(t.readFileSync(i.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(l),m=o.projectDir,u=i.resolve(m,`${c}`);t.writeFileSync(u,f,"utf8")}},Ye}function on(){if(et)return Qe;et=1;const e=r,t=f;return Qe=async({setProgress:n,context:o})=>{const i=o.projectDir;await n({message:"Prettifiying source files."});let r=e.join("src","**","*");await t({commands:{steps:[`prettier --write ${r} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:i}})}}function rn(){if(nt)return tt;nt=1;const e=p;return tt=async({atom:t,setProgress:n,context:o})=>{if(!t.doc.features.dts_enabled)return;const i=o.projectDir;await n({message:"Creating .d.ts"});if(0!==(await e("tsc",{cwd:i})).code)throw new Error("Couldnt create .d.ts files.")},tt}function sn(){if(it)return ot;it=1;const e=p,t=Ut;return ot=async({setProgress:n,atom:o,context:i})=>{const r=i.projectDir;await n({message:"Installing npm packages."});const s=t("bun")?"bun":"npm";if(0!==(await e(`${s} install ${o.doc.features.npm_install_flags}`,{cwd:r})).code)throw new Error("Couldnt install npm packages.")},ot}function an(){if(st)return rt;st=1;const e=p;return rt=async({setProgress:t,context:n})=>{const o=n.projectDir;await t({message:"Building main project."});if(0!==(await e("npm run build",{cwd:o})).code)throw new Error("Couldnt build project.")}}function cn(){if(Lt)return Kt;Lt=1;const e=function(){if(ct)return at;ct=1;const e=p,t=i;return at=async({setProgress:n,context:o,deploymentProject:i,deploymentProjectTarget:r,buildId:s})=>{await n({message:"Deploying it as gitlab project."});const a=o.projectDir;let c="fnet-to-gitlab";const p=r.params.config||"gitlab",l=await t({name:p,dir:o.projectDir,tags:o.tags});if(!l)throw new Error(`Couldnt load config ${p}`);const{data:d}=l.data;c+=` --projectGroupId=${d.projectGroupId}`,c+=` --projectPath='${a}'`,c+=` --projectName='${r.params.name}'`,c+=` --projectBranch='${r.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==r.dryRun&&(await e(c),i.isDirty=!0)}}(),t=function(){if(lt)return pt;lt=1;const e=n,t=o,r=T,s=p,a=i;return pt=async({setProgress:n,context:o,deploymentProject:i,deploymentProjectTarget:c,registerToPackageManager:p,yamlTarget:l})=>{await n({message:"Deploying it as gcs package."});const d=o.projectDir,f=t.resolve(d,"package.json"),m=e.readFileSync(f),u=JSON.parse(m);u.name=c.params.name,u.version=r.inc(c.version,"patch"),delete u.scripts,delete u.devDependencies,e.writeFileSync(f,JSON.stringify(u,null,"\t"));const{file:h,data:y}=await a({name:c.config||"gcs",dir:o.projectDir,tags:o.tags});let g="fnet-files-to-gcs";g+=` --projectId='${y.env.GCS_PROJECT_ID}'`,g+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,g+=` --keyFilename='${t.resolve(t.dirname(h),y.env.GCS_UPLOADER_KEY_FILE)}'`,g+=` --dir='${d}'`,g+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",g+=` --destDir='${u.name}/${u.version}'`,g+=" --metadata.cacheControl='public, max-age=31536000, immutable'",y.env.DOMAIN&&(g+=` --domain='${y.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(g+=" --dryRun"),await s(g),e.writeFileSync(f,m),!0!==c.dryRun&&(i.isDirty=!0,c.version=u.version,l.set("version",u.version),await p({target:c,packageJSON:u}))}}(),s=function(){if(ft)return dt;ft=1;const e=n,t=o,r=T,s=p,a=i,l=$,f=d,m=c,u=Ut;return dt=async({atom:n,setProgress:o,context:i,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:d})=>{await o({message:"Deploying it as npm package."});const h=i.projectDir,y=t.resolve(h,"package.json"),g=e.readFileSync(y),w=JSON.parse(g);w.name=p.params.name,w.version=r.inc(p.version,"patch");const b=p.params.bin?.name||p.params.bin;!1!==p.params.bin?.enabled&&b&&"string"==typeof b&&(w.bin={[b]:"dist/cli/esm/index.js"}),delete w.scripts,delete w.devDependencies,w.scripts={serve:"npx serve ."},e.writeFileSync(y,JSON.stringify(w,null,"\t"));const v=p.config||"npm";let x=(await a({name:v,dir:i.projectDir,tags:i.tags,optional:!0}))?.data;if(!x){const n=l({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 f({schema:n[0],tags:i.tags}),r=i.project.projectDir,s=t.resolve(r,".fnet");e.existsSync(s)||e.mkdirSync(s),e.writeFileSync(t.resolve(s,`${v}.fnet`),m.stringify(o)),x=o}if(e.writeFileSync(t.resolve(h,".npmrc"),`//registry.npmjs.org/:_authToken=${x.env.NPM_TOKEN}`),!0===p.dryRun)return;const k=u("bun")?"bun":"npm";if(0!==(await s(`${k} publish --access public`,{cwd:h})).code)throw new Error("Couldnt publish to npm");e.writeFileSync(y,g),c.isDirty=!0,p.version=w.version,d.set("version",w.version)}}(),l=function(){if(ut)return mt;ut=1;const e=n,t=o,r=A,s=u,a=O,c=i;return mt=async({atom:n,setProgress:o,context:i,deploymentProject:p,deploymentProjectTarget:l,buildId:d,packageDependencies:f,njEnv:m})=>{await o({message:"Deploying it as node-red flow."});const u=i.projectDir,h=i.templateDir,y="workflow"===n.type?"WF":"LIB";let g;if("simple"===l.deploy.template)g={atom:n,packageDependencies:f,red:{tab:{id:l.deploy.id||a.util.generateId(),label:`${y}/${n.id?n.id:r.hostname()}/${n.name}/${l.deploy.name||l.deploy.template}`},function:{id:a.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(u,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},inject:{id:a.util.generateId(),...l.params?.inject,payload:"json"===l.params?.inject?.payloadType?`'${JSON.stringify(l.params?.inject?.payload)}'`:l.params?.inject?.payload},debug:{id:a.util.generateId()}}};else if("cronjob"===l.deploy.template){let o=l.params?.schedules?cloneDeep(l.params?.schedules):void 0;o?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),g={atom:n,packageDependencies:f,red:{tab:{id:l.deploy.id||a.util.generateId(),label:`${y}/${n.id?n.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:a.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(u,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},cronjob:{id:a.util.generateId(),schedules:o},debug:{id:a.util.generateId()}}}}else{if("http"!==l.deploy.template)return;g={atom:n,packageDependencies:f,red:{tab:{id:l.deploy.id||a.util.generateId(),label:`${y}/${n.id?n.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:a.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(u,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},httpin:{id:a.util.generateId(),method:l.params.method||"get",url:l.params.url},httpout:{id:a.util.generateId()},debug:{id:a.util.generateId()}}}}let w=s.compile(e.readFileSync(t.resolve(h,`deploy/node-red/${l.deploy.template}.yaml.njk`),"utf8"),m).render(g);if(e.writeFileSync(t.resolve(u,"node-red.yaml"),w),w=yaml.load(w),!0===l.dryRun)return;p.isDirty=!0;const b=(await c({name:i.redConfig||"red",dir:i.projectDir,tags:i.tags}))?.data,v=l.deploy.url||b.env.RED_URL,x={};if(!1!==l.deploy.auth&&(x.Authorization="Bearer "+atomAccessToken),l.deploy.id)if(!0===l.actions?.delete){const e=await fetch(`${v}/flow/${l.deploy.id}`,{method:"DELETE",headers:x});if(!e.ok)throw new Error(`Failed to delete flow: ${e.statusText}`);delete l.actions.delete,delete l.deploy.id,l.enabled=!1}else{const e=await fetch(`${v}/flow/${l.deploy.id}`,{method:"PUT",headers:{...x,"Content-Type":"application/json"},body:JSON.stringify(w)});if(!e.ok)throw new Error(`Failed to update flow: ${e.statusText}`)}else{const e=await fetch(`${v}/flow`,{method:"POST",headers:{...x,"Content-Type":"application/json"},body:JSON.stringify(w)});if(!e.ok)throw new Error(`Failed to create flow: ${e.statusText}`);const t=await e.json();l.deploy.id=t.id}},mt}(),f=function(){if(yt)return ht;yt=1;const e=a,t=r,n=i;return ht=async({atom:o,Atom:i,setProgress:r,context:s,packageDependencies:a,deploymentProject:c,deploymentProjectTarget:p})=>{await r({message:"Deploying it as workflow lib."});const l=(await n({name:"atom",dir:s.projectDir,tags:s.tags}))?.data;let d,f,m,u=p.deploy.name.split("/");if(1===u.length)f=l.env.ATOM_LIBRARIES_ID,m=p.deploy.name;else{if(2!==u.length)throw new Error("Wrong name path.");{const e=await i.first({where:{name:u[0],parent_id:l.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");f=e.id,m=u[1]}}if(!0===p.dryRun)return;if(c.isDirty=!0,p.deploy.id){if(d=await i.get({id:p.deploy.id}),!d)return}else{if(d=await i.create({parent_id:f,doc:{name:m,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!d)return;p.deploy.id=d.id}const h=s.projectDir;d.doc.contents=[{content:e.readFileSync(t.resolve(h,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(t.resolve(h,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(t.resolve(h,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],d.doc.name=m,d.doc.dependencies=a,"workflow.lib"===o.type?d.doc.subtype="library":"workflow"===o.type&&(d.doc.subtype="workflow"),d=await i.update(d,{id:d.id})},ht}(),m=function(){if(wt)return gt;wt=1;const e=i,t=N,n=h,o=T;return gt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as ios-app package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},gt}(),y=function(){if(vt)return bt;vt=1;const e=i,t=C,n=h,o=T;return bt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as macos-app package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},bt}(),g=function(){if(kt)return xt;kt=1;const e=i,t=I,n=h,o=T;return xt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as electron package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},xt}(),w=function(){if(_t)return jt;_t=1;const e=i,t=F,n=h,o=T;return jt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as webos package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},jt}(),b=function(){if(Et)return Dt;Et=1;const e=i,t=R,n=h,o=T;return Dt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as nextjs package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},Dt}(),v=function(){if(St)return Pt;St=1;const e=i,t=M,n=h,o=T;return Pt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as docker package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},Pt}(),x=function(){if($t)return Tt;$t=1;const e=n,t=o,r=T,s=p,a=i;return Tt=async({setProgress:n,context:o,deploymentProject:i,deploymentProjectTarget:c,yamlTarget:p})=>{await n({message:"Deploying it as fnet package."});const l=o.projectDir,d=t.resolve(l,"package.json"),f=e.readFileSync(d),m=JSON.parse(f);m.name=c.params.name,m.version=r.inc(c.version,"patch"),delete m.scripts,delete m.devDependencies,e.writeFileSync(d,JSON.stringify(m,null,"\t"));const{file:u,data:h}=await a({name:c.config||"fnet-package",dir:o.projectDir,tags:o.tags});if(!h.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${u}`);if(!h.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${u}`);if(!h.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${u}`);const y=`${h.env.ATOM_API_URL}/v1/auth/token`,g=h.env.ATOM_API_USERNAME,w=h.env.ATOM_API_PASSWORD,b=await fetch(y,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:g,password:w})});if(!b.ok)throw new Error(`Failed to fetch token: ${b.statusText}`);const v=await b.json(),x=v?.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(u),h.env.GCS_UPLOADER_KEY_FILE)}'`,k+=` --dir='${l}'`,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!==c.dry_run&&!0!==c.params.dry_run||(k+=" --dryRun"),await s(k),e.writeFileSync(d,f),!0===c.dryRun)return;i.isDirty=!0,c.version=m.version,p.set("version",m.version);const j=`${h.env.ATOM_API_URL}/v1/service/fnet-package/publish`,_=await fetch(j,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${x}`},body:JSON.stringify({name:m.name,version:m.version,version_domain:h.env.DOMAIN,docs:c.params.docs,configs:c.params.configs})});if(!_.ok)throw new Error(`Failed to publish fnet package: ${_.statusText}`);const D=await _.json();if(D?.error)throw new Error("Failed to publish fnet package.")}}(),k=function(){if(Ot)return At;Ot=1;const e=T,t=i;return At=async({setProgress:n,context:o,deploymentProject:i,deploymentProjectTarget:r,yamlTarget:s})=>{await n({message:"Deploying it as fnet form."});const{file:a,data:c}=await t({name:r.config||"fnet-form",dir:o.projectDir,tags:o.tags});if(!c.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${a}`);if(!c.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${a}`);if(!c.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${a}`);const p=`${c.env.ATOM_API_URL}/v1/auth/token`,l=c.env.ATOM_API_USERNAME,d=c.env.ATOM_API_PASSWORD,f=await fetch(p,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:l,password:d})});if(!f.ok)throw new Error(`Failed to fetch token: ${f.statusText}`);const m=await f.json(),u=m?.access_token;if(!u)throw new Error(`Invalid access_token from ${p}`);i.isDirty=!0;const h=e.inc(r.version,"patch");r.params.version=h,r.version=h,s.set("version",h);const y=`${c.env.ATOM_API_URL}/v1/service/fnet-form/publish`,g=await fetch(y,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${u}`},body:JSON.stringify({name:r.params.name,version:r.params.version,docs:r.params.docs,configs:r.params.configs})});if(!g.ok)throw new Error(`Error publishing fnet form: ${g.statusText}`);const w=await g.json();if(w?.error)throw new Error("Error publishing fnet form.")}}(),j=function(){if(Ct)return Nt;Ct=1;const e=T,t=i,n=a,o=p,r=q;return Nt=async({setProgress:i,context:s,deploymentProject:a,deploymentProjectTarget:c,yamlTarget:p})=>{await i({message:"Deploying it as fnet flow."});const{file:l,data:d}=await t({name:c.config||"fnet-flow",dir:s.project.projectDir,tags:s.tags});if(!d.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${l}`);if(!d.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${l}`);if(!d.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${l}`);const f=`${d.env.ATOM_API_URL}/v1/auth/token`,m=d.env.ATOM_API_USERNAME,u=d.env.ATOM_API_PASSWORD,h=await fetch(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:m,password:u})});if(!h.ok)throw new Error(`Failed to fetch token: ${h.statusText}`);const y=await h.json(),g=y?.access_token;if(!g)throw new Error(`Invalid access_token from ${f}`);a.isDirty=!0;const w=e.inc(c.version,"patch");c.params.version=w,c.version=w,p.set("version",w);const b=`${d.env.ATOM_API_URL}/v1/service/fnet-flow/publish`,v=await fetch(b,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${g}`},body:JSON.stringify({name:c.params.name,version:c.params.version,docs:c.params.docs,configs:c.params.configs})});if(!v.ok)throw new Error(`Error publishing fnet flow: ${v.statusText}`);const x=await v.json();if(x?.error)throw new Error("Error publishing fnet flow.");const k=x?.upload.id;let j="fnet-dir-zipper";j+=` --sourceDir='${s.project.projectDir}'`,j+=" --pattern=**/*",j+=" --stdout_format=json";const _=await o(j);if(0!==_.code)throw new Error(_.stderr);const D=JSON.parse(_.stdout).path;let E=new r;E.append("file",n.createReadStream(D));const P=await fetch(`${d.env.ATOM_API_URL}/v1/service/upload/single/${k}`,{method:"POST",headers:{...E.getHeaders(),Authorization:`Bearer ${g}`},body:E});if(!P.ok)throw new Error(`Error uploading fnet flow: ${P.statusText}`);const S=await P.json();if(S?.error)throw new Error("Error uploading fnet flow.")}}(),_=function(){if(Ft)return It;Ft=1;const e=T,t=i,n=a,o=p,r=q;return It=async({setProgress:i,context:s,deploymentProject:a,deploymentProjectTarget:c,yamlTarget:p})=>{await i({message:"Deploying it as fnet node."});const{file:l,data:d}=await t({name:c.config||"fnet-node",dir:s.project.projectDir,tags:s.tags});if(!d.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${l}`);if(!d.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${l}`);if(!d.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${l}`);const f=`${d.env.ATOM_API_URL}/v1/auth/token`,m=d.env.ATOM_API_USERNAME,u=d.env.ATOM_API_PASSWORD,h=await fetch(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:m,password:u})});if(!h.ok)throw new Error(`Failed to fetch token: ${h.statusText}`);const y=await h.json(),g=y?.access_token;if(!g)throw new Error(`Invalid access_token from ${f}`);a.isDirty=!0;const w=e.inc(c.version,"patch");c.params.version=w,c.version=w,p.set("version",w);const b=`${d.env.ATOM_API_URL}/v1/service/fnet-node/publish`,v=await fetch(b,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${g}`},body:JSON.stringify({name:c.params.name,version:c.params.version,docs:c.params.docs,configs:c.params.configs})});if(!v.ok)throw new Error(`Error publishing fnet node: ${v.statusText}`);const x=await v.json();if(x?.error)throw new Error("Error publishing fnet node.");const k=x?.upload.id;let j="fnet-dir-zipper";j+=` --sourceDir='${s.project.projectDir}'`,j+=" --pattern=**/*",j+=" --stdout_format=json";const _=await o(j);if(0!==_.code)throw new Error(_.stderr);const D=JSON.parse(_.stdout).path;let E=new r;E.append("file",n.createReadStream(D));const P=await fetch(`${d.env.ATOM_API_URL}/v1/service/upload/single/${k}`,{method:"POST",headers:{...E.getHeaders(),Authorization:`Bearer ${g}`},body:E});if(!P.ok)throw new Error(`Error uploading fnet node: ${P.statusText}`);const S=await P.json();if(S?.error)throw new Error("Error uploading fnet node.")}}(),D=function(){if(Mt)return Rt;Mt=1;const e=i,t=B,n=h,o=T;return Rt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as Rust package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},Rt}(),E=function(){if(Bt)return qt;Bt=1;const e=i,t=K,n=h,o=T;return qt=async({atom:i,target:r,onProgress:s,projectDir:a,dependencies:c,context:p,yamlTarget:l})=>{s&&await s({message:"Deploying it as pypi package."});const d=r?.config?await e({name:r.config,dir:a,optional:!0,transferEnv:!1,tags:p.tags}):void 0,f=o.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=n(r.params);m.dependencies=n(c);const u={atom:i,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},qt}();return Kt=async n=>{const{atom:o,packageDependencies:i,context:r,deploymentProjectTarget:a,setProgress:c,deploymentProject:p,yamlTarget:d}=n;if(!0===a.enabled)if("lib"===a.type)await f({...n});else if("red"===a.type)await l({...n});else if("npm"===a.type)await s({...n});else if("gcs"===a.type)await t({...n});else if("gitlab"===a.type)await e({...n});else if("fnet-package"===a.type)await x({...n});else if("fnet-form"===a.type)await k({...n});else if("fnet-node"===a.type)await _({...n});else if("fnet-flow"===a.type)await j({...n});else{let e;if("nextjs"===a.type?e=b:"webos"===a.type?e=w:"electron"===a.type?e=g:"docker"===a.type?e=v:"ios"===a.type?e=m:"macos"===a.type?e=y:"rust"===a.type?e=D:"pypi"===a.type&&(e=E),!e)return;await e({atom:o,target:a,onProgress:c,projectDir:r.projectDir,dependencies:i,context:r,yamlTarget:d}),p.isDirty=!0}},Kt}var pn,ln,dn,fn,mn,un,hn,yn,gn,wn,bn,vn,xn,kn,jn,_n,Dn,En,Pn,Sn,Tn,$n,An,On,Nn,Cn,In,Fn,Rn,Mn,qn,Bn,Kn,Ln,Jn,Un,zn,Wn,Gn,Xn,Hn,Vn,Yn,Zn={name:"ATOM",uri:"http://atom.org/bpmn",prefix:"atom",types:[{name:"AtomExtension",extends:["bpmn:BaseElement"],properties:[{name:"atom",type:"atom:Atom",isMany:!1}]},{name:"Atom",properties:[{name:"type",type:"String",isAttr:!0}]}]};function Qn(){if(ln)return pn;ln=1;const e=J,t=U,n=h,o=Zn;function i(e,t){return e.filter(((e,n,o)=>o.map((e=>e[t])).indexOf(e[t])===n))}function r(e){const{nodes:t,nodeIndex:n,root:o}=e,i=e.targetNodes||o.childs;i.forEach((t=>{const n="workflow"===t.type||"subworkflow"===t.type,o=!n&&t.childs.filter((e=>!e.virtual)).length>0;if(o&&(t.bpmn.type="bpmn:SubProcess"),n||o){const n=t.childs.filter((e=>!0!==e.module))[0];t.childs.filter((e=>!0===e.module)).forEach((n=>{const o=s({...e,parent:t,bpmnType:"bpmn:IntermediateCatchEvent",type:"inter",definitions:[{type:"bpmn:SignalEventDefinition"}]});o.bpmn.edges=[{from:o.indexKey,to:n.indexKey,type:"bpmn:SequenceFlow"}]}));const o=t.childs.find((e=>"try"===e.name&&"tryexcept"===t.type)),r=t.childs.filter((e=>"except"===e.name&&"tryexcept"===t.type));o&&r.length&&r.forEach((n=>{const i=s({location:t.childs.indexOf(n),...e,parent:t,bpmnType:"bpmn:BoundaryEvent",type:"boundary",attrs:{attachedToRef:o},definitions:[{type:"bpmn:ErrorEventDefinition"}]});i.bpmn.edges=[{from:i.indexKey,to:n.indexKey,type:"bpmn:SequenceFlow"}]}));const a=t.childs.find((e=>"raise"===e.type));if(a){const n=s({...e,parent:t,bpmnType:"bpmn:EndEvent",type:"end",name:"ERROR",definitions:[{type:"bpmn:ErrorEventDefinition"}]});a.bpmn.edges=[{from:a.indexKey,to:n.indexKey,type:"bpmn:SequenceFlow"}]}if(n)if(t.bpmn.starts.length>1){const n=s({...e,parent:t,bpmnType:"bpmn:StartEvent",type:"start"}),o=s({...e,parent:t,bpmnType:"bpmn:ExclusiveGateway",type:"switch"});n.bpmn.edges=[{from:n.indexKey,to:o.indexKey,type:"bpmn:SequenceFlow"}],o.bpmn.edges=t.bpmn.starts.map((e=>({...e,from:o.indexKey})));const i=o.bpmn.edges.find((e=>!0===e.next));if(i){const n=s({...e,parent:t,bpmnType:"bpmn:EndEvent",type:"end",name:i.to});i.to=n.indexKey}}else{const o=s({...e,parent:t,bpmnType:"bpmn:StartEvent",type:"start"});o.bpmn.edges.push({from:o.indexKey,to:n.indexKey,type:"bpmn:SequenceFlow"})}t.childs.filter((e=>!0!==e.virtual&&e.bpmn.outside.length&&"bpmn:EndEvent"!==e.bpmn.type)).forEach((n=>{n.bpmn.outside.forEach((o=>{const r=i.indexOf(t),a=s({...e,parent:t,bpmnType:"bpmn:EndEvent",type:"end",name:o.to,location:r+1});n.bpmn.edges.push({from:n.indexKey,to:a.indexKey,type:"bpmn:SequenceFlow"})}))}));t.childs.filter((e=>!0!==e.virtual&&e.bpmn.edges.length>1)).forEach((n=>{const o=i.indexOf(n),r=s({...e,parent:t,bpmnType:"bpmn:ExclusiveGateway",type:"switch",location:o+1});r.bpmn.edges=n.bpmn.edges.map((e=>({...e,from:r.indexKey}))),n.bpmn.edges=[{from:n.indexKey,to:r.indexKey,type:"bpmn:SequenceFlow"}],n.bpmn.outside=[]}))}r({...e,targetNodes:t.childs})}))}function s(e){const{parent:t,nodes:n,nodeIndex:o,bpmnType:i,type:r,name:s,outside:a,location:c,definitions:p,attrs:l}=e,d=t.childs.filter((e=>e.type===`v${r}`)).length,f={indexKey:`${t.indexKey}/_${r}${d}`,pathKey:`${t.pathKey}._${r}${d}`,type:`v${r}`,name:s,bpmn:{edges:[],outside:[],type:i,width:36,height:36,fill:"#c8e6c9",stroke:"#205022",definitions:p,attrs:l},virtual:!0,childs:[]};return t.childs.splice(c||0,0,f),n.push(f),o[f.indexKey]=f,f}function a(e){const{targetNode:n,targetFlowElementsContainer:o,targetPlaneElement:i,moddle:r,elementIndex:s,nodeIndex:c,diagrams:p,nodes:l}=e;!function(e){const{targetNode:t,targetFlowElementsContainer:n,targetPlaneElement:o,moddle:i,elementIndex:r,nodeIndex:s,nodes:a}=e,c=n.get("flowElements");n.$nodes=n.$nodes||[],t.childs.forEach((e=>{const t=i.create(e.bpmn.type,{id:`node.${e.pathKey}`,name:e.definition?.title||e.name});if(r[t.id]=t,t.$isNode=!0,t.$node=e,e.$flow=t,n.$nodes.push(t),c.push(t),e.bpmn.attrs){Object.keys(e.bpmn.attrs).forEach((n=>{"attachedToRef"===n&&t.set(n,e.bpmn.attrs[n].$flow)}))}if(e.bpmn.definitions){const n=e.bpmn.definitions.map((e=>{const t=i.create(e.type);return Object.keys(e.attrs||{}).forEach((n=>{t.set(n,e.attrs[n])})),t}));t.eventDefinitions=n}}))}(e),function(e){const{targetNode:t,targetFlowElementsContainer:n,targetPlaneElement:o,moddle:i,elementIndex:r,nodeIndex:s}=e,a=n.get("flowElements");n.$edges=n.$edges||[],t.childs.forEach((e=>{e.bpmn.edges.forEach((t=>{const o=e,c=s[t.to],p=`edge.${o.pathKey}_${c.pathKey}`;if(r[p])return;const l=r[`node.${o.pathKey}`],d=r[`node.${c.pathKey}`],f=i.create(t.type,{id:p,sourceRef:l,targetRef:d});r[f.id]=f,f.$is_edge=!0,l.get("outgoing").push(f),d.get("incoming").push(f),n.$edges.push({from:l,to:d,flow:f}),a.push(f)}))}))}(e),function(e){const{targetNode:n,targetFlowElementsContainer:o,targetPlaneElement:i,moddle:r,elementIndex:s,nodeIndex:a}=e,c=120,p=80,l=160,d=160,f=new t.graphlib.Graph;f.setDefaultEdgeLabel((()=>({}))),f.setGraph({rankdir:"TB",nodesep:c,ranksep:p,xranker:"longest-path"}),o.$nodes.forEach((e=>{f.setNode(e.id,{width:e.$node?.bpmn.width||c,height:e.$node?.bpmn.height||p,label:e.id})})),o.$edges.forEach((e=>{f.setEdge(e.from.id,e.to.id)})),t.layout(f),o.$nodes.forEach((e=>{const t=f.node(e.id);let n=t.width,o=t.height;const s=r.create("bpmndi:BPMNShape",{id:`shape.${e.id}`,bpmnElement:e,bounds:r.create("dc:Bounds",{x:l+t.x-t.width/2,y:d+t.y-t.height/2,width:n,height:o}),label:r.create("bpmndi:BPMNLabel")});e.$node.bpmn.fill&&s.set("bioc:fill",e.$node.bpmn.fill),e.$node.bpmn.stroke&&s.set("bioc:stroke",e.$node.bpmn.stroke);i.get("planeElement").push(s)})),o.$edges.forEach((e=>{const t=f.edge(e.from.id,e.to.id),n=r.create("bpmndi:BPMNEdge",{id:`edge.${e.from.id}_${e.to.id}`,bpmnElement:e.flow,label:r.create("bpmndi:BPMNLabel")});t.points.forEach((e=>{const t=r.create("dc:Point",{x:l+e.x,y:d+e.y});n.get("waypoint").push(t)}));i.get("planeElement").push(n)}))}(e),function(e){const{targetNode:t,targetFlowElementsContainer:n,targetPlaneElement:o,moddle:i,elementIndex:r,nodeIndex:s,diagrams:c}=e,p=t.childs.filter((e=>"bpmn:SubProcess"===e.bpmn.type));p.forEach((t=>{const n=r[`node.${t.pathKey}`],o=i.create("bpmndi:BPMNDiagram",{id:`diagram_${t.pathKey}`});r[o.id]=o,c.push(o);const s=i.create("bpmndi:BPMNPlane",{id:`plane_${t.pathKey}`});r[s.id]=s,o.plane=s,s.bpmnElement=n,a({...e,targetNode:t,targetFlowElementsContainer:n,targetPlaneElement:s})}))}(e)}async function c(t){const n=t.root,s=n.context.index,c=Object.keys(s).map((e=>s[e]));!function(e){const{nodes:t}=e;t.forEach((e=>{const t=[],n=[],o=i=>{i.context.next&&(t.push({from:i,to:i.context.next,type:"bpmn:SequenceFlow"}),i===e&&n.push({to:i.context.next,type:"bpmn:SequenceFlow",next:!0})),i.childs.forEach((t=>{i===e&&"switch"===e.type&&n.push({to:t,type:"bpmn:SequenceFlow"}),o(t)}))};o(e);const r=t.filter((t=>t.to.parent.indexKey===e.parent.indexKey)).map((t=>({...t,from:e.indexKey,to:t.to.indexKey}))),s=t.filter((t=>t.to.parent.indexKey!==e.parent.indexKey&&!t.to.indexKey.startsWith(e.indexKey+"/"))).map((t=>({...t,from:e.indexKey,to:t.to.indexKey}))),a=n.map((e=>({...e,to:e.to.indexKey})));e.bpmn=e.bpmn||{},e.bpmn.edges=i(r,"to"),e.bpmn.outside=i(s,"to"),e.bpmn.starts=i(a,"to"),e.bpmn.type=function(e){return"call"===e.type?"bpmn:ServiceTask":"form"===e.type?"bpmn:UserTask":"return"===e.type?"bpmn:EndEvent":"bpmn:Task"}(e),e.bpmn.width=120,e.bpmn.height=80,"return"===e.type&&(e.bpmn.width=36,e.bpmn.height=36)}))}({nodes:c}),r({nodes:c,nodeIndex:s,root:n});const p=new e({atom:o}),l={},d=p.create("bpmn:Definitions",{id:"definitions_0"});l[d.id]=d;for await(const e of n.childs){const t=d.get("rootElements"),o=d.get("diagrams"),i=p.create("bpmn:Process",{id:`process_${e.pathKey}`,documentation:[p.create("bpmn:Documentation",{text:`Atom Workflow - ${n.context.atom.name}`})]});l[i.id]=i,i.isExecutable=!0,t.push(i);const r=p.create("bpmndi:BPMNDiagram",{id:`diagram_${e.pathKey}`});l[r.id]=r,o.push(r);const f=p.create("bpmndi:BPMNPlane",{id:`plane_${e.pathKey}`});l[f.id]=f,r.plane=f,f.bpmnElement=i;a({targetNode:e,targetFlowElementsContainer:i,targetPlaneElement:f,moddle:p,elementIndex:l,nodeIndex:s,nodes:c,diagrams:o})}return{diagramXML:(await p.toXML(d,{format:!0})).xml}}return pn=async(e={})=>await c(n(e))}function eo(){if(fn)return dn;fn=1;const e=X,t=z;return dn=async({node:n,initNode:o})=>{if(Reflect.has(n.definition,"modules")&&!Array.isArray(n.definition.modules)){const e=n.definition.modules;n.definition.modules=[],Object.keys(e).forEach((t=>{const o={...e[t]};"modules"===n.type&&(o.export=o.export||t),n.definition.modules.push({[t]:o})}))}const i=[],r=await e({data:n.definition,callback:(e,n,o)=>{const r=t({expression:e});if("m"===r?.processor){const e=o.slice(0,-1);e.push(r.statement);const t=e.join("_");return i.push({[t]:n}),[r.statement,`m::${t}`]}return[e,n]}});i.length>0&&(n.definition=r,n.definition.modules=n.definition.modules||[],n.definition.modules=n.definition.modules.concat(i)),n.hasModules=n.definition.modules?.length>0;for(let e=0;e<n.definition.modules?.length;e++){const t=n.definition.modules[e],i=Object.keys(t)[0],r={name:i,childs:[],parent:n,definition:t[i],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:n.childs.length,context:{}};n.childs.push(r),await o({node:r})}},dn}function to(){return un?mn:(un=1,mn=async({node:e,transformExpression:t})=>{const n=e.context.transform;Reflect.has(n,"export")&&(n.export=await t(n.export)),Reflect.has(n,"return")&&(e.hasReturn=!0,n.return=await t(n.return)),n.hasOwnProperty("nextArgs")&&(e.hasNextArgs=!0,n.nextArgs=await t(n.nextArgs))})}function no(){if(yn)return hn;yn=1;const e=h,t=eo(),n=to();async function o({node:t,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition),t.context.transform;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,transformExpression:r}),await o({node:t}),i({node:t})}return hn={hits:async function({node:e}){return!!e.definition.hasOwnProperty("switch")},init:async function({node:e,initNode:n}){e.type="switch";const i=e.definition.switch||[];if(!i.every((e=>e.hasOwnProperty("condition")||e.hasOwnProperty("default"))))throw new Error("Switch must have condition or default");if(0===i.filter((e=>e.hasOwnProperty("condition"))).length)throw new Error("Switch must have at least one condition");const r=i.filter((e=>e.hasOwnProperty("default")));if(r.length>1)throw new Error("Switch must have only one default");if(1===r.length&&!i[i.length-1].hasOwnProperty("default"))throw new Error("Switch default must be the last child");e.hasDefaultCondition=1===r.length,await t({node:e,initNode:n}),e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0;for(let t=0;t<e.definition.switch.length;t++){let o=e.definition.switch[t],i=`${t}`;o.hasOwnProperty("default")&&(i="default",o=o.default);const r={name:o.condition||i,childs:[],parent:e,definition:o,index:e.childs.length,context:{}};e.childs.push(r),await n({node:r})}e.resolve=o},resolve:o}}function oo(){if(On)return An;On=1;const e=h,t=eo(),n=to();async function o({node:t,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition);const s=t.context.transform;if("function"===t.target?.atom?.doc?.type&&(s.call=await r(t.target.atom.name)),s.args&&(s.args=await r(s.args)),s.result){"string"==typeof s.result&&(s.result=[{[s.result]:"e::result"}]);for(let e=0;e<s.result?.length;e++){let t=s.result[e],n=Object.keys(t)[0],o=t[n],i={key:await r(n),value:await r(o)};s.result[e]=i}}const a=t.workflow.parent;s.import?t.context.lib=a.context.libs.find((e=>e.name===s.import)):t.context.lib=a.context.libs.find((e=>e.name===s.call)),await n({node:t,transformExpression:r}),await o({node:t}),i({node:t})}return An={hits:async function({node:e}){return e.definition.hasOwnProperty("call")},init:async function({node:e,initNode:n}){e.type="call",await t({node:e,initNode:n}),e.resolve=o},resolve:o}}function io(){return Un?Jn:(Un=1,Jn=({node:e})=>{const t=e.definition;if(!e.hasReturn)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 ro(){if(Wn)return zn;Wn=1;const e=oo();class t{#e;#t;#n;#o;constructor({key:e,npm:t,master:n,extras:o}){this.#e=e,this.#t=t,this.#n=n,this.#o=o}hits({node:e}){return e.definition.hasOwnProperty(this.#e)}async init(t){const{node:n}=t,o=this.#e,i=n.definition,r=typeof i[o];if(i.call=`npm:${this.#t}`,i.args="object"!==r?{...i.args,[`${this.#n}`]:i[o]}:i[o],delete i[o],this.#o)for(const e in this.#o)i[e]=this.#o[e];console.log(`[npm-block] ${this.#e} --\x3e ${this.#t}`),await e.init(t)}}return zn=e=>new t(e)}function so(){if(Xn)return Gn;Xn=1;const e=n,t=o,r=c,s=p,a=u,d=h,f=y,m=function(){if(ee)return Q;ee=1;const e=g,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}}(),{randomUUID:x}=b,j=function(){if(ne)return te;ne=1;const{Api:e}=v;return te=class{init({config:t,accessToken:n}){return new Promise(((o,i)=>{if(e.set_api_url(t.data.url),n)return e.set_req_token(n),void o(n);fetch(`${t.data.issuer}/protocol/openid-connect/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(t.data.grant.params)}).then((async e=>{if(!e.ok)throw new Error(await e.text());return e.json()})).then((t=>{e.set_req_token(t.access_token),o(t.access_token)})).catch((t=>{e.set_req_token(),i(t)}))}))}}}(),_=Wt(),D=Gt(),E=Xt(),P=Vt(),S=Yt(),T=Zt(),$=Qt(),A=en(),O=tn(),N=nn(),C=on(),I=rn(),F=sn(),R=an(),M=Ht(),q=cn(),{Atom:B}=v,K=L,J=Qn(),U=i,X=k,Y=z,Z=l,oe=W,ie=G,re=function(){if(wn)return gn;wn=1;const e=z,t=no();return gn={hits:async function({node:t}){return 1===Object.keys(t.definition).map((t=>e({expression:t}))).filter((e=>"if"===e?.processor)).length},init:async function(n){const{node:o}=n,i=Object.keys(o.definition).map((t=>e({expression:t}))),r=[],s=i.find((e=>"if"===e?.processor)),a=o.definition[s.expression];r.push({name:`${o.name}_if`,definition:a,processor:s}),delete o.definition[s.expression];const c=i.filter((e=>"elseif"===e?.processor));let p=0;for(const e of c){const t=o.definition[e.expression];r.push({name:`${o.name}_elseif_${p++}`,definition:t,processor:e}),delete o.definition[e.expression]}o.definition.switch=[];for(const e of r)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)}}}(),se=function(){if(vn)return bn;vn=1;const e=h,t=eo(),n=to();async function o({node:t,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){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,transformExpression:r}),await o({node:t}),i({node:t})}return bn={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",await t({node:e,initNode:n}),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=o},resolve:o}}(),ae=function(){if(kn)return xn;kn=1;const e=h,t=eo(),n=to();async function o({node:t,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition);const s=t.context.transform;for(let e=0;e<s.assign?.length;e++){let t=s.assign[e],n=Object.keys(t)[0],o=t[n],i={key:await r(n),value:await r(o)};s.assign[e]=i}await n({node:t,transformExpression:r}),await o({node:t}),i({node:t})}return xn={hits:async function({node:e}){return e.definition.hasOwnProperty("assign")},init:async function({node:e,initNode:n}){e.type="assign",await t({node:e,initNode:n}),e.resolve=o},resolve:o}}(),ce=function(){if(_n)return jn;_n=1;const e=h,t=H,n=V,o=eo(),i=to();async function r({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 i({node:t,transformExpression:r}),await n({node:t}),o({node:t})}return jn={hits:async function({node:e}){return e.definition.hasOwnProperty("for")},init:async function({node:e,initNode:i}){if(e.type="for",await o({node:e,initNode:i}),e.blockAutoJumpToParent=!0,e.blockAutoJumpToSibling=!1,!e.definition.for.hasOwnProperty("steps")){const o=["value","in"],[i,r]=[t(e.definition.for,o),n(e.definition.for,o)];e.definition.for=i,e.definition.for.steps=[{[`${e.name}_step`]:r}]}Array.isArray(e.definition.for.steps)||(e.definition.for.steps=[{[`${e.name}_step`]:e.definition.for.steps}]);for(let t=0;t<e.definition.for.steps.length;t++){const n=e.definition.for.steps[t],o=Object.keys(n)[0],r={name:o,childs:[],parent:e,definition:n[o],index:e.childs.length,context:{}};e.childs.push(r),await i({node:r})}e.resolve=r},resolve:r}}(),pe=no(),le=En?Dn:(En=1,Dn={hits:async function({node:e}){return!1},init:async function({node:e,initNode:t}){},resolve:async function({node:e,resolveTypeCommon:t,resolveNextBlock:n,transformExpression:o,transformValue:i}){}}),de=function(){if(Sn)return Pn;Sn=1;const e=h;async function t({node:t,resolveTypeCommon:n,transformExpression:o}){t.context.transform=t.context.transform||e(t.definition);const i=t.context.transform;i.raise=await o(i.raise),await n({node:t})}return Pn={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}}(),fe=function(){if($n)return Tn;$n=1;const e=h;async function t({node:t,resolveTypeCommon:n,transformExpression:o}){t.context.transform=t.context.transform||e(t.definition);const i=t.context.transform;t.hasReturn=!0,i.return=await o(i.return),await n({node:t})}return Tn={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}}(),me=oo(),ue=function(){if(Cn)return Nn;Cn=1;const e=h,t=to();async function n({node:n,transformExpression:o}){n.context.next=n.childs[0],n.context.transform=n.context.transform||e(n.definition),await t({node:n,transformExpression:o})}return Nn={hits:async function({node:e}){return e.definition.hasOwnProperty("steps")},init:async function({node:e,initNode:t}){e.type||(e.type="steps");const o=e.definition.steps||[];for await(const n of o){const o=Object.keys(n)[0],i={name:o,childs:[],parent:e,definition:n[o],index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=n},resolve:n}}(),he=function(){if(Fn)return In;Fn=1;const e=h,t=eo(),n=to();async function o({node:t,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition);const s=t.context.transform;s.props&&(s.props=await r(s.props));const a=t.workflow.parent;t.context.lib=a.context.libs.find((e=>e.name===s.form)),await n({node:t,transformExpression:r}),await o({node:t}),i({node:t})}return In={hits:async function({node:e}){return e.definition.hasOwnProperty("form")},init:async function({node:e,initNode:n}){e.type="form",await t({node:e,initNode:n}),e.resolve=o},resolve:o}}(),ye=function(){if(Mn)return Rn;Mn=1;const e=h;async function t({node:t,resolveTypeCommon:n,resolveNextBlock:o,transformExpression:i,transformValue:r}){t.context.transform=t.context.transform||e(t.definition),await n({node:t})}return Rn={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}}(),ge=function(){if(Bn)return qn;Bn=1;const e=h,t=to();async function n({node:n,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){n.context.transform=n.context.transform||e(n.definition);const s=n.context.transform;s.next=await r(s.next),await t({node:n,transformExpression:r}),await o({node:n}),i({node:n})}return qn={hits:async function({node:e}){return e.definition.hasOwnProperty("next")},init:async function({node:e,initNode:t}){e.type="jump",e.resolve=n},resolve:n}}(),we=function(){if(Ln)return Kn;Ln=1;const e=h,t=eo(),n=to();async function o({node:t,resolveTypeCommon:o,resolveNextBlock:i,transformExpression:r}){t.context.transform=t.context.transform||e(t.definition),t.context.transform,await n({node:t,transformExpression:r}),await o({node:t}),i({node:t})}return Kn={hits:async function({node:e}){return e.definition.hasOwnProperty("modules")},init:async function({node:e,initNode:n}){e.type="modules",await t({node:e,initNode:n}),e.resolve=o},resolve:o}}(),be=io(),ve=ro();return Gn=class{#i;#r;#s;#a;#c;#p;#l;#d;#f;#m;#u;#h;#y;#g;#w;#b;#v;#x;#k;#j;#_;#D=[];constructor(e){this.#i=new j,this.#r=e,this.#p=[],this.#l=[],this.#d={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#D.push(ve({key:"config",npm:"@fnet/config",master:"name"})),this.#D.push(ve({key:"yaml",npm:"@fnet/yaml",master:"file"})),this.#D.push(ve({key:"prompt",npm:"@fnet/prompt",master:"message"})),this.#D.push(ve({key:"html-link",npm:"@flownet/lib-load-browser-link-url",master:"src"})),this.#D.push(ve({key:"html-script",npm:"@flownet/lib-load-browser-script-url",master:"src"})),this.#D.push(ve({key:"http-server",npm:"@fnet/node-express",master:"server_port"})),this.#D.push(ve({key:"shell",npm:"@fnet/shell-flow",master:"commands"})),this.#D.push(ve({key:"list-files",npm:"@fnet/list-files",master:"pattern"})),this.#D.push(ve({key:"up-list-files",npm:"@fnet/up-list-files",master:"pattern"})),this.#D.push(ve({key:"auto-conda-env",npm:"@fnet/auto-conda-env",master:"envDir"})),this.#D.push(ve({key:"ollama-chat",npm:"@fnet/ollama-chat",master:"model"})),this.#D.push(ve({key:"ai",npm:"@fnet/ai",master:"prompt",extras:{subtype:"flow"}})),this.#D.push(ve({key:"invoke",npm:"@fnet/invoke",master:"method",extras:{}})),this.#D.push(ve({key:"fetch",npm:"@fnet/fetch",master:"url",extras:{}})),this.#D.push(ve({key:"filemap",npm:"@fnet/filemap",master:"target",extras:{}})),this.#j={packageDependencies:this.#p,packageDevDependencies:this.#l,setProgress:this.setProgress.bind(this),context:this.#r,Atom:B,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#_={initNode:this.initNode.bind(this),cloneDeep:d,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:be,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 m(),this.#u=this.#r.buildId||x(),this.#j.buildId=this.#u,this.#w=this.#r.mode,this.#b=["all","deploy","build","file"].includes(this.#w),this.#v=["all","deploy","build"].includes(this.#w),this.#x=["all","deploy"].includes(this.#w),this.#k=["all","deploy","build","file","bpmn"].includes(this.#w),this.#y=this.#r.protocol,this.#h="BUILD:"+this.#u,this.#g=(await U({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(),this.transformWorkflow({workflow:this.#a});const e=await this.initNodeTree({workflow:this.#a});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.initEntryFiles({root:e,features:this.#s.doc.features}),await this.initFeaturesFromNodes({childs:e.childs,features:this.#s.doc.features}),await _(this.#j),await D(this.#j),await this.initAtomLibsAndDeps({libs:e.context.libs,packageDependencies:this.#p}),await this.resolveNodeTree({root:e}),this.#m=e}catch(e){throw await this._cache_set(this.#h,{status:"FAILED",message:e?.message||e}),e}}async initAuth(){this.#r.id&&(this.#f=await this.#i.init({config:this.#g}),this.#j.atomAccessToken=this.#f)}async initWorkflow(){const e=this.#r.id;this.#s=this.#r.project?.workflowAtom||await B.get({id:e}),this.#a="string"==typeof this.#s.doc.content?(await Z({content:this.#s.doc.content,tags:this.#r.tags})).parsed:this.#s.doc.content;let t=this.#s.doc.bundleName;t=t||(this.#s.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#s.doc.bundleName=t,this.#s.type=this.#s.type||"workflow",this.#j.atom=this.#s,this.#s.doc.features=this.#s.doc.features||{}}#E(n){console.log("filePath",n),e.statSync(n).isDirectory()?(e.readdirSync(n).forEach((e=>{const o=t.join(n,e);this.#E(o)})),e.rmSync(n)):e.unlinkSync(n)}#P(n,o){const i=e.existsSync(n),r=i&&e.statSync(n);i&&r.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 i=ie({dir:n,ignore:[".cache","node_modules",".conda"],absolute:!0});for(const t of i)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."}),e.existsSync(n)||e.mkdirSync(n,{recursive:!0});const r=t.join(n,"src");e.existsSync(r)||e.mkdirSync(r,{recursive:!0});const s=t.join(r,"core");this.#P(o,s);const a=t.join(r,"default","blocks");e.existsSync(a)||e.mkdirSync(a,{recursive:!0})}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#r.templateDir;this.#c=a.configure(e,{watch:!1,dev:!0}),this.#j.njEnv=this.#c}transformWorkflow({workflow:e}){for(const t of Object.values(e))t.steps=t.steps||[],t.steps=t.steps.filter((e=>Object.keys(e).length>0)),t.steps=t.steps.map((e=>this.transformStep({step:e})))}transformStep({step:e}){if(Array.isArray(e))throw new Error("Step must be an object.");const[t,n]=Object.entries(e)[0];if(n.hasOwnProperty("onerror")){const{onerror:o,...i}=n;e[t]={try:i,except:o}}if(e[t].hasOwnProperty("steps")){const n=e[t].steps;if(!Array.isArray(n))throw new Error("Steps must be an array.");e[t].steps=n.map((e=>this.transformStep({step:e})))}return e}async initNodeTree({workflow:e}){const t=Object.keys(e),n={definition:e,name:void 0,type:"root",parent:void 0,childs:[],blockAutoJumpToParent:!0,blockAutoJumpToSibling:!0,index:0,depth:0,context:{libs:[],atom:this.#s}};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.#_,node:e};if(e.workflow=e.parent.workflow||e,e.depth=e.parent.depth+1,await se.hits(t))await se.init(t);else if(await ce.hits(t))await ce.init(t);else if(await pe.hits(t))await pe.init(t);else if(await re.hits(t))await re.init(t);else if(await le.hits(t))await le.init(t);else if(await ae.hits(t))await ae.init(t);else if(await de.hits(t))await de.init(t);else if(await me.hits(t))await me.init(t);else if(this.#D.find((e=>e.hits(t))))await this.#D.find((e=>e.hits(t))).init(t);else if(await he.hits(t))await he.init(t);else if(await ye.hits(t))await ye.init(t);else if(await ue.hits(t))await ue.init(t);else if(await ge.hits(t))await ge.init(t);else if(await we.hits(t))await we.init(t);else{if(!await fe.hits(t))throw new Error("Undefined step type.");await fe.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 i=[];let r=e;for(;r?.parent;)i.push(r.index),r=r.parent;i.reverse(),e.codeKey=`B_${i.join("_")}_${e.type}`,e.pathKey=`${i.join(".")}`,e.typeId=x();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.import||e.definition.call,o=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:n,type:"atom",definition:e.definition},i=t.find((e=>e.name===o.name&&e.type===o.type));i||t.push(o),e.target=i||o}return e.context.callLibs=t,e.context.libs=[...e.context.libs,...t],t}async findNodeCallTarget({refNode:e,curNode:t}){if(!t)return;const n=e.definition.call,o=t.childs.find((e=>e.name===n&&"subworkflow"===e.type));return o||await this.findNodeCallTarget({refNode:e,curNode:t.parent})}async initNodeForms({root:e}){const t=e.context.index,n=[];for await(const e of Object.keys(t)){const o=t[e];"form"===o.type&&n.push(o)}return e.context.forms=n,n}async initNodeFormLibs({root:e}){const t=[],n=e.context.forms;for await(const e of n){const n=e.definition.import||e.definition.form,o=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:n,type:"atom"},i=t.find((e=>e.name===o.name&&e.type===o.type));i||t.push(o),e.target=i||o}return e.context.formLibs=t,e.context.libs=[...e.context.libs,...t],t}async initFeaturesFromNodes({childs:e,features:t}){for await(const n of e)"form"!==n.type||Reflect.has(t,"form")||(t.form=!0),await this.initFeaturesFromNodes({childs:n.childs,features:t})}async initEntryFiles({root:e,features:t}){for await(const n of e.childs){let e;if("main"===n.name)e="index.js";else if("cli"===n.name)e="cli.js";else if("app"===n.name)e="app.js";else{if("api"!==n.name)continue;e="api.js"}t[`${n.name}_default_entry_file`]=e,n.entryFile=e}}async findNodeFormTarget({refNode:e,curNode:t}){if(!t)return;const n=e.definition.form,o=t.childs.find((e=>e.name===n&&"subworkflow"===e.type));return o||await this.findNodeFormTarget({refNode:e,curNode:t.parent})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const n=e.filter((e=>"atom"===e.type));for(let e=0;e<n.length;e++){const o=n[e],i=await this.findAtomLibrary({url:o.name,libRef:o});o.atom=i;const r=i.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));r?.forEach((e=>{const n=t.find((t=>t.package===e.package));n?"string"==typeof e.path?(n.path||[]).some((t=>t===e.path))||(n.path=n.path||[],n.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(n.path||[]).some((t=>t===e))||(n.path=n.path||[],n.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e,libRef:n}){const o=K({url:e});if(!o)throw new Error(`Invalid package name: ${e}`);if(o.protocol||(o.protocol=this.#y),"ac:"===o.protocol){const t=o.pathname.split("/");if(1===t.length)return await B.first({where:{name:e,parent_id:this.#g.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await B.first({where:{name:t[0],parent_id:this.#g.env.ATOM_LIBRARIES_ID,type:"folder"}});return await B.first({where:{name:t[1],parent_id:e.id,type:"workflow.lib"}})}}else{if("local:"===o.protocol){const e=t.resolve(this.#r.projectSrcDir,`${o.pathname}.js`),n=[],i=(await X({file:e,recursive:!0})).all;for await(const e of i){if("npm"!==e.type)continue;if(n.find((t=>t.package===e.package)))continue;const t=await M({name:e.package,projectDir:this.#r.projectDir,setProgress:this.#j.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 M({name:o.pathname,projectDir:this.#r.projectDir,setProgress:this.#j.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}}if("use:"===o.protocol){return{name:o.pathname,doc:{type:"function",dependencies:[]},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=e.context.transform||d(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],type:typeof 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.#_,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.#s.typesDir="./types";const o=n.context.libs.filter((e=>"atom"===e.type));for(let n=0;n<o.length;n++){const i=o[n].atom,r=this.#r.projectDir;if("local:"===i.protocol){const n=t.resolve(this.#r.projectSrcDir,`${i.fileName||i.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")}i.relativePath=o.split(t.sep).join("/"),this.#s.typesDir=`./types/${t.basename(r)}/src`}else if("npm:"===i.protocol)i.relativePath=i.name;else if("use:"===i.protocol);else{const n=`${r}/src/libs/${i.id}.js`,o=i.doc.contents?.find((e=>"esm"===e.format))||i.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,i=a.compile(e.readFileSync(t.resolve(o,"src/default/engine.js.njk"),"utf8"),this.#c);for(let o=0;o<n.childs.length;o++){const r=n.childs[o];if(!r.entryFile)continue;const s=i.render({flow:r,ui:{package:"@fnet/react-app"}}),a=this.#r.projectDir,c=t.resolve(a,`src/default/${r.entryFile}`);e.writeFileSync(c,s,"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,i=a.compile(e.readFileSync(t.resolve(o,"src/default/workflow.js.njk"),"utf8"),this.#c).render(n),r=this.#r.projectDir,s=t.resolve(r,`src/default/${n.codeKey}.js`);e.writeFileSync(s,i,"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":case"modules":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.#d[n.type];if(o)return o;const i=this.#r.templateDir;return o=a.compile(e.readFileSync(t.resolve(i,`src/default/blocks/${n.type}.js.njk`),"utf8"),this.#c),this.#d[n.type]=o,o}createStepFile({node:n}){const o=this.#r.projectDir,i=`${n.codeKey}.js`,r=t.resolve(o,`src/default/blocks/${i}`);e.writeFileSync(r,n.context.render,"utf8"),n.context.fileName=i,n.context.filePath=r}async transformExpression(e){let t=await this.transformValue(e);return t=JSON.stringify(t),t=this.replaceSpecialPattern(t),t}async transformValue(e){if(Array.isArray(e))for(let t=0;t<e.length;t++)e[t]=await this.transformValue(e[t]);else if(f(e)){const t=Object.keys(e);for(let n=0;n<t.length;n++){const o=t[n],i=Y({expression:o});if(i)if("e"===i.processor){const t=e[o].replace(/(\r\n|\n|\r)/g,"");e[i.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=Y({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=`$::c.module['${o}']::`;break;case"fm":e=`$::flow.getModule('${o}')::`;break;case"f":e=`$::c.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="fnet.yaml",o=`Creating ${n}`;await this.setProgress({message:o});const{content:i,...s}=this.#s.doc,c={content:r.stringify(s)},p=this.#r.templateDir,l=a.compile(e.readFileSync(t.resolve(p,`${n}.njk`),"utf8"),this.#c).render(c),d=this.#r.projectDir,f=t.resolve(d,`${n}`);e.writeFileSync(f,l,"utf8")}async createProjectMainYaml(){const n="flow.main.yaml",o=`Creating ${n}`;await this.setProgress({message:o});const i={content:r.stringify(this.#a)},s=this.#r.templateDir,c=a.compile(e.readFileSync(t.resolve(s,`${n}.njk`),"utf8"),this.#c).render(i),p=this.#r.projectDir,l=t.resolve(p,`${n}`);e.writeFileSync(l,c,"utf8")}async runPrettifier(){const e=this.#r.projectDir,n=await s("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.#s.id){const e=await B.list({type:"workflow.deploy",parent_id:this.#s.id});for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&(n=await B.update(n,{id:n.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:n}=t;if(t.doc.targets&&Array.isArray(t.doc.targets))throw new Error("Deployment project targets are deprecated. Please update targets in the yaml file.");const o=Object.keys(t.doc||{}),i=n||{};for(let e=0;e<o.length;e++){const n=t.doc[o[e]];n.name=o[e];const r=i.get(o[e]);await q({...this.#j,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:r})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#r.id)return;let o=await B.first({name:t.params.name,parent_id:this.#g.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:n.version}),await B.update(o,{id:o.id})):o=await B.create({parent_id:this.#g.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(oe.blue(t)),await this._cache_set(this.#h,{status:"IN_PROGRESS",message:t})}async build(){if(this.#k&&!this.#b)return await this.createNetwork();try{const n=this.#k?await J({root:this.#m}):void 0;if(this.#b){if(await this.initWorkflowDir(),await this.initNunjucks(),this.#k){let o=this.#r.project?.projectDir||this.#r.projectDir;o=t.resolve(o,"fnet"),e.existsSync(o)&&e.writeFileSync(t.resolve(o,"flow.bpmn"),n.diagramXML,"utf8")}await this.createAtomLibFiles({root:this.#m}),await this.createEngine({root:this.#m}),await this.createNodeTree({root:this.#m}),await this.createProjectYaml(),await N(this.#j),await O(this.#j),await A(this.#j),await $(this.#j),await S(this.#j),await E(this.#j),await T(this.#j),await P(this.#j),await C(this.#j),await I(this.#j),this.#v&&(await F(this.#j),await R(this.#j),this.#x&&await this.deploy())}await this._cache_set(this.#h,{status:"COMPLETED",data:{network:n}})}catch(e){throw await this._cache_set(this.#h,{status:"FAILED",message:e.message||e}),e}}async createNetwork(){try{const e=await J({root:this.#m});await this._cache_set(this.#h,{status:"COMPLETED",data:{...e}})}catch(e){throw await this._cache_set(this.#h,{status:"FAILED",message:e.message||e}),e}}}}var ao=function(){if(Yn)return Jt;Yn=1;const u=process.cwd(),{spawn:h}=e,y=t,g=Ut;i({name:["redis"],dir:u,optional:!0});const w=r,b=s,v=a,x=c,k=p,j=l,_=i,D=d,E=f,P=m,S=so(),T=function(){if(Vn)return Hn;Vn=1;const e=n,t=o;return Hn=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}),$="win32"===process.platform?";":":";process.env.PATH=`${w.join(T,"/.bin")}${$}${process.env.PATH}`;let A=b(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=w.resolve(T,"./@fnet/cli-project-flow/dist/template/project"),n=w.resolve(u,e.name);v.existsSync(n)||v.mkdirSync(n),await P({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let o=await k("fnet build",{cwd:n});if(0!==o.code)throw new Error("Failed to build project.");if(g("git")&&(o=await k("git init --initial-branch=main",{cwd:n}),0!==o.code))throw new Error("Failed to initialize git.");if(g("code")&&e.vscode&&(o=await k(`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=w.resolve(T,"@fnet/cli-project-flow/dist/template/project"),n=process.cwd(),o=await N(e);if(e.update){if(await P({dir:t,outDir:n,context:{name:o.project.projectFileParsed.name,runtime:"node"},copyUnmatchedAlso:!0}),0!==(await k("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 N(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 N({...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 N({...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 O(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 N(e),{projectDir:i}=t,r=e=>e.includes(" ")?"win32"===process.platform?`"${e.replace(/(["^])/g,"^$1")}"`:`"${e.replace(/(["\\$`])/g,"\\$1")}"`:e,s=process.argv.slice(3).map(r);h(n,[...o,...s],{cwd:i,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function N(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:w.resolve(u,`./.output/${e.id}`),templateDir:w.resolve(T,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:w.resolve(T,"./@fnet/cli-project-common/dist/template/default"),coreDir:w.resolve(T,"./@fnet/cli-project-flow/dist/template/core"),tags:e.ftag}}{const t=await async function({tags:e}){const t=w.resolve(u,"fnet.yaml");if(!v.existsSync(t))throw new Error("fnet.yaml file not found in current directory.");const{raw:n,parsed:o}=await j({file:t,tags:e}),i=w.dirname(t);let r;if("object"==typeof o.flows)r=o.flows;else{let t="flow.main.yaml";v.existsSync(w.join(i,"fnet","flows.yaml"))&&(t=w.join("fnet","flows.yaml"));const n=o.main||t;let s=w.resolve(i,n);if(v.existsSync(s)){const{parsed:t}=await j({file:s,tags:e});r=t}else r={main:{steps:[]}}}const s={workflowAtom:{doc:{...o,content:r}},projectDir:i,projectFilePath:t,projectFileContent:n,projectFileParsed:o};let a=w.resolve(i,"fnet/targets.yaml");if(!v.existsSync(a)&&(a=w.resolve(i,"flow.devops.yaml"),v.existsSync(a))){const e=w.resolve(i,"fnet");v.existsSync(e)||v.mkdirSync(e),v.copyFileSync(a,w.resolve(i,"fnet/targets.yaml")),v.unlinkSync(a)}if(v.existsSync(a)){const{raw:t,parsed:n}=await j({file:a,tags:e}),o=x.parseDocument(t);s.devops={filePath:a,fileContent:t,yamlDocument:o,doc:{...n},type:"workflow.deploy",save:async()=>{v.writeFileSync(s.devops.filePath,o.toString())}}}const c=w.resolve(i,"readme.md");if(v.existsSync(c)){const e=v.readFileSync(c,"utf8");s.readme={filePath:c,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return s}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:w.resolve(T,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:w.resolve(T,"./@fnet/cli-project-common/dist/template/default"),coreDir:w.resolve(T,"./@fnet/cli-project-flow/dist/template/core"),projectDir:w.resolve(t.projectDir,"./.workspace"),projectSrcDir:w.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return A=A.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 N(e),{project:n}=t,{projectDir:o,projectFileParsed:i}=n,r=i.input;if(!r)throw new Error("Config schema not found in project file.");if(!Reflect.has(e,"name")){const{inputName:t}=await y({type:"input",name:"inputName",message:"Input name:",initial:"dev"});e.name=t}const s=w.resolve(o,".fnet");v.existsSync(s)||v.mkdirSync(s);const a=w.resolve(s,`${e.name}.fnet`),c=v.existsSync(a),p=await D({schema:r,format:"yaml",ref:c?a:void 0});v.writeFileSync(a,p)}catch(e){console.error(e.message),process.exit(1)}})),A=O(A,{bin:"npm"}),A=O(A,{bin:"node"}),A=O(A,{bin:"bun"}),A=O(A,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),A=O(A,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),A=O(A,{name:"app",bin:"npm",preArgs:["run","app","--"]}),A=O(A,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),A=O(A,{bin:"npx"}),A=O(A,{bin:"cdk"}),A=O(A,{bin:"aws"}),A=function(e,{name:t,preArgs:n=[]}){return e.command(`${t} <config> <command> [options..]`,"Run a command with a config context",(e=>e.positional("config",{type:"string"}).positional("command",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await N(e),{projectDir:o}=t,i=e.config,r=await _({name:i,dir:o,transferEnv:!1,optional:!0,tags:t.tags}),s=r?.data?.env||void 0,a=e.command,c=process.argv.slice(5);h(a,[...n,...c],{cwd:v.existsSync(o)?o:u,stdio:"inherit",shell:!0,env:{...process.env,...s}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(A,{name:"with"}),A=function(e,{name:t,preArgs:n=[]}){return e.command(`${t} group [options..]`,"Run a command group.",(e=>e.positional("group",{type:"string"}).option("ftag",{type:"array"}).help(!1).version(!1)),(async e=>{try{const t=await N(e),{project:n}=t,{projectFileParsed:o}=n,i=o.commands;if(!i)throw new Error("Commands not found in project file.");const r=i[e.group];if(!r)throw new Error(`Command group '${e.group}' not found in project file.`);await E({commands:r})}catch(e){console.error(e.message),process.exit(1)}}))}(A,{name:"run"}),A.demandCommand(1,"You need at least one command before moving on").help().argv,Jt}(),co=Y(ao);module.exports=co;
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@fnet/cli",
3
- "version": "0.96.1",
3
+ "version": "0.98.1",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
7
7
  "description": "CLI for Flownet",
8
8
  "scripts": {
9
9
  "build": "rollup --config --bundleConfigAsCjs",
10
- "deploy": "npm install && npm run build && npm publish --access public",
10
+ "deploy": "bun install && bun run build && bun publish --access public",
11
11
  "watch": "rollup --config --watch --sourcemap --bundleConfigAsCjs --environment DEVELOPMENT"
12
12
  },
13
13
  "repository": {
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "license": "MIT",
18
18
  "dependencies": {
19
- "@flownet/lib-atom-api-js": "^0.1.10",
19
+ "@flownet/lib-atom-api-js": "^0.2.1",
20
20
  "@flownet/lib-is-redis-online": "^0.1.13",
21
21
  "@flownet/lib-parse-imports-js": "^0.3.1",
22
22
  "@flownet/lib-parse-node-url": "^0.1.16",
@@ -50,7 +50,6 @@
50
50
  "@node-red/util": "^4.0.2",
51
51
  "ajv": "^8.17.1",
52
52
  "ajv-formats": "^3.0.1",
53
- "axios": "^1.5.0",
54
53
  "bpmn-moddle": "^9.0.1",
55
54
  "chalk": "^4.1.2",
56
55
  "dagre": "^0.8.5",
@@ -61,7 +60,6 @@
61
60
  "lodash.merge": "^4.6.2",
62
61
  "lodash.omit": "^4.5.0",
63
62
  "lodash.pick": "^3.1.0",
64
- "nanoid": "^3.3.6",
65
63
  "nunjucks": "^3.2.4",
66
64
  "object-hash": "^3.0.0",
67
65
  "prettier": "^3.0.3",