@fnet/cli 0.91.3 → 0.91.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/builder/lib-cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var e=require("child_process"),t=require("@fnet/prompt"),n=require("@fnet/config"),r=require("path"),a=require("yargs/yargs"),i=require("fs"),o=require("yaml"),s=require("shelljs"),c=require("os"),p=require("@fnet/yaml"),l=require("@fnet/object-from-schema"),d=require("@fnet/shell-flow"),u=require("@flownet/lib-render-templates-dir"),m=require("node:fs"),f=require("node:path"),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"),k=require("lodash.merge"),D=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("@fnet/shell"),O=require("semver"),C=require("@fnet/up-list-files"),R=require("@node-red/util"),M=require("@flownet/lib-to-ios-app"),F=require("lodash.clonedeep"),q=require("@flownet/lib-to-macos-app"),N=require("@flownet/lib-to-electron"),L=require("@flownet/lib-to-webos"),U=require("@flownet/lib-to-nextjs"),B=require("@flownet/lib-to-docker"),z=require("form-data"),J=require("@fnet/to-rust"),W=require("@fnet/to-pyip"),H=require("@flownet/lib-parse-node-url"),K=require("@fnet/list-files"),G=require("chalk");function Y(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var X,V,Z,Q,ee,te,ne,re,ae,ie,oe,se,ce,pe,le,de,ue,me,fe,ge,ye,he,we,ve,be,je,_e,ke,De,xe,Pe,Se,Ae,Ee,$e,Te,Ie,Oe,Ce,Re,Me,Fe,qe,Ne,Le,Ue,Be,ze,Je,We,He,Ke,Ge,Ye,Xe,Ve,Ze,Qe,et,tt,nt,rt,at,it,ot,st,ct,pt,lt,dt,ut,mt,ft,gt,yt,ht,wt,vt,bt,jt,_t,kt,Dt,xt,Pt,St,At,Et,$t,Tt,It,Ot,Ct,Rt,Mt,Ft,qt,Nt,Lt,Ut,Bt,zt,Jt,Wt,Ht,Kt,Gt,Yt,Xt,Vt,Zt,Qt={};function en(){if(te)return ee;te=1;const e=k;return ee=({feature:t,features:n,packageDevDependencies:r})=>{const{name:a,packages:i,options:o,extraCheck:s,explicit:c}=t,p=`${a}_enabled`,l=n.rollup_output||{},d=Object.keys(l);let u=o||{};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&&i.forEach((e=>r.push({package:e[0],version:e[1]})))}}function tn(){if(Ee)return Ae;Ee=1;const e=k,t=m,n=f,r=D,a=function(){if(re)return ne;re=1;const e=en();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}(),i=function(){if(ie)return ae;ie=1;const e=en();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}(),o=function(){if(se)return oe;se=1;const e=en();return oe=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})},oe}(),s=function(){if(pe)return ce;pe=1;const e=en();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}(),c=function(){if(de)return le;de=1;const e=en();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}(),p=function(){if(me)return ue;me=1;const e=en();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}(),l=function(){if(ge)return fe;ge=1;const e=en();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}(),d=function(){if(he)return ye;he=1;const e=en();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}(),u=function(){if(ve)return we;ve=1;const e=en();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=en();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(ke)return _e;ke=1;const e=en();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 De;xe=1;const e=en();return De=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features,i={};!0===a.app?.enabled&&(i.targets=i.targets||[],i.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:i},features:a,packageDevDependencies:r})},De}(),w=function(){if(Se)return Pe;Se=1;const e=en();return Pe=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features,i=a.css&&!1!==a.css.enabled;let o=[];i&&(o.push(["rollup-plugin-postcss","^4"]),o.push(["sass","^1.66"]),(a.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":o.push(["postcss-import","^15"]);break;case"postcss-url":o.push(["postcss-url","^10"]);break;case"postcss-preset-env":o.push(["postcss-preset-env","^9"]);break;case"autoprefixer":o.push(["autoprefixer","^10"]);break;case"cssnano":o.push(["cssnano","^6"])}}))),e({feature:{name:"css",packages:o},features:a,packageDevDependencies:r})},Pe}();function v({dir:e,name:r="index"}){let a=n.resolve(e,`./${r}.tsx`);if(t.existsSync(a)||(a=n.resolve(e,`./${r}.ts`)),t.existsSync(a)||(a=n.resolve(e,`./${r}.jsx`)),t.existsSync(a)||(a=n.resolve(e,`./${r}.js`)),!t.existsSync(a))return{};const i=a,o=n.extname(a);return{file:i,ext:o,ts:".ts"===o||".tsx"===o,name:r}}return Ae=async t=>{const{atom:m,context:f,setProgress:b}=t;b("Initializing features..."),m.doc.features=m.doc.features||{};const j=m.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 _=n.resolve(f.project.projectDir),k=v({dir:n.resolve(_,"./app")});if(k.file){b("Parsing app entry imports...");let e=await r({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 r({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:n.resolve(_,"./cli")});if(D.file){b("Parsing cli entry imports...");let e=await r({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 r({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"===m.type){const e=v({dir:n.resolve(_,"./src")});if(e.file){b("Parsing src entry imports...");let t=await r({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 r({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===m.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===m.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,browsersync:!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"}),!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:`${n.normalize(j.app.dir||".")}`,files:[n.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),u(t),l(t),d(t),p(t),c(t),s(t),o(t),a(t),i(t)},Ae}function nn(){if(Oe)return Ie;Oe=1;const e=x;return Ie=async({atom:t,packageDependencies:n,packageDevDependencies:r,setProgress:a})=>{a("Initializing dependencies");const i=t.doc.dependencies||[];if(i.filter((e=>!e.dev)).forEach((e=>n.push(e))),i.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 rn(){if(Fe)return Me;Fe=1;const e=m,t=f,n=u;return Me=async({atom:r,setProgress:a,context:i,packageDependencies:o})=>{if(!0!==r.doc.features.app.enabled)return;await a({message:"Creating app folder"});const s={atom:r,packageDependencies:o,ts:Date.now()},c=i.templateDir,p=t.resolve(i.projectDir,"src/app");e.existsSync(p)||e.mkdirSync(p,{recursive:!0});let l=["index.js.njk"];!1!==r.doc.features.app.html&&l.push("index.html.njk"),await n({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:s})},Me}function an(){if(Ne)return qe;Ne=1;const e=P,t=S,n=m,r=f;return qe=async({projectDir:a,name:i,setProgress:o,count:s=1})=>{let c;const p=t(["npm-pick-versions",i,s]),l=r.join(a,".cache"),d=r.join(l,p+".json");return n.existsSync(d)?(o&&o(`Picking npm version of ${i} from cache ...`),c=JSON.parse(n.readFileSync(d,"utf8"))):(o&&o(`Picking npm version of ${i} ...`),c=await e({name:i,count:s}),n.mkdirSync(l,{recursive:!0}),n.writeFileSync(d,JSON.stringify(c),"utf8")),c}}function on(){if(Ue)return Le;Ue=1;const e=y,t=m,n=f,r=D,a=an();return Le=async({atom:i,context:o,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&&i.doc.features.react_version>=17&&(s.find((e=>"@emotion/react"===e.package))||s.push({package:"@emotion/react",version:"^11"}),s.find((e=>"@emotion/styled"===e.package))||s.push({package:"@emotion/styled",version:"^11"}));const u=[];!0===i.doc.features.app.enabled&&u.push({file:n.resolve(o.projectDir,"src/app/index.js"),dev:!1!==i.doc.features.app.dev}),!0===i.doc.features.cli.enabled&&u.push({file:n.resolve(o.projectDir,"src/cli/index.js"),dev:!1!==i.doc.features.cli.dev});for await(const e of u){const n=e.file;if(!t.existsSync(n))throw new Error(`App file not found: ${n}`);const i=(await r({file:n,recursive:!0})).all;for await(const t of i){if("npm"!==t.type)continue;if(s.find((e=>e.package===t.package)))continue;if(c.find((e=>e.package===t.package)))continue;const n=await a({name:t.package,projectDir:o.projectDir,setProgress:p});(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const m={atom:i,packageDependencies:s,packageDevDependencies:c},f=o.templateCommonDir,g=e.compile(t.readFileSync(n.resolve(f,"package.json.njk"),"utf8"),e.configure(f)).render(m),y=o.projectDir,h=n.resolve(y,"package.json");t.writeFileSync(h,g,"utf8");const w=n.resolve(o.project.projectDir,"fnet");if(t.existsSync(w)){const e=n.resolve(o.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const r=t.readdirSync(w);for(const a of r){const r=n.resolve(w,a);if(!t.lstatSync(r).isFile())continue;const i=n.resolve(e,a);t.copyFileSync(r,i)}}},Le}function sn(){if(ze)return Be;ze=1;const e=m,t=f,n=u;return Be=async({atom:r,setProgress:a,context:i,packageDependencies:o})=>{if(!0!==r.doc.features.cli.enabled)return;await a({message:"Creating cli."});const s={atom:r,packageDependencies:o},c=i.templateDir,p=t.resolve(i.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await n({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:p,context:s})},Be}function cn(){if(Ke)return He;Ke=1;const e=m,t=f,n=y,r=D;return He=async({atom:a,setProgress:i,context:o,packageDependencies:s})=>{await i({message:"Creating rollup file."});const c={atom:a,packageDependencies:s},p=t.resolve(o.projectDir,"src","default/index.js");if(!e.existsSync(p))throw new Error(`Entry file not found: ${p}`);const l=(await r({file:p,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=a.doc.features.rollup_output,u=Object.keys(d);for(let e=0;e<u.length;e++){const t=d[u[e]];if(!0===t.browser&&l.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(l.map((e=>({key:e,value:e})))),t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{};for(let e=0;e<l.length;e++){const n=l[e];t.alias.entries[n]=`node:${n}`,t.alias.entries[`node:${n}`]=n}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(l)}}const m=o.templateCommonDir;let f=n.compile(e.readFileSync(t.resolve(m,"rollup.config.mjs.njk"),"utf8"),n.configure(m)).render(c);const g=o.projectDir;let y=t.resolve(g,"rollup.config.mjs");e.writeFileSync(y,f,"utf8")},He}function pn(){if(Ye)return Ge;Ye=1;const e=m,t=f,n=y,r=A,a=E,i=$;return Ge=async({atom:o,setProgress:s,context:c,njEnv:p})=>{if(!0!==o.doc.features.cli.enabled)return;await s({message:"Creating yargs."});let l={};if(l=o.doc.input?o.doc.input:{type:"object",properties:{},required:[]},o.doc.features.cli.fargs&&!1!==o.doc.features.cli.fargs?.enabled){const e=o.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},n={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),l.properties&&(l.properties.fargs=t,l.properties.ftag=n)}const d={options:l,imports:[],atom:o},u=c.templateDir,m=n.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 r({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});i(y);const h=y.compile(l),w=a(y,h);e.writeFileSync(t.resolve(f,"src/default/validate_input.js"),w,"utf8")},Ge}function ln(){if(Ve)return Xe;Ve=1;const e=m,t=f,n=y;return Xe=async({atom:r,setProgress:a,context:i,packageDependencies:o})=>{await a({message:"Creating .gitignore"});const s={atom:r,packageDependencies:o},c=i.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),n.configure(c)).render(s),l=i.projectDir,d=t.resolve(l,".gitignore");e.writeFileSync(d,p,"utf8")},Xe}function dn(){if(Qe)return Ze;Qe=1;const e=m,t=f,n=y;return Ze=async({atom:r,setProgress:a,context:i,packageDependencies:o})=>{await a({message:"Creating tsconfig.json."});const s={atom:r,packageDependencies:o},c=i.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),n.configure(c)).render(s),l=i.projectDir,d=t.resolve(l,"tsconfig.json");e.writeFileSync(d,p,"utf8")},Ze}function un(){if(tt)return et;tt=1;const e=y,t=m,n=f,r=p;return et=async({atom:a,context:i,setProgress:o,Atom:s})=>{const c="readme.md",p=`Creating ${c}`;if(await o({message:p}),i.project?.readme){const a=i.projectDir,o={content:i.project.readme.doc.content},s=n.resolve(i.project.projectDir,"fnet/how-to.md");if(t.existsSync(s)){const e=t.readFileSync(s,"utf8");o.howto=e}const p=n.resolve(i.project.projectDir,"fnet/input.yaml");if(t.existsSync(p)){const e=await r({file:p,tags:i.tags});o.input=e.content}const l=i.templateCommonDir,d=e.compile(t.readFileSync(n.resolve(l,`${c}.njk`),"utf8"),e.configure(l)).render(o),u=n.resolve(a,`${c}`);t.writeFileSync(u,d,"utf8")}else if(a.id){const r=await s.first({type:"wiki",parent_id:a.id});if(!r||"markdown"!==r.doc?.["content-type"])return;const{content:o,...p}=r.doc,l={content:o},d=i.templateCommonDir,u=e.compile(t.readFileSync(n.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(l),m=i.projectDir,f=n.resolve(m,`${c}`);t.writeFileSync(f,u,"utf8")}},et}function mn(){if(rt)return nt;rt=1;const e=r,t=d;return nt=async({setProgress:n,context:r})=>{const a=r.projectDir;await n({message:"Prettifiying source files."});let i=e.join("src","**","*");await t({commands:{steps:[`prettier --write ${i} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:a}})}}function fn(){if(it)return at;it=1;const e=s;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!==e.exec("tsc",{cwd:a}).code)throw new Error("Couldnt create .d.ts files.")},at}function gn(){if(st)return ot;st=1;const e=s;return ot=async({setProgress:t,atom:n,context:r})=>{const a=r.projectDir;await t({message:"Installing npm packages."});if(0!==e.exec(`npm install ${n.doc.features.npm_install_flags}`,{cwd:a}).code)throw new Error("Couldnt install npm packages.")},ot}function yn(){if(pt)return ct;pt=1;const e=f,t=T,n=u;return ct=async r=>{const{setProgress:a,atom:i,context:o}=r;a({message:"Installing Python packages"});const s=o.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=i.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:i.doc.features.runtime.version||"3.12",packages:m});o.pythonEnv=g,r.packageDependencies=m;const y=i.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=i.doc.name,h.params.version="0.1.0",h.params.bin_name=i.doc.name,h.params.python_requires=i.doc.features.runtime.version||">=3.12",h.params.dependencies=m,h.params.scripts=JSON.stringify({cli:`PYTHONPATH='${e.join("src")}' '${e.relative(o.projectDir,g.pythonBin)}' '${e.join("src","cli","index.py")}'`}),await n({pattern:["setup.py.njk","package.json.njk","pyproject.toml.njk"],dir:o.templateDir,outDir:o.projectDir,context:h})},ct}function hn(){if(dt)return lt;dt=1;const e=s;return lt=async({setProgress:t,context:n})=>{const r=n.projectDir;await t({message:"Building main project."});if(0!==e.exec("npm run build",{cwd:r}).code)throw new Error("Couldnt build project.")}}function wn(){if(Kt)return Ht;Kt=1;const e=function(){if(mt)return ut;mt=1;const e=I,t=n;return ut=async({setProgress:n,context:r,deploymentProject:a,deploymentProjectTarget:i,buildId:o})=>{await n({message:"Deploying it as gitlab project."});const s=r.projectDir;let c="fnet-to-gitlab";const p=i.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='${i.params.name}'`,c+=` --projectBranch='${i.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==i.dryRun&&(await e({cmd:c}),a.isDirty=!0)}}(),t=function(){if(gt)return ft;gt=1;const e=m,t=f,r=O,a=I,i=n;return ft=async({setProgress:n,context:o,deploymentProject:s,deploymentProjectTarget:c,registerToPackageManager:p,yamlTarget:l})=>{await n({message:"Deploying it as gcs package."});const d=o.projectDir,u=t.resolve(d,"package.json"),m=e.readFileSync(u),f=JSON.parse(m);f.name=c.params.name,f.version=r.inc(c.version,"patch"),delete f.scripts,delete f.devDependencies,e.writeFileSync(u,JSON.stringify(f,null,"\t"));const{file:g,data:y}=await i({name:c.config||"gcs",dir:o.projectDir,tags:o.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 a({cmd:h}),e.writeFileSync(u,m),!0!==c.dryRun&&(s.isDirty=!0,c.version=f.version,l.set("version",f.version),await p({target:c,packageJSON:f}))}}(),a=function(){if(ht)return yt;ht=1;const e=m,t=f,r=O,a=s,i=n,c=C,p=l,d=o;return yt=async({atom:n,setProgress:o,context:s,deploymentProject:l,deploymentProjectTarget:u,yamlTarget:m})=>{await o({message:"Deploying it as npm package."});const f=s.projectDir,g=t.resolve(f,"package.json"),y=e.readFileSync(g),h=JSON.parse(y);h.name=u.params.name,h.version=r.inc(u.version,"patch");const w=u.params.bin?.name||u.params.bin;!1!==u.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=u.config||"npm";let b=(await i({name:v,dir:s.projectDir,tags:s.tags,optional:!0}))?.data;if(!b){const n=c({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===n.length)throw new Error("Couldnt find schema to create npm config");const r=await p({schema:n[0],tags:s.tags}),a=s.project.projectDir,i=t.resolve(a,".fnet");e.existsSync(i)||e.mkdirSync(i),e.writeFileSync(t.resolve(i,`${v}.fnet`),d.stringify(r)),b=r}if(e.writeFileSync(t.resolve(f,".npmrc"),`//registry.npmjs.org/:_authToken=${b.env.NPM_TOKEN}`),!0!==u.dryRun){if(0!==a.exec("npm publish --access public",{cwd:f}).code)throw new Error("Couldnt publish to npm");e.writeFileSync(g,y),l.isDirty=!0,u.version=h.version,m.set("version",h.version)}}}(),c=function(){if(vt)return wt;vt=1;const e=m,t=f,r=g,a=y,i=R,o=n;return wt=async({atom:n,setProgress:s,context:c,deploymentProject:p,deploymentProjectTarget:l,buildId:d,packageDependencies:u,njEnv:m})=>{await s({message:"Deploying it as node-red flow."});const f=c.projectDir,g=c.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||i.util.generateId(),label:`${y}/${n.id?n.id:r.hostname()}/${n.name}/${l.deploy.name||l.deploy.template}`},function:{id:i.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:i.util.generateId(),...l.params?.inject,payload:"json"===l.params?.inject?.payloadType?`'${JSON.stringify(l.params?.inject?.payload)}'`:l.params?.inject?.payload},debug:{id:i.util.generateId()}}};else if("cronjob"===l.deploy.template){let a=l.params?.schedules?cloneDeep(l.params?.schedules):void 0;a?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),h={atom:n,packageDependencies:u,red:{tab:{id:l.deploy.id||i.util.generateId(),label:`${y}/${n.id?n.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:i.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:i.util.generateId(),schedules:a},debug:{id:i.util.generateId()}}}}else{if("http"!==l.deploy.template)return;h={atom:n,packageDependencies:u,red:{tab:{id:l.deploy.id||i.util.generateId(),label:`${y}/${n.id?n.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:i.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:i.util.generateId(),method:l.params.method||"get",url:l.params.url},httpout:{id:i.util.generateId()},debug:{id:i.util.generateId()}}}}let w=a.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 o({name:c.redConfig||"red",dir:c.projectDir,tags:c.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}(),p=function(){if(jt)return bt;jt=1;const e=i,t=r,a=n;return bt=async({atom:n,Atom:r,setProgress:i,context:o,packageDependencies:s,deploymentProject:c,deploymentProjectTarget:p})=>{await i({message:"Deploying it as workflow lib."});const l=(await a({name:"atom",dir:o.projectDir,tags:o.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 r.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 r.get({id:p.deploy.id}),!d)return}else{if(d=await r.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=o.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"===n.type?d.doc.subtype="library":"workflow"===n.type&&(d.doc.subtype="workflow"),d=await r.update(d,{id:d.id})}}(),d=function(){if(kt)return _t;kt=1;const e=n,t=M,r=F,a=O;return _t=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as ios-app package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},_t}(),u=function(){if(xt)return Dt;xt=1;const e=n,t=q,r=F,a=O;return Dt=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as macos-app package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},Dt}(),h=function(){if(St)return Pt;St=1;const e=n,t=N,r=F,a=O;return Pt=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as electron package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,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=n,t=L,r=F,a=O;return At=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as webos package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,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=n,t=U,r=F,a=O;return $t=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as nextjs package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,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=n,t=B,r=F,a=O;return It=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as docker package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},It}(),_=function(){if(Rt)return Ct;Rt=1;const e=m,t=f,r=O,a=I,i=n,o=j.default;return Ct=async({setProgress:n,context:s,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet package."});const d=s.projectDir,u=t.resolve(d,"package.json"),m=e.readFileSync(u),f=JSON.parse(m);f.name=p.params.name,f.version=r.inc(p.version,"patch"),delete f.scripts,delete f.devDependencies,e.writeFileSync(u,JSON.stringify(f,null,"\t"));const{file:g,data:y}=await i({name:p.config||"fnet-package",dir:s.projectDir,tags:s.tags});if(!y.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${g}`);if(!y.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${g}`);if(!y.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${g}`);const h=`${y.env.ATOM_API_URL}/v1/auth/token`,w=y.env.ATOM_API_USERNAME,v=y.env.ATOM_API_PASSWORD;let b=await o({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 a({cmd:_}),e.writeFileSync(u,m),!0===p.dryRun)return;c.isDirty=!0,p.version=f.version,l.set("version",f.version);const k=`${y.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(b=await o({method:"POST",url:k,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.")}}(),k=function(){if(Ft)return Mt;Ft=1;const e=O,t=n,r=j.default;return Mt=async({setProgress:n,context:a,deploymentProject:i,deploymentProjectTarget:o,yamlTarget:s})=>{await n({message:"Deploying it as fnet form."});const{file:c,data:p}=await t({name:o.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 r({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}`);i.isDirty=!0;const g=e.inc(o.version,"patch");o.params.version=g,o.version=g,s.set("version",g);const y=`${p.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(m=await r({method:"POST",url:y,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${f}`}}),m.data?.error)throw new Error("Error publishing fnet form.")}}(),D=function(){if(Nt)return qt;Nt=1;const e=O,t=n,r=j.default,a=i,o=I,s=z;return qt=async({setProgress:n,context:i,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet flow."});const{file:d,data:u}=await t({name:p.config||"fnet-flow",dir:i.project.projectDir,tags:i.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 r({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 r({method:"POST",url:v,data:{name:p.params.name,version:p.params.version,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`}}),y.data?.error)throw new Error("Error publishing fnet flow.");const b=y.data?.upload.id;let j="fnet-dir-zipper";j+=` --sourceDir='${i.project.projectDir}'`,j+=" -p=**/*",j+=" -g",j+=" --stdout_format=json";const _=await o({cmd:j});if(0!==_.code)throw new Error(_.stderr);const k=JSON.parse(_.stdout).path;let D=new s;D.append("file",a.createReadStream(k));const x=await r.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...D.getHeaders(),Authorization:`Bearer ${h}`},data:D});if(x.data?.error)throw new Error("Error uploading fnet flow.")}}(),x=function(){if(Ut)return Lt;Ut=1;const e=O,t=n,r=j.default,a=i,o=I,s=z;return Lt=async({setProgress:n,context:i,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet node."});const{file:d,data:u}=await t({name:p.config||"fnet-node",dir:i.project.projectDir,tags:i.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 r({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 r({method:"POST",url:v,data:{name:p.params.name,version:p.params.version,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`}}),y.data?.error)throw new Error("Error publishing fnet node.");const b=y.data?.upload.id;let j="fnet-dir-zipper";j+=` --sourceDir='${i.project.projectDir}'`,j+=" -p=**/*",j+=" -g",j+=" --stdout_format=json";const _=await o({cmd:j});if(0!==_.code)throw new Error(_.stderr);const k=JSON.parse(_.stdout).path;let D=new s;D.append("file",a.createReadStream(k));const x=await r.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...D.getHeaders(),Authorization:`Bearer ${h}`},data:D});if(x.data?.error)throw new Error("Error uploading fnet node.")}}(),P=function(){if(zt)return Bt;zt=1;const e=n,t=J,r=F,a=O;return Bt=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as Rust package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},Bt}(),S=function(){if(Wt)return Jt;Wt=1;const e=n,t=W,r=F,a=O;return Jt=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as pypi package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},Jt}();return Ht=async n=>{const{atom:r,packageDependencies:i,context:o,deploymentProjectTarget:s,setProgress:l,deploymentProject:m,yamlTarget:f}=n;if(!0===s.enabled)if("lib"===s.type)await p({...n});else if("red"===s.type)await c({...n});else if("npm"===s.type)await a({...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 k({...n});else if("fnet-node"===s.type)await x({...n});else if("fnet-flow"===s.type)await D({...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=d:"macos"===s.type?e=u:"rust"===s.type?e=P:"pypi"===s.type&&(e=S),!e)return;await e({atom:r,target:s,onProgress:l,projectDir:o.projectDir,dependencies:i,context:o,yamlTarget:f}),m.isDirty=!0}},Ht}function vn(){if(Yt)return Gt;Yt=1;const e=m,t=f,r=g,a=o,i=y,s=function(){if(V)return X;V=1;const e=h,t=w;return X=async()=>{if(!await t({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const n=e.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await n.connect(),n}}(),{nanoid:c}=v,p=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(((i,o)=>{if(e.set_api_url(r.data.url),a)return e.set_req_token(a),void i(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),i(t.data.access_token)})).catch((t=>{e.set_req_token(),o(t)}))}))}}}(),l=tn(),d=(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),k=nn(),x=Re?Ce:(Re=1,Ce=async({atom:e,packageDependencies:t,packageDevDependencies:n,setProgress:r})=>{r("Initializing dependencies")}),P=rn(),S=on(),A=sn(),E=function(){if(We)return Je;We=1;const e=m,t=f,n=u;return Je=async({atom:r,setProgress:a,context:i,packageDependencies:o})=>{if(!0!==r.doc.features.cli.enabled)return;await a({message:"Creating cli."});const s={atom:r,packageDependencies:o},c=i.templateDir,p=t.join(i.projectDir,"src","cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await n({pattern:["index.py.njk","__init__.py.njk"],dir:t.join(c,"src","cli"),outDir:p,context:s})},Je}(),$=cn(),T=pn(),I=ln(),O=dn(),C=un(),R=mn(),M=fn(),F=gn(),q=yn(),N=hn(),L=an(),U=wn(),{Atom:B}=b,z=H,J=n,W=D,Y=K,ee=G;return Gt=class{#e;#t;#n;#r;#a;#i;#o;#s;#c;#p;#l;#d;#u;#m;#f;#g;#y;constructor(e){this.#e=new p,this.#t=e,this.#i=[],this.#o=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#i,packageDevDependencies:this.#o,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=Y({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 a=Y({dir:n,ignore:[".cache","node_modules",".conda"],absolute:!0});for(const t of a)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."});let i=n;e.existsSync(i)||e.mkdirSync(i,{recursive:!0}),i=t.join(n,"src"),e.existsSync(i)||e.mkdirSync(i,{recursive:!0}),i=t.join(n,"src","default");const o=this.#t.projectSrcDir;if(!e.existsSync(i))try{"win32"===r.platform()?e.symlinkSync(o,i,"junction"):e.symlinkSync(o,i,"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=i.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.#i})}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 i=a.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));i?.forEach((e=>{const n=t.find((t=>t.package===e.package));n?"string"==typeof e.path?(n.path||[]).some((t=>t===e.path))||(n.path=n.path||[],n.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(n.path||[]).some((t=>t===e))||(n.path=n.path||[],n.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){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 W({file:n,recursive:!0}),a=e.doc.dependencies,i=r.all;for await(const e of i){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,i=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(i)}/src`}else{const n=t.join(i,"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=i.compile(e.readFileSync(t.resolve(r,t.join("src","default","engine.js.njk")),"utf8"),this.#r).render(n),o=this.#t.projectDir,s=t.resolve(o,t.join("src","default","index.js"));e.writeFileSync(s,a,"utf8")}async createProjectYaml(){const n="node.yaml",r=`Creating ${n}`;await this.setProgress({message:r});const{content:o,...s}=this.#n.doc,c={content:a.stringify(s)},p=this.#t.templateDir,l=i.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 i=a.get(r[e]);await U({...this.#y,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:i})}}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 l(this.#y),await k(this.#y),await this.initLibraryDir(),await this.initNunjucks(),await this.initLibs()}async initPython(){await d(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 R(this.#y),await M(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 s(),this.#c=this.#t.buildId||c(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 bn=Y(function(){if(Zt)return Qt;Zt=1;const g=process.cwd(),{spawn:y}=e,h=t;n({name:["redis"],dir:g,optional:!0});const w=r,v=a,b=i,j=o,_=s,k=c,D=p,x=n,P=l,S=d,A=u,E=vn(),$=function(){if(Vt)return Xt;Vt=1;const e=m,t=f;return Xt=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}),T="win32"===process.platform?";":":";process.env.PATH=`${w.join($,"/.bin")}${T}${process.env.PATH}`;let I=v(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=w.resolve($,"@fnet/cli-project-node/dist/template/project"),n=w.resolve(g,e.name);b.existsSync(n)||b.mkdirSync(n),await A({dir:t,outDir:n,context:{name:e.name,runtime:e.runtime,platform:k.platform()},copyUnmatchedAlso:!0});let r=_.exec("fnode build",{cwd:n});if(0!==r.code)throw new Error("Failed to build project.");if(_.which("git")&&(r=_.exec("git init --initial-branch=main",{cwd:n}),0!==r.code))throw new Error("Failed to initialize git.");if(_.which("code")&&e.vscode&&(r=_.exec(`cd ${n} && code .`),0!==r.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})).command("project","Flow node project",(e=>e.option("update",{type:"boolean",default:!1,alias:"-u"})),(async e=>{try{const t=w.resolve($,"@fnet/cli-project-node/dist/template/project"),n=process.cwd(),r=await R(e);if(e.update){if(await A({dir:t,outDir:n,context:{name:r.project.projectFileParsed.name,runtime:r.project.runtime.type,platform:k.platform()},copyUnmatchedAlso:!0}),0!==_.exec("fnode build",{cwd:n}).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(e){console.error("Project failed.",e.message),process.exit(1)}})).command("build","Build flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"]}).option("ftag",{type:"array"})),(async e=>{try{const t=await R(e),n=new E(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 E(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 E(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 O(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,i=e=>e.includes(" ")?"win32"===process.platform?`"${e.replace(/(["^])/g,"^$1")}"`:`"${e.replace(/(["\\$`])/g,"\\$1")}"`:e,o=process.argv.slice(3).map(i);y(n,[...r,...o],{cwd:a,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(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 a=await R(e),{projectDir:i}=a,o=e=>e.includes(" ")?"win32"===process.platform?`"${e.replace(/(["^])/g,"^$1")}"`:`"${e.replace(/(["\\$`])/g,"\\$1")}"`:e,s=process.argv.slice(3).map(o);n=w.join(i,".conda","bin",n||t);y(n,[...r,...s],{cwd:i,stdio:"inherit",shell:!0,env:{PYTHONPATH:i}}).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:w.resolve($,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:w.resolve($,"./@fnet/cli-project-common/dist/template/default"),projectDir:w.resolve(g,`./.output/${e.id}`),tags:e.ftag};{const t=await async function({tags:e}){const t=w.resolve(g,"node.yaml");if(!b.existsSync(t))throw new Error("node.yaml file not found in current directory.");const{raw:n,parsed:r}=await D({file:t,tags:e}),a=w.dirname(t);r.features=r.features||{};const i=r.features;i.runtime=i.runtime||{},i.runtime.type=i.runtime.type||"node","python"===i.runtime.type?i.runtime.template=i.runtime.template||"python":i.runtime.template=i.runtime.template||"default";const o={libraryAtom:{doc:{...r},fileName:"index"},projectDir:a,projectFilePath:t,projectFileContent:n,projectFileParsed:r,runtime:i.runtime};let s=w.resolve(a,"fnet/targets.yaml");if(!b.existsSync(s)&&(s=w.resolve(a,"node.devops.yaml"),b.existsSync(s))){const e=w.resolve(a,"fnet");b.existsSync(e)||b.mkdirSync(e),b.copyFileSync(s,w.resolve(a,"fnet/targets.yaml")),b.unlinkSync(s)}if(b.existsSync(s)){const{raw:t,parsed:n}=await D({file:s,tags:e}),r=j.parseDocument(t);o.devops={filePath:s,fileContent:t,yamlDocument:r,doc:{...n},type:"library.deploy",save:async()=>{b.writeFileSync(o.devops.filePath,r.toString())}}}const c=w.resolve(a,"readme.md");if(b.existsSync(c)){const e=b.readFileSync(c,"utf8");o.readme={filePath:c,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return o}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:w.resolve($,`./@fnet/cli-project-node/dist/template/${t.runtime.template}`),templateCommonDir:w.resolve($,`./@fnet/cli-project-common/dist/template/${t.runtime.template}`),projectDir:w.resolve(t.projectDir,"./.workspace"),projectSrcDir:w.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:a}=n,i=a.input;if(!i)throw new Error("Config schema not found in project file.");if(!Reflect.has(e,"name")){const{inputName:t}=await h({type:"input",name:"inputName",message:"Input name:",initial:"dev"});e.name=t}const o=w.resolve(r,".fnet");b.existsSync(o)||b.mkdirSync(o);const s=w.resolve(o,`${e.name}.fnet`),c=b.existsSync(s),p=await P({schema:i,format:"yaml",ref:c?s:void 0});b.writeFileSync(s,p)}catch(e){console.error(e.message),process.exit(1)}})),I=O(I,{bin:"npm"}),I=O(I,{bin:"node"}),I=O(I,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),I=O(I,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),I=O(I,{name:"app",bin:"npm",preArgs:["run","app","--"]}),I=O(I,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),I=O(I,{bin:"npx"}),I=O(I,{bin:"cdk"}),I=O(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,a=e.config,i=await x({name:a,dir:r,transferEnv:!1,optional:!0,tags:t.tags}),o=i?.data?.env||void 0,s=e.command,c=process.argv.slice(5);y(s,[...n,...c],{cwd:r,stdio:"inherit",shell:!0,env:{...process.env,...o}}).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,a=r.commands;if(!a)throw new Error("Commands not found in project file.");const i=a[e.group];if(!i)throw new Error(`Command group '${e.group}' not found in project file.`);await S({commands:i})}catch(e){console.error(e.message),process.exit(1)}}))}(I,{name:"run"}),I=C(I,{name:"python"}),I=C(I,{name:"python3"}),I=C(I,{name:"pip"}),I=C(I,{name:"pip3"}),I.demandCommand(1,"You need at least one command before moving on").help().argv,Qt}());module.exports=bn;
|
|
2
|
+
"use strict";var e=require("child_process"),t=require("@fnet/prompt"),n=require("@fnet/config"),r=require("path"),a=require("yargs/yargs"),i=require("fs"),o=require("yaml"),s=require("shelljs"),c=require("os"),p=require("@fnet/yaml"),l=require("@fnet/object-from-schema"),d=require("@fnet/shell-flow"),u=require("@flownet/lib-render-templates-dir"),m=require("node:fs"),f=require("node:path"),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"),k=require("lodash.merge"),D=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("@fnet/shell"),O=require("semver"),C=require("@fnet/up-list-files"),R=require("@node-red/util"),M=require("@flownet/lib-to-ios-app"),F=require("lodash.clonedeep"),q=require("@flownet/lib-to-macos-app"),N=require("@flownet/lib-to-electron"),L=require("@flownet/lib-to-webos"),U=require("@flownet/lib-to-nextjs"),B=require("@flownet/lib-to-docker"),z=require("form-data"),J=require("@fnet/to-rust"),W=require("@fnet/to-pyip"),H=require("@flownet/lib-parse-node-url"),K=require("@fnet/list-files"),G=require("chalk");function Y(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var X,V,Z,Q,ee,te,ne,re,ae,ie,oe,se,ce,pe,le,de,ue,me,fe,ge,ye,he,we,ve,be,je,_e,ke,De,xe,Pe,Se,Ae,Ee,$e,Te,Ie,Oe,Ce,Re,Me,Fe,qe,Ne,Le,Ue,Be,ze,Je,We,He,Ke,Ge,Ye,Xe,Ve,Ze,Qe,et,tt,nt,rt,at,it,ot,st,ct,pt,lt,dt,ut,mt,ft,gt,yt,ht,wt,vt,bt,jt,_t,kt,Dt,xt,Pt,St,At,Et,$t,Tt,It,Ot,Ct,Rt,Mt,Ft,qt,Nt,Lt,Ut,Bt,zt,Jt,Wt,Ht,Kt,Gt,Yt,Xt,Vt,Zt,Qt={};function en(){if(te)return ee;te=1;const e=k;return ee=({feature:t,features:n,packageDevDependencies:r})=>{const{name:a,packages:i,options:o,extraCheck:s,explicit:c}=t,p=`${a}_enabled`,l=n.rollup_output||{},d=Object.keys(l);let u=o||{};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&&i.forEach((e=>r.push({package:e[0],version:e[1]})))}}function tn(){if(Ee)return Ae;Ee=1;const e=k,t=m,n=f,r=D,a=function(){if(re)return ne;re=1;const e=en();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}(),i=function(){if(ie)return ae;ie=1;const e=en();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}(),o=function(){if(se)return oe;se=1;const e=en();return oe=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})},oe}(),s=function(){if(pe)return ce;pe=1;const e=en();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}(),c=function(){if(de)return le;de=1;const e=en();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}(),p=function(){if(me)return ue;me=1;const e=en();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}(),l=function(){if(ge)return fe;ge=1;const e=en();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}(),d=function(){if(he)return ye;he=1;const e=en();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}(),u=function(){if(ve)return we;ve=1;const e=en();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=en();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(ke)return _e;ke=1;const e=en();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 De;xe=1;const e=en();return De=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features,i={};!0===a.app?.enabled&&(i.targets=i.targets||[],i.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:i},features:a,packageDevDependencies:r})},De}(),w=function(){if(Se)return Pe;Se=1;const e=en();return Pe=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features,i=a.css&&!1!==a.css.enabled;let o=[];i&&(o.push(["rollup-plugin-postcss","^4"]),o.push(["sass","^1.66"]),(a.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":o.push(["postcss-import","^15"]);break;case"postcss-url":o.push(["postcss-url","^10"]);break;case"postcss-preset-env":o.push(["postcss-preset-env","^9"]);break;case"autoprefixer":o.push(["autoprefixer","^10"]);break;case"cssnano":o.push(["cssnano","^6"])}}))),e({feature:{name:"css",packages:o},features:a,packageDevDependencies:r})},Pe}();function v({dir:e,name:r="index"}){let a=n.resolve(e,`./${r}.tsx`);if(t.existsSync(a)||(a=n.resolve(e,`./${r}.ts`)),t.existsSync(a)||(a=n.resolve(e,`./${r}.jsx`)),t.existsSync(a)||(a=n.resolve(e,`./${r}.js`)),!t.existsSync(a))return{};const i=a,o=n.extname(a);return{file:i,ext:o,ts:".ts"===o||".tsx"===o,name:r}}return Ae=async t=>{const{atom:m,context:f,setProgress:b}=t;b("Initializing features..."),m.doc.features=m.doc.features||{};const j=m.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 _=n.resolve(f.project.projectDir),k=v({dir:n.resolve(_,"./app")});if(k.file){b("Parsing app entry imports...");let e=await r({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 r({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:n.resolve(_,"./cli")});if(D.file){b("Parsing cli entry imports...");let e=await r({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 r({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"===m.type){const e=v({dir:n.resolve(_,"./src")});if(e.file){b("Parsing src entry imports...");let t=await r({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 r({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===m.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===m.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,browsersync:!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"}),!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:`${n.normalize(j.app.dir||".")}`,files:[n.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),u(t),l(t),d(t),p(t),c(t),s(t),o(t),a(t),i(t)},Ae}function nn(){if(Oe)return Ie;Oe=1;const e=x;return Ie=async({atom:t,packageDependencies:n,packageDevDependencies:r,setProgress:a})=>{a("Initializing dependencies");const i=t.doc.dependencies||[];if(i.filter((e=>!e.dev)).forEach((e=>n.push(e))),i.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 rn(){if(Fe)return Me;Fe=1;const e=m,t=f,n=u;return Me=async({atom:r,setProgress:a,context:i,packageDependencies:o})=>{if(!0!==r.doc.features.app.enabled)return;await a({message:"Creating app folder"});const s={atom:r,packageDependencies:o,ts:Date.now()},c=i.templateDir,p=t.resolve(i.projectDir,"src/app");e.existsSync(p)||e.mkdirSync(p,{recursive:!0});let l=["index.js.njk"];!1!==r.doc.features.app.html&&l.push("index.html.njk"),await n({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:s})},Me}function an(){if(Ne)return qe;Ne=1;const e=P,t=S,n=m,r=f;return qe=async({projectDir:a,name:i,setProgress:o,count:s=1})=>{let c;const p=t(["npm-pick-versions",i,s]),l=r.join(a,".cache"),d=r.join(l,p+".json");return n.existsSync(d)?(o&&o(`Picking npm version of ${i} from cache ...`),c=JSON.parse(n.readFileSync(d,"utf8"))):(o&&o(`Picking npm version of ${i} ...`),c=await e({name:i,count:s}),n.mkdirSync(l,{recursive:!0}),n.writeFileSync(d,JSON.stringify(c),"utf8")),c}}function on(){if(Ue)return Le;Ue=1;const e=y,t=m,n=f,r=D,a=an();return Le=async({atom:i,context:o,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&&i.doc.features.react_version>=17&&(s.find((e=>"@emotion/react"===e.package))||s.push({package:"@emotion/react",version:"^11"}),s.find((e=>"@emotion/styled"===e.package))||s.push({package:"@emotion/styled",version:"^11"}));const u=[];!0===i.doc.features.app.enabled&&u.push({file:n.resolve(o.projectDir,"src/app/index.js"),dev:!1!==i.doc.features.app.dev}),!0===i.doc.features.cli.enabled&&u.push({file:n.resolve(o.projectDir,"src/cli/index.js"),dev:!1!==i.doc.features.cli.dev});for await(const e of u){const n=e.file;if(!t.existsSync(n))throw new Error(`App file not found: ${n}`);const i=(await r({file:n,recursive:!0})).all;for await(const t of i){if("npm"!==t.type)continue;if(s.find((e=>e.package===t.package)))continue;if(c.find((e=>e.package===t.package)))continue;const n=await a({name:t.package,projectDir:o.projectDir,setProgress:p});(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const m={atom:i,packageDependencies:s,packageDevDependencies:c},f=o.templateCommonDir,g=e.compile(t.readFileSync(n.resolve(f,"package.json.njk"),"utf8"),e.configure(f)).render(m),y=o.projectDir,h=n.resolve(y,"package.json");t.writeFileSync(h,g,"utf8");const w=n.resolve(o.project.projectDir,"fnet");if(t.existsSync(w)){const e=n.resolve(o.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const r=t.readdirSync(w);for(const a of r){const r=n.resolve(w,a);if(!t.lstatSync(r).isFile())continue;const i=n.resolve(e,a);t.copyFileSync(r,i)}}},Le}function sn(){if(ze)return Be;ze=1;const e=m,t=f,n=u;return Be=async({atom:r,setProgress:a,context:i,packageDependencies:o})=>{if(!0!==r.doc.features.cli.enabled)return;await a({message:"Creating cli."});const s={atom:r,packageDependencies:o},c=i.templateDir,p=t.resolve(i.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await n({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:p,context:s})},Be}function cn(){if(Ke)return He;Ke=1;const e=m,t=f,n=y,r=D;return He=async({atom:a,setProgress:i,context:o,packageDependencies:s})=>{await i({message:"Creating rollup file."});const c={atom:a,packageDependencies:s},p=t.resolve(o.projectDir,"src","default/index.js");if(!e.existsSync(p))throw new Error(`Entry file not found: ${p}`);const l=(await r({file:p,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=a.doc.features.rollup_output,u=Object.keys(d);for(let e=0;e<u.length;e++){const t=d[u[e]];if(!0===t.browser&&l.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(l.map((e=>({key:e,value:e})))),t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{};for(let e=0;e<l.length;e++){const n=l[e];t.alias.entries[n]=`node:${n}`,t.alias.entries[`node:${n}`]=n}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(l)}}const m=o.templateCommonDir;let f=n.compile(e.readFileSync(t.resolve(m,"rollup.config.mjs.njk"),"utf8"),n.configure(m)).render(c);const g=o.projectDir;let y=t.resolve(g,"rollup.config.mjs");e.writeFileSync(y,f,"utf8")},He}function pn(){if(Ye)return Ge;Ye=1;const e=m,t=f,n=y,r=A,a=E,i=$;return Ge=async({atom:o,setProgress:s,context:c,njEnv:p})=>{if(!0!==o.doc.features.cli.enabled)return;await s({message:"Creating yargs."});let l={};if(l=o.doc.input?o.doc.input:{type:"object",properties:{},required:[]},o.doc.features.cli.fargs&&!1!==o.doc.features.cli.fargs?.enabled){const e=o.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},n={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),l.properties&&(l.properties.fargs=t,l.properties.ftag=n)}const d={options:l,imports:[],atom:o},u=c.templateDir,m=n.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 r({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});i(y);const h=y.compile(l),w=a(y,h);e.writeFileSync(t.resolve(f,"src/default/validate_input.js"),w,"utf8")},Ge}function ln(){if(Ve)return Xe;Ve=1;const e=m,t=f,n=y;return Xe=async({atom:r,setProgress:a,context:i,packageDependencies:o})=>{await a({message:"Creating .gitignore"});const s={atom:r,packageDependencies:o},c=i.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),n.configure(c)).render(s),l=i.projectDir,d=t.resolve(l,".gitignore");e.writeFileSync(d,p,"utf8")},Xe}function dn(){if(Qe)return Ze;Qe=1;const e=m,t=f,n=y;return Ze=async({atom:r,setProgress:a,context:i,packageDependencies:o})=>{await a({message:"Creating tsconfig.json."});const s={atom:r,packageDependencies:o},c=i.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),n.configure(c)).render(s),l=i.projectDir,d=t.resolve(l,"tsconfig.json");e.writeFileSync(d,p,"utf8")},Ze}function un(){if(tt)return et;tt=1;const e=y,t=m,n=f,r=p;return et=async({atom:a,context:i,setProgress:o,Atom:s})=>{const c="readme.md",p=`Creating ${c}`;if(await o({message:p}),i.project?.readme){const a=i.projectDir,o={content:i.project.readme.doc.content},s=n.resolve(i.project.projectDir,"fnet/how-to.md");if(t.existsSync(s)){const e=t.readFileSync(s,"utf8");o.howto=e}const p=n.resolve(i.project.projectDir,"fnet/input.yaml");if(t.existsSync(p)){const e=await r({file:p,tags:i.tags});o.input=e.content}const l=i.templateCommonDir,d=e.compile(t.readFileSync(n.resolve(l,`${c}.njk`),"utf8"),e.configure(l)).render(o),u=n.resolve(a,`${c}`);t.writeFileSync(u,d,"utf8")}else if(a.id){const r=await s.first({type:"wiki",parent_id:a.id});if(!r||"markdown"!==r.doc?.["content-type"])return;const{content:o,...p}=r.doc,l={content:o},d=i.templateCommonDir,u=e.compile(t.readFileSync(n.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(l),m=i.projectDir,f=n.resolve(m,`${c}`);t.writeFileSync(f,u,"utf8")}},et}function mn(){if(rt)return nt;rt=1;const e=r,t=d;return nt=async({setProgress:n,context:r})=>{const a=r.projectDir;await n({message:"Prettifiying source files."});let i=e.join("src","**","*");await t({commands:{steps:[`prettier --write ${i} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:a}})}}function fn(){if(it)return at;it=1;const e=s;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!==e.exec("tsc",{cwd:a}).code)throw new Error("Couldnt create .d.ts files.")},at}function gn(){if(st)return ot;st=1;const e=s;return ot=async({setProgress:t,atom:n,context:r})=>{const a=r.projectDir;await t({message:"Installing npm packages."});if(0!==e.exec(`npm install ${n.doc.features.npm_install_flags}`,{cwd:a}).code)throw new Error("Couldnt install npm packages.")},ot}function yn(){if(pt)return ct;pt=1;const e=f,t=T,n=u;return ct=async r=>{const{setProgress:a,atom:i,context:o}=r;a({message:"Installing Python packages"});const s=o.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=i.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:i.doc.features.runtime.version||"3.12",packages:m});o.pythonEnv=g,r.packageDependencies=m;const y=i.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=i.doc.name,h.params.version="0.1.0",h.params.bin_name=i.doc.name,h.params.python_requires=i.doc.features.runtime.version||">=3.12",h.params.dependencies=m,h.params.scripts=JSON.stringify({cli:`PYTHONPATH='${e.join("src")}' '${e.relative(o.projectDir,g.pythonBin)}' '${e.join("src","cli","index.py")}'`}),await n({pattern:["setup.py.njk","package.json.njk","pyproject.toml.njk"],dir:o.templateDir,outDir:o.projectDir,context:h})},ct}function hn(){if(dt)return lt;dt=1;const e=s;return lt=async({setProgress:t,context:n})=>{const r=n.projectDir;await t({message:"Building main project."});if(0!==e.exec("npm run build",{cwd:r}).code)throw new Error("Couldnt build project.")}}function wn(){if(Kt)return Ht;Kt=1;const e=function(){if(mt)return ut;mt=1;const e=I,t=n;return ut=async({setProgress:n,context:r,deploymentProject:a,deploymentProjectTarget:i,buildId:o})=>{await n({message:"Deploying it as gitlab project."});const s=r.projectDir;let c="fnet-to-gitlab";const p=i.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='${i.params.name}'`,c+=` --projectBranch='${i.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==i.dryRun&&(await e({cmd:c}),a.isDirty=!0)}}(),t=function(){if(gt)return ft;gt=1;const e=m,t=f,r=O,a=I,i=n;return ft=async({setProgress:n,context:o,deploymentProject:s,deploymentProjectTarget:c,registerToPackageManager:p,yamlTarget:l})=>{await n({message:"Deploying it as gcs package."});const d=o.projectDir,u=t.resolve(d,"package.json"),m=e.readFileSync(u),f=JSON.parse(m);f.name=c.params.name,f.version=r.inc(c.version,"patch"),delete f.scripts,delete f.devDependencies,e.writeFileSync(u,JSON.stringify(f,null,"\t"));const{file:g,data:y}=await i({name:c.config||"gcs",dir:o.projectDir,tags:o.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 a({cmd:h}),e.writeFileSync(u,m),!0!==c.dryRun&&(s.isDirty=!0,c.version=f.version,l.set("version",f.version),await p({target:c,packageJSON:f}))}}(),a=function(){if(ht)return yt;ht=1;const e=m,t=f,r=O,a=s,i=n,c=C,p=l,d=o;return yt=async({atom:n,setProgress:o,context:s,deploymentProject:l,deploymentProjectTarget:u,yamlTarget:m})=>{await o({message:"Deploying it as npm package."});const f=s.projectDir,g=t.resolve(f,"package.json"),y=e.readFileSync(g),h=JSON.parse(y);h.name=u.params.name,h.version=r.inc(u.version,"patch");const w=u.params.bin?.name||u.params.bin;!1!==u.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=u.config||"npm";let b=(await i({name:v,dir:s.projectDir,tags:s.tags,optional:!0}))?.data;if(!b){const n=c({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===n.length)throw new Error("Couldnt find schema to create npm config");const r=await p({schema:n[0],tags:s.tags}),a=s.project.projectDir,i=t.resolve(a,".fnet");e.existsSync(i)||e.mkdirSync(i),e.writeFileSync(t.resolve(i,`${v}.fnet`),d.stringify(r)),b=r}if(e.writeFileSync(t.resolve(f,".npmrc"),`//registry.npmjs.org/:_authToken=${b.env.NPM_TOKEN}`),!0!==u.dryRun){if(0!==a.exec("npm publish --access public",{cwd:f}).code)throw new Error("Couldnt publish to npm");e.writeFileSync(g,y),l.isDirty=!0,u.version=h.version,m.set("version",h.version)}}}(),c=function(){if(vt)return wt;vt=1;const e=m,t=f,r=g,a=y,i=R,o=n;return wt=async({atom:n,setProgress:s,context:c,deploymentProject:p,deploymentProjectTarget:l,buildId:d,packageDependencies:u,njEnv:m})=>{await s({message:"Deploying it as node-red flow."});const f=c.projectDir,g=c.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||i.util.generateId(),label:`${y}/${n.id?n.id:r.hostname()}/${n.name}/${l.deploy.name||l.deploy.template}`},function:{id:i.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:i.util.generateId(),...l.params?.inject,payload:"json"===l.params?.inject?.payloadType?`'${JSON.stringify(l.params?.inject?.payload)}'`:l.params?.inject?.payload},debug:{id:i.util.generateId()}}};else if("cronjob"===l.deploy.template){let a=l.params?.schedules?cloneDeep(l.params?.schedules):void 0;a?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),h={atom:n,packageDependencies:u,red:{tab:{id:l.deploy.id||i.util.generateId(),label:`${y}/${n.id?n.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:i.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:i.util.generateId(),schedules:a},debug:{id:i.util.generateId()}}}}else{if("http"!==l.deploy.template)return;h={atom:n,packageDependencies:u,red:{tab:{id:l.deploy.id||i.util.generateId(),label:`${y}/${n.id?n.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:i.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:i.util.generateId(),method:l.params.method||"get",url:l.params.url},httpout:{id:i.util.generateId()},debug:{id:i.util.generateId()}}}}let w=a.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 o({name:c.redConfig||"red",dir:c.projectDir,tags:c.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}(),p=function(){if(jt)return bt;jt=1;const e=i,t=r,a=n;return bt=async({atom:n,Atom:r,setProgress:i,context:o,packageDependencies:s,deploymentProject:c,deploymentProjectTarget:p})=>{await i({message:"Deploying it as workflow lib."});const l=(await a({name:"atom",dir:o.projectDir,tags:o.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 r.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 r.get({id:p.deploy.id}),!d)return}else{if(d=await r.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=o.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"===n.type?d.doc.subtype="library":"workflow"===n.type&&(d.doc.subtype="workflow"),d=await r.update(d,{id:d.id})}}(),d=function(){if(kt)return _t;kt=1;const e=n,t=M,r=F,a=O;return _t=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as ios-app package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},_t}(),u=function(){if(xt)return Dt;xt=1;const e=n,t=q,r=F,a=O;return Dt=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as macos-app package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},Dt}(),h=function(){if(St)return Pt;St=1;const e=n,t=N,r=F,a=O;return Pt=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as electron package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,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=n,t=L,r=F,a=O;return At=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as webos package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,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=n,t=U,r=F,a=O;return $t=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as nextjs package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,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=n,t=B,r=F,a=O;return It=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as docker package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},It}(),_=function(){if(Rt)return Ct;Rt=1;const e=m,t=f,r=O,a=I,i=n,o=j.default;return Ct=async({setProgress:n,context:s,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet package."});const d=s.projectDir,u=t.resolve(d,"package.json"),m=e.readFileSync(u),f=JSON.parse(m);f.name=p.params.name,f.version=r.inc(p.version,"patch"),delete f.scripts,delete f.devDependencies,e.writeFileSync(u,JSON.stringify(f,null,"\t"));const{file:g,data:y}=await i({name:p.config||"fnet-package",dir:s.projectDir,tags:s.tags});if(!y.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${g}`);if(!y.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${g}`);if(!y.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${g}`);const h=`${y.env.ATOM_API_URL}/v1/auth/token`,w=y.env.ATOM_API_USERNAME,v=y.env.ATOM_API_PASSWORD;let b=await o({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 a({cmd:_}),e.writeFileSync(u,m),!0===p.dryRun)return;c.isDirty=!0,p.version=f.version,l.set("version",f.version);const k=`${y.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(b=await o({method:"POST",url:k,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.")}}(),k=function(){if(Ft)return Mt;Ft=1;const e=O,t=n,r=j.default;return Mt=async({setProgress:n,context:a,deploymentProject:i,deploymentProjectTarget:o,yamlTarget:s})=>{await n({message:"Deploying it as fnet form."});const{file:c,data:p}=await t({name:o.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 r({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}`);i.isDirty=!0;const g=e.inc(o.version,"patch");o.params.version=g,o.version=g,s.set("version",g);const y=`${p.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(m=await r({method:"POST",url:y,data:{name:o.params.name,version:o.params.version,docs:o.params.docs,configs:o.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${f}`}}),m.data?.error)throw new Error("Error publishing fnet form.")}}(),D=function(){if(Nt)return qt;Nt=1;const e=O,t=n,r=j.default,a=i,o=I,s=z;return qt=async({setProgress:n,context:i,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet flow."});const{file:d,data:u}=await t({name:p.config||"fnet-flow",dir:i.project.projectDir,tags:i.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 r({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 r({method:"POST",url:v,data:{name:p.params.name,version:p.params.version,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`}}),y.data?.error)throw new Error("Error publishing fnet flow.");const b=y.data?.upload.id;let j="fnet-dir-zipper";j+=` --sourceDir='${i.project.projectDir}'`,j+=" -p=**/*",j+=" -g",j+=" --stdout_format=json";const _=await o({cmd:j});if(0!==_.code)throw new Error(_.stderr);const k=JSON.parse(_.stdout).path;let D=new s;D.append("file",a.createReadStream(k));const x=await r.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...D.getHeaders(),Authorization:`Bearer ${h}`},data:D});if(x.data?.error)throw new Error("Error uploading fnet flow.")}}(),x=function(){if(Ut)return Lt;Ut=1;const e=O,t=n,r=j.default,a=i,o=I,s=z;return Lt=async({setProgress:n,context:i,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet node."});const{file:d,data:u}=await t({name:p.config||"fnet-node",dir:i.project.projectDir,tags:i.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 r({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 r({method:"POST",url:v,data:{name:p.params.name,version:p.params.version,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`}}),y.data?.error)throw new Error("Error publishing fnet node.");const b=y.data?.upload.id;let j="fnet-dir-zipper";j+=` --sourceDir='${i.project.projectDir}'`,j+=" -p=**/*",j+=" -g",j+=" --stdout_format=json";const _=await o({cmd:j});if(0!==_.code)throw new Error(_.stderr);const k=JSON.parse(_.stdout).path;let D=new s;D.append("file",a.createReadStream(k));const x=await r.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...D.getHeaders(),Authorization:`Bearer ${h}`},data:D});if(x.data?.error)throw new Error("Error uploading fnet node.")}}(),P=function(){if(zt)return Bt;zt=1;const e=n,t=J,r=F,a=O;return Bt=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as Rust package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},Bt}(),S=function(){if(Wt)return Jt;Wt=1;const e=n,t=W,r=F,a=O;return Jt=async({atom:n,target:i,onProgress:o,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{o&&await o({message:"Deploying it as pypi package."});const d=i?.config?await e({name:i.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(i.version||"0.1.0","patch");i.params.version=u,i.version=u,l.set("version",u);const m=r(i.params);m.dependencies=r(c);const f={atom:n,params:m,config:d?.config,src:s,dest:s};return{deployer:await t(f)}},Jt}();return Ht=async n=>{const{atom:r,packageDependencies:i,context:o,deploymentProjectTarget:s,setProgress:l,deploymentProject:m,yamlTarget:f}=n;if(!0===s.enabled)if("lib"===s.type)await p({...n});else if("red"===s.type)await c({...n});else if("npm"===s.type)await a({...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 k({...n});else if("fnet-node"===s.type)await x({...n});else if("fnet-flow"===s.type)await D({...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=d:"macos"===s.type?e=u:"rust"===s.type?e=P:"pypi"===s.type&&(e=S),!e)return;await e({atom:r,target:s,onProgress:l,projectDir:o.projectDir,dependencies:i,context:o,yamlTarget:f}),m.isDirty=!0}},Ht}function vn(){if(Yt)return Gt;Yt=1;const e=m,t=f,r=g,a=o,i=y,s=function(){if(V)return X;V=1;const e=h,t=w;return X=async()=>{if(!await t({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const n=e.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await n.connect(),n}}(),{nanoid:c}=v,p=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(((i,o)=>{if(e.set_api_url(r.data.url),a)return e.set_req_token(a),void i(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),i(t.data.access_token)})).catch((t=>{e.set_req_token(),o(t)}))}))}}}(),l=tn(),d=(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),k=nn(),x=Re?Ce:(Re=1,Ce=async({atom:e,packageDependencies:t,packageDevDependencies:n,setProgress:r})=>{r("Initializing dependencies")}),P=rn(),S=on(),A=sn(),E=function(){if(We)return Je;We=1;const e=m,t=f,n=u;return Je=async({atom:r,setProgress:a,context:i,packageDependencies:o})=>{if(!0!==r.doc.features.cli.enabled)return;await a({message:"Creating cli."});const s={atom:r,packageDependencies:o},c=i.templateDir,p=t.join(i.projectDir,"src","cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await n({pattern:["index.py.njk","__init__.py.njk"],dir:t.join(c,"src","cli"),outDir:p,context:s})},Je}(),$=cn(),T=pn(),I=ln(),O=dn(),C=un(),R=mn(),M=fn(),F=gn(),q=yn(),N=hn(),L=an(),U=wn(),{Atom:B}=b,z=H,J=n,W=D,Y=K,ee=G;return Gt=class{#e;#t;#n;#r;#a;#i;#o;#s;#c;#p;#l;#d;#u;#m;#f;#g;#y;constructor(e){this.#e=new p,this.#t=e,this.#i=[],this.#o=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#i,packageDevDependencies:this.#o,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=Y({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 a=Y({dir:n,ignore:[".cache","node_modules",".conda"],absolute:!0});for(const t of a)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."});let i=n;e.existsSync(i)||e.mkdirSync(i,{recursive:!0}),i=t.join(n,"src"),e.existsSync(i)||e.mkdirSync(i,{recursive:!0}),i=t.join(n,"src","default");const o=this.#t.projectSrcDir;if(!e.existsSync(i))try{"win32"===r.platform()?e.symlinkSync(o,i,"junction"):e.symlinkSync(o,i,"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=i.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.#i})}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 i=a.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));i?.forEach((e=>{const n=t.find((t=>t.package===e.package));n?"string"==typeof e.path?(n.path||[]).some((t=>t===e.path))||(n.path=n.path||[],n.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(n.path||[]).some((t=>t===e))||(n.path=n.path||[],n.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){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 W({file:n,recursive:!0}),a=e.doc.dependencies,i=r.all;for await(const e of i){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,i=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(i)}/src`}else{const n=t.join(i,"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=i.compile(e.readFileSync(t.resolve(r,t.join("src","default","engine.js.njk")),"utf8"),this.#r).render(n),o=this.#t.projectDir,s=t.resolve(o,t.join("src","default","index.js"));e.writeFileSync(s,a,"utf8")}async createProjectYaml(){const n="node.yaml",r=`Creating ${n}`;await this.setProgress({message:r});const{content:o,...s}=this.#n.doc,c={content:a.stringify(s)},p=this.#t.templateDir,l=i.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 i=a.get(r[e]);await U({...this.#y,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:i})}}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 l(this.#y),await k(this.#y),await this.initLibraryDir(),await this.initNunjucks(),await this.initLibs()}async initPython(){await d(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 R(this.#y),await M(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 s(),this.#c=this.#t.buildId||c(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 bn=Y(function(){if(Zt)return Qt;Zt=1;const g=process.cwd(),{spawn:y}=e,h=t;n({name:["redis"],dir:g,optional:!0});const w=r,v=a,b=i,j=o,_=s,k=c,D=p,x=n,P=l,S=d,A=u,E=vn(),$=function(){if(Vt)return Xt;Vt=1;const e=m,t=f;return Xt=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}),T="win32"===process.platform?";":":";process.env.PATH=`${w.join($,"/.bin")}${T}${process.env.PATH}`;let I=v(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=w.resolve($,"@fnet/cli-project-node/dist/template/project"),n=w.resolve(g,e.name);b.existsSync(n)||b.mkdirSync(n),await A({dir:t,outDir:n,context:{name:e.name,runtime:e.runtime,platform:k.platform()},copyUnmatchedAlso:!0});let r=_.exec("fnode build",{cwd:n});if(0!==r.code)throw new Error("Failed to build project.");if(_.which("git")&&(r=_.exec("git init --initial-branch=main",{cwd:n}),0!==r.code))throw new Error("Failed to initialize git.");if(_.which("code")&&e.vscode&&(r=_.exec(`cd ${n} && code .`),0!==r.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})).command("project","Flow node project",(e=>e.option("update",{type:"boolean",default:!1,alias:"-u"})),(async e=>{try{const t=w.resolve($,"@fnet/cli-project-node/dist/template/project"),n=process.cwd(),r=await R(e);if(e.update){if(await A({dir:t,outDir:n,context:{name:r.project.projectFileParsed.name,runtime:r.project.runtime.type,platform:k.platform()},copyUnmatchedAlso:!0}),0!==_.exec("fnode build",{cwd:n}).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(e){console.error("Project failed.",e.message),process.exit(1)}})).command("build","Build flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"]}).option("ftag",{type:"array"})),(async e=>{try{const t=await R(e),n=new E(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 E(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 E(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 O(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,i=e=>e.includes(" ")?"win32"===process.platform?`"${e.replace(/(["^])/g,"^$1")}"`:`"${e.replace(/(["\\$`])/g,"\\$1")}"`:e,o=process.argv.slice(3).map(i);y(n,[...r,...o],{cwd:a,stdio:"inherit",shell:!0}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(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 a=await R(e),{projectDir:i}=a,o=e=>e.includes(" ")?"win32"===process.platform?`"${e.replace(/(["^])/g,"^$1")}"`:`"${e.replace(/(["\\$`])/g,"\\$1")}"`:e,s=process.argv.slice(3).map(o);n=w.join(i,".conda","bin",n||t);y(n,[...r,...s],{cwd:i,stdio:"inherit",shell:!0,env:{PYTHONPATH:i}}).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:w.resolve($,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:w.resolve($,"./@fnet/cli-project-common/dist/template/default"),projectDir:w.resolve(g,`./.output/${e.id}`),tags:e.ftag};{const t=await async function({tags:e}){const t=w.resolve(g,"node.yaml");if(!b.existsSync(t))throw new Error("node.yaml file not found in current directory.");const{raw:n,parsed:r}=await D({file:t,tags:e}),a=w.dirname(t);r.features=r.features||{};const i=r.features;i.runtime=i.runtime||{},i.runtime.type=i.runtime.type||"node","python"===i.runtime.type?i.runtime.template=i.runtime.template||"python":i.runtime.template=i.runtime.template||"default";const o={libraryAtom:{doc:{...r},fileName:"index"},projectDir:a,projectFilePath:t,projectFileContent:n,projectFileParsed:r,runtime:i.runtime};let s=w.resolve(a,"fnet/targets.yaml");if(!b.existsSync(s)&&(s=w.resolve(a,"node.devops.yaml"),b.existsSync(s))){const e=w.resolve(a,"fnet");b.existsSync(e)||b.mkdirSync(e),b.copyFileSync(s,w.resolve(a,"fnet/targets.yaml")),b.unlinkSync(s)}if(b.existsSync(s)){const{raw:t,parsed:n}=await D({file:s,tags:e}),r=j.parseDocument(t);o.devops={filePath:s,fileContent:t,yamlDocument:r,doc:{...n},type:"library.deploy",save:async()=>{b.writeFileSync(o.devops.filePath,r.toString())}}}const c=w.resolve(a,"readme.md");if(b.existsSync(c)){const e=b.readFileSync(c,"utf8");o.readme={filePath:c,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return o}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:w.resolve($,`./@fnet/cli-project-node/dist/template/${t.runtime.template}`),templateCommonDir:w.resolve($,`./@fnet/cli-project-common/dist/template/${t.runtime.template}`),projectDir:w.resolve(t.projectDir,"./.workspace"),projectSrcDir:w.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:a}=n,i=a.input;if(!i)throw new Error("Config schema not found in project file.");if(!Reflect.has(e,"name")){const{inputName:t}=await h({type:"input",name:"inputName",message:"Input name:",initial:"dev"});e.name=t}const o=w.resolve(r,".fnet");b.existsSync(o)||b.mkdirSync(o);const s=w.resolve(o,`${e.name}.fnet`),c=b.existsSync(s),p=await P({schema:i,format:"yaml",ref:c?s:void 0});b.writeFileSync(s,p)}catch(e){console.error(e.message),process.exit(1)}})),I=O(I,{bin:"npm"}),I=O(I,{bin:"node"}),I=O(I,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),I=O(I,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),I=O(I,{name:"app",bin:"npm",preArgs:["run","app","--"]}),I=O(I,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),I=O(I,{bin:"npx"}),I=O(I,{bin:"cdk"}),I=O(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,a=e.config,i=await x({name:a,dir:r,transferEnv:!1,optional:!0,tags:t.tags}),o=i?.data?.env||void 0,s=e.command,c=process.argv.slice(5);y(s,[...n,...c],{cwd:b.existsSync(r)?r:g,stdio:"inherit",shell:!0,env:{...process.env,...o}}).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,a=r.commands;if(!a)throw new Error("Commands not found in project file.");const i=a[e.group];if(!i)throw new Error(`Command group '${e.group}' not found in project file.`);await S({commands:i})}catch(e){console.error(e.message),process.exit(1)}}))}(I,{name:"run"}),I=C(I,{name:"python"}),I=C(I,{name:"python3"}),I=C(I,{name:"pip"}),I=C(I,{name:"pip3"}),I.demandCommand(1,"You need at least one command before moving on").help().argv,Qt}());module.exports=bn;
|
package/dist/builder/wf-cli.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var e=require("child_process"),t=require("@fnet/prompt"),n=require("@fnet/config"),o=require("path"),i=require("yargs/yargs"),r=require("fs"),s=require("yaml"),a=require("shelljs"),c=require("@fnet/yaml"),p=require("@fnet/object-from-schema"),l=require("@fnet/shell-flow"),d=require("@flownet/lib-render-templates-dir"),f=require("node:fs"),m=require("node:path"),u=require("nunjucks"),h=require("lodash.clonedeep"),y=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"),$=require("ajv-formats"),T=require("@fnet/shell"),O=require("semver"),N=require("@fnet/up-list-files"),I=require("node:os"),C=require("@node-red/util"),F=require("@flownet/lib-to-ios-app"),R=require("@flownet/lib-to-macos-app"),M=require("@flownet/lib-to-electron"),q=require("@flownet/lib-to-webos"),B=require("@flownet/lib-to-nextjs"),K=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"),W=require("bpmn-moddle"),G=require("dagre"),X=require("@fnet/expression"),V=require("chalk"),H=require("@fnet/list-files"),Y=require("@fnet/key-value-transformer"),Z=require("lodash.pick"),Q=require("lodash.omit");function ee(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var 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,Ae,$e,Te,Oe,Ne,Ie,Ce,Fe,Re,Me,qe,Be,Ke,Le,Ue,Je,ze,We,Ge,Xe,Ve,He,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,At,$t,Tt,Ot,Nt,It,Ct,Ft,Rt,Mt,qt,Bt,Kt,Lt,Ut,Jt,zt={};function Wt(){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 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]})))},re}function Gt(){if(Ie)return Ne;Ie=1;const e=j,t=f,n=m,o=_,i=function(){if(ce)return ae;ce=1;const e=Wt();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}(),r=function(){if(le)return pe;le=1;const e=Wt();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}(),s=function(){if(fe)return de;fe=1;const e=Wt();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}(),a=function(){if(ue)return me;ue=1;const e=Wt();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}(),c=function(){if(ye)return he;ye=1;const e=Wt();return he=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})},he}(),p=function(){if(we)return ge;we=1;const e=Wt();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}(),l=function(){if(ve)return be;ve=1;const e=Wt();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}(),d=function(){if(ke)return xe;ke=1;const e=Wt();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=Wt();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}(),h=function(){if(Ee)return De;Ee=1;const e=Wt();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}(),y=function(){if(Se)return Pe;Se=1;const e=Wt();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($e)return Ae;$e=1;const e=Wt();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 Te;Oe=1;const e=Wt();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:o="index"}){let i=n.resolve(e,`./${o}.tsx`);if(t.existsSync(i)||(i=n.resolve(e,`./${o}.ts`)),t.existsSync(i)||(i=n.resolve(e,`./${o}.jsx`)),t.existsSync(i)||(i=n.resolve(e,`./${o}.js`)),!t.existsSync(i))return{};const r=i,s=n.extname(i);return{file:r,ext:s,ts:".ts"===s||".tsx"===s,name:o}}return Ne=async t=>{const{atom:f,context:m,setProgress:v}=t;v("Initializing features..."),f.doc.features=f.doc.features||{};const x=f.doc.features;x.project=x.project||{},x.project.format=x.project.format||x.project_format||"esm",x.project_format=x.project.format,x.dts_enabled=!0===x.dts||void 0!==x.dts&&!1!==x.dts;const k=n.resolve(m.project.projectDir),j=b({dir:n.resolve(k,"./app")});if(j.file){v("Parsing app entry imports...");let e=await o({file:j.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));x.app_uses_jsx=t,x.app_has_entry=!0,e=await o({file:j.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),x.app_entry_uses_jsx=t,x.app_entry_is_ts=j.ts,x.app_entry_ext=j.ext}const _=b({dir:n.resolve(k,"./cli")});if(_.file){v("Parsing cli entry imports...");let e=await o({file:_.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));x.cli_uses_jsx=t,x.cli_has_entry=!0,e=await o({file:_.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),x.cli_entry_uses_jsx=t,x.cli_entry_is_ts=_.ts,x.cli_entry_ext=_.ext}if("workflow.lib"===f.type){const e=b({dir:n.resolve(k,"./src")});if(e.file){v("Parsing src entry imports...");let t=await o({file:e.file,recursive:!0}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));x.src_uses_jsx=n,x.src_has_entry=!0,t=await o({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),x.src_entry_uses_jsx=n,x.src_entry_is_ts=e.ts,x.src_entry_ext=e.ext}}const D=Reflect.has(x,"app_entry_uses_jsx")?!0===x.app_entry_uses_jsx:!0===x.src_entry_uses_jsx,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===f.doc.features.form_enabled||!0===x.app.extend||!0===x.app.enabled),x.app.format=x.app.format||"esm",x.app.folder=x.app.folder||x.app.format||"default",!1===x.cli?x.cli={enabled:!1}:!0===x.cli?x.cli={enabled:!0,extend:!0===x.cli_has_entry,export:!0,react: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===f.doc.features.form_enabled||!0===x.cli.extend||!0===x.cli.enabled),x.cli.format=x.cli.format||"esm",x.cli.folder=x.cli.folder||x.cli.folder||"esm",x.cli.node_options=x.cli.node?.options||x.cli.node_options||"",x.json=x.cli.enabled||x.json;const P={cjs:{format:"cjs",context:x.form_enabled?"window":"global",babel:!0===x.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==x.cjs,copy:!1},esm:{format:"esm",context:x.form_enabled?"window":"global",babel:!0===x.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!1!==x.esm,copy:!0},iife:{format:"iife",context:x.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!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"}),!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:`${n.normalize(x.app.dir||".")}`,files:[n.normalize("./dist/**/*")],cors:!0,open:!1};x.babel_options=e({targets:{browsers:"last 9 versions, not dead",node:"18"}},x.babel_options||x.babel?.options),x.browsersync_options=e(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),y(t),h(t),u(t),l(t),d(t),p(t),c(t),a(t),s(t),i(t),r(t)},Ne}function Xt(){if(Fe)return Ce;Fe=1;const e=D;return Ce=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"})},Ce}function Vt(){if(Me)return Re;Me=1;const e=f,t=m,n=d;return Re=async({atom:o,setProgress:i,context:r,packageDependencies:s})=>{if(!0!==o.doc.features.app.enabled)return;await i({message:"Creating app folder"});const a={atom:o,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!==o.doc.features.app.html&&l.push("index.html.njk"),await n({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:a})},Re}function Ht(){if(Be)return qe;Be=1;const e=E,t=P,n=f,o=m;return qe=async({projectDir:i,name:r,setProgress:s,count:a=1})=>{let c;const p=t(["npm-pick-versions",r,a]),l=o.join(i,".cache"),d=o.join(l,p+".json");return n.existsSync(d)?(s&&s(`Picking npm version of ${r} from cache ...`),c=JSON.parse(n.readFileSync(d,"utf8"))):(s&&s(`Picking npm version of ${r} ...`),c=await e({name:r,count:a}),n.mkdirSync(l,{recursive:!0}),n.writeFileSync(d,JSON.stringify(c),"utf8")),c},qe}function Yt(){if(Le)return Ke;Le=1;const e=u,t=f,n=m,o=_,i=Ht();return Ke=async({atom:r,context:s,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&&r.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===r.doc.features.app.enabled&&f.push({file:n.resolve(s.projectDir,"src/app/index.js"),dev:!1!==r.doc.features.app.dev}),!0===r.doc.features.cli.enabled&&f.push({file:n.resolve(s.projectDir,"src/cli/index.js"),dev:!1!==r.doc.features.cli.dev});for await(const e of f){const n=e.file;if(!t.existsSync(n))throw new Error(`App file not found: ${n}`);const r=(await o({file:n,recursive:!0})).all;for await(const t of r){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 i({name:t.package,projectDir:s.projectDir,setProgress:p});(!0===e.dev?c:a).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const m={atom:r,packageDependencies:a,packageDevDependencies:c},u=s.templateCommonDir,h=e.compile(t.readFileSync(n.resolve(u,"package.json.njk"),"utf8"),e.configure(u)).render(m),y=s.projectDir,g=n.resolve(y,"package.json");t.writeFileSync(g,h,"utf8");const w=n.resolve(s.project.projectDir,"fnet");if(t.existsSync(w)){const e=n.resolve(s.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const o=t.readdirSync(w);for(const i of o){const o=n.resolve(w,i);if(!t.lstatSync(o).isFile())continue;const r=n.resolve(e,i);t.copyFileSync(o,r)}}},Ke}function Zt(){if(Je)return Ue;Je=1;const e=f,t=m,n=d;return Ue=async({atom:o,setProgress:i,context:r,packageDependencies:s})=>{if(!0!==o.doc.features.cli.enabled)return;await i({message:"Creating cli."});const a={atom:o,packageDependencies:s},c=r.templateDir,p=t.resolve(r.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await n({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:p,context:a})},Ue}function Qt(){if(We)return ze;We=1;const e=f,t=m,n=u,o=_;return ze=async({atom:i,setProgress:r,context:s,packageDependencies:a})=>{await r({message:"Creating rollup file."});const c={atom:i,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 o({file:p,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=i.doc.features.rollup_output,f=Object.keys(d);for(let e=0;e<f.length;e++){const t=d[f[e]];if(!0===t.browser&&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=n.compile(e.readFileSync(t.resolve(m,"rollup.config.mjs.njk"),"utf8"),n.configure(m)).render(c);const h=s.projectDir;let y=t.resolve(h,"rollup.config.mjs");e.writeFileSync(y,u,"utf8")},ze}function en(){if(Xe)return Ge;Xe=1;const e=f,t=m,n=u,o=S,i=A,r=$;return Ge=async({atom:s,setProgress:a,context:c,njEnv:p})=>{if(!0!==s.doc.features.cli.enabled)return;await a({message:"Creating yargs."});let l={};if(l=s.doc.input?s.doc.input:{type:"object",properties:{},required:[]},s.doc.features.cli.fargs&&!1!==s.doc.features.cli.fargs?.enabled){const e=s.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},n={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),l.properties&&(l.properties.fargs=t,l.properties.ftag=n)}const d={options:l,imports:[],atom:s},f=c.templateDir,m=n.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 o({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});r(y);const g=y.compile(l),w=i(y,g);e.writeFileSync(t.resolve(u,"src/default/validate_input.js"),w,"utf8")},Ge}function tn(){if(He)return Ve;He=1;const e=f,t=m,n=u;return Ve=async({atom:o,setProgress:i,context:r,packageDependencies:s})=>{await i({message:"Creating .gitignore"});const a={atom:o,packageDependencies:s},c=r.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),n.configure(c)).render(a),l=r.projectDir,d=t.resolve(l,".gitignore");e.writeFileSync(d,p,"utf8")},Ve}function nn(){if(Ze)return Ye;Ze=1;const e=f,t=m,n=u;return Ye=async({atom:o,setProgress:i,context:r,packageDependencies:s})=>{await i({message:"Creating tsconfig.json."});const a={atom:o,packageDependencies:s},c=r.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),n.configure(c)).render(a),l=r.projectDir,d=t.resolve(l,"tsconfig.json");e.writeFileSync(d,p,"utf8")},Ye}function on(){if(et)return Qe;et=1;const e=u,t=f,n=m,o=c;return Qe=async({atom:i,context:r,setProgress:s,Atom:a})=>{const c="readme.md",p=`Creating ${c}`;if(await s({message:p}),r.project?.readme){const i=r.projectDir,s={content:r.project.readme.doc.content},a=n.resolve(r.project.projectDir,"fnet/how-to.md");if(t.existsSync(a)){const e=t.readFileSync(a,"utf8");s.howto=e}const p=n.resolve(r.project.projectDir,"fnet/input.yaml");if(t.existsSync(p)){const e=await o({file:p,tags:r.tags});s.input=e.content}const l=r.templateCommonDir,d=e.compile(t.readFileSync(n.resolve(l,`${c}.njk`),"utf8"),e.configure(l)).render(s),f=n.resolve(i,`${c}`);t.writeFileSync(f,d,"utf8")}else if(i.id){const o=await a.first({type:"wiki",parent_id:i.id});if(!o||"markdown"!==o.doc?.["content-type"])return;const{content:s,...p}=o.doc,l={content:s},d=r.templateCommonDir,f=e.compile(t.readFileSync(n.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(l),m=r.projectDir,u=n.resolve(m,`${c}`);t.writeFileSync(u,f,"utf8")}},Qe}function rn(){if(nt)return tt;nt=1;const e=o,t=l;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 sn(){if(it)return ot;it=1;const e=a;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!==e.exec("tsc",{cwd:i}).code)throw new Error("Couldnt create .d.ts files.")},ot}function an(){if(st)return rt;st=1;const e=a;return rt=async({setProgress:t,atom:n,context:o})=>{const i=o.projectDir;await t({message:"Installing npm packages."});if(0!==e.exec(`npm install ${n.doc.features.npm_install_flags}`,{cwd:i}).code)throw new Error("Couldnt install npm packages.")},rt}function cn(){if(ct)return at;ct=1;const e=a;return at=async({setProgress:t,context:n})=>{const o=n.projectDir;await t({message:"Building main project."});if(0!==e.exec("npm run build",{cwd:o}).code)throw new Error("Couldnt build project.")}}function pn(){if(Jt)return Ut;Jt=1;const e=function(){if(lt)return pt;lt=1;const e=T,t=n;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({cmd:c}),i.isDirty=!0)}}(),t=function(){if(ft)return dt;ft=1;const e=f,t=m,o=O,i=T,r=n;return dt=async({setProgress:n,context:s,deploymentProject:a,deploymentProjectTarget:c,registerToPackageManager:p,yamlTarget:l})=>{await n({message:"Deploying it as gcs package."});const d=s.projectDir,f=t.resolve(d,"package.json"),m=e.readFileSync(f),u=JSON.parse(m);u.name=c.params.name,u.version=o.inc(c.version,"patch"),delete u.scripts,delete u.devDependencies,e.writeFileSync(f,JSON.stringify(u,null,"\t"));const{file:h,data:y}=await r({name:c.config||"gcs",dir:s.projectDir,tags:s.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 i({cmd:g}),e.writeFileSync(f,m),!0!==c.dryRun&&(a.isDirty=!0,c.version=u.version,l.set("version",u.version),await p({target:c,packageJSON:u}))}}(),i=function(){if(ut)return mt;ut=1;const e=f,t=m,o=O,i=a,r=n,c=N,l=p,d=s;return mt=async({atom:n,setProgress:s,context:a,deploymentProject:p,deploymentProjectTarget:f,yamlTarget:m})=>{await s({message:"Deploying it as npm package."});const u=a.projectDir,h=t.resolve(u,"package.json"),y=e.readFileSync(h),g=JSON.parse(y);g.name=f.params.name,g.version=o.inc(f.version,"patch");const w=f.params.bin?.name||f.params.bin;!1!==f.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(h,JSON.stringify(g,null,"\t"));const b=f.config||"npm";let v=(await r({name:b,dir:a.projectDir,tags:a.tags,optional:!0}))?.data;if(!v){const n=c({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===n.length)throw new Error("Couldnt find schema to create npm config");const o=await l({schema:n[0],tags:a.tags}),i=a.project.projectDir,r=t.resolve(i,".fnet");e.existsSync(r)||e.mkdirSync(r),e.writeFileSync(t.resolve(r,`${b}.fnet`),d.stringify(o)),v=o}if(e.writeFileSync(t.resolve(u,".npmrc"),`//registry.npmjs.org/:_authToken=${v.env.NPM_TOKEN}`),!0!==f.dryRun){if(0!==i.exec("npm publish --access public",{cwd:u}).code)throw new Error("Couldnt publish to npm");e.writeFileSync(h,y),p.isDirty=!0,f.version=g.version,m.set("version",g.version)}}}(),c=function(){if(yt)return ht;yt=1;const e=f,t=m,o=I,i=u,r=C,s=n;return ht=async({atom:n,setProgress:a,context:c,deploymentProject:p,deploymentProjectTarget:l,buildId:d,packageDependencies:f,njEnv:m})=>{await a({message:"Deploying it as node-red flow."});const u=c.projectDir,h=c.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||r.util.generateId(),label:`${y}/${n.id?n.id:o.hostname()}/${n.name}/${l.deploy.name||l.deploy.template}`},function:{id:r.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:r.util.generateId(),...l.params?.inject,payload:"json"===l.params?.inject?.payloadType?`'${JSON.stringify(l.params?.inject?.payload)}'`:l.params?.inject?.payload},debug:{id:r.util.generateId()}}};else if("cronjob"===l.deploy.template){let i=l.params?.schedules?cloneDeep(l.params?.schedules):void 0;i?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),g={atom:n,packageDependencies:f,red:{tab:{id:l.deploy.id||r.util.generateId(),label:`${y}/${n.id?n.id:o.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:r.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:r.util.generateId(),schedules:i},debug:{id:r.util.generateId()}}}}else{if("http"!==l.deploy.template)return;g={atom:n,packageDependencies:f,red:{tab:{id:l.deploy.id||r.util.generateId(),label:`${y}/${n.id?n.id:o.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:r.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:r.util.generateId(),method:l.params.method||"get",url:l.params.url},httpout:{id:r.util.generateId()},debug:{id:r.util.generateId()}}}}let w=i.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 s({name:c.redConfig||"red",dir:c.projectDir,tags:c.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}},ht}(),l=function(){if(wt)return gt;wt=1;const e=r,t=o,i=n;return gt=async({atom:n,Atom:o,setProgress:r,context:s,packageDependencies:a,deploymentProject:c,deploymentProjectTarget:p})=>{await r({message:"Deploying it as workflow lib."});const l=(await i({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 o.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 o.get({id:p.deploy.id}),!d)return}else{if(d=await o.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"===n.type?d.doc.subtype="library":"workflow"===n.type&&(d.doc.subtype="workflow"),d=await o.update(d,{id:d.id})},gt}(),d=function(){if(vt)return bt;vt=1;const e=n,t=F,o=h,i=O;return bt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},bt}(),y=function(){if(kt)return xt;kt=1;const e=n,t=R,o=h,i=O;return xt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,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=n,t=M,o=h,i=O;return jt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,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=n,t=q,o=h,i=O;return Dt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,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=n,t=B,o=h,i=O;return Pt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},Pt}(),v=function(){if($t)return At;$t=1;const e=n,t=K,o=h,i=O;return At=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},At}(),k=function(){if(Ot)return Tt;Ot=1;const e=f,t=m,o=O,i=T,r=n,s=x.default;return Tt=async({setProgress:n,context:a,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet package."});const d=a.projectDir,f=t.resolve(d,"package.json"),m=e.readFileSync(f),u=JSON.parse(m);u.name=p.params.name,u.version=o.inc(p.version,"patch"),delete u.scripts,delete u.devDependencies,e.writeFileSync(f,JSON.stringify(u,null,"\t"));const{file:h,data:y}=await r({name:p.config||"fnet-package",dir:a.projectDir,tags:a.tags});if(!y.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${h}`);if(!y.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${h}`);if(!y.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${h}`);const g=`${y.env.ATOM_API_URL}/v1/auth/token`,w=y.env.ATOM_API_USERNAME,b=y.env.ATOM_API_PASSWORD;let v=await s({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='${y.env.GCS_PROJECT_ID}'`,k+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,k+=` --keyFilename='${t.resolve(t.dirname(h),y.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'",y.env.DOMAIN&&(k+=` --domain='${y.env.DOMAIN}'`),!0!==p.dry_run&&!0!==p.params.dry_run||(k+=" --dryRun"),await i({cmd:k}),e.writeFileSync(f,m),!0===p.dryRun)return;c.isDirty=!0,p.version=u.version,l.set("version",u.version);const j=`${y.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(v=await s({method:"POST",url:j,data:{name:u.name,version:u.version,version_domain:y.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(It)return Nt;It=1;const e=O,t=n,o=x.default;return Nt=async({setProgress:n,context:i,deploymentProject:r,deploymentProjectTarget:s,yamlTarget:a})=>{await n({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 o({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 h=e.inc(s.version,"patch");s.params.version=h,s.version=h,a.set("version",h);const y=`${p.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(m=await o({method:"POST",url:y,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 Ct;Ft=1;const e=O,t=n,o=x.default,i=r,s=T,a=L;return Ct=async({setProgress:n,context:r,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet flow."});const{file:d,data:f}=await t({name:p.config||"fnet-flow",dir:r.project.projectDir,tags:r.tags});if(!f.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!f.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!f.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const m=`${f.env.ATOM_API_URL}/v1/auth/token`,u=f.env.ATOM_API_USERNAME,h=f.env.ATOM_API_PASSWORD;let y=await o({method:"POST",url:m,data:{username:u,password:h},headers:{"Content-Type":"application/json"}});const g=y.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(y=await o({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}`}}),y.data?.error)throw new Error("Error publishing fnet flow.");const v=y.data?.upload.id;let x="fnet-dir-zipper";x+=` --sourceDir='${r.project.projectDir}'`,x+=" -p=**/*",x+=" -g",x+=" --stdout_format=json";const k=await s({cmd:x});if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new a;_.append("file",i.createReadStream(j));const D=await o.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=O,t=n,o=x.default,i=r,s=T,a=L;return Rt=async({setProgress:n,context:r,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet node."});const{file:d,data:f}=await t({name:p.config||"fnet-node",dir:r.project.projectDir,tags:r.tags});if(!f.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!f.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!f.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const m=`${f.env.ATOM_API_URL}/v1/auth/token`,u=f.env.ATOM_API_USERNAME,h=f.env.ATOM_API_PASSWORD;let y=await o({method:"POST",url:m,data:{username:u,password:h},headers:{"Content-Type":"application/json"}});const g=y.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(y=await o({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}`}}),y.data?.error)throw new Error("Error publishing fnet node.");const v=y.data?.upload.id;let x="fnet-dir-zipper";x+=` --sourceDir='${r.project.projectDir}'`,x+=" -p=**/*",x+=" -g",x+=" --stdout_format=json";const k=await s({cmd:x});if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new a;_.append("file",i.createReadStream(j));const D=await o.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=n,t=U,o=h,i=O;return qt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,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=n,t=J,o=h,i=O;return Kt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},Kt}();return Ut=async n=>{const{atom:o,packageDependencies:r,context:s,deploymentProjectTarget:a,setProgress:p,deploymentProject:f,yamlTarget:m}=n;if(!0===a.enabled)if("lib"===a.type)await l({...n});else if("red"===a.type)await c({...n});else if("npm"===a.type)await i({...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=d:"macos"===a.type?e=y:"rust"===a.type?e=E:"pypi"===a.type&&(e=P),!e)return;await e({atom:o,target:a,onProgress:p,projectDir:s.projectDir,dependencies:r,context:s,yamlTarget:m}),f.isDirty=!0}},Ut}var ln,dn,fn,mn,un,hn,yn,gn,wn,bn,vn,xn,kn,jn,_n,Dn,En,Pn,Sn,An,$n,Tn,On,Nn,In,Cn,Fn,Rn,Mn,qn,Bn,Kn,Ln,Un,Jn,zn,Wn,Gn,Xn,Vn,Hn,Yn,Zn,Qn={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 eo(){if(dn)return ln;dn=1;const e=W,t=G,n=h,o=Qn;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 ln=async(e={})=>await c(n(e))}function to(){if(mn)return fn;mn=1;const e=Y,t=X;return fn=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})}},fn}function no(){return hn?un:(hn=1,un=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 oo(){if(gn)return yn;gn=1;const e=h,t=to(),n=no();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 yn={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 io(){if(Nn)return On;Nn=1;const e=h,t=to(),n=no();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 On={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 ro(){return zn?Jn:(zn=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 so(){if(Gn)return Wn;Gn=1;const e=io();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 Wn=e=>new t(e)}function ao(){if(Vn)return Xn;Vn=1;const e=f,t=m,o=s,i=a,r=u,p=h,l=y,d=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=Gt(),P=Xt(),S=Vt(),A=Yt(),$=Zt(),T=Qt(),O=en(),N=tn(),I=nn(),C=on(),F=rn(),R=sn(),M=an(),q=cn(),B=Ht(),K=pn(),{Atom:L}=v,U=z,J=eo(),W=n,G=_,Y=X,ee=c,re=V,se=H,ae=function(){if(bn)return wn;bn=1;const e=X,t=oo();return wn={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(xn)return vn;xn=1;const e=h,t=to(),n=no();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 vn={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(jn)return kn;jn=1;const e=h,t=to(),n=no();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 kn={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(Dn)return _n;Dn=1;const e=h,t=Z,n=Q,o=to(),i=no();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 _n={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=oo(),fe=Pn?En:(Pn=1,En={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(An)return Sn;An=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 Sn={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(Tn)return $n;Tn=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 $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}}(),he=io(),ye=function(){if(Cn)return In;Cn=1;const e=h,t=no();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(Rn)return Fn;Rn=1;const e=h,t=to(),n=no();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 Fn={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(qn)return Mn;qn=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 Mn={hits:async function({node:e}){return e.definition.hasOwnProperty("operation")},init:async function({node:e,initNode:n}){e.type="operation",e.resolve=t},resolve:t}}(),be=function(){if(Kn)return Bn;Kn=1;const e=h,t=no();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 Bn={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(Un)return Ln;Un=1;const e=h,t=to(),n=no();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 Ln={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=ro(),ke=so();return Xn=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 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",master:"cmd"})),this.#D.push(ke({key:"shell-flow",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.#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:p,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:xe,transformExpression:this.transformExpression.bind(this),transformValue:this.transformValue.bind(this)}}async _cache_set(e,t,n){this._redis_client&&await this._redis_client.SETEX(e,n||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async init(){this._redis_client=await d(),this.#u=this.#r.buildId||j(24),this.#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 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.#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 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=r.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 he.hits(t))await he.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 ye.hits(t))await ye.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.#y),"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 G({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||p(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=r.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=r.compile(e.readFileSync(t.resolve(o,"src/default/workflow.js.njk"),"utf8"),this.#c).render(n),s=this.#r.projectDir,a=t.resolve(s,`src/default/${n.codeKey}.js`);e.writeFileSync(a,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=r.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(l(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="flow.yaml",i=`Creating ${n}`;await this.setProgress({message:i});const{content:s,...a}=this.#s.doc,c={content:o.stringify(a)},p=this.#r.templateDir,l=r.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",i=`Creating ${n}`;await this.setProgress({message:i});const s={content:o.stringify(this.#a)},a=this.#r.templateDir,c=r.compile(e.readFileSync(t.resolve(a,`${n}.njk`),"utf8"),this.#c).render(s),p=this.#r.projectDir,l=t.resolve(p,`${n}`);e.writeFileSync(l,c,"utf8")}async runPrettifier(){const e=this.#r.projectDir,n=i.exec("prettier --write .",{cwd:t.resolve(e,"src")});if(0!==n.code)throw new Error(n.stderr)}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#r.project?.devops){const e=[this.#r.project?.devops];for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&await n.save()}}else if(this.#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.#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){const o=this.#r.project?.projectDir||this.#r.projectDir;e.writeFileSync(t.resolve(o,"./fnet/flow.bpmn"),n.diagramXML,"utf8")}await this.createAtomLibFiles({root:this.#m}),await this.createEngine({root:this.#m}),await this.createNodeTree({root:this.#m}),await this.createProjectYaml(),await this.createProjectMainYaml(),await C(this.#j),await I(this.#j),await N(this.#j),await O(this.#j),await $(this.#j),await S(this.#j),await T(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.#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 co=function(){if(Zn)return zt;Zn=1;const u=process.cwd(),{spawn:h}=e,y=t;n({name:["redis"],dir:u,optional:!0});const g=o,w=i,b=r,v=s,x=a,k=c,j=n,_=p,D=l,E=d,P=ao(),S=function(){if(Yn)return Hn;Yn=1;const e=f,t=m;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}),A="win32"===process.platform?";":":";process.env.PATH=`${g.join(S,"/.bin")}${A}${process.env.PATH}`;let $=w(process.argv.slice(2)).command("create","Initialize flow node project",(e=>e.option("name",{type:"string"}).option("vscode",{type:"boolean",default:!0,alias:"vs"}).option("runtime",{type:"string",default:"node",choices:["node"]})),(async e=>{try{const t=g.resolve(S,"./@fnet/cli-project-flow/dist/template/project"),n=g.resolve(u,e.name);b.existsSync(n)||b.mkdirSync(n),await E({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let o=x.exec("fnet build",{cwd:n});if(0!==o.code)throw new Error("Failed to build project.");if(x.which("git")&&(o=x.exec("git init --initial-branch=main",{cwd:n}),0!==o.code))throw new Error("Failed to initialize git.");if(x.which("code")&&e.vscode&&(o=x.exec(`cd ${n} && code .`),0!==o.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})).command("project","Flow node project",(e=>e.option("update",{type:"boolean",default:!1,alias:"-u"})),(async e=>{try{const t=g.resolve(S,"@fnet/cli-project-flow/dist/template/project"),n=process.cwd(),o=await O(e);if(e.update){if(await E({dir:t,outDir:n,context:{name:o.project.projectFileParsed.name,runtime:"node"},copyUnmatchedAlso:!0}),0!==x.exec("fnet build",{cwd:n}).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(e){console.error("Project failed.",e.message),process.exit(1)}})).command("build","Build flownet project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"]}).option("ftag",{type:"array"})),(async e=>{try{const t=await O(e),n=new P(t);await n.init(),await n.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}})).command("deploy","Build and deploy flownet project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await O({...e,mode:"all"}),n=new P(t);await n.init(),await n.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}})).command("file","Just create files",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await O({...e,mode:"file"}),n=new P(t);await n.init(),await n.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}}));function T(e,{name:t,bin:n,preArgs:o=[]}){return e.command(`${t||n} [commands..]`,`${n} ${o.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const t=await O(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 O(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:g.resolve(u,`./.output/${e.id}`),templateDir:g.resolve(S,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:g.resolve(S,"./@fnet/cli-project-common/dist/template/default"),coreDir:g.resolve(S,"./@fnet/cli-project-flow/dist/template/core"),tags:e.ftag}}{const t=await async function({tags:e}){const t=g.resolve(u,"flow.yaml");if(!b.existsSync(t))throw new Error("flow.yaml file not found in current directory.");const{raw:n,parsed:o}=await k({file:t,tags:e}),i=g.dirname(t);let r;if("object"==typeof o.flows)r=o.flows;else{const t=o.main||"flow.main.yaml";let n=g.resolve(i,t);if(!b.existsSync(n)&&(n=g.resolve(i,t+".yaml"),!b.existsSync(n)))throw new Error(`${t} file not found in ${n}.`);const{parsed:s}=await k({file:n,tags:e});r=s}const s={workflowAtom:{doc:{...o,content:r}},projectDir:i,projectFilePath:t,projectFileContent:n,projectFileParsed:o};let a=g.resolve(i,"fnet/targets.yaml");if(!b.existsSync(a)&&(a=g.resolve(i,"flow.devops.yaml"),b.existsSync(a))){const e=g.resolve(i,"fnet");b.existsSync(e)||b.mkdirSync(e),b.copyFileSync(a,g.resolve(i,"fnet/targets.yaml")),b.unlinkSync(a)}if(b.existsSync(a)){const{raw:t,parsed:n}=await k({file:a,tags:e}),o=v.parseDocument(t);s.devops={filePath:a,fileContent:t,yamlDocument:o,doc:{...n},type:"workflow.deploy",save:async()=>{b.writeFileSync(s.devops.filePath,o.toString())}}}const c=g.resolve(i,"readme.md");if(b.existsSync(c)){const e=b.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:g.resolve(S,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:g.resolve(S,"./@fnet/cli-project-common/dist/template/default"),coreDir:g.resolve(S,"./@fnet/cli-project-flow/dist/template/core"),projectDir:g.resolve(t.projectDir,"./.workspace"),projectSrcDir:g.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return $=$.command("input [name]","Create or modify an input config file",(e=>e.positional("name",{type:"string",demandOption:!1}).help(!1).version(!1)),(async e=>{try{const t=await O(e),{project:n}=t,{projectDir:o,projectFileParsed: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=g.resolve(o,".fnet");b.existsSync(s)||b.mkdirSync(s);const a=g.resolve(s,`${e.name}.fnet`),c=b.existsSync(a),p=await _({schema:r,format:"yaml",ref:c?a:void 0});b.writeFileSync(a,p)}catch(e){console.error(e.message),process.exit(1)}})),$=T($,{bin:"npm"}),$=T($,{bin:"node"}),$=T($,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),$=T($,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),$=T($,{name:"app",bin:"npm",preArgs:["run","app","--"]}),$=T($,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),$=T($,{bin:"npx"}),$=T($,{bin:"cdk"}),$=T($,{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 O(e),{projectDir:o}=t,i=e.config,r=await j({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:o,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 O(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 D({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}(),po=ee(co);module.exports=po;
|
|
2
|
+
"use strict";var e=require("child_process"),t=require("@fnet/prompt"),n=require("@fnet/config"),o=require("path"),i=require("yargs/yargs"),r=require("fs"),s=require("yaml"),a=require("shelljs"),c=require("@fnet/yaml"),p=require("@fnet/object-from-schema"),l=require("@fnet/shell-flow"),d=require("@flownet/lib-render-templates-dir"),f=require("node:fs"),m=require("node:path"),u=require("nunjucks"),h=require("lodash.clonedeep"),y=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"),$=require("ajv-formats"),T=require("@fnet/shell"),O=require("semver"),N=require("@fnet/up-list-files"),I=require("node:os"),C=require("@node-red/util"),F=require("@flownet/lib-to-ios-app"),R=require("@flownet/lib-to-macos-app"),M=require("@flownet/lib-to-electron"),q=require("@flownet/lib-to-webos"),B=require("@flownet/lib-to-nextjs"),K=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"),W=require("bpmn-moddle"),G=require("dagre"),X=require("@fnet/expression"),V=require("chalk"),H=require("@fnet/list-files"),Y=require("@fnet/key-value-transformer"),Z=require("lodash.pick"),Q=require("lodash.omit");function ee(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var 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,Ae,$e,Te,Oe,Ne,Ie,Ce,Fe,Re,Me,qe,Be,Ke,Le,Ue,Je,ze,We,Ge,Xe,Ve,He,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,At,$t,Tt,Ot,Nt,It,Ct,Ft,Rt,Mt,qt,Bt,Kt,Lt,Ut,Jt,zt={};function Wt(){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 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]})))},re}function Gt(){if(Ie)return Ne;Ie=1;const e=j,t=f,n=m,o=_,i=function(){if(ce)return ae;ce=1;const e=Wt();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}(),r=function(){if(le)return pe;le=1;const e=Wt();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}(),s=function(){if(fe)return de;fe=1;const e=Wt();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}(),a=function(){if(ue)return me;ue=1;const e=Wt();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}(),c=function(){if(ye)return he;ye=1;const e=Wt();return he=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})},he}(),p=function(){if(we)return ge;we=1;const e=Wt();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}(),l=function(){if(ve)return be;ve=1;const e=Wt();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}(),d=function(){if(ke)return xe;ke=1;const e=Wt();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=Wt();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}(),h=function(){if(Ee)return De;Ee=1;const e=Wt();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}(),y=function(){if(Se)return Pe;Se=1;const e=Wt();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($e)return Ae;$e=1;const e=Wt();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 Te;Oe=1;const e=Wt();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:o="index"}){let i=n.resolve(e,`./${o}.tsx`);if(t.existsSync(i)||(i=n.resolve(e,`./${o}.ts`)),t.existsSync(i)||(i=n.resolve(e,`./${o}.jsx`)),t.existsSync(i)||(i=n.resolve(e,`./${o}.js`)),!t.existsSync(i))return{};const r=i,s=n.extname(i);return{file:r,ext:s,ts:".ts"===s||".tsx"===s,name:o}}return Ne=async t=>{const{atom:f,context:m,setProgress:v}=t;v("Initializing features..."),f.doc.features=f.doc.features||{};const x=f.doc.features;x.project=x.project||{},x.project.format=x.project.format||x.project_format||"esm",x.project_format=x.project.format,x.dts_enabled=!0===x.dts||void 0!==x.dts&&!1!==x.dts;const k=n.resolve(m.project.projectDir),j=b({dir:n.resolve(k,"./app")});if(j.file){v("Parsing app entry imports...");let e=await o({file:j.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));x.app_uses_jsx=t,x.app_has_entry=!0,e=await o({file:j.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),x.app_entry_uses_jsx=t,x.app_entry_is_ts=j.ts,x.app_entry_ext=j.ext}const _=b({dir:n.resolve(k,"./cli")});if(_.file){v("Parsing cli entry imports...");let e=await o({file:_.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));x.cli_uses_jsx=t,x.cli_has_entry=!0,e=await o({file:_.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),x.cli_entry_uses_jsx=t,x.cli_entry_is_ts=_.ts,x.cli_entry_ext=_.ext}if("workflow.lib"===f.type){const e=b({dir:n.resolve(k,"./src")});if(e.file){v("Parsing src entry imports...");let t=await o({file:e.file,recursive:!0}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));x.src_uses_jsx=n,x.src_has_entry=!0,t=await o({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),x.src_entry_uses_jsx=n,x.src_entry_is_ts=e.ts,x.src_entry_ext=e.ext}}const D=Reflect.has(x,"app_entry_uses_jsx")?!0===x.app_entry_uses_jsx:!0===x.src_entry_uses_jsx,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===f.doc.features.form_enabled||!0===x.app.extend||!0===x.app.enabled),x.app.format=x.app.format||"esm",x.app.folder=x.app.folder||x.app.format||"default",!1===x.cli?x.cli={enabled:!1}:!0===x.cli?x.cli={enabled:!0,extend:!0===x.cli_has_entry,export:!0,react: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===f.doc.features.form_enabled||!0===x.cli.extend||!0===x.cli.enabled),x.cli.format=x.cli.format||"esm",x.cli.folder=x.cli.folder||x.cli.folder||"esm",x.cli.node_options=x.cli.node?.options||x.cli.node_options||"",x.json=x.cli.enabled||x.json;const P={cjs:{format:"cjs",context:x.form_enabled?"window":"global",babel:!0===x.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==x.cjs,copy:!1},esm:{format:"esm",context:x.form_enabled?"window":"global",babel:!0===x.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!1!==x.esm,copy:!0},iife:{format:"iife",context:x.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!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"}),!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:`${n.normalize(x.app.dir||".")}`,files:[n.normalize("./dist/**/*")],cors:!0,open:!1};x.babel_options=e({targets:{browsers:"last 9 versions, not dead",node:"18"}},x.babel_options||x.babel?.options),x.browsersync_options=e(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),y(t),h(t),u(t),l(t),d(t),p(t),c(t),a(t),s(t),i(t),r(t)},Ne}function Xt(){if(Fe)return Ce;Fe=1;const e=D;return Ce=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"})},Ce}function Vt(){if(Me)return Re;Me=1;const e=f,t=m,n=d;return Re=async({atom:o,setProgress:i,context:r,packageDependencies:s})=>{if(!0!==o.doc.features.app.enabled)return;await i({message:"Creating app folder"});const a={atom:o,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!==o.doc.features.app.html&&l.push("index.html.njk"),await n({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:a})},Re}function Ht(){if(Be)return qe;Be=1;const e=E,t=P,n=f,o=m;return qe=async({projectDir:i,name:r,setProgress:s,count:a=1})=>{let c;const p=t(["npm-pick-versions",r,a]),l=o.join(i,".cache"),d=o.join(l,p+".json");return n.existsSync(d)?(s&&s(`Picking npm version of ${r} from cache ...`),c=JSON.parse(n.readFileSync(d,"utf8"))):(s&&s(`Picking npm version of ${r} ...`),c=await e({name:r,count:a}),n.mkdirSync(l,{recursive:!0}),n.writeFileSync(d,JSON.stringify(c),"utf8")),c},qe}function Yt(){if(Le)return Ke;Le=1;const e=u,t=f,n=m,o=_,i=Ht();return Ke=async({atom:r,context:s,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&&r.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===r.doc.features.app.enabled&&f.push({file:n.resolve(s.projectDir,"src/app/index.js"),dev:!1!==r.doc.features.app.dev}),!0===r.doc.features.cli.enabled&&f.push({file:n.resolve(s.projectDir,"src/cli/index.js"),dev:!1!==r.doc.features.cli.dev});for await(const e of f){const n=e.file;if(!t.existsSync(n))throw new Error(`App file not found: ${n}`);const r=(await o({file:n,recursive:!0})).all;for await(const t of r){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 i({name:t.package,projectDir:s.projectDir,setProgress:p});(!0===e.dev?c:a).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const m={atom:r,packageDependencies:a,packageDevDependencies:c},u=s.templateCommonDir,h=e.compile(t.readFileSync(n.resolve(u,"package.json.njk"),"utf8"),e.configure(u)).render(m),y=s.projectDir,g=n.resolve(y,"package.json");t.writeFileSync(g,h,"utf8");const w=n.resolve(s.project.projectDir,"fnet");if(t.existsSync(w)){const e=n.resolve(s.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const o=t.readdirSync(w);for(const i of o){const o=n.resolve(w,i);if(!t.lstatSync(o).isFile())continue;const r=n.resolve(e,i);t.copyFileSync(o,r)}}},Ke}function Zt(){if(Je)return Ue;Je=1;const e=f,t=m,n=d;return Ue=async({atom:o,setProgress:i,context:r,packageDependencies:s})=>{if(!0!==o.doc.features.cli.enabled)return;await i({message:"Creating cli."});const a={atom:o,packageDependencies:s},c=r.templateDir,p=t.resolve(r.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await n({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:p,context:a})},Ue}function Qt(){if(We)return ze;We=1;const e=f,t=m,n=u,o=_;return ze=async({atom:i,setProgress:r,context:s,packageDependencies:a})=>{await r({message:"Creating rollup file."});const c={atom:i,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 o({file:p,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=i.doc.features.rollup_output,f=Object.keys(d);for(let e=0;e<f.length;e++){const t=d[f[e]];if(!0===t.browser&&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=n.compile(e.readFileSync(t.resolve(m,"rollup.config.mjs.njk"),"utf8"),n.configure(m)).render(c);const h=s.projectDir;let y=t.resolve(h,"rollup.config.mjs");e.writeFileSync(y,u,"utf8")},ze}function en(){if(Xe)return Ge;Xe=1;const e=f,t=m,n=u,o=S,i=A,r=$;return Ge=async({atom:s,setProgress:a,context:c,njEnv:p})=>{if(!0!==s.doc.features.cli.enabled)return;await a({message:"Creating yargs."});let l={};if(l=s.doc.input?s.doc.input:{type:"object",properties:{},required:[]},s.doc.features.cli.fargs&&!1!==s.doc.features.cli.fargs?.enabled){const e=s.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},n={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),l.properties&&(l.properties.fargs=t,l.properties.ftag=n)}const d={options:l,imports:[],atom:s},f=c.templateDir,m=n.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 o({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});r(y);const g=y.compile(l),w=i(y,g);e.writeFileSync(t.resolve(u,"src/default/validate_input.js"),w,"utf8")},Ge}function tn(){if(He)return Ve;He=1;const e=f,t=m,n=u;return Ve=async({atom:o,setProgress:i,context:r,packageDependencies:s})=>{await i({message:"Creating .gitignore"});const a={atom:o,packageDependencies:s},c=r.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),n.configure(c)).render(a),l=r.projectDir,d=t.resolve(l,".gitignore");e.writeFileSync(d,p,"utf8")},Ve}function nn(){if(Ze)return Ye;Ze=1;const e=f,t=m,n=u;return Ye=async({atom:o,setProgress:i,context:r,packageDependencies:s})=>{await i({message:"Creating tsconfig.json."});const a={atom:o,packageDependencies:s},c=r.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),n.configure(c)).render(a),l=r.projectDir,d=t.resolve(l,"tsconfig.json");e.writeFileSync(d,p,"utf8")},Ye}function on(){if(et)return Qe;et=1;const e=u,t=f,n=m,o=c;return Qe=async({atom:i,context:r,setProgress:s,Atom:a})=>{const c="readme.md",p=`Creating ${c}`;if(await s({message:p}),r.project?.readme){const i=r.projectDir,s={content:r.project.readme.doc.content},a=n.resolve(r.project.projectDir,"fnet/how-to.md");if(t.existsSync(a)){const e=t.readFileSync(a,"utf8");s.howto=e}const p=n.resolve(r.project.projectDir,"fnet/input.yaml");if(t.existsSync(p)){const e=await o({file:p,tags:r.tags});s.input=e.content}const l=r.templateCommonDir,d=e.compile(t.readFileSync(n.resolve(l,`${c}.njk`),"utf8"),e.configure(l)).render(s),f=n.resolve(i,`${c}`);t.writeFileSync(f,d,"utf8")}else if(i.id){const o=await a.first({type:"wiki",parent_id:i.id});if(!o||"markdown"!==o.doc?.["content-type"])return;const{content:s,...p}=o.doc,l={content:s},d=r.templateCommonDir,f=e.compile(t.readFileSync(n.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(l),m=r.projectDir,u=n.resolve(m,`${c}`);t.writeFileSync(u,f,"utf8")}},Qe}function rn(){if(nt)return tt;nt=1;const e=o,t=l;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 sn(){if(it)return ot;it=1;const e=a;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!==e.exec("tsc",{cwd:i}).code)throw new Error("Couldnt create .d.ts files.")},ot}function an(){if(st)return rt;st=1;const e=a;return rt=async({setProgress:t,atom:n,context:o})=>{const i=o.projectDir;await t({message:"Installing npm packages."});if(0!==e.exec(`npm install ${n.doc.features.npm_install_flags}`,{cwd:i}).code)throw new Error("Couldnt install npm packages.")},rt}function cn(){if(ct)return at;ct=1;const e=a;return at=async({setProgress:t,context:n})=>{const o=n.projectDir;await t({message:"Building main project."});if(0!==e.exec("npm run build",{cwd:o}).code)throw new Error("Couldnt build project.")}}function pn(){if(Jt)return Ut;Jt=1;const e=function(){if(lt)return pt;lt=1;const e=T,t=n;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({cmd:c}),i.isDirty=!0)}}(),t=function(){if(ft)return dt;ft=1;const e=f,t=m,o=O,i=T,r=n;return dt=async({setProgress:n,context:s,deploymentProject:a,deploymentProjectTarget:c,registerToPackageManager:p,yamlTarget:l})=>{await n({message:"Deploying it as gcs package."});const d=s.projectDir,f=t.resolve(d,"package.json"),m=e.readFileSync(f),u=JSON.parse(m);u.name=c.params.name,u.version=o.inc(c.version,"patch"),delete u.scripts,delete u.devDependencies,e.writeFileSync(f,JSON.stringify(u,null,"\t"));const{file:h,data:y}=await r({name:c.config||"gcs",dir:s.projectDir,tags:s.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 i({cmd:g}),e.writeFileSync(f,m),!0!==c.dryRun&&(a.isDirty=!0,c.version=u.version,l.set("version",u.version),await p({target:c,packageJSON:u}))}}(),i=function(){if(ut)return mt;ut=1;const e=f,t=m,o=O,i=a,r=n,c=N,l=p,d=s;return mt=async({atom:n,setProgress:s,context:a,deploymentProject:p,deploymentProjectTarget:f,yamlTarget:m})=>{await s({message:"Deploying it as npm package."});const u=a.projectDir,h=t.resolve(u,"package.json"),y=e.readFileSync(h),g=JSON.parse(y);g.name=f.params.name,g.version=o.inc(f.version,"patch");const w=f.params.bin?.name||f.params.bin;!1!==f.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(h,JSON.stringify(g,null,"\t"));const b=f.config||"npm";let v=(await r({name:b,dir:a.projectDir,tags:a.tags,optional:!0}))?.data;if(!v){const n=c({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===n.length)throw new Error("Couldnt find schema to create npm config");const o=await l({schema:n[0],tags:a.tags}),i=a.project.projectDir,r=t.resolve(i,".fnet");e.existsSync(r)||e.mkdirSync(r),e.writeFileSync(t.resolve(r,`${b}.fnet`),d.stringify(o)),v=o}if(e.writeFileSync(t.resolve(u,".npmrc"),`//registry.npmjs.org/:_authToken=${v.env.NPM_TOKEN}`),!0!==f.dryRun){if(0!==i.exec("npm publish --access public",{cwd:u}).code)throw new Error("Couldnt publish to npm");e.writeFileSync(h,y),p.isDirty=!0,f.version=g.version,m.set("version",g.version)}}}(),c=function(){if(yt)return ht;yt=1;const e=f,t=m,o=I,i=u,r=C,s=n;return ht=async({atom:n,setProgress:a,context:c,deploymentProject:p,deploymentProjectTarget:l,buildId:d,packageDependencies:f,njEnv:m})=>{await a({message:"Deploying it as node-red flow."});const u=c.projectDir,h=c.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||r.util.generateId(),label:`${y}/${n.id?n.id:o.hostname()}/${n.name}/${l.deploy.name||l.deploy.template}`},function:{id:r.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:r.util.generateId(),...l.params?.inject,payload:"json"===l.params?.inject?.payloadType?`'${JSON.stringify(l.params?.inject?.payload)}'`:l.params?.inject?.payload},debug:{id:r.util.generateId()}}};else if("cronjob"===l.deploy.template){let i=l.params?.schedules?cloneDeep(l.params?.schedules):void 0;i?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),g={atom:n,packageDependencies:f,red:{tab:{id:l.deploy.id||r.util.generateId(),label:`${y}/${n.id?n.id:o.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:r.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:r.util.generateId(),schedules:i},debug:{id:r.util.generateId()}}}}else{if("http"!==l.deploy.template)return;g={atom:n,packageDependencies:f,red:{tab:{id:l.deploy.id||r.util.generateId(),label:`${y}/${n.id?n.id:o.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:r.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:r.util.generateId(),method:l.params.method||"get",url:l.params.url},httpout:{id:r.util.generateId()},debug:{id:r.util.generateId()}}}}let w=i.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 s({name:c.redConfig||"red",dir:c.projectDir,tags:c.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}},ht}(),l=function(){if(wt)return gt;wt=1;const e=r,t=o,i=n;return gt=async({atom:n,Atom:o,setProgress:r,context:s,packageDependencies:a,deploymentProject:c,deploymentProjectTarget:p})=>{await r({message:"Deploying it as workflow lib."});const l=(await i({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 o.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 o.get({id:p.deploy.id}),!d)return}else{if(d=await o.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"===n.type?d.doc.subtype="library":"workflow"===n.type&&(d.doc.subtype="workflow"),d=await o.update(d,{id:d.id})},gt}(),d=function(){if(vt)return bt;vt=1;const e=n,t=F,o=h,i=O;return bt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},bt}(),y=function(){if(kt)return xt;kt=1;const e=n,t=R,o=h,i=O;return xt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,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=n,t=M,o=h,i=O;return jt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,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=n,t=q,o=h,i=O;return Dt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,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=n,t=B,o=h,i=O;return Pt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},Pt}(),v=function(){if($t)return At;$t=1;const e=n,t=K,o=h,i=O;return At=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},At}(),k=function(){if(Ot)return Tt;Ot=1;const e=f,t=m,o=O,i=T,r=n,s=x.default;return Tt=async({setProgress:n,context:a,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet package."});const d=a.projectDir,f=t.resolve(d,"package.json"),m=e.readFileSync(f),u=JSON.parse(m);u.name=p.params.name,u.version=o.inc(p.version,"patch"),delete u.scripts,delete u.devDependencies,e.writeFileSync(f,JSON.stringify(u,null,"\t"));const{file:h,data:y}=await r({name:p.config||"fnet-package",dir:a.projectDir,tags:a.tags});if(!y.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${h}`);if(!y.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${h}`);if(!y.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${h}`);const g=`${y.env.ATOM_API_URL}/v1/auth/token`,w=y.env.ATOM_API_USERNAME,b=y.env.ATOM_API_PASSWORD;let v=await s({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='${y.env.GCS_PROJECT_ID}'`,k+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,k+=` --keyFilename='${t.resolve(t.dirname(h),y.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'",y.env.DOMAIN&&(k+=` --domain='${y.env.DOMAIN}'`),!0!==p.dry_run&&!0!==p.params.dry_run||(k+=" --dryRun"),await i({cmd:k}),e.writeFileSync(f,m),!0===p.dryRun)return;c.isDirty=!0,p.version=u.version,l.set("version",u.version);const j=`${y.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(v=await s({method:"POST",url:j,data:{name:u.name,version:u.version,version_domain:y.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(It)return Nt;It=1;const e=O,t=n,o=x.default;return Nt=async({setProgress:n,context:i,deploymentProject:r,deploymentProjectTarget:s,yamlTarget:a})=>{await n({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 o({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 h=e.inc(s.version,"patch");s.params.version=h,s.version=h,a.set("version",h);const y=`${p.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(m=await o({method:"POST",url:y,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 Ct;Ft=1;const e=O,t=n,o=x.default,i=r,s=T,a=L;return Ct=async({setProgress:n,context:r,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet flow."});const{file:d,data:f}=await t({name:p.config||"fnet-flow",dir:r.project.projectDir,tags:r.tags});if(!f.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!f.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!f.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const m=`${f.env.ATOM_API_URL}/v1/auth/token`,u=f.env.ATOM_API_USERNAME,h=f.env.ATOM_API_PASSWORD;let y=await o({method:"POST",url:m,data:{username:u,password:h},headers:{"Content-Type":"application/json"}});const g=y.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(y=await o({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}`}}),y.data?.error)throw new Error("Error publishing fnet flow.");const v=y.data?.upload.id;let x="fnet-dir-zipper";x+=` --sourceDir='${r.project.projectDir}'`,x+=" -p=**/*",x+=" -g",x+=" --stdout_format=json";const k=await s({cmd:x});if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new a;_.append("file",i.createReadStream(j));const D=await o.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=O,t=n,o=x.default,i=r,s=T,a=L;return Rt=async({setProgress:n,context:r,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await n({message:"Deploying it as fnet node."});const{file:d,data:f}=await t({name:p.config||"fnet-node",dir:r.project.projectDir,tags:r.tags});if(!f.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!f.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!f.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const m=`${f.env.ATOM_API_URL}/v1/auth/token`,u=f.env.ATOM_API_USERNAME,h=f.env.ATOM_API_PASSWORD;let y=await o({method:"POST",url:m,data:{username:u,password:h},headers:{"Content-Type":"application/json"}});const g=y.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(y=await o({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}`}}),y.data?.error)throw new Error("Error publishing fnet node.");const v=y.data?.upload.id;let x="fnet-dir-zipper";x+=` --sourceDir='${r.project.projectDir}'`,x+=" -p=**/*",x+=" -g",x+=" --stdout_format=json";const k=await s({cmd:x});if(0!==k.code)throw new Error(k.stderr);const j=JSON.parse(k.stdout).path;let _=new a;_.append("file",i.createReadStream(j));const D=await o.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=n,t=U,o=h,i=O;return qt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,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=n,t=J,o=h,i=O;return Kt=async({atom:n,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=i.inc(r.version||"0.1.0","patch");r.params.version=f,r.version=f,l.set("version",f);const m=o(r.params);m.dependencies=o(c);const u={atom:n,params:m,config:d?.config,src:a,dest:a};return{deployer:await t(u)}},Kt}();return Ut=async n=>{const{atom:o,packageDependencies:r,context:s,deploymentProjectTarget:a,setProgress:p,deploymentProject:f,yamlTarget:m}=n;if(!0===a.enabled)if("lib"===a.type)await l({...n});else if("red"===a.type)await c({...n});else if("npm"===a.type)await i({...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=d:"macos"===a.type?e=y:"rust"===a.type?e=E:"pypi"===a.type&&(e=P),!e)return;await e({atom:o,target:a,onProgress:p,projectDir:s.projectDir,dependencies:r,context:s,yamlTarget:m}),f.isDirty=!0}},Ut}var ln,dn,fn,mn,un,hn,yn,gn,wn,bn,vn,xn,kn,jn,_n,Dn,En,Pn,Sn,An,$n,Tn,On,Nn,In,Cn,Fn,Rn,Mn,qn,Bn,Kn,Ln,Un,Jn,zn,Wn,Gn,Xn,Vn,Hn,Yn,Zn,Qn={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 eo(){if(dn)return ln;dn=1;const e=W,t=G,n=h,o=Qn;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 ln=async(e={})=>await c(n(e))}function to(){if(mn)return fn;mn=1;const e=Y,t=X;return fn=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})}},fn}function no(){return hn?un:(hn=1,un=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 oo(){if(gn)return yn;gn=1;const e=h,t=to(),n=no();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 yn={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 io(){if(Nn)return On;Nn=1;const e=h,t=to(),n=no();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 On={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 ro(){return zn?Jn:(zn=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 so(){if(Gn)return Wn;Gn=1;const e=io();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 Wn=e=>new t(e)}function ao(){if(Vn)return Xn;Vn=1;const e=f,t=m,o=s,i=a,r=u,p=h,l=y,d=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=Gt(),P=Xt(),S=Vt(),A=Yt(),$=Zt(),T=Qt(),O=en(),N=tn(),I=nn(),C=on(),F=rn(),R=sn(),M=an(),q=cn(),B=Ht(),K=pn(),{Atom:L}=v,U=z,J=eo(),W=n,G=_,Y=X,ee=c,re=V,se=H,ae=function(){if(bn)return wn;bn=1;const e=X,t=oo();return wn={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(xn)return vn;xn=1;const e=h,t=to(),n=no();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 vn={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(jn)return kn;jn=1;const e=h,t=to(),n=no();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 kn={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(Dn)return _n;Dn=1;const e=h,t=Z,n=Q,o=to(),i=no();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 _n={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=oo(),fe=Pn?En:(Pn=1,En={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(An)return Sn;An=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 Sn={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(Tn)return $n;Tn=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 $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}}(),he=io(),ye=function(){if(Cn)return In;Cn=1;const e=h,t=no();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(Rn)return Fn;Rn=1;const e=h,t=to(),n=no();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 Fn={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(qn)return Mn;qn=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 Mn={hits:async function({node:e}){return e.definition.hasOwnProperty("operation")},init:async function({node:e,initNode:n}){e.type="operation",e.resolve=t},resolve:t}}(),be=function(){if(Kn)return Bn;Kn=1;const e=h,t=no();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 Bn={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(Un)return Ln;Un=1;const e=h,t=to(),n=no();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 Ln={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=ro(),ke=so();return Xn=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 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",master:"cmd"})),this.#D.push(ke({key:"shell-flow",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.#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:p,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:xe,transformExpression:this.transformExpression.bind(this),transformValue:this.transformValue.bind(this)}}async _cache_set(e,t,n){this._redis_client&&await this._redis_client.SETEX(e,n||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async init(){this._redis_client=await d(),this.#u=this.#r.buildId||j(24),this.#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 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.#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 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=r.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 he.hits(t))await he.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 ye.hits(t))await ye.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.#y),"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 G({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||p(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=r.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=r.compile(e.readFileSync(t.resolve(o,"src/default/workflow.js.njk"),"utf8"),this.#c).render(n),s=this.#r.projectDir,a=t.resolve(s,`src/default/${n.codeKey}.js`);e.writeFileSync(a,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=r.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(l(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="flow.yaml",i=`Creating ${n}`;await this.setProgress({message:i});const{content:s,...a}=this.#s.doc,c={content:o.stringify(a)},p=this.#r.templateDir,l=r.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",i=`Creating ${n}`;await this.setProgress({message:i});const s={content:o.stringify(this.#a)},a=this.#r.templateDir,c=r.compile(e.readFileSync(t.resolve(a,`${n}.njk`),"utf8"),this.#c).render(s),p=this.#r.projectDir,l=t.resolve(p,`${n}`);e.writeFileSync(l,c,"utf8")}async runPrettifier(){const e=this.#r.projectDir,n=i.exec("prettier --write .",{cwd:t.resolve(e,"src")});if(0!==n.code)throw new Error(n.stderr)}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#r.project?.devops){const e=[this.#r.project?.devops];for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&await n.save()}}else if(this.#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.#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){const o=this.#r.project?.projectDir||this.#r.projectDir;e.writeFileSync(t.resolve(o,"./fnet/flow.bpmn"),n.diagramXML,"utf8")}await this.createAtomLibFiles({root:this.#m}),await this.createEngine({root:this.#m}),await this.createNodeTree({root:this.#m}),await this.createProjectYaml(),await this.createProjectMainYaml(),await C(this.#j),await I(this.#j),await N(this.#j),await O(this.#j),await $(this.#j),await S(this.#j),await T(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.#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 co=function(){if(Zn)return zt;Zn=1;const u=process.cwd(),{spawn:h}=e,y=t;n({name:["redis"],dir:u,optional:!0});const g=o,w=i,b=r,v=s,x=a,k=c,j=n,_=p,D=l,E=d,P=ao(),S=function(){if(Yn)return Hn;Yn=1;const e=f,t=m;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}),A="win32"===process.platform?";":":";process.env.PATH=`${g.join(S,"/.bin")}${A}${process.env.PATH}`;let $=w(process.argv.slice(2)).command("create","Initialize flow node project",(e=>e.option("name",{type:"string"}).option("vscode",{type:"boolean",default:!0,alias:"vs"}).option("runtime",{type:"string",default:"node",choices:["node"]})),(async e=>{try{const t=g.resolve(S,"./@fnet/cli-project-flow/dist/template/project"),n=g.resolve(u,e.name);b.existsSync(n)||b.mkdirSync(n),await E({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let o=x.exec("fnet build",{cwd:n});if(0!==o.code)throw new Error("Failed to build project.");if(x.which("git")&&(o=x.exec("git init --initial-branch=main",{cwd:n}),0!==o.code))throw new Error("Failed to initialize git.");if(x.which("code")&&e.vscode&&(o=x.exec(`cd ${n} && code .`),0!==o.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})).command("project","Flow node project",(e=>e.option("update",{type:"boolean",default:!1,alias:"-u"})),(async e=>{try{const t=g.resolve(S,"@fnet/cli-project-flow/dist/template/project"),n=process.cwd(),o=await O(e);if(e.update){if(await E({dir:t,outDir:n,context:{name:o.project.projectFileParsed.name,runtime:"node"},copyUnmatchedAlso:!0}),0!==x.exec("fnet build",{cwd:n}).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(e){console.error("Project failed.",e.message),process.exit(1)}})).command("build","Build flownet project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"]}).option("ftag",{type:"array"})),(async e=>{try{const t=await O(e),n=new P(t);await n.init(),await n.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}})).command("deploy","Build and deploy flownet project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await O({...e,mode:"all"}),n=new P(t);await n.init(),await n.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}})).command("file","Just create files",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await O({...e,mode:"file"}),n=new P(t);await n.init(),await n.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}}));function T(e,{name:t,bin:n,preArgs:o=[]}){return e.command(`${t||n} [commands..]`,`${n} ${o.join(" ")}`,(e=>e.help(!1).version(!1)),(async e=>{try{const t=await O(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 O(e){if(e.id){return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:g.resolve(u,`./.output/${e.id}`),templateDir:g.resolve(S,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:g.resolve(S,"./@fnet/cli-project-common/dist/template/default"),coreDir:g.resolve(S,"./@fnet/cli-project-flow/dist/template/core"),tags:e.ftag}}{const t=await async function({tags:e}){const t=g.resolve(u,"flow.yaml");if(!b.existsSync(t))throw new Error("flow.yaml file not found in current directory.");const{raw:n,parsed:o}=await k({file:t,tags:e}),i=g.dirname(t);let r;if("object"==typeof o.flows)r=o.flows;else{const t=o.main||"flow.main.yaml";let n=g.resolve(i,t);if(!b.existsSync(n)&&(n=g.resolve(i,t+".yaml"),!b.existsSync(n)))throw new Error(`${t} file not found in ${n}.`);const{parsed:s}=await k({file:n,tags:e});r=s}const s={workflowAtom:{doc:{...o,content:r}},projectDir:i,projectFilePath:t,projectFileContent:n,projectFileParsed:o};let a=g.resolve(i,"fnet/targets.yaml");if(!b.existsSync(a)&&(a=g.resolve(i,"flow.devops.yaml"),b.existsSync(a))){const e=g.resolve(i,"fnet");b.existsSync(e)||b.mkdirSync(e),b.copyFileSync(a,g.resolve(i,"fnet/targets.yaml")),b.unlinkSync(a)}if(b.existsSync(a)){const{raw:t,parsed:n}=await k({file:a,tags:e}),o=v.parseDocument(t);s.devops={filePath:a,fileContent:t,yamlDocument:o,doc:{...n},type:"workflow.deploy",save:async()=>{b.writeFileSync(s.devops.filePath,o.toString())}}}const c=g.resolve(i,"readme.md");if(b.existsSync(c)){const e=b.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:g.resolve(S,"./@fnet/cli-project-flow/dist/template/default"),templateCommonDir:g.resolve(S,"./@fnet/cli-project-common/dist/template/default"),coreDir:g.resolve(S,"./@fnet/cli-project-flow/dist/template/core"),projectDir:g.resolve(t.projectDir,"./.workspace"),projectSrcDir:g.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return $=$.command("input [name]","Create or modify an input config file",(e=>e.positional("name",{type:"string",demandOption:!1}).help(!1).version(!1)),(async e=>{try{const t=await O(e),{project:n}=t,{projectDir:o,projectFileParsed: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=g.resolve(o,".fnet");b.existsSync(s)||b.mkdirSync(s);const a=g.resolve(s,`${e.name}.fnet`),c=b.existsSync(a),p=await _({schema:r,format:"yaml",ref:c?a:void 0});b.writeFileSync(a,p)}catch(e){console.error(e.message),process.exit(1)}})),$=T($,{bin:"npm"}),$=T($,{bin:"node"}),$=T($,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),$=T($,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),$=T($,{name:"app",bin:"npm",preArgs:["run","app","--"]}),$=T($,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),$=T($,{bin:"npx"}),$=T($,{bin:"cdk"}),$=T($,{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 O(e),{projectDir:o}=t,i=e.config,r=await j({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:b.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 O(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 D({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}(),po=ee(co);module.exports=po;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fnet/cli",
|
|
3
|
-
"version": "0.91.
|
|
3
|
+
"version": "0.91.5",
|
|
4
4
|
"files": [
|
|
5
5
|
"dist"
|
|
6
6
|
],
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"@flownet/lib-parse-imports-js": "^0.3.1",
|
|
23
23
|
"@flownet/lib-parse-node-url": "^0.1.16",
|
|
24
24
|
"@flownet/lib-render-templates-dir": "^0.1.12",
|
|
25
|
-
"@flownet/lib-to-docker": "^0.3.
|
|
25
|
+
"@flownet/lib-to-docker": "^0.3.18",
|
|
26
26
|
"@flownet/lib-to-electron": "^0.3.1",
|
|
27
27
|
"@flownet/lib-to-gitlab": "^0.1.21",
|
|
28
28
|
"@flownet/lib-to-ios-app": "^0.3.1",
|