@fnet/cli 0.73.2 → 0.73.3
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 +1 -1
- package/package.json +1 -1
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/config"),n=require("path"),r=require("yargs/yargs"),a=require("fs"),o=require("yaml"),i=require("shelljs"),s=require("@fnet/yaml"),c=require("@fnet/object-from-schema"),p=require("@fnet/shell-flow"),l=require("@flownet/lib-render-templates-dir"),d=require("node:fs"),u=require("node:path"),m=require("nunjucks"),f=require("redis"),g=require("@flownet/lib-is-redis-online"),y=require("nanoid"),h=require("@flownet/lib-atom-api-js"),w=require("axios"),v=require("qs"),b=require("lodash.merge"),_=require("@flownet/lib-parse-imports-js"),j=require("@fnet/npm-list-versions"),D=require("@fnet/npm-pick-versions"),k=require("object-hash"),x=require("ajv/dist/2020"),P=require("ajv/dist/standalone"),S=require("ajv-formats"),A=require("@fnet/auto-conda-env"),E=require("@fnet/shell"),$=require("semver"),T=require("@fnet/up-list-files"),I=require("node:os"),C=require("@node-red/util"),O=require("@flownet/lib-to-ios-app"),R=require("lodash.clonedeep"),M=require("@flownet/lib-to-macos-app"),F=require("@flownet/lib-to-electron"),q=require("@flownet/lib-to-webos"),N=require("@flownet/lib-to-nextjs"),L=require("@flownet/lib-to-docker"),U=require("form-data"),B=require("@fnet/to-rust"),z=require("@fnet/to-pyip"),J=require("@flownet/lib-parse-node-url"),W=require("@fnet/list-files"),K=require("chalk");function G(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var H,X,Y,V,Z,Q,ee,te,ne,re,ae,oe,ie,se,ce,pe,le,de,ue,me,fe,ge,ye,he,we,ve,be,_e,je,De,ke,xe,Pe,Se,Ae,Ee,$e,Te,Ie,Ce,Oe,Re,Me,Fe,qe,Ne,Le,Ue,Be,ze,Je,We,Ke,Ge,He,Xe,Ye,Ve,Ze,Qe,et,tt,nt,rt,at,ot,it,st,ct,pt,lt,dt,ut,mt,ft,gt,yt,ht,wt,vt,bt,_t,jt,Dt,kt,xt,Pt,St,At,Et,$t,Tt,It,Ct,Ot,Rt,Mt,Ft,qt,Nt,Lt,Ut,Bt,zt,Jt,Wt,Kt,Gt,Ht,Xt,Yt,Vt={};function Zt(){if(Q)return Z;Q=1;const e=b;return Z=({feature:t,features:n,packageDevDependencies:r})=>{const{name:a,packages:o,options:i,extraCheck:s,explicit:c}=t,p=`${a}_enabled`,l=n.rollup_output||{},d=Object.keys(l);let u=i||{};const m=n[a]?.options;m&&(u=e(u,m));const f=!n[a]||!1===n[a]?.enabled;d.forEach((e=>{const t=n.rollup_output[e];if(t){if(Reflect.has(t,a)){if(f||!t[a]||!1===t[a]?.enabled)return void delete t[a];!0===t[a]&&(t[a]={enabled:!0,options:u})}else{if(f||c||!1===n[p])return;t[a]={enabled:!0}}t[a]=t[a]||{},t[a].options={...u,...t[a].options}}}));let g=d.some((e=>!0===n.rollup_output[e][a]?.enabled));s&&(g=s()&&g),n[p]=g,g&&o.forEach((e=>r.push({package:e[0],version:e[1]})))}}function Qt(){if(Se)return Pe;Se=1;const e=b,t=d,n=u,r=_,a=function(){if(te)return ee;te=1;const e=Zt();return ee=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})},ee}(),o=function(){if(re)return ne;re=1;const e=Zt();return ne=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})},ne}(),i=function(){if(oe)return ae;oe=1;const e=Zt();return ae=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})},ae}(),s=function(){if(se)return ie;se=1;const e=Zt();return ie=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})},ie}(),c=function(){if(pe)return ce;pe=1;const e=Zt();return ce=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})},ce}(),p=function(){if(de)return le;de=1;const e=Zt();return le=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})},le}(),l=function(){if(me)return ue;me=1;const e=Zt();return ue=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:a,packageDevDependencies:r})},ue}(),m=function(){if(ge)return fe;ge=1;const e=Zt();return fe=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:a,packageDevDependencies:r})},fe}(),f=function(){if(he)return ye;he=1;const e=Zt();return ye=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:a,packageDevDependencies:r})},ye}(),g=function(){if(ve)return we;ve=1;const e=Zt();return we=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})},we}(),y=function(){if(_e)return be;_e=1;const e=Zt();return be=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:a,packageDevDependencies:r})},be}(),h=function(){if(De)return je;De=1;const e=Zt();return je=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features,o={};!0===a.app?.enabled&&(o.targets=o.targets||[],o.targets.push({src:"./src/app/index.html",dest:a.app.dir}),Reflect.has(a.app,"copy")||Reflect.has(a,"copy")||(a.copy=!0)),e({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:o},features:a,packageDevDependencies:r})},je}(),w=function(){if(xe)return ke;xe=1;const e=Zt();return ke=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features,o=a.css&&!1!==a.css.enabled;let i=[];o&&(i.push(["rollup-plugin-postcss","^4"]),i.push(["sass","^1.66"]),(a.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":i.push(["postcss-import","^15"]);break;case"postcss-url":i.push(["postcss-url","^10"]);break;case"postcss-preset-env":i.push(["postcss-preset-env","^9"]);break;case"autoprefixer":i.push(["autoprefixer","^10"]);break;case"cssnano":i.push(["cssnano","^6"])}}))),e({feature:{name:"css",packages:i},features:a,packageDevDependencies:r})},ke}();function v({dir:e,name:r="index"}){let a=n.resolve(e,`./${r}.tsx`);if(t.existsSync(a)||(a=n.resolve(e,`./${r}.ts`)),t.existsSync(a)||(a=n.resolve(e,`./${r}.jsx`)),t.existsSync(a)||(a=n.resolve(e,`./${r}.js`)),!t.existsSync(a))return{};const o=a,i=n.extname(a);return{file:o,ext:i,ts:".ts"===i||".tsx"===i,name:r}}return Pe=async t=>{const{atom:d,context:u,setProgress:b}=t;b("Initializing features..."),d.doc.features=d.doc.features||{};const _=d.doc.features;_.project=_.project||{},_.project.format=_.project.format||_.project_format||"esm",_.project_format=_.project.format,_.dts_enabled=!0===_.dts||void 0!==_.dts&&!1!==_.dts,_.hasOwnProperty("all_parsed_imports")||(_.all_parsed_imports=!0);const j=n.resolve(u.project.projectDir),D=v({dir:n.resolve(j,"./app")});if(D.file){b("Parsing app entry imports...");let e=await r({file:D.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));_.app_uses_jsx=t,_.app_has_entry=!0,e=await r({file:D.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),_.app_entry_uses_jsx=t,_.app_entry_is_ts=D.ts,_.app_entry_ext=D.ext}const k=v({dir:n.resolve(j,"./cli")});if(k.file){b("Parsing cli entry imports...");let e=await r({file:k.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));_.cli_uses_jsx=t,_.cli_has_entry=!0,e=await r({file:k.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),_.cli_entry_uses_jsx=t,_.cli_entry_is_ts=k.ts,_.cli_entry_ext=k.ext}if("workflow.lib"===d.type){const e=v({dir:n.resolve(j,"./src")});if(e.file){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));_.src_uses_jsx=n,_.src_has_entry=!0,t=await r({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),_.src_entry_uses_jsx=n,_.src_entry_is_ts=e.ts,_.src_entry_ext=e.ext}}const x=Reflect.has(_,"app_entry_uses_jsx")?!0===_.app_entry_uses_jsx:!0===_.src_entry_uses_jsx,P=Reflect.has(_,"cli_entry_uses_jsx")?!0===_.cli_entry_uses_jsx:!0===_.src_entry_uses_jsx;_.form_enabled=!0===d.doc.form||!0===d.doc.form?.enabled||!0===_.form||!0===_.form?.enabled,_.multiple_enabled=_.multiple_enabled||!0===_.multiple||!0===_.multiple?.enabled,!1===_.app?_.app={enabled:!1}:!0===_.app?_.app={enabled:!0,extend:!0===_.app_has_entry,export:!0,react:x}:_.app={enabled:!0,extend:!0===_.app_has_entry,export:!0,react:x,..._.app||{}},_.app.enabled=!0===_.app.enabled&&(!0===d.doc.features.form_enabled||!0===_.app.extend||!0===_.app.enabled),_.app.format=_.app.format||"esm",_.app.folder=_.app.folder||_.app.format||"default",!1===_.cli?_.cli={enabled:!1}:!0===_.cli?_.cli={enabled:!0,extend:!0===_.cli_has_entry,export:!0,react:P}:_.cli={enabled:!0,extend:!0===_.cli_has_entry,export:!0,react:P,..._.cli||{}},_.cli.enabled=!0===_.cli.enabled&&(!1===d.doc.features.form_enabled||!0===_.cli.extend||!0===_.cli.enabled),_.cli.format=_.cli.format||"esm",_.cli.folder=_.cli.folder||_.cli.folder||"esm",_.cli.node_options=_.cli.node?.options||_.cli.node_options||"",_.json=_.cli.enabled||_.json;const S={cjs:{format:"cjs",context:_.form_enabled?"window":"global",babel:!0===_.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==_.cjs,copy:!1},esm:{format:"esm",context:_.form_enabled?"window":"global",babel:!0===_.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!1!==_.esm,copy:!0},iife:{format:"iife",context:_.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==_.iife,terser:!0,copy:!1}};!0===_.webos&&(S.webos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/webos",copy:!1,babel_options:{targets:{chrome:"79"}}}),!0===_.electron&&(S.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===_.nextjs&&(S.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===_.ios&&(S.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===_.macos&&(S.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===_.app.enabled&&(_.app.dir=`./dist/app/${_.app.folder}`,S.app={format:_.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:_.app.dir,terser:!0,output_exports:!1===_.app.export?"none":"auto"}),!0===_.cli.enabled&&(_.cli.dir=`./dist/cli/${_.cli.folder}`,S.cli={format:_.cli.format,context:"global",babel:!0===_.src_uses_jsx||!0===_.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:_.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===_.cli.export?"none":"auto"});const A={server:".",startPath:`${n.normalize(_.app.dir||".")}`,files:[n.normalize("./dist/**/*")],cors:!0,open:!1};_.babel_options=e({targets:{browsers:"last 9 versions, not dead",node:"18"}},_.babel_options||_.babel?.options),_.browsersync_options=e(A,_.browsersync_options||_.browsersync?.options||{}),_.replace_options=e({},_.replace_options||_.replace?.options||{}),Reflect.has(_.browsersync_options,"proxy")&&delete _.browsersync_options.server,_.rollup=_.rollup||{},_.rollup_output=e(S,_.rollup_output||_.rollup?.output||{}),_.preact_enabled=!0===_.preact||_.preact&&!1!==_.preact?.enabled;let E=Object.keys(S);for(const t of E){const n=S[t];n&&(!1!==_.rollup[t]?(n.babel_options=n.babel_options||_.babel_options,n.browsersync_options=e(_.browsersync_options,n.browsersync_options),n.replace_options=e(_.replace_options,n.replace_options),_.preact_enabled&&(n.alias_enabled=!0,n.alias=n.alias||{},n.alias.entries=n.alias.entries||{},n.alias.entries.react="preact/compat",n.alias.entries["react-dom"]="preact/compat"),_.form_enabled&&(n.babel=!0)):delete _.rollup_output[t])}E=Object.keys(_.rollup_output),_.babel_enabled=E.some((e=>!0===_.rollup_output[e].babel)),_.browser_enabled=E.some((e=>!0===_.rollup_output[e].babel)),_.browsersync_enabled=!1!==_.browsersync&&E.some((e=>!0===_.rollup_output[e].browsersync)),_.browsersync_enabled=_.browsersync_enabled&&_.app.enabled,_.dependency_auto_enabled=!1!==_.dependency_auto&&!1!==_.dependency_auto?.enabled,_.npm_install_flags=_.npm_install_flags||"",_.react_version=_.react_version||_.react?.version||18,w(t),h(t),y(t),g(t),f(t),l(t),m(t),p(t),c(t),s(t),i(t),a(t),o(t)},Pe}function en(){if(Te)return $e;Te=1;const e=j;return $e=async({atom:t,packageDependencies:n,packageDevDependencies:r,setProgress:a})=>{if(a("Initializing dependencies"),"workflow"===t.type&&(n.push({package:"get-value",version:"^3"}),n.push({package:"set-value",version:"^4"})),t.doc.features.form_enabled&&t.doc.features.dependency_auto_enabled){let 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:"@flownet/react-app",version:"^0.1"}),n.push({package:"@flownet/react-app-state",version:"^0.1"}))}t.doc.features.preact_enabled&&n.push({package:"preact",version:"^10"}),!0===t.doc.features.cli.enabled&&(n.push({package:"@fnet/args",version:"^0.1"}),r.push({package:"ajv",version:"^8"}),t.doc.features.cli.fargs&&!1!==t.doc.features.cli.fargs?.enabled&&n.push({package:"@fnet/config",version:"0.2.21"})),t.doc.features.render&&!1!==t.doc.features.render.enabled&&r.push({package:"@flownet/lib-render-templates-dir",version:"0.1.17"}),r.push({package:"@babel/core",version:"^7"}),r.push({package:"@rollup/plugin-commonjs",version:"^28"}),r.push({package:"@rollup/plugin-node-resolve",version:"^15"}),r.push({package:"@rollup/plugin-replace",version:"^6"}),r.push({package:"rollup",version:"^4"}),t.doc.features.dts_enabled&&r.push({package:"rollup-plugin-dts",version:"^6"}),r.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),r.push({package:"@rollup/plugin-alias",version:"^5"}),r.push({package:"fs-extra",version:"^11"}),t.doc.features.babel_enabled&&(r.push({package:"@rollup/plugin-babel",version:"^6"}),r.push({package:"@babel/preset-env",version:"^7"}),r.push({package:"@babel/preset-react",version:"^7"}),t.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":r.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":r.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":r.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":r.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":r.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),r.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),t.doc.features.browsersync_enabled&&r.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})},$e}function tn(){if(Re)return Oe;Re=1;const e=d,t=u,n=l;return Oe=async({atom:r,setProgress:a,context:o,packageDependencies:i})=>{if(!0!==r.doc.features.app.enabled)return;await a({message:"Creating app folder"});const s={atom:r,packageDependencies:i,ts:Date.now()},c=o.templateDir,p=t.resolve(o.projectDir,"src/app");e.existsSync(p)||e.mkdirSync(p,{recursive:!0});let l=["index.js.njk"];!1!==r.doc.features.app.html&&l.push("index.html.njk"),await n({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:s})},Oe}function nn(){if(Fe)return Me;Fe=1;const e=D,t=k,n=d,r=u;return Me=async({projectDir:a,name:o,setProgress:i,count:s=1})=>{let c;const p=t(["npm-pick-versions",o,s]),l=r.join(a,".cache"),d=r.join(l,p+".json");return n.existsSync(d)?(i&&i(`Picking npm version of ${o} from cache ...`),c=JSON.parse(n.readFileSync(d,"utf8"))):(i&&i(`Picking npm version of ${o} ...`),c=await e({name:o,count:s}),n.mkdirSync(l,{recursive:!0}),n.writeFileSync(d,JSON.stringify(c),"utf8")),c}}function rn(){if(Ne)return qe;Ne=1;const e=m,t=d,n=u,r=_,a=nn();return qe=async({atom:o,context:i,packageDependencies:s,packageDevDependencies:c,setProgress:p})=>{await p({message:"Creating package.json."});s.filter((e=>!0===e.dev)).forEach((e=>{c.find((t=>t.package===e.package))||c.push(e);const t=s.findIndex((t=>t.package===e.package));s.splice(t,1)}));const l=s.find((e=>"react"===e.package)),d=s.find((e=>"react-dom"===e.package));l&&!d?s.push({package:"react-dom",version:l.version}):l&&d&&(d.version=l.version),l&&o.doc.features.react_version>=17&&(s.find((e=>"@emotion/react"===e.package))||s.push({package:"@emotion/react",version:"^11"}),s.find((e=>"@emotion/styled"===e.package))||s.push({package:"@emotion/styled",version:"^11"}));const u=[];!0===o.doc.features.app.enabled&&u.push({file:n.resolve(i.projectDir,"src/app/index.js"),dev:!1!==o.doc.features.app.dev}),!0===o.doc.features.cli.enabled&&u.push({file:n.resolve(i.projectDir,"src/cli/index.js"),dev:!1!==o.doc.features.cli.dev});for await(const e of u){const n=e.file;if(!t.existsSync(n))throw new Error(`App file not found: ${n}`);const l=await r({file:n,recursive:!0}),d=!0===o.doc.features.all_parsed_imports?l.all:l.required;for await(const t of d){if("npm"!==t.type)continue;if(s.find((e=>e.package===t.package)))continue;if(c.find((e=>e.package===t.package)))continue;const n=await a({name:t.package,projectDir:i.projectDir,setProgress:p});(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const m={atom:o,packageDependencies:s,packageDevDependencies:c},f=i.templateCommonDir,g=e.compile(t.readFileSync(n.resolve(f,"package.json.njk"),"utf8"),e.configure(f)).render(m),y=i.projectDir,h=n.resolve(y,"package.json");t.writeFileSync(h,g,"utf8");const w=n.resolve(i.project.projectDir,"fnet");if(t.existsSync(w)){const e=n.resolve(i.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const r=t.readdirSync(w);for(const a of r){const r=n.resolve(w,a);if(!t.lstatSync(r).isFile())continue;const o=n.resolve(e,a);t.copyFileSync(r,o)}}},qe}function an(){if(Ue)return Le;Ue=1;const e=d,t=u,n=l;return Le=async({atom:r,setProgress:a,context:o,packageDependencies:i})=>{if(!0!==r.doc.features.cli.enabled)return;await a({message:"Creating cli."});const s={atom:r,packageDependencies:i},c=o.templateDir,p=t.resolve(o.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await n({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:p,context:s})},Le}function on(){if(We)return Je;We=1;const e=d,t=u,n=m,r=_;return Je=async({atom:a,setProgress:o,context:i,packageDependencies:s})=>{await o({message:"Creating rollup file."});const c={atom:a,packageDependencies:s},p=t.resolve(i.projectDir,"src","default/index.js");if(!e.existsSync(p))throw new Error(`Entry file not found: ${p}`);const l=(await 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=i.templateCommonDir;let f=n.compile(e.readFileSync(t.resolve(m,"rollup.config.mjs.njk"),"utf8"),n.configure(m)).render(c);const g=i.projectDir;let y=t.resolve(g,"rollup.config.mjs");e.writeFileSync(y,f,"utf8")},Je}function sn(){if(Ge)return Ke;Ge=1;const e=d,t=u,n=m,r=x,a=P,o=S;return Ke=async({atom:i,setProgress:s,context:c,njEnv:p})=>{if(!0!==i.doc.features.cli.enabled)return;await s({message:"Creating yargs."});let l={};if(l=i.doc.input?i.doc.input:{type:"object",properties:{},required:[]},i.doc.features.cli.fargs&&!1!==i.doc.features.cli.fargs?.enabled){const e=i.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},n={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),l.properties&&(l.properties.fargs=t,l.properties.ftag=n)}const d={options:l,imports:[],atom:i},u=c.templateDir,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:{email:!0},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});o(y);const h=y.compile(l),w=a(y,h);e.writeFileSync(t.resolve(f,"src/default/validate_input.js"),w,"utf8")},Ke}function cn(){if(Xe)return He;Xe=1;const e=d,t=u,n=m;return He=async({atom:r,setProgress:a,context:o,packageDependencies:i})=>{await a({message:"Creating .gitignore"});const s={atom:r,packageDependencies:i},c=o.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),n.configure(c)).render(s),l=o.projectDir,d=t.resolve(l,".gitignore");e.writeFileSync(d,p,"utf8")},He}function pn(){if(Ve)return Ye;Ve=1;const e=d,t=u,n=m;return Ye=async({atom:r,setProgress:a,context:o,packageDependencies:i})=>{await a({message:"Creating tsconfig.json."});const s={atom:r,packageDependencies:i},c=o.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),n.configure(c)).render(s),l=o.projectDir,d=t.resolve(l,"tsconfig.json");e.writeFileSync(d,p,"utf8")},Ye}function ln(){if(Qe)return Ze;Qe=1;const e=m,t=d,n=u,r=s;return Ze=async({atom:a,context:o,setProgress:i,Atom:s})=>{const c="readme.md",p=`Creating ${c}`;if(await i({message:p}),o.project?.readme){const a=o.projectDir,i={content:o.project.readme.doc.content},s=n.resolve(o.project.projectDir,"fnet/how-to.md");if(t.existsSync(s)){const e=t.readFileSync(s,"utf8");i.howto=e}const p=n.resolve(o.project.projectDir,"fnet/input.yaml");if(t.existsSync(p)){const e=await r({file:p,tags:o.tags});i.input=e.content}const l=o.templateCommonDir,d=e.compile(t.readFileSync(n.resolve(l,`${c}.njk`),"utf8"),e.configure(l)).render(i),u=n.resolve(a,`${c}`);t.writeFileSync(u,d,"utf8")}else if(a.id){const r=await s.first({type:"wiki",parent_id:a.id});if(!r||"markdown"!==r.doc?.["content-type"])return;const{content:i,...p}=r.doc,l={content:i},d=o.templateCommonDir,u=e.compile(t.readFileSync(n.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(l),m=o.projectDir,f=n.resolve(m,`${c}`);t.writeFileSync(f,u,"utf8")}},Ze}function dn(){if(tt)return et;tt=1;const e=n,t=p;return et=async({setProgress:n,context:r})=>{const a=r.projectDir;await n({message:"Prettifiying source files."});let o=e.join("src","**","*");await t({commands:{steps:[`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:a}})}}function un(){if(rt)return nt;rt=1;const e=i;return nt=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.")},nt}function mn(){if(ot)return at;ot=1;const e=i;return at=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.")},at}function fn(){if(st)return it;st=1;const e=u,t=A,n=l;return it=async r=>{const{setProgress:a,atom:o,context:i}=r;a({message:"Installing Python packages"});const s=i.projectDir,c=await t({pythonVersion:"3.12",packages:[{package:"fnet-import-parser",version:"0.1.9"}]});await c.runBin("pip",["show","-f","fnet-import-parser"]);const{result:p}=await c.runBin("fnet_import_parser",["--entry_file",e.join(s,"src","index.py")],{captureName:"result"}),l=JSON.parse(p.items[0].stdout),d=l.required["third-party"]?.map((e=>({package:e.metadata?.package||e.path,version:e.metadata?.version||void 0,channel:e.metadata?.channel||void 0})))||[],u=o.doc.dependencies||[];for(const e of d)u.some((t=>t.package===e.package))||u.push(e);const m=e.join(s,".conda"),f=await t({envDir:m,pythonVersion:o.doc.features.runtime.version||"3.12",packages:u});i.pythonEnv=f,r.packageDependencies=u;const g=o.doc.features.render?.dirs||[];for(const t of g)t.dir=e.resolve(s,t.dir),t.outDir=e.resolve(s,t.outDir),await n(t)},it}function gn(){if(pt)return ct;pt=1;const e=i;return ct=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 yn(){if(Wt)return Jt;Wt=1;const e=function(){if(dt)return lt;dt=1;const e=E,n=t;return lt=async({setProgress:t,context:r,deploymentProject:a,deploymentProjectTarget:o,buildId:i})=>{await t({message:"Deploying it as gitlab project."});const s=r.projectDir;let c="fnet-to-gitlab";const p=o.params.config||"gitlab",l=await n({name:p,dir:r.projectDir,tags:r.tags});if(!l)throw new Error(`Couldnt load config ${p}`);const{data:d}=l.data;c+=` --projectGroupId=${d.projectGroupId}`,c+=` --projectPath='${s}'`,c+=` --projectName='${o.params.name}'`,c+=` --projectBranch='${o.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==o.dryRun&&(await e({cmd:c}),a.isDirty=!0)}}(),r=function(){if(mt)return ut;mt=1;const e=d,n=u,r=$,a=E,o=t;return ut=async({setProgress:t,context:i,deploymentProject:s,deploymentProjectTarget:c,registerToPackageManager:p,yamlTarget:l})=>{await t({message:"Deploying it as gcs package."});const d=i.projectDir,u=n.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 o({name:c.config||"gcs",dir:i.projectDir,tags:i.tags});let h="fnet-files-to-gcs";h+=` --projectId='${y.env.GCS_PROJECT_ID}'`,h+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,h+=` --keyFilename='${n.resolve(n.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,h+=` --dir='${d}'`,h+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",h+=` --destDir='${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}))}}(),s=function(){if(gt)return ft;gt=1;const e=d,n=u,r=$,a=i,s=t,p=T,l=c,m=o;return ft=async({atom:t,setProgress:o,context:i,deploymentProject:c,deploymentProjectTarget:d,yamlTarget:u})=>{await o({message:"Deploying it as npm package."});const f=i.projectDir,g=n.resolve(f,"package.json"),y=e.readFileSync(g),h=JSON.parse(y);h.name=d.params.name,h.version=r.inc(d.version,"patch");const w=d.params.bin?.name||d.params.bin;!1!==d.params.bin?.enabled&&w&&"string"==typeof w&&(h.bin={[w]:"dist/cli/esm/index.js",[t.doc.name]:"dist/cli/esm/index.js"}),delete h.scripts,delete h.devDependencies,h.scripts={serve:"npx serve ."},e.writeFileSync(g,JSON.stringify(h,null,"\t"));const v=d.config||"npm";let b=(await s({name:v,dir:i.projectDir,tags:i.tags,optional:!0}))?.data;if(!b){const t=p({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===t.length)throw new Error("Couldnt find schema to create npm config");const r=await l({schema:t[0],tags:i.tags}),a=i.project.projectDir,o=n.resolve(a,".fnet");e.existsSync(o)||e.mkdirSync(o),e.writeFileSync(n.resolve(o,`${v}.fnet`),m.stringify(r)),b=r}if(e.writeFileSync(n.resolve(f,".npmrc"),`//registry.npmjs.org/:_authToken=${b.env.NPM_TOKEN}`),!0!==d.dryRun){if(0!==a.exec("npm publish --access public",{cwd:f}).code)throw new Error("Couldnt publish to npm");e.writeFileSync(g,y),c.isDirty=!0,d.version=h.version,u.set("version",h.version)}},ft}(),p=function(){if(ht)return yt;ht=1;const e=d,n=u,r=I,a=m,o=C,i=t;return yt=async({atom:t,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"===t.type?"WF":"LIB";let h;if("simple"===l.deploy.template)h={atom:t,packageDependencies:u,red:{tab:{id:l.deploy.id||o.util.generateId(),label:`${y}/${t.id?t.id:r.hostname()}/${t.name}/${l.deploy.name||l.deploy.template}`},function:{id:o.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},inject:{id:o.util.generateId(),...l.params?.inject,payload:"json"===l.params?.inject?.payloadType?`'${JSON.stringify(l.params?.inject?.payload)}'`:l.params?.inject?.payload},debug:{id:o.util.generateId()}}};else if("cronjob"===l.deploy.template){let a=l.params?.schedules?cloneDeep(l.params?.schedules):void 0;a?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),h={atom:t,packageDependencies:u,red:{tab:{id:l.deploy.id||o.util.generateId(),label:`${y}/${t.id?t.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:o.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},cronjob:{id:o.util.generateId(),schedules:a},debug:{id:o.util.generateId()}}}}else{if("http"!==l.deploy.template)return;h={atom:t,packageDependencies:u,red:{tab:{id:l.deploy.id||o.util.generateId(),label:`${y}/${t.id?t.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:o.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},httpin:{id:o.util.generateId(),method:l.params.method||"get",url:l.params.url},httpout:{id:o.util.generateId()},debug:{id:o.util.generateId()}}}}let w=a.compile(e.readFileSync(n.resolve(g,`deploy/node-red/${l.deploy.template}.yaml.njk`),"utf8"),m).render(h);if(e.writeFileSync(n.resolve(f,"node-red.yaml"),w),w=yaml.load(w),!0===l.dryRun)return;p.isDirty=!0;const v=(await i({name:c.redConfig||"red",dir:c.projectDir,tags:c.tags}))?.data,b=l.deploy.url||v.env.RED_URL,_={};if(!1!==l.deploy.auth&&(_.Authorization="Bearer "+atomAccessToken),l.deploy.id)!0===l.actions?.delete?(await axios({method:"DELETE",url:`${b}/flow/${l.deploy.id}`,headers:_}),delete l.actions.delete,delete l.deploy.id,l.enabled=!1):await axios({method:"PUT",url:`${b}/flow/${l.deploy.id}`,data:w,headers:_});else{const e=await axios({method:"POST",url:`${b}/flow`,data:w,headers:_});l.deploy.id=e.data.id}},yt}(),l=function(){if(vt)return wt;vt=1;const e=a,r=n,o=t;return wt=async({atom:t,Atom:n,setProgress:a,context:i,packageDependencies:s,deploymentProject:c,deploymentProjectTarget:p})=>{await a({message:"Deploying it as workflow lib."});const l=(await o({name:"atom",dir:i.projectDir,tags:i.tags}))?.data;let d,u,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 n.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 n.get({id:p.deploy.id}),!d)return}else{if(d=await n.create({parent_id:u,doc:{name:m,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!d)return;p.deploy.id=d.id}const g=i.projectDir;d.doc.contents=[{content:e.readFileSync(r.resolve(g,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(r.resolve(g,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(r.resolve(g,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],d.doc.name=m,d.doc.dependencies=s,"workflow.lib"===t.type?d.doc.subtype="library":"workflow"===t.type&&(d.doc.subtype="workflow"),d=await n.update(d,{id:d.id})}}(),f=function(){if(_t)return bt;_t=1;const e=t,n=O,r=R,a=$;return bt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as ios-app package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},bt}(),g=function(){if(Dt)return jt;Dt=1;const e=t,n=M,r=R,a=$;return jt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as macos-app package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},jt}(),y=function(){if(xt)return kt;xt=1;const e=t,n=F,r=R,a=$;return kt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as electron package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},kt}(),h=function(){if(St)return Pt;St=1;const e=t,n=q,r=R,a=$;return Pt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as webos package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},Pt}(),v=function(){if(Et)return At;Et=1;const e=t,n=N,r=R,a=$;return At=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as nextjs package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},At}(),b=function(){if(Tt)return $t;Tt=1;const e=t,n=L,r=R,a=$;return $t=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as docker package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},$t}(),_=function(){if(Ct)return It;Ct=1;const e=d,n=u,r=$,a=E,o=t,i=w.default;return It=async({setProgress:t,context:s,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await t({message:"Deploying it as fnet package."});const d=s.projectDir,u=n.resolve(d,"package.json"),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 o({name:p.config||"fnet-package",dir:s.projectDir,tags:s.tags});if(!y.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${g}`);if(!y.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${g}`);if(!y.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${g}`);const h=`${y.env.ATOM_API_URL}/v1/auth/token`,w=y.env.ATOM_API_USERNAME,v=y.env.ATOM_API_PASSWORD;let b=await i({method:"POST",url:h,data:{username:w,password:v},headers:{"Content-Type":"application/json"}});const _=b.data?.access_token;if(!_)throw new Error(`Invalid access_token from ${h}`);let j="fnet-files-to-gcs";if(j+=` --projectId='${y.env.GCS_PROJECT_ID}'`,j+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,j+=` --keyFilename='${n.resolve(n.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,j+=` --dir='${d}'`,j+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",j+=` --destDir='${f.name}/${f.version}'`,j+=" --metadata.cacheControl='public, max-age=31536000, immutable'",y.env.DOMAIN&&(j+=` --domain='${y.env.DOMAIN}'`),!0!==p.dry_run&&!0!==p.params.dry_run||(j+=" --dryRun"),await a({cmd:j}),e.writeFileSync(u,m),!0===p.dryRun)return;c.isDirty=!0,p.version=f.version,l.set("version",f.version);const D=`${y.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(b=await i({method:"POST",url:D,data:{name:f.name,version:f.version,version_domain:y.env.DOMAIN,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${_}`}}),b.data?.error)throw new Error("Failed to publish fnet package.")}}(),j=function(){if(Rt)return Ot;Rt=1;const e=$,n=t,r=w.default;return Ot=async({setProgress:t,context:a,deploymentProject:o,deploymentProjectTarget:i,yamlTarget:s})=>{await t({message:"Deploying it as fnet form."});const{file:c,data:p}=await n({name:i.config||"fnet-form",dir:a.projectDir,tags:a.tags});if(!p.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${c}`);if(!p.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${c}`);if(!p.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${c}`);const l=`${p.env.ATOM_API_URL}/v1/auth/token`,d=p.env.ATOM_API_USERNAME,u=p.env.ATOM_API_PASSWORD;let 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}`);o.isDirty=!0;const g=e.inc(i.version,"patch");i.params.version=g,i.version=g,s.set("version",g);const y=`${p.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(m=await r({method:"POST",url:y,data:{name:i.params.name,version:i.params.version,docs:i.params.docs,configs:i.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${f}`}}),m.data?.error)throw new Error("Error publishing fnet form.")}}(),D=function(){if(Ft)return Mt;Ft=1;const e=$,n=t,r=w.default,o=a,i=E,s=U;return Mt=async({setProgress:t,context:a,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await t({message:"Deploying it as fnet flow."});const{file:d,data:u}=await n({name:p.config||"fnet-flow",dir:a.project.projectDir,tags:a.tags});if(!u.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!u.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!u.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const 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 _="fnet-dir-zipper";_+=` --sourceDir='${a.project.projectDir}'`,_+=" -p=**/*",_+=" -g",_+=" --stdout_format=json";const j=await i({cmd:_});if(0!==j.code)throw new Error(j.stderr);const D=JSON.parse(j.stdout).path;let k=new s;k.append("file",o.createReadStream(D));const x=await r.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...k.getHeaders(),Authorization:`Bearer ${h}`},data:k});if(x.data?.error)throw new Error("Error uploading fnet flow.")}}(),k=function(){if(Nt)return qt;Nt=1;const e=$,n=t,r=w.default,o=a,i=E,s=U;return qt=async({setProgress:t,context:a,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await t({message:"Deploying it as fnet node."});const{file:d,data:u}=await n({name:p.config||"fnet-node",dir:a.project.projectDir,tags:a.tags});if(!u.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!u.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!u.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const 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 _="fnet-dir-zipper";_+=` --sourceDir='${a.project.projectDir}'`,_+=" -p=**/*",_+=" -g",_+=" --stdout_format=json";const j=await i({cmd:_});if(0!==j.code)throw new Error(j.stderr);const D=JSON.parse(j.stdout).path;let k=new s;k.append("file",o.createReadStream(D));const x=await r.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...k.getHeaders(),Authorization:`Bearer ${h}`},data:k});if(x.data?.error)throw new Error("Error uploading fnet node.")}}(),x=function(){if(Ut)return Lt;Ut=1;const e=t,n=B,r=R,a=$;return Lt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as Rust package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},Lt}(),P=function(){if(zt)return Bt;zt=1;const e=t,n=z,r=R,a=$;return Bt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as pyip package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},Bt}();return Jt=async t=>{const{atom:n,packageDependencies:a,context:o,deploymentProjectTarget:i,setProgress:c,deploymentProject:d,yamlTarget:u}=t;if(!0===i.enabled)if("lib"===i.type)await l({...t});else if("red"===i.type)await p({...t});else if("npm"===i.type)await s({...t});else if("gcs"===i.type)await r({...t});else if("gitlab"===i.type)await e({...t});else if("fnet-package"===i.type)await _({...t});else if("fnet-form"===i.type)await j({...t});else if("fnet-node"===i.type)await k({...t});else if("fnet-flow"===i.type)await D({...t});else{let e;if("nextjs"===i.type?e=v:"webos"===i.type?e=h:"electron"===i.type?e=y:"docker"===i.type?e=b:"ios"===i.type?e=f:"macos"===i.type?e=g:"rust"===i.type?e=x:"pyip"===i.type&&(e=P),!e)return;await e({atom:n,target:i,onProgress:c,projectDir:o.projectDir,dependencies:a,context:o,yamlTarget:u}),d.isDirty=!0}},Jt}function hn(){if(Gt)return Kt;Gt=1;const e=d,n=u,r=o,a=i,s=m,c=function(){if(X)return H;X=1;const e=f,t=g;return H=async()=>{if(!await t({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const n=e.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await n.connect(),n}}(),{nanoid:p}=y,b=function(){if(V)return Y;V=1;const{Api:e}=h,t=w.default,n=v;return Y=class{init({config:r,accessToken:a}){return new Promise(((o,i)=>{if(e.set_api_url(r.data.url),a)return e.set_req_token(a),void o(a);t({method:"POST",url:`${r.data.issuer}/protocol/openid-connect/token`,data:n.stringify(r.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((t=>{e.set_req_token(t.data.access_token),o(t.data.access_token)})).catch((t=>{e.set_req_token(),i(t)}))}))}}}(),j=Qt(),D=(Ee||(Ee=1,Ae=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)}),Ae),k=en(),x=Ce?Ie:(Ce=1,Ie=async({atom:e,packageDependencies:t,packageDevDependencies:n,setProgress:r})=>{r("Initializing dependencies")}),P=tn(),S=rn(),A=an(),E=function(){if(ze)return Be;ze=1;const e=d,t=u,n=l;return Be=async({atom:r,setProgress:a,context:o,packageDependencies:i})=>{if(!0!==r.doc.features.cli.enabled)return;await a({message:"Creating cli."});const s={atom:r,packageDependencies:i},c=o.templateDir,p=t.resolve(o.projectDir,"cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await n({pattern:["index.py.njk","__init__.py.njk"],dir:t.resolve(c,"cli"),outDir:p,context:s})},Be}(),$=on(),T=sn(),I=cn(),C=pn(),O=ln(),R=dn(),M=un(),F=mn(),q=fn(),N=gn(),L=nn(),U=yn(),{Atom:B}=h,z=J,G=t,Z=_,Q=W,ee=K;return Kt=class{#e;#t;#n;#r;#a;#o;#i;#s;#c;#p;#l;#d;#u;#m;#f;#g;#y;constructor(e){this.#e=new b,this.#t=e,this.#o=[],this.#i=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#o,packageDevDependencies:this.#i,setProgress:this.setProgress.bind(this),context:this.#t,Atom:B,registerToPackageManager:this.registerToPackageManager.bind(this)}}async _cache_set(e,t,n){this._redis_client&&await this._redis_client.SETEX(e,n||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async initAuth(){this.#t.id&&(this.#s=await this.#e.init({config:this.#d}),this.#y.atomAccessToken=this.#s)}async initLibrary(){const e=this.#t.id;this.#n=this.#t.project?.libraryAtom||await B.get({id:e});let t=this.#n.doc.bundleName;t=t||(this.#n.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#n.doc.bundleName=t,this.#n.type=this.#n.type||"workflow.lib",this.#y.atom=this.#n}async initLibraryDir(){this.setProgress({message:"Initializing library directory."});const t=this.#t.projectDir;let r;this.setProgress({message:"Cleaning project directory."});const o=Q({dir:t,ignore:["node_modules",".cache"],absolute:!0});for(const t of o)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."});let i=t;if(!e.existsSync(i)&&(r=a.exec(`mkdir "${t}"`),0!==r.code))throw new Error("Couldnt create workflow dir.");if(i=n.join(t,"src"),!e.existsSync(i)&&(r=a.exec(`mkdir "${i}"`),0!==r.code))throw new Error("Couldnt create library/src dir.");if(i=n.join(t,"src","default"),!e.existsSync()&&(r=a.exec(`mkdir "${i}"`),0!==r.code))throw new Error("Couldnt create library/src/default dir.")}async initLibraryDirPython(){this.setProgress({message:"Initializing library directory."});const t=this.#t.projectDir;let r;this.setProgress({message:"Cleaning project directory."});const o=Q({dir:t,ignore:[".cache",".conda","src"],absolute:!0});for(const t of o)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."});let i=t;if(e.existsSync(i)||e.mkdirSync(i,{recursive:!0}),i=n.join(t,"src"),!e.existsSync(i)&&(r=a.exec(`ln -s "${this.#t.projectSrcDir}" "${i}" `),0!==r.code))throw new Error("Couldnt link src.")}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#t.templateDir;this.#r=s.configure(e,{watch:!1,dev:!0}),this.#y.njEnv=this.#r}async initLibs(){this.setProgress({message:"Initializing external libs."});const e=[{name:this.#n.doc.name,type:"atom",parent_id:this.#n.parent_id}];this.#a=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.#o})}async initLibsPython(){this.setProgress({message:"Initializing external libs."});const e=this.#n;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=[{name:this.#n.doc.name,type:"atom",parent_id:this.#n.parent_id,atom:e}];this.#a=t}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const n=e.filter((e=>"atom"===e.type));for(let e=0;e<n.length;e++){const r=n[e],a=await this.findAtomLibrary({url:r.name});r.atom=a;const o=a.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));o?.forEach((e=>{const n=t.find((t=>t.package===e.package));n?"string"==typeof e.path?(n.path||[]).some((t=>t===e.path))||(n.path=n.path||[],n.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(n.path||[]).some((t=>t===e))||(n.path=n.path||[],n.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const t=z({url:e});if(!t)throw new Error(`Invalid package name: ${e}`);if(t.protocol||(t.protocol=this.#l),"ac:"===t.protocol){const n=t.pathname.split("/");if(1===n.length)return await B.first({where:{name:e,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===n.length){const e=await B.first({where:{name:n[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await B.first({where:{name:n[1],parent_id:e.id,type:"workflow.lib"}})}}else if("local:"===t.protocol){const e=this.#n;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=n.resolve(this.#t.projectSrcDir,"index.js"),r=await Z({file:t,recursive:!0}),a=e.doc.dependencies,o=!0===this.#n.doc.features.all_parsed_imports?r.all:r.required;for await(const e of o){if("npm"!==e.type)continue;if(a.find((t=>t.package===e.package)))continue;const t=await 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:t}){await this.setProgress({message:"Creating external lib files."}),this.#n.typesDir="./types";const r=t.filter((e=>"atom"===e.type));for(let t=0;t<r.length;t++){const a=r[t].atom,o=this.#t.projectDir;if("local:"===a.protocol){const t=n.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.js`),r=n.relative(n.join(this.#t.projectDir,"src","default"),t);if(!e.existsSync(t)){e.mkdirSync(n.dirname(t),{recursive:!0});let r="export default async (args)=>{\n";r+="}",e.writeFileSync(t,r,"utf8")}a.relativePath=r.split(n.sep).join("/"),this.#n.typesDir=`./types/${n.basename(o)}/src`}else{const t=n.join(o,"src","libs",`${a.id}.js`),r=a.doc.contents?.find((e=>"esm"===e.format))||a.doc;e.writeFileSync(t,r.content,"utf8")}}}async createAtomLibFilesPython({libs:t}){await this.setProgress({message:"Creating external lib files."});const r=t.filter((e=>"atom"===e.type));for(let t=0;t<r.length;t++){const a=r[t].atom;if("local:"===a.protocol){const t=n.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.py`);if(!e.existsSync(t)){e.mkdirSync(n.dirname(t),{recursive:!0});let r="def default():\n";r+=' print("Hello world!")\n',e.writeFileSync(t,r,"utf8")}}}}async createEngine(){await this.setProgress({message:"Creating engine file."});const t={libs:this.#a.filter((e=>"atom"===e.type)),libraryAtom:this.#n,atom:this.#n},r=this.#t.templateDir,a=s.compile(e.readFileSync(n.resolve(r,n.join("src","default","engine.js.njk")),"utf8"),this.#r).render(t),o=this.#t.projectDir,i=n.resolve(o,n.join("src","default","index.js"));e.writeFileSync(i,a,"utf8")}async createProjectYaml(){const t="node.yaml",a=`Creating ${t}`;await this.setProgress({message:a});const{content:o,...i}=this.#n.doc,c={content:r.stringify(i)},p=this.#t.templateDir,l=s.compile(e.readFileSync(n.resolve(p,`${t}.njk`),"utf8"),this.#r).render(c),d=this.#t.projectDir,u=n.resolve(d,`${t}`);e.writeFileSync(u,l,"utf8")}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#t.project?.devops){const e=[this.#t.project?.devops];for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&await n.save()}}else if(this.#n.id){const e=await B.list({type:"library.deploy",parent_id:this.#n.id});for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&(n=await B.update(n,{id:n.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:n}=t;if(t.doc.targets&&Array.isArray(t.doc.targets))throw new Error("Deployment project targets are deprecated. Please update targets in the yaml file.");const r=Object.keys(t.doc||{}),a=n||{};for(let e=0;e<r.length;e++){const n=t.doc[r[e]];n.name=r[e];const o=a.get(r[e]);await U({...this.#y,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:o})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#t.id)return;let r=await B.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});r?(r.doc.versions.splice(0,0,{v:n.version}),await B.update(r,{id:r.id})):r=await B.create({parent_id:this.#d.env.ATOM_PACKAGES_ID,doc:{name:t.params.name,type:"pm",versions:[{v:n.version}]}})}async setProgress(e){const t="string"==typeof e?e:e?.message;console.log(ee.blue(t)),await this._cache_set(this.#p,{status:"IN_PROGRESS",message:t})}async initNode(){await j(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 O(this.#y),await C(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 O(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 c(),this.#c=this.#t.buildId||p(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 G({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}}},Kt}var wn=G(function(){if(Yt)return Vt;Yt=1;const m=process.cwd(),{spawn:f}=e;t({name:["redis"],dir:m,optional:!0});const g=n,y=r,h=a,w=o,v=i,b=s,_=t,j=c,D=p,k=l,x=hn(),P=function(){if(Xt)return Ht;Xt=1;const e=d,t=u;return Ht=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}),S="win32"===process.platform?";":":";process.env.PATH=`${g.join(P,"/.bin")}${S}${process.env.PATH}`;let A=y(process.argv.slice(2)).command("create","Create flow node project",(e=>e.option("name",{type:"Project name",demandOption:!0}).option("vscode",{type:"boolean",default:!0,alias:"vs"}).option("runtime",{type:"string",default:"node",choices:["node","python"]})),(async e=>{try{const t=g.resolve(P,"@fnet/cli-project-node/dist/template/project"),n=g.resolve(m,e.name);h.existsSync(n)||h.mkdirSync(n),await k({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let r=v.exec("fnode build",{cwd:n});if(0!==r.code)throw new Error("Failed to build project.");if(v.which("git")&&(r=v.exec("git init --initial-branch=main",{cwd:n}),0!==r.code))throw new Error("Failed to initialize git.");if(v.which("code")&&e.vscode&&(r=v.exec(`cd ${n} && code .`),0!==r.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})).command("project","Flow node project",(e=>e.option("update",{type:"boolean",default:!1,alias:"-u"})),(async e=>{try{const t=g.resolve(P,"@fnet/cli-project-node/dist/template/project"),n=process.cwd(),r=await T(e);if(e.update){if(await k({dir:t,outDir:n,context:{name:r.project.projectFileParsed.name,runtime:r.project.runtime.type},copyUnmatchedAlso:!0}),0!==v.exec("fnode build",{cwd:n}).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(e){console.error("Project failed.",e.message),process.exit(1)}})).command("build","Build flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"]}).option("ftag",{type:"array"})),(async e=>{try{const t=await T(e),n=new x(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})).command("deploy","Build and deploy flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await T({...e,mode:"all"}),n=new x(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})).command("file","Just create files",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await T({...e,mode:"file"}),n=new x(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}}));function E(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 T(e),{projectDir:a}=t,o=process.argv.slice(3);f(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 $(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 T(e),{projectDir:o}=a,i=process.argv.slice(3);n=g.join(o,".conda","bin",n||t);f(n,[...r,...i],{cwd:o,stdio:"inherit",shell:!0,env:{PYTHONPATH:o}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function T(e){if(e.id)return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",templateDir:g.resolve(P,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:g.resolve(P,"./@fnet/cli-project-common/dist/template/default"),projectDir:g.resolve(m,`./.output/${e.id}`),tags:e.ftag};{const t=await async function({tags:e}){const t=g.resolve(m,"node.yaml");if(!h.existsSync(t))throw new Error("node.yaml file not found in current directory.");const{raw:n,parsed:r}=await b({file:t,tags:e}),a=g.dirname(t);r.features=r.features||{};const o=r.features;o.runtime=o.runtime||{},o.runtime.type=o.runtime.type||"node","python"===o.runtime.type?o.runtime.template=o.runtime.template||"python":o.runtime.template=o.runtime.template||"default";const i={libraryAtom:{doc:{...r},fileName:"index"},projectDir:a,projectFilePath:t,projectFileContent:n,projectFileParsed:r,runtime:o.runtime};let s=g.resolve(a,"fnet/targets.yaml");if(!h.existsSync(s)&&(s=g.resolve(a,"node.devops.yaml"),h.existsSync(s))){const e=g.resolve(a,"fnet");h.existsSync(e)||h.mkdirSync(e),h.copyFileSync(s,g.resolve(a,"fnet/targets.yaml")),h.unlinkSync(s)}if(h.existsSync(s)){const{raw:t,parsed:n}=await b({file:s,tags:e}),r=w.parseDocument(t);i.devops={filePath:s,fileContent:t,yamlDocument:r,doc:{...n},type:"library.deploy",save:async()=>{h.writeFileSync(i.devops.filePath,r.toString())}}}const c=g.resolve(a,"readme.md");if(h.existsSync(c)){const e=h.readFileSync(c,"utf8");i.readme={filePath:c,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return i}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:g.resolve(P,`./@fnet/cli-project-node/dist/template/${t.runtime.template}`),templateCommonDir:g.resolve(P,`./@fnet/cli-project-common/dist/template/${t.runtime.template}`),projectDir:g.resolve(t.projectDir,"./.workspace"),projectSrcDir:g.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return A=A.command("create-input <name>","Create an input config file",(e=>e.positional("name",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await T(e),{project:n}=t,{projectDir:r,projectFileParsed:a}=n,o=a.input;if(!o)throw new Error("Config schema not found in project file.");const i=await j({schema:o,format:"yaml"}),s=g.resolve(r,".fnet");h.existsSync(s)||h.mkdirSync(s);const c=g.resolve(s,`${e.name}.fnet`);h.writeFileSync(c,i)}catch(e){console.error(e.message),process.exit(1)}})),A=function(e){return e.command("update-input <name>","Update an input config file",(e=>e.positional("name",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await T(e),{project:n}=t,{projectDir:r,projectFileParsed:a}=n,o=a.input;if(!o)throw new Error("Config schema not found in project file.");const i=g.resolve(r,".fnet"),s=g.resolve(i,`${e.name}.fnet`),c=await j({schema:o,format:"yaml",ref:s});h.existsSync(i)||h.mkdirSync(i),h.writeFileSync(s,c)}catch(e){console.error(e.message),process.exit(1)}}))}(A),A=E(A,{bin:"npm"}),A=E(A,{bin:"node"}),A=E(A,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),A=E(A,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),A=E(A,{name:"app",bin:"npm",preArgs:["run","app","--"]}),A=E(A,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),A=E(A,{bin:"npx"}),A=E(A,{bin:"cdk"}),A=E(A,{bin:"aws"}),A=function(e,{name:t,preArgs: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 T(e),{projectDir:r}=t,a=e.config,o=await _({name:a,dir:r,transferEnv:!1,optional:!0,tags:t.tags}),i=o?.data?.env||void 0,s=e.command,c=process.argv.slice(5);f(s,[...n,...c],{cwd:r,stdio:"inherit",shell:!0,env:{...process.env,...i}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(A,{name:"with"}),A=function(e,{name:t,preArgs:n=[]}){return e.command(`${t} group [options..]`,"Run a command group.",(e=>e.positional("group",{type:"string"}).option("ftag",{type:"array"}).help(!1).version(!1)),(async e=>{try{const t=await T(e),{project:n}=t,{projectFileParsed:r}=n,a=r.commands;if(!a)throw new Error("Commands not found in project file.");const o=a[e.group];if(!o)throw new Error(`Command group '${e.group}' not found in project file.`);await D({commands:o})}catch(e){console.error(e.message),process.exit(1)}}))}(A,{name:"run"}),A=$(A,{name:"python"}),A=$(A,{name:"python3"}),A=$(A,{name:"pip"}),A=$(A,{name:"pip3"}),A.demandCommand(1,"You need at least one command before moving on").help().argv,Vt}());module.exports=wn;
|
|
2
|
+
"use strict";var e=require("child_process"),t=require("@fnet/config"),n=require("path"),r=require("yargs/yargs"),a=require("fs"),o=require("yaml"),i=require("shelljs"),s=require("@fnet/yaml"),c=require("@fnet/object-from-schema"),p=require("@fnet/shell-flow"),l=require("@flownet/lib-render-templates-dir"),d=require("node:fs"),u=require("node:path"),m=require("nunjucks"),f=require("redis"),g=require("@flownet/lib-is-redis-online"),y=require("nanoid"),h=require("@flownet/lib-atom-api-js"),w=require("axios"),v=require("qs"),b=require("lodash.merge"),_=require("@flownet/lib-parse-imports-js"),j=require("@fnet/npm-list-versions"),D=require("@fnet/npm-pick-versions"),k=require("object-hash"),x=require("ajv/dist/2020"),P=require("ajv/dist/standalone"),S=require("ajv-formats"),A=require("@fnet/auto-conda-env"),E=require("@fnet/shell"),$=require("semver"),T=require("@fnet/up-list-files"),I=require("node:os"),C=require("@node-red/util"),O=require("@flownet/lib-to-ios-app"),R=require("lodash.clonedeep"),M=require("@flownet/lib-to-macos-app"),F=require("@flownet/lib-to-electron"),q=require("@flownet/lib-to-webos"),N=require("@flownet/lib-to-nextjs"),L=require("@flownet/lib-to-docker"),U=require("form-data"),z=require("@fnet/to-rust"),B=require("@fnet/to-pyip"),J=require("@flownet/lib-parse-node-url"),W=require("@fnet/list-files"),K=require("chalk");function G(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var H,X,Y,V,Z,Q,ee,te,ne,re,ae,oe,ie,se,ce,pe,le,de,ue,me,fe,ge,ye,he,we,ve,be,_e,je,De,ke,xe,Pe,Se,Ae,Ee,$e,Te,Ie,Ce,Oe,Re,Me,Fe,qe,Ne,Le,Ue,ze,Be,Je,We,Ke,Ge,He,Xe,Ye,Ve,Ze,Qe,et,tt,nt,rt,at,ot,it,st,ct,pt,lt,dt,ut,mt,ft,gt,yt,ht,wt,vt,bt,_t,jt,Dt,kt,xt,Pt,St,At,Et,$t,Tt,It,Ct,Ot,Rt,Mt,Ft,qt,Nt,Lt,Ut,zt,Bt,Jt,Wt,Kt,Gt,Ht,Xt,Yt,Vt={};function Zt(){if(Q)return Z;Q=1;const e=b;return Z=({feature:t,features:n,packageDevDependencies:r})=>{const{name:a,packages:o,options:i,extraCheck:s,explicit:c}=t,p=`${a}_enabled`,l=n.rollup_output||{},d=Object.keys(l);let u=i||{};const m=n[a]?.options;m&&(u=e(u,m));const f=!n[a]||!1===n[a]?.enabled;d.forEach((e=>{const t=n.rollup_output[e];if(t){if(Reflect.has(t,a)){if(f||!t[a]||!1===t[a]?.enabled)return void delete t[a];!0===t[a]&&(t[a]={enabled:!0,options:u})}else{if(f||c||!1===n[p])return;t[a]={enabled:!0}}t[a]=t[a]||{},t[a].options={...u,...t[a].options}}}));let g=d.some((e=>!0===n.rollup_output[e][a]?.enabled));s&&(g=s()&&g),n[p]=g,g&&o.forEach((e=>r.push({package:e[0],version:e[1]})))}}function Qt(){if(Se)return Pe;Se=1;const e=b,t=d,n=u,r=_,a=function(){if(te)return ee;te=1;const e=Zt();return ee=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})},ee}(),o=function(){if(re)return ne;re=1;const e=Zt();return ne=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})},ne}(),i=function(){if(oe)return ae;oe=1;const e=Zt();return ae=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})},ae}(),s=function(){if(se)return ie;se=1;const e=Zt();return ie=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})},ie}(),c=function(){if(pe)return ce;pe=1;const e=Zt();return ce=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})},ce}(),p=function(){if(de)return le;de=1;const e=Zt();return le=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})},le}(),l=function(){if(me)return ue;me=1;const e=Zt();return ue=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:a,packageDevDependencies:r})},ue}(),m=function(){if(ge)return fe;ge=1;const e=Zt();return fe=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:a,packageDevDependencies:r})},fe}(),f=function(){if(he)return ye;he=1;const e=Zt();return ye=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:a,packageDevDependencies:r})},ye}(),g=function(){if(ve)return we;ve=1;const e=Zt();return we=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})},we}(),y=function(){if(_e)return be;_e=1;const e=Zt();return be=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features;e({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:a,packageDevDependencies:r})},be}(),h=function(){if(De)return je;De=1;const e=Zt();return je=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features,o={};!0===a.app?.enabled&&(o.targets=o.targets||[],o.targets.push({src:"./src/app/index.html",dest:a.app.dir}),Reflect.has(a.app,"copy")||Reflect.has(a,"copy")||(a.copy=!0)),e({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:o},features:a,packageDevDependencies:r})},je}(),w=function(){if(xe)return ke;xe=1;const e=Zt();return ke=t=>{const{atom:n,packageDevDependencies:r}=t,a=n.doc.features,o=a.css&&!1!==a.css.enabled;let i=[];o&&(i.push(["rollup-plugin-postcss","^4"]),i.push(["sass","^1.66"]),(a.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":i.push(["postcss-import","^15"]);break;case"postcss-url":i.push(["postcss-url","^10"]);break;case"postcss-preset-env":i.push(["postcss-preset-env","^9"]);break;case"autoprefixer":i.push(["autoprefixer","^10"]);break;case"cssnano":i.push(["cssnano","^6"])}}))),e({feature:{name:"css",packages:i},features:a,packageDevDependencies:r})},ke}();function v({dir:e,name:r="index"}){let a=n.resolve(e,`./${r}.tsx`);if(t.existsSync(a)||(a=n.resolve(e,`./${r}.ts`)),t.existsSync(a)||(a=n.resolve(e,`./${r}.jsx`)),t.existsSync(a)||(a=n.resolve(e,`./${r}.js`)),!t.existsSync(a))return{};const o=a,i=n.extname(a);return{file:o,ext:i,ts:".ts"===i||".tsx"===i,name:r}}return Pe=async t=>{const{atom:d,context:u,setProgress:b}=t;b("Initializing features..."),d.doc.features=d.doc.features||{};const _=d.doc.features;_.project=_.project||{},_.project.format=_.project.format||_.project_format||"esm",_.project_format=_.project.format,_.dts_enabled=!0===_.dts||void 0!==_.dts&&!1!==_.dts,_.hasOwnProperty("all_parsed_imports")||(_.all_parsed_imports=!0);const j=n.resolve(u.project.projectDir),D=v({dir:n.resolve(j,"./app")});if(D.file){b("Parsing app entry imports...");let e=await r({file:D.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));_.app_uses_jsx=t,_.app_has_entry=!0,e=await r({file:D.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),_.app_entry_uses_jsx=t,_.app_entry_is_ts=D.ts,_.app_entry_ext=D.ext}const k=v({dir:n.resolve(j,"./cli")});if(k.file){b("Parsing cli entry imports...");let e=await r({file:k.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));_.cli_uses_jsx=t,_.cli_has_entry=!0,e=await r({file:k.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),_.cli_entry_uses_jsx=t,_.cli_entry_is_ts=k.ts,_.cli_entry_ext=k.ext}if("workflow.lib"===d.type){const e=v({dir:n.resolve(j,"./src")});if(e.file){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));_.src_uses_jsx=n,_.src_has_entry=!0,t=await r({file:e.file}),n=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),_.src_entry_uses_jsx=n,_.src_entry_is_ts=e.ts,_.src_entry_ext=e.ext}}const x=Reflect.has(_,"app_entry_uses_jsx")?!0===_.app_entry_uses_jsx:!0===_.src_entry_uses_jsx,P=Reflect.has(_,"cli_entry_uses_jsx")?!0===_.cli_entry_uses_jsx:!0===_.src_entry_uses_jsx;_.form_enabled=!0===d.doc.form||!0===d.doc.form?.enabled||!0===_.form||!0===_.form?.enabled,_.multiple_enabled=_.multiple_enabled||!0===_.multiple||!0===_.multiple?.enabled,!1===_.app?_.app={enabled:!1}:!0===_.app?_.app={enabled:!0,extend:!0===_.app_has_entry,export:!0,react:x}:_.app={enabled:!0,extend:!0===_.app_has_entry,export:!0,react:x,..._.app||{}},_.app.enabled=!0===_.app.enabled&&(!0===d.doc.features.form_enabled||!0===_.app.extend||!0===_.app.enabled),_.app.format=_.app.format||"esm",_.app.folder=_.app.folder||_.app.format||"default",!1===_.cli?_.cli={enabled:!1}:!0===_.cli?_.cli={enabled:!0,extend:!0===_.cli_has_entry,export:!0,react:P}:_.cli={enabled:!0,extend:!0===_.cli_has_entry,export:!0,react:P,..._.cli||{}},_.cli.enabled=!0===_.cli.enabled&&(!1===d.doc.features.form_enabled||!0===_.cli.extend||!0===_.cli.enabled),_.cli.format=_.cli.format||"esm",_.cli.folder=_.cli.folder||_.cli.folder||"esm",_.cli.node_options=_.cli.node?.options||_.cli.node_options||"",_.json=_.cli.enabled||_.json;const S={cjs:{format:"cjs",context:_.form_enabled?"window":"global",babel:!0===_.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==_.cjs,copy:!1},esm:{format:"esm",context:_.form_enabled?"window":"global",babel:!0===_.src_uses_jsx||!1,browser:!1,replace:!0,browsersync:!0,terser:!1,enabled:!1!==_.esm,copy:!0},iife:{format:"iife",context:_.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!1!==_.iife,terser:!0,copy:!1}};!0===_.webos&&(S.webos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/webos",copy:!1,babel_options:{targets:{chrome:"79"}}}),!0===_.electron&&(S.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===_.nextjs&&(S.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===_.ios&&(S.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===_.macos&&(S.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===_.app.enabled&&(_.app.dir=`./dist/app/${_.app.folder}`,S.app={format:_.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:_.app.dir,terser:!0,output_exports:!1===_.app.export?"none":"auto"}),!0===_.cli.enabled&&(_.cli.dir=`./dist/cli/${_.cli.folder}`,S.cli={format:_.cli.format,context:"global",babel:!0===_.src_uses_jsx||!0===_.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:_.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===_.cli.export?"none":"auto"});const A={server:".",startPath:`${n.normalize(_.app.dir||".")}`,files:[n.normalize("./dist/**/*")],cors:!0,open:!1};_.babel_options=e({targets:{browsers:"last 9 versions, not dead",node:"18"}},_.babel_options||_.babel?.options),_.browsersync_options=e(A,_.browsersync_options||_.browsersync?.options||{}),_.replace_options=e({},_.replace_options||_.replace?.options||{}),Reflect.has(_.browsersync_options,"proxy")&&delete _.browsersync_options.server,_.rollup=_.rollup||{},_.rollup_output=e(S,_.rollup_output||_.rollup?.output||{}),_.preact_enabled=!0===_.preact||_.preact&&!1!==_.preact?.enabled;let E=Object.keys(S);for(const t of E){const n=S[t];n&&(!1!==_.rollup[t]?(n.babel_options=n.babel_options||_.babel_options,n.browsersync_options=e(_.browsersync_options,n.browsersync_options),n.replace_options=e(_.replace_options,n.replace_options),_.preact_enabled&&(n.alias_enabled=!0,n.alias=n.alias||{},n.alias.entries=n.alias.entries||{},n.alias.entries.react="preact/compat",n.alias.entries["react-dom"]="preact/compat"),_.form_enabled&&(n.babel=!0)):delete _.rollup_output[t])}E=Object.keys(_.rollup_output),_.babel_enabled=E.some((e=>!0===_.rollup_output[e].babel)),_.browser_enabled=E.some((e=>!0===_.rollup_output[e].babel)),_.browsersync_enabled=!1!==_.browsersync&&E.some((e=>!0===_.rollup_output[e].browsersync)),_.browsersync_enabled=_.browsersync_enabled&&_.app.enabled,_.dependency_auto_enabled=!1!==_.dependency_auto&&!1!==_.dependency_auto?.enabled,_.npm_install_flags=_.npm_install_flags||"",_.react_version=_.react_version||_.react?.version||18,w(t),h(t),y(t),g(t),f(t),l(t),m(t),p(t),c(t),s(t),i(t),a(t),o(t)},Pe}function en(){if(Te)return $e;Te=1;const e=j;return $e=async({atom:t,packageDependencies:n,packageDevDependencies:r,setProgress:a})=>{if(a("Initializing dependencies"),"workflow"===t.type&&(n.push({package:"get-value",version:"^3"}),n.push({package:"set-value",version:"^4"})),t.doc.features.form_enabled&&t.doc.features.dependency_auto_enabled){let 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:"@flownet/react-app",version:"^0.1"}),n.push({package:"@flownet/react-app-state",version:"^0.1"}))}t.doc.features.preact_enabled&&n.push({package:"preact",version:"^10"}),!0===t.doc.features.cli.enabled&&(n.push({package:"@fnet/args",version:"^0.1"}),r.push({package:"ajv",version:"^8"}),t.doc.features.cli.fargs&&!1!==t.doc.features.cli.fargs?.enabled&&n.push({package:"@fnet/config",version:"0.2.21"})),t.doc.features.render&&!1!==t.doc.features.render.enabled&&r.push({package:"@flownet/lib-render-templates-dir",version:"0.1.17"}),r.push({package:"@babel/core",version:"^7"}),r.push({package:"@rollup/plugin-commonjs",version:"^28"}),r.push({package:"@rollup/plugin-node-resolve",version:"^15"}),r.push({package:"@rollup/plugin-replace",version:"^6"}),r.push({package:"rollup",version:"^4"}),t.doc.features.dts_enabled&&r.push({package:"rollup-plugin-dts",version:"^6"}),r.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),r.push({package:"@rollup/plugin-alias",version:"^5"}),r.push({package:"fs-extra",version:"^11"}),t.doc.features.babel_enabled&&(r.push({package:"@rollup/plugin-babel",version:"^6"}),r.push({package:"@babel/preset-env",version:"^7"}),r.push({package:"@babel/preset-react",version:"^7"}),t.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":r.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":r.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":r.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":r.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":r.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),r.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),t.doc.features.browsersync_enabled&&r.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})},$e}function tn(){if(Re)return Oe;Re=1;const e=d,t=u,n=l;return Oe=async({atom:r,setProgress:a,context:o,packageDependencies:i})=>{if(!0!==r.doc.features.app.enabled)return;await a({message:"Creating app folder"});const s={atom:r,packageDependencies:i,ts:Date.now()},c=o.templateDir,p=t.resolve(o.projectDir,"src/app");e.existsSync(p)||e.mkdirSync(p,{recursive:!0});let l=["index.js.njk"];!1!==r.doc.features.app.html&&l.push("index.html.njk"),await n({pattern:l,dir:t.resolve(c,"src/app"),outDir:p,context:s})},Oe}function nn(){if(Fe)return Me;Fe=1;const e=D,t=k,n=d,r=u;return Me=async({projectDir:a,name:o,setProgress:i,count:s=1})=>{let c;const p=t(["npm-pick-versions",o,s]),l=r.join(a,".cache"),d=r.join(l,p+".json");return n.existsSync(d)?(i&&i(`Picking npm version of ${o} from cache ...`),c=JSON.parse(n.readFileSync(d,"utf8"))):(i&&i(`Picking npm version of ${o} ...`),c=await e({name:o,count:s}),n.mkdirSync(l,{recursive:!0}),n.writeFileSync(d,JSON.stringify(c),"utf8")),c}}function rn(){if(Ne)return qe;Ne=1;const e=m,t=d,n=u,r=_,a=nn();return qe=async({atom:o,context:i,packageDependencies:s,packageDevDependencies:c,setProgress:p})=>{await p({message:"Creating package.json."});s.filter((e=>!0===e.dev)).forEach((e=>{c.find((t=>t.package===e.package))||c.push(e);const t=s.findIndex((t=>t.package===e.package));s.splice(t,1)}));const l=s.find((e=>"react"===e.package)),d=s.find((e=>"react-dom"===e.package));l&&!d?s.push({package:"react-dom",version:l.version}):l&&d&&(d.version=l.version),l&&o.doc.features.react_version>=17&&(s.find((e=>"@emotion/react"===e.package))||s.push({package:"@emotion/react",version:"^11"}),s.find((e=>"@emotion/styled"===e.package))||s.push({package:"@emotion/styled",version:"^11"}));const u=[];!0===o.doc.features.app.enabled&&u.push({file:n.resolve(i.projectDir,"src/app/index.js"),dev:!1!==o.doc.features.app.dev}),!0===o.doc.features.cli.enabled&&u.push({file:n.resolve(i.projectDir,"src/cli/index.js"),dev:!1!==o.doc.features.cli.dev});for await(const e of u){const n=e.file;if(!t.existsSync(n))throw new Error(`App file not found: ${n}`);const l=await r({file:n,recursive:!0}),d=!0===o.doc.features.all_parsed_imports?l.all:l.required;for await(const t of d){if("npm"!==t.type)continue;if(s.find((e=>e.package===t.package)))continue;if(c.find((e=>e.package===t.package)))continue;const n=await a({name:t.package,projectDir:i.projectDir,setProgress:p});(!0===e.dev?c:s).push({package:t.package,subpath:t.subpath,version:n.minorRange,type:"npm"})}}const m={atom:o,packageDependencies:s,packageDevDependencies:c},f=i.templateCommonDir,g=e.compile(t.readFileSync(n.resolve(f,"package.json.njk"),"utf8"),e.configure(f)).render(m),y=i.projectDir,h=n.resolve(y,"package.json");t.writeFileSync(h,g,"utf8");const w=n.resolve(i.project.projectDir,"fnet");if(t.existsSync(w)){const e=n.resolve(i.projectDir,"fnet");t.existsSync(e)||t.mkdirSync(e);const r=t.readdirSync(w);for(const a of r){const r=n.resolve(w,a);if(!t.lstatSync(r).isFile())continue;const o=n.resolve(e,a);t.copyFileSync(r,o)}}},qe}function an(){if(Ue)return Le;Ue=1;const e=d,t=u,n=l;return Le=async({atom:r,setProgress:a,context:o,packageDependencies:i})=>{if(!0!==r.doc.features.cli.enabled)return;await a({message:"Creating cli."});const s={atom:r,packageDependencies:i},c=o.templateDir,p=t.resolve(o.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await n({pattern:["index.js.njk"],dir:t.resolve(c,"src/cli"),outDir:p,context:s})},Le}function on(){if(We)return Je;We=1;const e=d,t=u,n=m,r=_;return Je=async({atom:a,setProgress:o,context:i,packageDependencies:s})=>{await o({message:"Creating rollup file."});const c={atom:a,packageDependencies:s},p=t.resolve(i.projectDir,"src","default/index.js");if(!e.existsSync(p))throw new Error(`Entry file not found: ${p}`);const l=(await 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=i.templateCommonDir;let f=n.compile(e.readFileSync(t.resolve(m,"rollup.config.mjs.njk"),"utf8"),n.configure(m)).render(c);const g=i.projectDir;let y=t.resolve(g,"rollup.config.mjs");e.writeFileSync(y,f,"utf8")},Je}function sn(){if(Ge)return Ke;Ge=1;const e=d,t=u,n=m,r=x,a=P,o=S;return Ke=async({atom:i,setProgress:s,context:c,njEnv:p})=>{if(!0!==i.doc.features.cli.enabled)return;await s({message:"Creating yargs."});let l={};if(l=i.doc.input?i.doc.input:{type:"object",properties:{},required:[]},i.doc.features.cli.fargs&&!1!==i.doc.features.cli.fargs?.enabled){const e=i.doc.features.cli.fargs,t={type:"string",description:"Config name to load args",hidden:!1},n={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(e,"default")&&(t.default=e.default),l.properties&&(l.properties.fargs=t,l.properties.ftag=n)}const d={options:l,imports:[],atom:i},u=c.templateDir,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:{email:!0},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});o(y);const h=y.compile(l),w=a(y,h);e.writeFileSync(t.resolve(f,"src/default/validate_input.js"),w,"utf8")},Ke}function cn(){if(Xe)return He;Xe=1;const e=d,t=u,n=m;return He=async({atom:r,setProgress:a,context:o,packageDependencies:i})=>{await a({message:"Creating .gitignore"});const s={atom:r,packageDependencies:i},c=o.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),n.configure(c)).render(s),l=o.projectDir,d=t.resolve(l,".gitignore");e.writeFileSync(d,p,"utf8")},He}function pn(){if(Ve)return Ye;Ve=1;const e=d,t=u,n=m;return Ye=async({atom:r,setProgress:a,context:o,packageDependencies:i})=>{await a({message:"Creating tsconfig.json."});const s={atom:r,packageDependencies:i},c=o.templateCommonDir,p=n.compile(e.readFileSync(t.resolve(c,"tsconfig.json.njk"),"utf8"),n.configure(c)).render(s),l=o.projectDir,d=t.resolve(l,"tsconfig.json");e.writeFileSync(d,p,"utf8")},Ye}function ln(){if(Qe)return Ze;Qe=1;const e=m,t=d,n=u,r=s;return Ze=async({atom:a,context:o,setProgress:i,Atom:s})=>{const c="readme.md",p=`Creating ${c}`;if(await i({message:p}),o.project?.readme){const a=o.projectDir,i={content:o.project.readme.doc.content},s=n.resolve(o.project.projectDir,"fnet/how-to.md");if(t.existsSync(s)){const e=t.readFileSync(s,"utf8");i.howto=e}const p=n.resolve(o.project.projectDir,"fnet/input.yaml");if(t.existsSync(p)){const e=await r({file:p,tags:o.tags});i.input=e.content}const l=o.templateCommonDir,d=e.compile(t.readFileSync(n.resolve(l,`${c}.njk`),"utf8"),e.configure(l)).render(i),u=n.resolve(a,`${c}`);t.writeFileSync(u,d,"utf8")}else if(a.id){const r=await s.first({type:"wiki",parent_id:a.id});if(!r||"markdown"!==r.doc?.["content-type"])return;const{content:i,...p}=r.doc,l={content:i},d=o.templateCommonDir,u=e.compile(t.readFileSync(n.resolve(d,`${c}.njk`),"utf8"),e.configure(d)).render(l),m=o.projectDir,f=n.resolve(m,`${c}`);t.writeFileSync(f,u,"utf8")}},Ze}function dn(){if(tt)return et;tt=1;const e=n,t=p;return et=async({setProgress:n,context:r})=>{const a=r.projectDir;await n({message:"Prettifiying source files."});let o=e.join("src","**","*");await t({commands:{steps:[`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:a}})}}function un(){if(rt)return nt;rt=1;const e=i;return nt=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.")},nt}function mn(){if(ot)return at;ot=1;const e=i;return at=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.")},at}function fn(){if(st)return it;st=1;const e=u,t=A,n=l;return it=async r=>{const{setProgress:a,atom:o,context:i}=r;a({message:"Installing Python packages"});const s=i.projectDir,c=await t({pythonVersion:"3.12",packages:[{package:"fnet-import-parser",version:"0.1.9"}]}),{result:p}=await c.runBin("fnet_import_parser",["--entry_file",e.join(s,"src","index.py")],{captureName:"result"}),l=JSON.parse(p.items[0].stdout),d=l.required["third-party"]?.map((e=>({package:e.metadata?.package||e.path,version:e.metadata?.version||void 0,channel:e.metadata?.channel||void 0})))||[],u=o.doc.dependencies||[];for(const e of d)u.some((t=>t.package===e.package))||u.push(e);const m=e.join(s,".conda"),f=await t({envDir:m,pythonVersion:o.doc.features.runtime.version||"3.12",packages:u});i.pythonEnv=f,r.packageDependencies=u;const g=o.doc.features.render?.dirs||[];for(const t of g)t.dir=e.resolve(s,t.dir),t.outDir=e.resolve(s,t.outDir),await n(t)},it}function gn(){if(pt)return ct;pt=1;const e=i;return ct=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 yn(){if(Wt)return Jt;Wt=1;const e=function(){if(dt)return lt;dt=1;const e=E,n=t;return lt=async({setProgress:t,context:r,deploymentProject:a,deploymentProjectTarget:o,buildId:i})=>{await t({message:"Deploying it as gitlab project."});const s=r.projectDir;let c="fnet-to-gitlab";const p=o.params.config||"gitlab",l=await n({name:p,dir:r.projectDir,tags:r.tags});if(!l)throw new Error(`Couldnt load config ${p}`);const{data:d}=l.data;c+=` --projectGroupId=${d.projectGroupId}`,c+=` --projectPath='${s}'`,c+=` --projectName='${o.params.name}'`,c+=` --projectBranch='${o.params.branch||"main"}'`,c+=` --gitlabHost='${d.gitlabHost}'`,c+=` --gitlabToken='${d.gitlabToken}'`,c+=` --gitlabUsername='${d.gitlabUsername}'`,c+=` --gitlabUserEmail='${d.gitlabUserEmail}'`,!0!==o.dryRun&&(await e({cmd:c}),a.isDirty=!0)}}(),r=function(){if(mt)return ut;mt=1;const e=d,n=u,r=$,a=E,o=t;return ut=async({setProgress:t,context:i,deploymentProject:s,deploymentProjectTarget:c,registerToPackageManager:p,yamlTarget:l})=>{await t({message:"Deploying it as gcs package."});const d=i.projectDir,u=n.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 o({name:c.config||"gcs",dir:i.projectDir,tags:i.tags});let h="fnet-files-to-gcs";h+=` --projectId='${y.env.GCS_PROJECT_ID}'`,h+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,h+=` --keyFilename='${n.resolve(n.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,h+=` --dir='${d}'`,h+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",h+=` --destDir='${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}))}}(),s=function(){if(gt)return ft;gt=1;const e=d,n=u,r=$,a=i,s=t,p=T,l=c,m=o;return ft=async({atom:t,setProgress:o,context:i,deploymentProject:c,deploymentProjectTarget:d,yamlTarget:u})=>{await o({message:"Deploying it as npm package."});const f=i.projectDir,g=n.resolve(f,"package.json"),y=e.readFileSync(g),h=JSON.parse(y);h.name=d.params.name,h.version=r.inc(d.version,"patch");const w=d.params.bin?.name||d.params.bin;!1!==d.params.bin?.enabled&&w&&"string"==typeof w&&(h.bin={[w]:"dist/cli/esm/index.js",[t.doc.name]:"dist/cli/esm/index.js"}),delete h.scripts,delete h.devDependencies,h.scripts={serve:"npx serve ."},e.writeFileSync(g,JSON.stringify(h,null,"\t"));const v=d.config||"npm";let b=(await s({name:v,dir:i.projectDir,tags:i.tags,optional:!0}))?.data;if(!b){const t=p({dir:__dirname,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===t.length)throw new Error("Couldnt find schema to create npm config");const r=await l({schema:t[0],tags:i.tags}),a=i.project.projectDir,o=n.resolve(a,".fnet");e.existsSync(o)||e.mkdirSync(o),e.writeFileSync(n.resolve(o,`${v}.fnet`),m.stringify(r)),b=r}if(e.writeFileSync(n.resolve(f,".npmrc"),`//registry.npmjs.org/:_authToken=${b.env.NPM_TOKEN}`),!0!==d.dryRun){if(0!==a.exec("npm publish --access public",{cwd:f}).code)throw new Error("Couldnt publish to npm");e.writeFileSync(g,y),c.isDirty=!0,d.version=h.version,u.set("version",h.version)}},ft}(),p=function(){if(ht)return yt;ht=1;const e=d,n=u,r=I,a=m,o=C,i=t;return yt=async({atom:t,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"===t.type?"WF":"LIB";let h;if("simple"===l.deploy.template)h={atom:t,packageDependencies:u,red:{tab:{id:l.deploy.id||o.util.generateId(),label:`${y}/${t.id?t.id:r.hostname()}/${t.name}/${l.deploy.name||l.deploy.template}`},function:{id:o.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},inject:{id:o.util.generateId(),...l.params?.inject,payload:"json"===l.params?.inject?.payloadType?`'${JSON.stringify(l.params?.inject?.payload)}'`:l.params?.inject?.payload},debug:{id:o.util.generateId()}}};else if("cronjob"===l.deploy.template){let a=l.params?.schedules?cloneDeep(l.params?.schedules):void 0;a?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),h={atom:t,packageDependencies:u,red:{tab:{id:l.deploy.id||o.util.generateId(),label:`${y}/${t.id?t.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:o.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},cronjob:{id:o.util.generateId(),schedules:a},debug:{id:o.util.generateId()}}}}else{if("http"!==l.deploy.template)return;h={atom:t,packageDependencies:u,red:{tab:{id:l.deploy.id||o.util.generateId(),label:`${y}/${t.id?t.id:r.hostname()}/${l.deploy.name||l.deploy.template}`},function:{id:o.util.generateId(),name:t.doc.name,initialize:{content:e.readFileSync(n.resolve(f,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:t.doc.bundleName}},httpin:{id:o.util.generateId(),method:l.params.method||"get",url:l.params.url},httpout:{id:o.util.generateId()},debug:{id:o.util.generateId()}}}}let w=a.compile(e.readFileSync(n.resolve(g,`deploy/node-red/${l.deploy.template}.yaml.njk`),"utf8"),m).render(h);if(e.writeFileSync(n.resolve(f,"node-red.yaml"),w),w=yaml.load(w),!0===l.dryRun)return;p.isDirty=!0;const v=(await i({name:c.redConfig||"red",dir:c.projectDir,tags:c.tags}))?.data,b=l.deploy.url||v.env.RED_URL,_={};if(!1!==l.deploy.auth&&(_.Authorization="Bearer "+atomAccessToken),l.deploy.id)!0===l.actions?.delete?(await axios({method:"DELETE",url:`${b}/flow/${l.deploy.id}`,headers:_}),delete l.actions.delete,delete l.deploy.id,l.enabled=!1):await axios({method:"PUT",url:`${b}/flow/${l.deploy.id}`,data:w,headers:_});else{const e=await axios({method:"POST",url:`${b}/flow`,data:w,headers:_});l.deploy.id=e.data.id}},yt}(),l=function(){if(vt)return wt;vt=1;const e=a,r=n,o=t;return wt=async({atom:t,Atom:n,setProgress:a,context:i,packageDependencies:s,deploymentProject:c,deploymentProjectTarget:p})=>{await a({message:"Deploying it as workflow lib."});const l=(await o({name:"atom",dir:i.projectDir,tags:i.tags}))?.data;let d,u,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 n.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 n.get({id:p.deploy.id}),!d)return}else{if(d=await n.create({parent_id:u,doc:{name:m,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!d)return;p.deploy.id=d.id}const g=i.projectDir;d.doc.contents=[{content:e.readFileSync(r.resolve(g,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(r.resolve(g,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(r.resolve(g,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],d.doc.name=m,d.doc.dependencies=s,"workflow.lib"===t.type?d.doc.subtype="library":"workflow"===t.type&&(d.doc.subtype="workflow"),d=await n.update(d,{id:d.id})}}(),f=function(){if(_t)return bt;_t=1;const e=t,n=O,r=R,a=$;return bt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as ios-app package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},bt}(),g=function(){if(Dt)return jt;Dt=1;const e=t,n=M,r=R,a=$;return jt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as macos-app package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},jt}(),y=function(){if(xt)return kt;xt=1;const e=t,n=F,r=R,a=$;return kt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as electron package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},kt}(),h=function(){if(St)return Pt;St=1;const e=t,n=q,r=R,a=$;return Pt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as webos package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},Pt}(),v=function(){if(Et)return At;Et=1;const e=t,n=N,r=R,a=$;return At=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as nextjs package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},At}(),b=function(){if(Tt)return $t;Tt=1;const e=t,n=L,r=R,a=$;return $t=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as docker package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},$t}(),_=function(){if(Ct)return It;Ct=1;const e=d,n=u,r=$,a=E,o=t,i=w.default;return It=async({setProgress:t,context:s,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await t({message:"Deploying it as fnet package."});const d=s.projectDir,u=n.resolve(d,"package.json"),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 o({name:p.config||"fnet-package",dir:s.projectDir,tags:s.tags});if(!y.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${g}`);if(!y.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${g}`);if(!y.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${g}`);const h=`${y.env.ATOM_API_URL}/v1/auth/token`,w=y.env.ATOM_API_USERNAME,v=y.env.ATOM_API_PASSWORD;let b=await i({method:"POST",url:h,data:{username:w,password:v},headers:{"Content-Type":"application/json"}});const _=b.data?.access_token;if(!_)throw new Error(`Invalid access_token from ${h}`);let j="fnet-files-to-gcs";if(j+=` --projectId='${y.env.GCS_PROJECT_ID}'`,j+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,j+=` --keyFilename='${n.resolve(n.dirname(g),y.env.GCS_UPLOADER_KEY_FILE)}'`,j+=` --dir='${d}'`,j+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",j+=` --destDir='${f.name}/${f.version}'`,j+=" --metadata.cacheControl='public, max-age=31536000, immutable'",y.env.DOMAIN&&(j+=` --domain='${y.env.DOMAIN}'`),!0!==p.dry_run&&!0!==p.params.dry_run||(j+=" --dryRun"),await a({cmd:j}),e.writeFileSync(u,m),!0===p.dryRun)return;c.isDirty=!0,p.version=f.version,l.set("version",f.version);const D=`${y.env.ATOM_API_URL}/v1/service/fnet-package/publish`;if(b=await i({method:"POST",url:D,data:{name:f.name,version:f.version,version_domain:y.env.DOMAIN,docs:p.params.docs,configs:p.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${_}`}}),b.data?.error)throw new Error("Failed to publish fnet package.")}}(),j=function(){if(Rt)return Ot;Rt=1;const e=$,n=t,r=w.default;return Ot=async({setProgress:t,context:a,deploymentProject:o,deploymentProjectTarget:i,yamlTarget:s})=>{await t({message:"Deploying it as fnet form."});const{file:c,data:p}=await n({name:i.config||"fnet-form",dir:a.projectDir,tags:a.tags});if(!p.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${c}`);if(!p.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${c}`);if(!p.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${c}`);const l=`${p.env.ATOM_API_URL}/v1/auth/token`,d=p.env.ATOM_API_USERNAME,u=p.env.ATOM_API_PASSWORD;let 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}`);o.isDirty=!0;const g=e.inc(i.version,"patch");i.params.version=g,i.version=g,s.set("version",g);const y=`${p.env.ATOM_API_URL}/v1/service/fnet-form/publish`;if(m=await r({method:"POST",url:y,data:{name:i.params.name,version:i.params.version,docs:i.params.docs,configs:i.params.configs},headers:{"Content-Type":"application/json",Authorization:`Bearer ${f}`}}),m.data?.error)throw new Error("Error publishing fnet form.")}}(),D=function(){if(Ft)return Mt;Ft=1;const e=$,n=t,r=w.default,o=a,i=E,s=U;return Mt=async({setProgress:t,context:a,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await t({message:"Deploying it as fnet flow."});const{file:d,data:u}=await n({name:p.config||"fnet-flow",dir:a.project.projectDir,tags:a.tags});if(!u.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!u.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!u.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const 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 _="fnet-dir-zipper";_+=` --sourceDir='${a.project.projectDir}'`,_+=" -p=**/*",_+=" -g",_+=" --stdout_format=json";const j=await i({cmd:_});if(0!==j.code)throw new Error(j.stderr);const D=JSON.parse(j.stdout).path;let k=new s;k.append("file",o.createReadStream(D));const x=await r.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...k.getHeaders(),Authorization:`Bearer ${h}`},data:k});if(x.data?.error)throw new Error("Error uploading fnet flow.")}}(),k=function(){if(Nt)return qt;Nt=1;const e=$,n=t,r=w.default,o=a,i=E,s=U;return qt=async({setProgress:t,context:a,deploymentProject:c,deploymentProjectTarget:p,yamlTarget:l})=>{await t({message:"Deploying it as fnet node."});const{file:d,data:u}=await n({name:p.config||"fnet-node",dir:a.project.projectDir,tags:a.tags});if(!u.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${d}`);if(!u.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${d}`);if(!u.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${d}`);const 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 _="fnet-dir-zipper";_+=` --sourceDir='${a.project.projectDir}'`,_+=" -p=**/*",_+=" -g",_+=" --stdout_format=json";const j=await i({cmd:_});if(0!==j.code)throw new Error(j.stderr);const D=JSON.parse(j.stdout).path;let k=new s;k.append("file",o.createReadStream(D));const x=await r.request({method:"POST",maxBodyLength:1/0,url:`${u.env.ATOM_API_URL}/v1/service/upload/single/${b}`,headers:{...k.getHeaders(),Authorization:`Bearer ${h}`},data:k});if(x.data?.error)throw new Error("Error uploading fnet node.")}}(),x=function(){if(Ut)return Lt;Ut=1;const e=t,n=z,r=R,a=$;return Lt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as Rust package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},Lt}(),P=function(){if(Bt)return zt;Bt=1;const e=t,n=B,r=R,a=$;return zt=async({atom:t,target:o,onProgress:i,projectDir:s,dependencies:c,context:p,yamlTarget:l})=>{i&&await i({message:"Deploying it as pyip package."});const d=o?.config?await e({name:o.config,dir:s,optional:!0,transferEnv:!1,tags:p.tags}):void 0,u=a.inc(o.version||"0.1.0","patch");o.params.version=u,o.version=u,l.set("version",u);const m=r(o.params);m.dependencies=r(c);const f={atom:t,params:m,config:d?.config,src:s,dest:s};return{deployer:await n(f)}},zt}();return Jt=async t=>{const{atom:n,packageDependencies:a,context:o,deploymentProjectTarget:i,setProgress:c,deploymentProject:d,yamlTarget:u}=t;if(!0===i.enabled)if("lib"===i.type)await l({...t});else if("red"===i.type)await p({...t});else if("npm"===i.type)await s({...t});else if("gcs"===i.type)await r({...t});else if("gitlab"===i.type)await e({...t});else if("fnet-package"===i.type)await _({...t});else if("fnet-form"===i.type)await j({...t});else if("fnet-node"===i.type)await k({...t});else if("fnet-flow"===i.type)await D({...t});else{let e;if("nextjs"===i.type?e=v:"webos"===i.type?e=h:"electron"===i.type?e=y:"docker"===i.type?e=b:"ios"===i.type?e=f:"macos"===i.type?e=g:"rust"===i.type?e=x:"pyip"===i.type&&(e=P),!e)return;await e({atom:n,target:i,onProgress:c,projectDir:o.projectDir,dependencies:a,context:o,yamlTarget:u}),d.isDirty=!0}},Jt}function hn(){if(Gt)return Kt;Gt=1;const e=d,n=u,r=o,a=i,s=m,c=function(){if(X)return H;X=1;const e=f,t=g;return H=async()=>{if(!await t({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const n=e.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await n.connect(),n}}(),{nanoid:p}=y,b=function(){if(V)return Y;V=1;const{Api:e}=h,t=w.default,n=v;return Y=class{init({config:r,accessToken:a}){return new Promise(((o,i)=>{if(e.set_api_url(r.data.url),a)return e.set_req_token(a),void o(a);t({method:"POST",url:`${r.data.issuer}/protocol/openid-connect/token`,data:n.stringify(r.data.grant.params),headers:{"Content-Type":"application/x-www-form-urlencoded"}}).then((t=>{e.set_req_token(t.data.access_token),o(t.data.access_token)})).catch((t=>{e.set_req_token(),i(t)}))}))}}}(),j=Qt(),D=(Ee||(Ee=1,Ae=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)}),Ae),k=en(),x=Ce?Ie:(Ce=1,Ie=async({atom:e,packageDependencies:t,packageDevDependencies:n,setProgress:r})=>{r("Initializing dependencies")}),P=tn(),S=rn(),A=an(),E=function(){if(Be)return ze;Be=1;const e=d,t=u,n=l;return ze=async({atom:r,setProgress:a,context:o,packageDependencies:i})=>{if(!0!==r.doc.features.cli.enabled)return;await a({message:"Creating cli."});const s={atom:r,packageDependencies:i},c=o.templateDir,p=t.resolve(o.projectDir,"cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await n({pattern:["index.py.njk","__init__.py.njk"],dir:t.resolve(c,"cli"),outDir:p,context:s})},ze}(),$=on(),T=sn(),I=cn(),C=pn(),O=ln(),R=dn(),M=un(),F=mn(),q=fn(),N=gn(),L=nn(),U=yn(),{Atom:z}=h,B=J,G=t,Z=_,Q=W,ee=K;return Kt=class{#e;#t;#n;#r;#a;#o;#i;#s;#c;#p;#l;#d;#u;#m;#f;#g;#y;constructor(e){this.#e=new b,this.#t=e,this.#o=[],this.#i=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#o,packageDevDependencies:this.#i,setProgress:this.setProgress.bind(this),context:this.#t,Atom:z,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 z.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 t=this.#t.projectDir;let r;this.setProgress({message:"Cleaning project directory."});const o=Q({dir:t,ignore:["node_modules",".cache"],absolute:!0});for(const t of o)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."});let i=t;if(!e.existsSync(i)&&(r=a.exec(`mkdir "${t}"`),0!==r.code))throw new Error("Couldnt create workflow dir.");if(i=n.join(t,"src"),!e.existsSync(i)&&(r=a.exec(`mkdir "${i}"`),0!==r.code))throw new Error("Couldnt create library/src dir.");if(i=n.join(t,"src","default"),!e.existsSync()&&(r=a.exec(`mkdir "${i}"`),0!==r.code))throw new Error("Couldnt create library/src/default dir.")}async initLibraryDirPython(){this.setProgress({message:"Initializing library directory."});const t=this.#t.projectDir;let r;this.setProgress({message:"Cleaning project directory."});const o=Q({dir:t,ignore:[".cache",".conda","src"],absolute:!0});for(const t of o)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."});let i=t;if(e.existsSync(i)||e.mkdirSync(i,{recursive:!0}),i=n.join(t,"src"),!e.existsSync(i)&&(r=a.exec(`ln -s "${this.#t.projectSrcDir}" "${i}" `),0!==r.code))throw new Error("Couldnt link src.")}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#t.templateDir;this.#r=s.configure(e,{watch:!1,dev:!0}),this.#y.njEnv=this.#r}async initLibs(){this.setProgress({message:"Initializing external libs."});const e=[{name:this.#n.doc.name,type:"atom",parent_id:this.#n.parent_id}];this.#a=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.#o})}async initLibsPython(){this.setProgress({message:"Initializing external libs."});const e=this.#n;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=[{name:this.#n.doc.name,type:"atom",parent_id:this.#n.parent_id,atom:e}];this.#a=t}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const n=e.filter((e=>"atom"===e.type));for(let e=0;e<n.length;e++){const r=n[e],a=await this.findAtomLibrary({url:r.name});r.atom=a;const o=a.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));o?.forEach((e=>{const n=t.find((t=>t.package===e.package));n?"string"==typeof e.path?(n.path||[]).some((t=>t===e.path))||(n.path=n.path||[],n.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(n.path||[]).some((t=>t===e))||(n.path=n.path||[],n.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const t=B({url:e});if(!t)throw new Error(`Invalid package name: ${e}`);if(t.protocol||(t.protocol=this.#l),"ac:"===t.protocol){const n=t.pathname.split("/");if(1===n.length)return await z.first({where:{name:e,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===n.length){const e=await z.first({where:{name:n[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await z.first({where:{name:n[1],parent_id:e.id,type:"workflow.lib"}})}}else if("local:"===t.protocol){const e=this.#n;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=n.resolve(this.#t.projectSrcDir,"index.js"),r=await Z({file:t,recursive:!0}),a=e.doc.dependencies,o=!0===this.#n.doc.features.all_parsed_imports?r.all:r.required;for await(const e of o){if("npm"!==e.type)continue;if(a.find((t=>t.package===e.package)))continue;const t=await 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:t}){await this.setProgress({message:"Creating external lib files."}),this.#n.typesDir="./types";const r=t.filter((e=>"atom"===e.type));for(let t=0;t<r.length;t++){const a=r[t].atom,o=this.#t.projectDir;if("local:"===a.protocol){const t=n.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.js`),r=n.relative(n.join(this.#t.projectDir,"src","default"),t);if(!e.existsSync(t)){e.mkdirSync(n.dirname(t),{recursive:!0});let r="export default async (args)=>{\n";r+="}",e.writeFileSync(t,r,"utf8")}a.relativePath=r.split(n.sep).join("/"),this.#n.typesDir=`./types/${n.basename(o)}/src`}else{const t=n.join(o,"src","libs",`${a.id}.js`),r=a.doc.contents?.find((e=>"esm"===e.format))||a.doc;e.writeFileSync(t,r.content,"utf8")}}}async createAtomLibFilesPython({libs:t}){await this.setProgress({message:"Creating external lib files."});const r=t.filter((e=>"atom"===e.type));for(let t=0;t<r.length;t++){const a=r[t].atom;if("local:"===a.protocol){const t=n.resolve(this.#t.projectSrcDir,`${a.fileName||a.name}.py`);if(!e.existsSync(t)){e.mkdirSync(n.dirname(t),{recursive:!0});let r="def default():\n";r+=' print("Hello world!")\n',e.writeFileSync(t,r,"utf8")}}}}async createEngine(){await this.setProgress({message:"Creating engine file."});const t={libs:this.#a.filter((e=>"atom"===e.type)),libraryAtom:this.#n,atom:this.#n},r=this.#t.templateDir,a=s.compile(e.readFileSync(n.resolve(r,n.join("src","default","engine.js.njk")),"utf8"),this.#r).render(t),o=this.#t.projectDir,i=n.resolve(o,n.join("src","default","index.js"));e.writeFileSync(i,a,"utf8")}async createProjectYaml(){const t="node.yaml",a=`Creating ${t}`;await this.setProgress({message:a});const{content:o,...i}=this.#n.doc,c={content:r.stringify(i)},p=this.#t.templateDir,l=s.compile(e.readFileSync(n.resolve(p,`${t}.njk`),"utf8"),this.#r).render(c),d=this.#t.projectDir,u=n.resolve(d,`${t}`);e.writeFileSync(u,l,"utf8")}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#t.project?.devops){const e=[this.#t.project?.devops];for(let t=0;t<e.length;t++){let n=e[t];await this.deployProject({deploymentProject:n}),!0===n.isDirty&&await n.save()}}else if(this.#n.id){const e=await z.list({type:"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 z.update(n,{id:n.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:n}=t;if(t.doc.targets&&Array.isArray(t.doc.targets))throw new Error("Deployment project targets are deprecated. Please update targets in the yaml file.");const r=Object.keys(t.doc||{}),a=n||{};for(let e=0;e<r.length;e++){const n=t.doc[r[e]];n.name=r[e];const o=a.get(r[e]);await U({...this.#y,deploymentProject:t,deploymentProjectTarget:n,yamlTarget:o})}}async registerToPackageManager(e){const{target:t,packageJSON:n}=e;if(!this.#t.id)return;let r=await z.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});r?(r.doc.versions.splice(0,0,{v:n.version}),await z.update(r,{id:r.id})):r=await z.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 j(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 O(this.#y),await C(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 O(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 c(),this.#c=this.#t.buildId||p(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 G({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}}},Kt}var wn=G(function(){if(Yt)return Vt;Yt=1;const m=process.cwd(),{spawn:f}=e;t({name:["redis"],dir:m,optional:!0});const g=n,y=r,h=a,w=o,v=i,b=s,_=t,j=c,D=p,k=l,x=hn(),P=function(){if(Xt)return Ht;Xt=1;const e=d,t=u;return Ht=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}),S="win32"===process.platform?";":":";process.env.PATH=`${g.join(P,"/.bin")}${S}${process.env.PATH}`;let A=y(process.argv.slice(2)).command("create","Create flow node project",(e=>e.option("name",{type:"Project name",demandOption:!0}).option("vscode",{type:"boolean",default:!0,alias:"vs"}).option("runtime",{type:"string",default:"node",choices:["node","python"]})),(async e=>{try{const t=g.resolve(P,"@fnet/cli-project-node/dist/template/project"),n=g.resolve(m,e.name);h.existsSync(n)||h.mkdirSync(n),await k({dir:t,outDir:n,context:e,copyUnmatchedAlso:!0});let r=v.exec("fnode build",{cwd:n});if(0!==r.code)throw new Error("Failed to build project.");if(v.which("git")&&(r=v.exec("git init --initial-branch=main",{cwd:n}),0!==r.code))throw new Error("Failed to initialize git.");if(v.which("code")&&e.vscode&&(r=v.exec(`cd ${n} && code .`),0!==r.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})).command("project","Flow node project",(e=>e.option("update",{type:"boolean",default:!1,alias:"-u"})),(async e=>{try{const t=g.resolve(P,"@fnet/cli-project-node/dist/template/project"),n=process.cwd(),r=await T(e);if(e.update){if(await k({dir:t,outDir:n,context:{name:r.project.projectFileParsed.name,runtime:r.project.runtime.type},copyUnmatchedAlso:!0}),0!==v.exec("fnode build",{cwd:n}).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(e){console.error("Project failed.",e.message),process.exit(1)}})).command("build","Build flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"]}).option("ftag",{type:"array"})),(async e=>{try{const t=await T(e),n=new x(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})).command("deploy","Build and deploy flow node project",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await T({...e,mode:"all"}),n=new x(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})).command("file","Just create files",(e=>e.option("id",{type:"string"}).option("buildId",{type:"string",alias:"bid"}).option("ftag",{type:"array"})),(async e=>{try{const t=await T({...e,mode:"file"}),n=new x(t);await n.init(),await n.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}}));function E(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 T(e),{projectDir:a}=t,o=process.argv.slice(3);f(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 $(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 T(e),{projectDir:o}=a,i=process.argv.slice(3);n=g.join(o,".conda","bin",n||t);f(n,[...r,...i],{cwd:o,stdio:"inherit",shell:!0,env:{PYTHONPATH:o}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function T(e){if(e.id)return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",templateDir:g.resolve(P,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:g.resolve(P,"./@fnet/cli-project-common/dist/template/default"),projectDir:g.resolve(m,`./.output/${e.id}`),tags:e.ftag};{const t=await async function({tags:e}){const t=g.resolve(m,"node.yaml");if(!h.existsSync(t))throw new Error("node.yaml file not found in current directory.");const{raw:n,parsed:r}=await b({file:t,tags:e}),a=g.dirname(t);r.features=r.features||{};const o=r.features;o.runtime=o.runtime||{},o.runtime.type=o.runtime.type||"node","python"===o.runtime.type?o.runtime.template=o.runtime.template||"python":o.runtime.template=o.runtime.template||"default";const i={libraryAtom:{doc:{...r},fileName:"index"},projectDir:a,projectFilePath:t,projectFileContent:n,projectFileParsed:r,runtime:o.runtime};let s=g.resolve(a,"fnet/targets.yaml");if(!h.existsSync(s)&&(s=g.resolve(a,"node.devops.yaml"),h.existsSync(s))){const e=g.resolve(a,"fnet");h.existsSync(e)||h.mkdirSync(e),h.copyFileSync(s,g.resolve(a,"fnet/targets.yaml")),h.unlinkSync(s)}if(h.existsSync(s)){const{raw:t,parsed:n}=await b({file:s,tags:e}),r=w.parseDocument(t);i.devops={filePath:s,fileContent:t,yamlDocument:r,doc:{...n},type:"library.deploy",save:async()=>{h.writeFileSync(i.devops.filePath,r.toString())}}}const c=g.resolve(a,"readme.md");if(h.existsSync(c)){const e=h.readFileSync(c,"utf8");i.readme={filePath:c,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return i}({tags:e.ftag});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:g.resolve(P,`./@fnet/cli-project-node/dist/template/${t.runtime.template}`),templateCommonDir:g.resolve(P,`./@fnet/cli-project-common/dist/template/${t.runtime.template}`),projectDir:g.resolve(t.projectDir,"./.workspace"),projectSrcDir:g.resolve(t.projectDir,"./src"),project:t,tags:e.ftag}}}return A=A.command("create-input <name>","Create an input config file",(e=>e.positional("name",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await T(e),{project:n}=t,{projectDir:r,projectFileParsed:a}=n,o=a.input;if(!o)throw new Error("Config schema not found in project file.");const i=await j({schema:o,format:"yaml"}),s=g.resolve(r,".fnet");h.existsSync(s)||h.mkdirSync(s);const c=g.resolve(s,`${e.name}.fnet`);h.writeFileSync(c,i)}catch(e){console.error(e.message),process.exit(1)}})),A=function(e){return e.command("update-input <name>","Update an input config file",(e=>e.positional("name",{type:"string"}).help(!1).version(!1)),(async e=>{try{const t=await T(e),{project:n}=t,{projectDir:r,projectFileParsed:a}=n,o=a.input;if(!o)throw new Error("Config schema not found in project file.");const i=g.resolve(r,".fnet"),s=g.resolve(i,`${e.name}.fnet`),c=await j({schema:o,format:"yaml",ref:s});h.existsSync(i)||h.mkdirSync(i),h.writeFileSync(s,c)}catch(e){console.error(e.message),process.exit(1)}}))}(A),A=E(A,{bin:"npm"}),A=E(A,{bin:"node"}),A=E(A,{name:"serve",bin:"npm",preArgs:["run","serve","--"]}),A=E(A,{name:"watch",bin:"npm",preArgs:["run","watch","--"]}),A=E(A,{name:"app",bin:"npm",preArgs:["run","app","--"]}),A=E(A,{name:"cli",bin:"npm",preArgs:["run","cli","--"]}),A=E(A,{bin:"npx"}),A=E(A,{bin:"cdk"}),A=E(A,{bin:"aws"}),A=function(e,{name:t,preArgs: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 T(e),{projectDir:r}=t,a=e.config,o=await _({name:a,dir:r,transferEnv:!1,optional:!0,tags:t.tags}),i=o?.data?.env||void 0,s=e.command,c=process.argv.slice(5);f(s,[...n,...c],{cwd:r,stdio:"inherit",shell:!0,env:{...process.env,...i}}).on("close",(e=>{process.exit(e)}))}catch(e){console.error(e.message),process.exit(1)}}))}(A,{name:"with"}),A=function(e,{name:t,preArgs:n=[]}){return e.command(`${t} group [options..]`,"Run a command group.",(e=>e.positional("group",{type:"string"}).option("ftag",{type:"array"}).help(!1).version(!1)),(async e=>{try{const t=await T(e),{project:n}=t,{projectFileParsed:r}=n,a=r.commands;if(!a)throw new Error("Commands not found in project file.");const o=a[e.group];if(!o)throw new Error(`Command group '${e.group}' not found in project file.`);await D({commands:o})}catch(e){console.error(e.message),process.exit(1)}}))}(A,{name:"run"}),A=$(A,{name:"python"}),A=$(A,{name:"python3"}),A=$(A,{name:"pip"}),A=$(A,{name:"pip3"}),A.demandCommand(1,"You need at least one command before moving on").help().argv,Vt}());module.exports=wn;
|