@fnet/cli 0.100.1 → 0.101.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/fnet/index.B5vpZn1Z.js +53 -0
- package/dist/fnet/index.B6WHm9H0.js +106 -0
- package/dist/fnet/index.B90Vm9uq.js +114 -0
- package/dist/fnet/index.BMsD46br.js +60 -0
- package/dist/fnet/index.BUhoGq-h.js +70 -0
- package/dist/fnet/index.BjzEMdm1.js +52 -0
- package/dist/fnet/index.C9zKEF61.js +106 -0
- package/dist/fnet/index.CQNYMi1Z.js +51 -0
- package/dist/fnet/index.CX8eMqfH.js +191 -0
- package/dist/fnet/index.Ce8sTnt_.js +52 -0
- package/dist/fnet/index.D2kFuxXo.js +52 -0
- package/dist/fnet/index.D61MduW1.js +106 -0
- package/dist/fnet/index.Dd0lngp8.js +41 -0
- package/dist/fnet/index.DqwVukIB.js +52 -0
- package/dist/fnet/index.MWHLt6g3.js +52 -0
- package/dist/fnet/index.f798DPwo.js +93 -0
- package/dist/fnet/index.j5JP-zGw.js +52 -0
- package/dist/fnet/index.js +4562 -0
- package/dist/fnode/index.B5vpZn1Z.js +53 -0
- package/dist/fnode/index.B6WHm9H0.js +106 -0
- package/dist/fnode/index.BMsD46br.js +60 -0
- package/dist/fnode/index.BNSTS5o6.js +109 -0
- package/dist/fnode/index.BUhoGq-h.js +70 -0
- package/dist/fnode/index.BjzEMdm1.js +52 -0
- package/dist/fnode/index.C9zKEF61.js +106 -0
- package/dist/fnode/index.CQNYMi1Z.js +51 -0
- package/dist/fnode/index.CX8eMqfH.js +191 -0
- package/dist/fnode/index.Ce8sTnt_.js +52 -0
- package/dist/fnode/index.D2kFuxXo.js +52 -0
- package/dist/fnode/index.D61MduW1.js +106 -0
- package/dist/fnode/index.Dd0lngp8.js +41 -0
- package/dist/fnode/index.DqwVukIB.js +52 -0
- package/dist/fnode/index.MWHLt6g3.js +52 -0
- package/dist/fnode/index.f798DPwo.js +93 -0
- package/dist/fnode/index.j5JP-zGw.js +52 -0
- package/dist/fnode/index.js +2784 -0
- package/package.json +7 -7
- package/dist/fnet/index.B5XE4ChJ.mjs +0 -1
- package/dist/fnet/index.Bfg4lyu-.mjs +0 -1
- package/dist/fnet/index.BoO2Mnox.mjs +0 -1
- package/dist/fnet/index.C7saWH6d.mjs +0 -1
- package/dist/fnet/index.CDct_kkF.mjs +0 -1
- package/dist/fnet/index.CMC8mlye.mjs +0 -1
- package/dist/fnet/index.CmMM-Ek9.mjs +0 -1
- package/dist/fnet/index.CzAV0S36.mjs +0 -1
- package/dist/fnet/index.D2N9YZmA.mjs +0 -1
- package/dist/fnet/index.D33Vzwbk.mjs +0 -1
- package/dist/fnet/index.DI3yyTtl.mjs +0 -1
- package/dist/fnet/index.DLGSTm8o.mjs +0 -1
- package/dist/fnet/index.Q-CYRcna.mjs +0 -1
- package/dist/fnet/index.UOds5XLl.mjs +0 -1
- package/dist/fnet/index.W6RYgypK.mjs +0 -1
- package/dist/fnet/index.dpz2QIRu.mjs +0 -1
- package/dist/fnet/index.mjs +0 -2
- package/dist/fnet/index.xd8c7XMr.mjs +0 -1
- package/dist/fnode/index.B5XE4ChJ.mjs +0 -1
- package/dist/fnode/index.Bfg4lyu-.mjs +0 -1
- package/dist/fnode/index.BoO2Mnox.mjs +0 -1
- package/dist/fnode/index.C7saWH6d.mjs +0 -1
- package/dist/fnode/index.CDct_kkF.mjs +0 -1
- package/dist/fnode/index.CMC8mlye.mjs +0 -1
- package/dist/fnode/index.CmMM-Ek9.mjs +0 -1
- package/dist/fnode/index.CzAV0S36.mjs +0 -1
- package/dist/fnode/index.D2N9YZmA.mjs +0 -1
- package/dist/fnode/index.DI3yyTtl.mjs +0 -1
- package/dist/fnode/index.DLGSTm8o.mjs +0 -1
- package/dist/fnode/index.DuVHEqKs.mjs +0 -1
- package/dist/fnode/index.Q-CYRcna.mjs +0 -1
- package/dist/fnode/index.UOds5XLl.mjs +0 -1
- package/dist/fnode/index.W6RYgypK.mjs +0 -1
- package/dist/fnode/index.dpz2QIRu.mjs +0 -1
- package/dist/fnode/index.mjs +0 -2
- package/dist/fnode/index.xd8c7XMr.mjs +0 -1
package/dist/fnode/index.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import e from"path";import{spawn as t}from"child_process";import o from"@fnet/prompt";import i,{existsSync as a}from"node:fs";import s,{delimiter as n,join as r}from"node:path";import{Command as c,Option as p}from"commander";import l from"fs";import d from"yaml";import m from"@fnet/shelljs";import u from"os";import f from"@fnet/yaml";import g from"@fnet/config";import y from"@fnet/object-from-schema";import h from"@fnet/shell-flow";import w from"@flownet/lib-render-templates-dir";import b from"node:os";import j from"nunjucks";import v from"redis";import x from"@flownet/lib-is-redis-online";import{randomUUID as k}from"node:crypto";import{Api as D,Atom as _}from"@flownet/lib-atom-api-js";import S from"lodash.merge";import P from"@flownet/lib-parse-imports-js";import C from"@fnet/npm-list-versions";import $ from"@fnet/npm-pick-versions";import E from"object-hash";import A from"ajv/dist/2020.js";import F from"ajv/dist/standalone/index.js";import I from"ajv-formats";import T from"@fnet/auto-conda-env";import O from"@flownet/lib-parse-node-url";import R from"@fnet/list-files";import N from"chalk";import L from"node:url";import M from"node:path";import z from"node:module";const B=L.fileURLToPath(import.meta.url),H=M.dirname(B);z.createRequire(import.meta.url);var J,U,X=e=>{const t=process.env.PATH||"",o="win32"===process.platform?(process.env.PATHEXT||".EXE;.CMD;.BAT;.COM").split(";"):[""],i=t.split(n);for(const t of i)for(const i of o){const o=r(t,"win32"===process.platform?e+i:e);if(a(o))return o}return null},q="0.100.1";class K{init({config:e,accessToken:t}){return new Promise(((o,i)=>{if(D.set_api_url(e.data.url),t)return D.set_req_token(t),void o(t);fetch(`${e.data.issuer}/protocol/openid-connect/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(e.data.grant.params)}).then((async e=>{if(!e.ok)throw new Error(await e.text());return e.json()})).then((e=>{D.set_req_token(e.access_token),o(e.access_token)})).catch((e=>{D.set_req_token(),i(e)}))}))}}function Y({feature:e,features:t,packageDevDependencies:o}){const{name:i,packages:a,options:s,extraCheck:n,explicit:r}=e,c=`${i}_enabled`,p=t.rollup_output||{},l=Object.keys(p);let d=s||{};const m=t[i]?.options;m&&(d=S(d,m));const u=!t[i]||!1===t[i]?.enabled;l.forEach((e=>{const o=t.rollup_output[e];if(o){if(Reflect.has(o,i)){if(u||!o[i]||!1===o[i]?.enabled)return void delete o[i];!0===o[i]&&(o[i]={enabled:!0,options:d})}else{if(u||r||!1===t[c])return;o[i]={enabled:!0}}o[i]=o[i]||{},o[i].options={...d,...o[i].options}}}));let f=l.some((e=>!0===t.rollup_output[e][i]?.enabled));n&&(f=n()&&f),t[c]=f,f&&a.forEach((e=>o.push({package:e[0],version:e[1]})))}function V({dir:e,name:t="index"}){let o=s.resolve(e,`./${t}.tsx`);if(i.existsSync(o)||(o=s.resolve(e,`./${t}.ts`)),i.existsSync(o)||(o=s.resolve(e,`./${t}.jsx`)),i.existsSync(o)||(o=s.resolve(e,`./${t}.js`)),!i.existsSync(o))return{};const a=o,n=s.extname(o);return{file:a,ext:n,ts:".ts"===n||".tsx"===n,name:t}}async function G(e){const{atom:t,context:o,setProgress:i}=e;i("Initializing features..."),t.doc.features=t.doc.features||{};const a=t.doc.features;a.project=a.project||{},a.project.format=a.project.format||a.project_format||"esm",a.project_format=a.project.format,a.dts_enabled=!0===a.dts||void 0!==a.dts&&!1!==a.dts;const n=s.resolve(o.project.projectDir),r=V({dir:s.resolve(n,"./app")});if(r.file){i("Parsing app entry imports...");let e=await P({file:r.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));a.app_uses_jsx=t,a.app_has_entry=!0,e=await P({file:r.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),a.app_entry_uses_jsx=t,a.app_entry_is_ts=r.ts,a.app_entry_ext=r.ext}const c=V({dir:s.resolve(n,"./cli")});if(c.file){i("Parsing cli entry imports...");let e=await P({file:c.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));a.cli_uses_jsx=t,a.cli_has_entry=!0,e=await P({file:c.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),a.cli_entry_uses_jsx=t,a.cli_entry_is_ts=c.ts,a.cli_entry_ext=c.ext}if("workflow.lib"===t.type){const e=V({dir:s.resolve(n,"./src")});if(e.file){i("Parsing src entry imports...");let t=await P({file:e.file,recursive:!0}),o=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));a.src_uses_jsx=o,a.src_has_entry=!0,t=await P({file:e.file}),o=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),a.src_entry_uses_jsx=o,a.src_entry_is_ts=e.ts,a.src_entry_ext=e.ext}}const p=Reflect.has(a,"app_entry_uses_jsx")?!0===a.app_entry_uses_jsx:!0===a.src_entry_uses_jsx,l=Reflect.has(a,"cli_entry_uses_jsx")?!0===a.cli_entry_uses_jsx:!0===a.src_entry_uses_jsx;a.form_enabled=p||l||!0===a.form||!0===a.form?.enabled,a.multiple_enabled=a.multiple_enabled||!0===a.multiple||!0===a.multiple?.enabled,!1===a.app?a.app={enabled:!1}:!0===a.app?a.app={enabled:!0,extend:!0===a.app_has_entry,export:!0,react:p}:a.app={enabled:!0,extend:!0===a.app_has_entry,export:!0,react:p,...a.app||{}},a.app.enabled=!0===a.app.enabled&&(!0===t.doc.features.form_enabled||!0===a.app.extend||!0===a.app.enabled),a.app.format=a.app.format||"esm",a.app.folder=a.app.folder||a.app.format||"default",!1===a.cli?a.cli={enabled:!1}:!0===a.cli?a.cli={enabled:!0,extend:!0===a.cli_has_entry,export:!0,react:l}:a.cli={enabled:!0,extend:!0===a.cli_has_entry,export:!0,react:l,...a.cli||{}},a.cli.enabled=!0===a.cli.enabled&&(!1===t.doc.features.form_enabled||!0===a.cli.extend||!0===a.cli.enabled),a.cli.format=a.cli.format||"esm",a.cli.folder=a.cli.folder||a.cli.folder||"esm",a.cli.node_options=a.cli.node?.options||a.cli.node_options||"",a.json=a.cli.enabled||a.json;const d={cjs:{format:"cjs",context:a.form_enabled?"window":"global",babel:!0===a.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==a.cjs,copy:!1},esm:{format:"esm",context:a.form_enabled?"window":"global",babel:!0===a.src_uses_jsx||!1,browser:!1,replace:!0,terser:!1,enabled:!1!==a.esm,copy:!0},iife:{format:"iife",context:a.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!0===a.iife,terser:!0,copy:!1}};!0===a.webos&&(d.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===a.electron&&(d.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===a.nextjs&&(d.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===a.ios&&(d.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===a.macos&&(d.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===a.app.enabled&&(a.app.dir=`./dist/app/${a.app.folder}`,d.app={format:a.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:a.app.dir,terser:!0,output_exports:!1===a.app.export?"none":"auto",browsersync:!0}),!0===a.cli.enabled&&(a.cli.dir=`./dist/cli/${a.cli.folder}`,d.cli={format:a.cli.format,context:"global",babel:!0===a.src_uses_jsx||!0===a.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:a.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===a.cli.export?"none":"auto"});const m={server:".",startPath:`${s.normalize(a.app.dir||".")}`,files:[s.normalize("./dist/**/*")],cors:!0,open:!1};a.babel_options=S({targets:{browsers:"last 9 versions, not dead",node:"18"}},a.babel_options||a.babel?.options),a.browsersync_options=S(m,a.browsersync_options||a.browsersync?.options||{}),a.replace_options=S({},a.replace_options||a.replace?.options||{}),Reflect.has(a.browsersync_options,"proxy")&&delete a.browsersync_options.server,a.rollup=a.rollup||{},a.rollup_output=S(d,a.rollup_output||a.rollup?.output||{}),a.preact_enabled=!0===a.preact||a.preact&&!1!==a.preact?.enabled;let u=Object.keys(d);for(const e of u){const t=d[e];t&&(!1!==a.rollup[e]?(t.babel_options=t.babel_options||a.babel_options,t.browsersync_options=S(a.browsersync_options,t.browsersync_options),t.replace_options=S(a.replace_options,t.replace_options),a.preact_enabled&&(t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{},t.alias.entries.react="preact/compat",t.alias.entries["react-dom"]="preact/compat"),(a.form_enabled||a.babel)&&(t.babel=!0)):delete a.rollup_output[e])}u=Object.keys(a.rollup_output),a.babel_enabled=u.some((e=>!0===a.rollup_output[e].babel)),a.browser_enabled=u.some((e=>!0===a.rollup_output[e].babel)),a.browsersync_enabled=!1!==a.browsersync&&u.some((e=>!0===a.rollup_output[e].browsersync)),a.browsersync_enabled=a.browsersync_enabled&&a.app.enabled,a.dependency_auto_enabled=!1!==a.dependency_auto&&!1!==a.dependency_auto?.enabled,a.npm_install_flags=a.npm_install_flags||"",a.react_version=a.react_version||a.react?.version||18,function(e){const{atom:t,packageDevDependencies:o}=e,i=t.doc.features,a=i.css&&!1!==i.css.enabled;let s=[];a&&(s.push(["rollup-plugin-postcss","^4"]),s.push(["sass","^1.66"]),(i.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":s.push(["postcss-import","^15"]);break;case"postcss-url":s.push(["postcss-url","^10"]);break;case"postcss-preset-env":s.push(["postcss-preset-env","^9"]);break;case"autoprefixer":s.push(["autoprefixer","^10"]);break;case"cssnano":s.push(["cssnano","^6"])}})));Y({feature:{name:"css",packages:s},features:i,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e,i=t.doc.features,a={};!0===i.app?.enabled&&(a.targets=a.targets||[],a.targets.push({src:"./src/app/index.html",dest:i.app.dir}),Reflect.has(i.app,"copy")||Reflect.has(i,"copy")||(i.copy=!0)),Y({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:a},features:i,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Y({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Y({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Y({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Y({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Y({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Y({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Y({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Y({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Y({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Y({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:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Y({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:t.doc.features,packageDevDependencies:o})}(e)}async function W({projectDir:e,name:t,setProgress:o,count:a=1}){let n;const r=E(["npm-pick-versions",t,a]),c=s.join(e,".cache"),p=s.join(c,r+".json");return i.existsSync(p)?(o&&o(`Picking npm version of ${t} from cache ...`),n=JSON.parse(i.readFileSync(p,"utf8"))):(o&&o(`Picking npm version of ${t} ...`),n=await $({name:t,count:a}),i.mkdirSync(c,{recursive:!0}),i.writeFileSync(p,JSON.stringify(n),"utf8")),n}async function Z({atom:e,setProgress:t,context:o,packageDependencies:a}){await t({message:"Creating .gitignore"});const n={atom:e,packageDependencies:a},r=o.templateCommonDir,c=j.compile(i.readFileSync(s.resolve(r,".gitignore.njk"),"utf8"),j.configure(r)).render(n),p=o.projectDir,l=s.resolve(p,".gitignore");i.writeFileSync(l,c,"utf8")}async function Q({atom:e,context:t,setProgress:o,Atom:a}){const n="readme.md",r=`Creating ${n}`;if(await o({message:r}),t.project?.readme){const e=t.projectDir,o={content:t.project.readme.doc.content},a=s.resolve(t.project.projectDir,"fnet/how-to.md");if(i.existsSync(a)){const e=i.readFileSync(a,"utf8");o.howto=e}const r=s.resolve(t.project.projectDir,"fnet/input.yaml");if(i.existsSync(r)){const e=await f({file:r,tags:t.tags});o.input=e.content}const c=t.templateCommonDir,p=j.compile(i.readFileSync(s.resolve(c,`${n}.njk`),"utf8"),j.configure(c)).render(o),l=s.resolve(e,`${n}`);i.writeFileSync(l,p,"utf8")}else if(e.id){const o=await a.first({type:"wiki",parent_id:e.id});if(!o||"markdown"!==o.doc?.["content-type"])return;const{content:r,...c}=o.doc,p={content:r},l=t.templateCommonDir,d=j.compile(i.readFileSync(s.resolve(l,`${n}.njk`),"utf8"),j.configure(l)).render(p),m=t.projectDir,u=s.resolve(m,`${n}`);i.writeFileSync(u,d,"utf8")}}function ee(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var te=ee(U?J:(U=1,J=async e=>{const{atom:t,packageDependencies:o,context:i,deploymentProjectTarget:a,setProgress:s,deploymentProject:n,yamlTarget:r}=e;if(!0!==a.enabled)return;const c=a.type;try{if("lib"===c)await(await import("./index.DLGSTm8o.mjs")).default({...e});else if("red"===c)await(await import("./index.CmMM-Ek9.mjs")).default({...e});else if("npm"===c)await(await import("./index.DuVHEqKs.mjs")).default({...e});else if("gcs"===c)await(await import("./index.UOds5XLl.mjs")).default({...e});else if("gitlab"===c)await(await import("./index.DI3yyTtl.mjs")).default({...e});else if("fnet-package"===c)await(await import("./index.Bfg4lyu-.mjs")).default({...e});else if("fnet-form"===c)await(await import("./index.Q-CYRcna.mjs")).default({...e});else if("fnet-node"===c)await(await import("./index.BoO2Mnox.mjs")).default({...e});else if("fnet-flow"===c)await(await import("./index.dpz2QIRu.mjs")).default({...e});else if("nextjs"===c)await(await import("./index.CDct_kkF.mjs")).default({atom:t,target:a,onProgress:s,projectDir:i.projectDir,dependencies:o,context:i,yamlTarget:r}),n.isDirty=!0;else if("webos"===c)await(await import("./index.CMC8mlye.mjs")).default({atom:t,target:a,onProgress:s,projectDir:i.projectDir,dependencies:o,context:i,yamlTarget:r}),n.isDirty=!0;else if("electron"===c)await(await import("./index.xd8c7XMr.mjs")).default({atom:t,target:a,onProgress:s,projectDir:i.projectDir,dependencies:o,context:i,yamlTarget:r}),n.isDirty=!0;else if("docker"===c)await(await import("./index.D2N9YZmA.mjs")).default({atom:t,target:a,onProgress:s,projectDir:i.projectDir,dependencies:o,context:i,yamlTarget:r}),n.isDirty=!0;else if("ios"===c)await(await import("./index.B5XE4ChJ.mjs")).default({atom:t,target:a,onProgress:s,projectDir:i.projectDir,dependencies:o,context:i,yamlTarget:r}),n.isDirty=!0;else if("macos"===c)await(await import("./index.W6RYgypK.mjs")).default({atom:t,target:a,onProgress:s,projectDir:i.projectDir,dependencies:o,context:i,yamlTarget:r}),n.isDirty=!0;else if("rust"===c)await(await import("./index.CzAV0S36.mjs")).default({atom:t,target:a,onProgress:s,projectDir:i.projectDir,dependencies:o,context:i,yamlTarget:r}),n.isDirty=!0;else{if("pypi"!==c)return void console.warn(`No deployer found for type: ${c}`);await(await import("./index.C7saWH6d.mjs")).default({atom:t,target:a,onProgress:s,projectDir:i.projectDir,dependencies:o,context:i,yamlTarget:r}),n.isDirty=!0}}catch(e){throw console.error(`Error during deployment for type "${c}":`,e),e}}));class oe{#e;#t;#o;#i;#a;#s;#n;#r;#c;#p;#l;#d;#m;#u;#f;#g;#y;constructor(e){this.#e=new K,this.#t=e,this.#s=[],this.#n=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#s,packageDevDependencies:this.#n,setProgress:this.setProgress.bind(this),context:this.#t,Atom:_,registerToPackageManager:this.registerToPackageManager.bind(this)}}async _cache_set(e,t,o){this._redis_client&&await this._redis_client.SETEX(e,o||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async initAuth(){this.#t.id&&(this.#r=await this.#e.init({config:this.#d}),this.#y.atomAccessToken=this.#r)}async initLibrary(){const e=this.#t.id;this.#o=this.#t.project?.libraryAtom||await _.get({id:e});let t=this.#o.doc.bundleName;t=t||(this.#o.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#o.doc.bundleName=t,this.#o.type=this.#o.type||"workflow.lib",this.#y.atom=this.#o}async initLibraryDir(){this.setProgress({message:"Initializing library directory."});const e=this.#t.projectDir;this.setProgress({message:"Cleaning project directory."});const t=R({dir:e,ignore:[".cache","node_modules",".conda"],absolute:!0});for(const e of t)i.rmSync(e,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."});let o=e;i.existsSync(o)||i.mkdirSync(o,{recursive:!0}),o=s.join(e,"src"),i.existsSync(o)||i.mkdirSync(o,{recursive:!0}),o=s.join(e,"src","default"),i.existsSync()||i.mkdirSync(o,{recursive:!0})}async initLibraryDirPython(){this.setProgress({message:"Initializing library directory."});const e=this.#t.projectDir;this.setProgress({message:"Cleaning project directory."});const t=R({dir:e,ignore:[".cache","node_modules",".conda"],absolute:!0});for(const e of t)i.rmSync(e,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."});let o=e;i.existsSync(o)||i.mkdirSync(o,{recursive:!0}),o=s.join(e,"src"),i.existsSync(o)||i.mkdirSync(o,{recursive:!0}),o=s.join(e,"src","default");const a=this.#t.projectSrcDir;if(!i.existsSync(o))try{"win32"===b.platform()?i.symlinkSync(a,o,"junction"):i.symlinkSync(a,o,"dir")}catch(e){throw new Error(`Couldn't create symlink. Error: ${e.message}`)}}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#t.templateDir;this.#i=j.configure(e,{watch:!1,dev:!0}),this.#y.njEnv=this.#i}async initLibs(){this.setProgress({message:"Initializing external libs."});const e=[{name:this.#o.doc.name,type:"atom",parent_id:this.#o.parent_id}];this.#a=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.#s})}async initLibsPython(){this.setProgress({message:"Initializing external libs."});const e=this.#o;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=[{name:this.#o.doc.name,type:"atom",parent_id:this.#o.parent_id,atom:e}];this.#a=t}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const o=e.filter((e=>"atom"===e.type));for(let e=0;e<o.length;e++){const i=o[e],a=await this.findAtomLibrary({url:i.name});i.atom=a;const s=a.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));s?.forEach((e=>{const o=t.find((t=>t.package===e.package));o?"string"==typeof e.path?(o.path||[]).some((t=>t===e.path))||(o.path=o.path||[],o.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(o.path||[]).some((t=>t===e))||(o.path=o.path||[],o.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const t=O({url:e});if(!t)throw new Error(`Invalid package name: ${e}`);if(t.protocol||(t.protocol=this.#l),"ac:"===t.protocol){const o=t.pathname.split("/");if(1===o.length)return await _.first({where:{name:e,parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===o.length){const e=await _.first({where:{name:o[0],parent_id:this.#d.env.ATOM_LIBRARIES_ID,type:"folder"}});return await _.first({where:{name:o[1],parent_id:e.id,type:"workflow.lib"}})}}else if("local:"===t.protocol){const e=this.#o;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=s.resolve(this.#t.projectSrcDir,"index.js"),o=await P({file:t,recursive:!0}),i=e.doc.dependencies,a=o.all;for await(const e of a){if("npm"!==e.type)continue;if(i.find((t=>t.package===e.package)))continue;const t=await W({name:e.package,projectDir:this.#t.projectDir,setProgress:this.#y.setProgress});i.push({package:e.package,subpath:e.subpath,version:t.minorRange,type:"npm"})}return e}}async createAtomLibFiles({libs:e}){await this.setProgress({message:"Creating external lib files."}),this.#o.typesDir="./types";const t=e.filter((e=>"atom"===e.type));for(let e=0;e<t.length;e++){const o=t[e].atom,a=this.#t.projectDir;if("local:"===o.protocol){const e=s.resolve(this.#t.projectSrcDir,`${o.fileName||o.name}.js`),t=s.relative(s.join(this.#t.projectDir,"src","default"),e);if(!i.existsSync(e)){i.mkdirSync(s.dirname(e),{recursive:!0});let t="export default async (args)=>{\n";t+="}",i.writeFileSync(e,t,"utf8")}o.relativePath=t.split(s.sep).join("/"),this.#o.typesDir=`./types/${s.basename(a)}/src`}else{const e=s.join(a,"src","libs",`${o.id}.js`),t=o.doc.contents?.find((e=>"esm"===e.format))||o.doc;i.writeFileSync(e,t.content,"utf8")}}}async createAtomLibFilesPython({libs:e}){await this.setProgress({message:"Creating external lib files."});const t=e.filter((e=>"atom"===e.type));for(let e=0;e<t.length;e++){const o=t[e].atom;if("local:"===o.protocol){const e=s.resolve(this.#t.projectSrcDir,`${o.fileName||o.name}.py`);if(!i.existsSync(e)){i.mkdirSync(s.dirname(e),{recursive:!0});let t="def default():\n";t+=' print("Hello world!")\n',i.writeFileSync(e,t,"utf8")}}}}async createEngine(){await this.setProgress({message:"Creating engine file."});const e={libs:this.#a.filter((e=>"atom"===e.type)),libraryAtom:this.#o,atom:this.#o},t=this.#t.templateDir,o=j.compile(i.readFileSync(s.resolve(t,s.join("src","default","engine.js.njk")),"utf8"),this.#i).render(e),a=this.#t.projectDir,n=s.resolve(a,s.join("src","default","index.js"));i.writeFileSync(n,o,"utf8")}async createProjectYaml(){const e="node.yaml",t=`Creating ${e}`;await this.setProgress({message:t});const{content:o,...a}=this.#o.doc,n={content:d.stringify(a)},r=this.#t.templateDir,c=j.compile(i.readFileSync(s.resolve(r,`${e}.njk`),"utf8"),this.#i).render(n),p=this.#t.projectDir,l=s.resolve(p,`${e}`);i.writeFileSync(l,c,"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 o=e[t];await this.deployProject({deploymentProject:o}),!0===o.isDirty&&await o.save()}}else if(this.#o.id){const e=await _.list({type:"library.deploy",parent_id:this.#o.id});for(let t=0;t<e.length;t++){let o=e[t];await this.deployProject({deploymentProject:o}),!0===o.isDirty&&(o=await _.update(o,{id:o.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:o}=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 i=Object.keys(t.doc||{}),a=o||{};for(let e=0;e<i.length;e++){const o=t.doc[i[e]];o.name=i[e];const s=a.get(i[e]);await te({...this.#y,deploymentProject:t,deploymentProjectTarget:o,yamlTarget:s})}}async registerToPackageManager(e){const{target:t,packageJSON:o}=e;if(!this.#t.id)return;let i=await _.first({name:t.params.name,parent_id:this.#d.env.ATOM_PACKAGES_ID});i?(i.doc.versions.splice(0,0,{v:o.version}),await _.update(i,{id:i.id})):i=await _.create({parent_id:this.#d.env.ATOM_PACKAGES_ID,doc:{name:t.params.name,type:"pm",versions:[{v:o.version}]}})}async setProgress(e){const t="string"==typeof e?e:e?.message;console.log(N.blue(t)),await this._cache_set(this.#p,{status:"IN_PROGRESS",message:t})}async initNode(){await G(this.#y),await async function({atom:e,packageDependencies:t,packageDevDependencies:o,setProgress:i}){i("Initializing dependencies");const a=e.doc.dependencies||[];if(a.filter((e=>!e.dev)).forEach((e=>t.push(e))),a.filter((e=>e.dev)).forEach((e=>o.push(e))),"workflow"===e.type&&(t.push({package:"get-value",version:"^3"}),t.push({package:"set-value",version:"^4"})),e.doc.features.form_enabled&&e.doc.features.dependency_auto_enabled){let o="^18.2";i("Fetching React versions"),o=`^${(await C({name:"react",groupBy:{major:!0}})).find((t=>t[0]===e.doc.features.react_version.toString()))[0]}`,t.push({package:"react",version:o}),t.push({package:"react-dom",version:o}),"workflow"===e.type&&(t.push({package:"@fnet/react-app",version:"^0.1"}),t.push({package:"@fnet/react-app-state",version:"^0.1"}))}e.doc.features.preact_enabled&&t.push({package:"preact",version:"^10"}),!0===e.doc.features.cli.enabled&&(t.push({package:"@fnet/args",version:"^0.1"}),o.push({package:"ajv",version:"^8"}),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled&&t.push({package:"@fnet/config",version:"0.2.21"})),e.doc.features.render&&!1!==e.doc.features.render.enabled&&o.push({package:"@flownet/lib-render-templates-dir",version:"0.1.19"}),o.push({package:"@babel/core",version:"^7"}),o.push({package:"@rollup/plugin-commonjs",version:"^28"}),o.push({package:"@rollup/plugin-node-resolve",version:"^16"}),o.push({package:"@rollup/plugin-replace",version:"^6"}),o.push({package:"rollup",version:"^4"}),e.doc.features.dts_enabled&&o.push({package:"rollup-plugin-dts",version:"^6"}),o.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),o.push({package:"@rollup/plugin-alias",version:"^5"}),o.push({package:"fs-extra",version:"^11"}),e.doc.features.babel_enabled&&(o.push({package:"@rollup/plugin-babel",version:"^6"}),o.push({package:"@babel/preset-env",version:"^7"}),o.push({package:"@babel/preset-react",version:"^7"}),e.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":o.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":o.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":o.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":o.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":o.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),o.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),e.doc.features.browsersync_enabled&&o.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})}(this.#y),await this.initLibraryDir(),await this.initNunjucks(),await this.initLibs()}async initPython(){await async function(e){const{atom:t,context:o,setProgress:i}=e;i("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)}(this.#y),await async function({atom:e,packageDependencies:t,packageDevDependencies:o,setProgress:i}){i("Initializing dependencies")}(this.#y),await this.initLibraryDirPython(),await this.initNunjucks(),await this.initLibsPython()}async nodeBuild(){this.#u&&(await this.createAtomLibFiles({libs:this.#a}),await this.createEngine(),await this.createProjectYaml(),await Q(this.#y),await async function({atom:e,setProgress:t,context:o,packageDependencies:a}){await t({message:"Creating tsconfig.json."});const n={atom:e,packageDependencies:a},r=o.templateCommonDir,c=j.compile(i.readFileSync(s.resolve(r,"tsconfig.json.njk"),"utf8"),j.configure(r)).render(n),p=o.projectDir,l=s.resolve(p,"tsconfig.json");i.writeFileSync(l,c,"utf8")}(this.#y),await Z(this.#y),await async function({atom:e,setProgress:t,context:o,njEnv:a}){if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating yargs."});let n={};if(n=e.doc.input?e.doc.input:{type:"object",properties:{},required:[]},e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled){const t=e.doc.features.cli.fargs,o={type:"string",description:"Config name to load args",hidden:!1},i={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(t,"default")&&(o.default=t.default),n.properties&&(n.properties.fargs=o,n.properties.ftag=i)}const r={options:n,imports:[],atom:e},c=o.templateDir,p=j.compile(i.readFileSync(s.resolve(c,"src/default/to.args.js.njk"),"utf8"),a).render(r),l=o.projectDir,d=s.resolve(l,"src/default/to.args.js");i.writeFileSync(d,p,"utf8");const m=new A({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});I(m);const u=m.compile(n),f=F(m,u);i.writeFileSync(s.resolve(l,"src/default/validate_input.js"),f,"utf8")}(this.#y),await async function({atom:e,setProgress:t,context:o,packageDependencies:a}){if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating cli."});const n={atom:e,packageDependencies:a},r=o.templateDir,c=s.resolve(o.projectDir,"src/cli");i.existsSync(c)||i.mkdirSync(c,{recursive:!0}),await w({pattern:["index.js.njk"],dir:s.resolve(r,"src/cli"),outDir:c,context:n})}(this.#y),await async function({atom:e,setProgress:t,context:o,packageDependencies:a}){if(!0!==e.doc.features.app.enabled)return;await t({message:"Creating app folder"});const n={atom:e,packageDependencies:a,ts:Date.now()},r=o.templateDir,c=s.resolve(o.projectDir,"src/app");i.existsSync(c)||i.mkdirSync(c,{recursive:!0});let p=["index.js.njk"];!1!==e.doc.features.app.html&&p.push("index.html.njk"),await w({pattern:p,dir:s.resolve(r,"src/app"),outDir:c,context:n})}(this.#y),await async function({atom:e,setProgress:t,context:o,packageDependencies:a}){await t({message:"Creating rollup file."});const n={atom:e,packageDependencies:a},r=s.resolve(o.projectDir,"src","default/index.js");if(!i.existsSync(r))throw new Error(`Entry file not found: ${r}`);const c=(await P({file:r,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),p=e.doc.features.rollup_output,l=Object.keys(p);for(let e=0;e<l.length;e++){const t=p[l[e]];if(!0===t.browser&&c.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(c.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<c.length;e++){const o=c[e];t.alias.entries[o]=`node:${o}`,t.alias.entries[`node:${o}`]=o}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(c)}}const d=o.templateCommonDir;let m=j.compile(i.readFileSync(s.resolve(d,"rollup.config.mjs.njk"),"utf8"),j.configure(d)).render(n);const u=o.projectDir;let f=s.resolve(u,"rollup.config.mjs");i.writeFileSync(f,m,"utf8")}(this.#y),await async function({atom:e,context:t,packageDependencies:o,packageDevDependencies:a,setProgress:n}){await n({message:"Creating package.json."}),o.filter((e=>!0===e.dev)).forEach((e=>{a.find((t=>t.package===e.package))||a.push(e);const t=o.findIndex((t=>t.package===e.package));o.splice(t,1)}));const r=o.find((e=>"react"===e.package)),c=o.find((e=>"react-dom"===e.package));r&&!c?o.push({package:"react-dom",version:r.version}):r&&c&&(c.version=r.version),r&&e.doc.features.react_version>=17&&(o.find((e=>"@emotion/react"===e.package))||o.push({package:"@emotion/react",version:"^11"}),o.find((e=>"@emotion/styled"===e.package))||o.push({package:"@emotion/styled",version:"^11"}));const p=[];!0===e.doc.features.app.enabled&&p.push({file:s.resolve(t.projectDir,"src/app/index.js"),dev:!1!==e.doc.features.app.dev}),!0===e.doc.features.cli.enabled&&p.push({file:s.resolve(t.projectDir,"src/cli/index.js"),dev:!1!==e.doc.features.cli.dev});for await(const e of p){const s=e.file;if(!i.existsSync(s))throw new Error(`App file not found: ${s}`);const r=(await P({file:s,recursive:!0})).all;for await(const i of r){if("npm"!==i.type)continue;if(o.find((e=>e.package===i.package)))continue;if(a.find((e=>e.package===i.package)))continue;const s=await W({name:i.package,projectDir:t.projectDir,setProgress:n});(!0===e.dev?a:o).push({package:i.package,subpath:i.subpath,version:s.minorRange,type:"npm"})}}const l={atom:e,packageDependencies:o,packageDevDependencies:a},d=t.templateCommonDir,m=j.compile(i.readFileSync(s.resolve(d,"package.json.njk"),"utf8"),j.configure(d)).render(l),u=t.projectDir,f=s.resolve(u,"package.json");i.writeFileSync(f,m,"utf8");const g=s.resolve(t.project.projectDir,"fnet");if(i.existsSync(g)){const e=s.resolve(t.projectDir,"fnet");i.existsSync(e)||i.mkdirSync(e);const o=i.readdirSync(g);for(const t of o){const o=s.resolve(g,t);if(!i.lstatSync(o).isFile())continue;const a=s.resolve(e,t);i.copyFileSync(o,a)}}}(this.#y),await async function({setProgress:t,context:o}){const i=o.projectDir;await t({message:"Prettifiying source files."});let a=e.join("src","**","*");await h({commands:{steps:[`prettier --write ${a} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:i}})}(this.#y),await async function({atom:e,setProgress:t,context:o}){if(!e.doc.features.dts_enabled)return;const i=o.projectDir;if(await t({message:"Creating .d.ts"}),0!==(await m("tsc",{cwd:i})).code)throw new Error("Couldnt create .d.ts files.")}(this.#y),this.#f&&(await async function({setProgress:e,atom:t,context:o}){const i=o.projectDir;await e({message:"Installing npm packages."});const a=X("bun")?"bun":"npm";if(0!==(await m(`${a} install ${t.doc.features.npm_install_flags}`,{cwd:i})).code)throw new Error("Couldnt install npm packages.")}(this.#y),await async function({setProgress:e,context:t}){const o=t.projectDir;if(await e({message:"Building main project."}),0!==(await m("npm run build",{cwd:o})).code)throw new Error("Couldnt build project.")}(this.#y),this.#g&&await this.deploy()))}async pythonBuild(){this.#u&&(await this.createAtomLibFilesPython({libs:this.#a}),await this.createProjectYaml(),await Q(this.#y),await Z(this.#y),await async function({atom:e,setProgress:t,context:o,packageDependencies:a}){if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating cli."});const n={atom:e,packageDependencies:a},r=o.templateDir,c=s.join(o.projectDir,"src","cli");i.existsSync(c)||i.mkdirSync(c,{recursive:!0}),await w({pattern:["index.py.njk","__init__.py.njk"],dir:s.join(r,"src","cli"),outDir:c,context:n})}(this.#y),this.#f&&(await async function(e){const{setProgress:t,atom:o,context:i}=e;t({message:"Installing Python packages"});const a=i.projectDir,n=await T({pythonVersion:"3.12",packages:[{package:"fnet-import-parser",version:"0.1.9"}]}),{errors:r,result:c}=await n.runBin("fnet_import_parser",["--entry_file",s.join(a,"src","default","index.py")],{captureName:"result"});if(r)throw new Error(r.format());const p=JSON.parse(c.items[0].stdout),l=p.required["third-party"]?.map((e=>({package:e.metadata?.package||e.path,version:e.metadata?.version||void 0,channel:e.metadata?.channel||void 0})))||[],d=o.doc.dependencies||[];for(const e of l)d.some((t=>t.package===e.package))||d.push(e);const m=s.join(a,".conda"),u=await T({envDir:m,pythonVersion:o.doc.features.runtime.version||"3.12",packages:d});i.pythonEnv=u,e.packageDependencies=d;const f=o.doc.features.render?.dirs||[];for(const e of f)e.dir=s.resolve(a,e.dir),e.outDir=s.resolve(a,e.outDir),await w(e);let g={params:{}};g.params.package_name=o.doc.name,g.params.version="0.1.0",g.params.bin_name=o.doc.name,g.params.python_requires=o.doc.features.runtime.version||">=3.12",g.params.dependencies=d,g.params.scripts=JSON.stringify({cli:`PYTHONPATH='${s.join("src")}' '${s.relative(i.projectDir,u.pythonBin)}' '${s.join("src","cli","index.py")}'`}),await w({pattern:["setup.py.njk","package.json.njk","pyproject.toml.njk"],dir:i.templateDir,outDir:i.projectDir,context:g})}(this.#y),this.#g&&await this.deploy()))}async init(){this._redis_client=await async function(){if(!await x({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=v.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e}(),this.#c=this.#t.buildId||k(),this.#y.buildId=this.#c,this.#m=this.#t.mode,this.#u=["all","deploy","build","file"].includes(this.#m),this.#f=["all","deploy","build"].includes(this.#m),this.#g=["all","deploy"].includes(this.#m),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.#o.doc.features.runtime.type?await this.initNode():"python"===this.#o.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.#o.doc.features.runtime.type?await this.nodeBuild():"python"===this.#o.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}}}const ie=process.cwd();g({name:["redis"],dir:ie,optional:!0});const ae=function({baseDir:e}){let t=e=e||H;for(;t!==s.parse(t).root;){const e=s.join(t,"node_modules");if(i.existsSync(e))return e;t=s.dirname(t)}return null}({baseDir:H}),se="win32"===process.platform?";":":";process.env.PATH=`${e.join(ae,"/.bin")}${se}${process.env.PATH}`;const ne=new c;function re(e,{name:o,bin:i,preArgs:a=[]}){const s=o||i;e.command(s,{isDefault:!1,hidden:!1}).description(`Run ${i} ${a.join(" ")} in project context. Pass arguments after '--'.`).argument("[command_args...]",`Arguments for ${i}`).allowUnknownOption().action((async(e,o)=>{try{const s=await pe(o),{projectDir:n}=s,r=e,c=t(i,[...a,...r],{cwd:n,stdio:"inherit",shell:!0});c.on("close",(e=>{process.exit(e)})),c.on("error",(e=>{console.error(`Failed to start ${i}:`,e),process.exit(1)}))}catch(e){console.error(e.message),process.exit(1)}}))}function ce(o,{name:i,bin:a,preArgs:s=[]}){const n=i||a;o.command(n,{isDefault:!1,hidden:!1}).description(`Run ${a} ${s.join(" ")} using project's conda env. Pass arguments after '--'.`).argument("[command_args...]",`Arguments for ${a}`).allowUnknownOption().action((async(o,n)=>{try{const r=await pe(n),{projectDir:c}=r,p=e.join(c,".conda","bin",a||i);if(!l.existsSync(e.dirname(p)))throw new Error(`Conda environment not found in ${e.join(c,".conda")}. Did you initialize it?`);if(!l.existsSync(p))throw new Error(`Command '${a||i}' not found in conda environment: ${p}`);const d=o,m=t(p,[...s,...d],{cwd:c,stdio:"inherit",shell:!1,env:{...process.env,PYTHONPATH:c}});m.on("close",(e=>{process.exit(e)})),m.on("error",(e=>{console.error(`Failed to start ${p}:`,e),process.exit(1)}))}catch(e){console.error(e.message),process.exit(1)}}))}async function pe(t){if(t.id)return{id:t.id,buildId:t.buildId,mode:t.mode,protocol:t.protocol||"ac:",templateDir:e.resolve(ae,"./@fnet/cli-project-node/dist/template/default"),templateCommonDir:e.resolve(ae,"./@fnet/cli-project-common/dist/template/default"),projectDir:e.resolve(ie,`./.output/${t.id}`),tags:t.ftag||[]};{const o=await async function({tags:t=[]}){const o=e.resolve(ie,"node.yaml");if(!l.existsSync(o))throw new Error("node.yaml file not found in current directory.");const i=Array.isArray(t)?t:t?[t]:[],{raw:a,parsed:s}=await f({file:o,tags:i}),n=e.dirname(o);s.features=s.features||{};const r=s.features;r.runtime=r.runtime||{},r.runtime.type=r.runtime.type||"node","python"===r.runtime.type?r.runtime.template=r.runtime.template||"python":r.runtime.template=r.runtime.template||"default";const c={libraryAtom:{doc:{...s},fileName:"index"},projectDir:n,projectFilePath:o,projectFileContent:a,projectFileParsed:s,runtime:r.runtime};let p=e.resolve(n,"fnet/targets.yaml");if(!l.existsSync(p)&&(p=e.resolve(n,"node.devops.yaml"),l.existsSync(p))){const t=e.resolve(n,"fnet");l.existsSync(t)||l.mkdirSync(t);const o=e.resolve(n,"fnet/targets.yaml");l.copyFileSync(p,o);try{l.unlinkSync(p),console.log(`Migrated legacy devops file: ${p} to ${o}`)}catch(e){console.warn(`Could not delete legacy devops file ${p}: ${e.message}`)}}if(l.existsSync(p)){const{raw:e,parsed:t}=await f({file:p,tags:i}),o=d.parseDocument(e);c.devops={filePath:p,fileContent:e,yamlDocument:o,doc:{...t},type:"library.deploy",save:async()=>{l.writeFileSync(c.devops.filePath,o.toString())}}}const m=e.resolve(n,"readme.md");if(l.existsSync(m)){const e=l.readFileSync(m,"utf8");c.readme={filePath:m,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return c}({tags:t.ftag||[]});return{buildId:t.buildId,mode:t.mode,protocol:t.protocol||"local:",templateDir:e.resolve(ae,`./@fnet/cli-project-node/dist/template/${o.runtime.template}`),templateCommonDir:e.resolve(ae,`./@fnet/cli-project-common/dist/template/${o.runtime.template}`),projectDir:e.resolve(o.projectDir,"./.workspace"),projectSrcDir:e.resolve(o.projectDir,"./src"),project:o,tags:t.ftag||[]}}}ne.name("fnode").version(q).description("CLI tool for FlowNet node projects"),ne.command("create").description("Create flow node project").requiredOption("-n, --name <string>","Project name").addOption(new p("-r, --runtime <type>","Runtime environment").choices(["node","python"]).default("node")).option("--vscode","Open project in VSCode after creation",!0).option("--no-vscode","Do not open project in VSCode").action((async t=>{try{const o=e.resolve(ae,"@fnet/cli-project-node/dist/template/project"),i=e.resolve(ie,t.name);l.existsSync(i)||l.mkdirSync(i),await w({dir:o,outDir:i,context:{name:t.name,runtime:t.runtime,platform:u.platform()},copyUnmatchedAlso:!0});let a=await m("fnode build",{cwd:i});if(0!==a.code)throw new Error("Failed to build project.");if(X("git")&&(a=await m("git init --initial-branch=main",{cwd:i}),0!==a.code))throw new Error("Failed to initialize git.");if(t.vscode&&X("code")&&(a=await m(`cd ${i} && code .`),0!==a.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)}})),ne.command("project").description("Flow node project operations").option("-u, --update","Update project files from template",!1).action((async t=>{try{const o=e.resolve(ae,"@fnet/cli-project-node/dist/template/project"),i=process.cwd(),a=await pe(t);if(t.update){if(await w({dir:o,outDir:i,context:{name:a.project.projectFileParsed.name,runtime:a.project.runtime.type,platform:u.platform()},copyUnmatchedAlso:!0}),0!==(await m("fnode build",{cwd:i})).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}else console.log("Use 'fnode project --update' to update project files.");process.exit(0)}catch(e){console.error("Project command failed.",e.message),process.exit(1)}})),ne.command("build").description("Build flow node project").option("--id <string>","Build identifier").option("--buildId <string>","Specific build ID (alias: bid)").addOption(new p("--mode <mode>","Build mode").choices(["all","file","build","deploy","bpmn"]).default("build")).option("--ftag <tags...>","Filter tags (specify multiple times or space-separated)").action((async e=>{try{const t=await pe(e),o=new oe(t);await o.init(),await o.build(),console.log("Building library succeeded!"),process.exit(0)}catch(e){console.error("Building library failed!",e.message),process.exit(1)}})),ne.command("deploy").description("Build and deploy flow node project").option("--id <string>","Build identifier").option("--buildId <string>","Specific build ID").option("--ftag <tags...>","Filter tags").action((async e=>{try{const t=await pe({...e,mode:"all"}),o=new oe(t);await o.init(),await o.build(),console.log("Building and deploying library succeeded!"),process.exit(0)}catch(e){console.error("Building/deploying library failed!",e.message),process.exit(1)}})),ne.command("file").description("Just create files (part of build process)").option("--id <string>","Build identifier").option("--buildId <string>","Specific build ID").option("--ftag <tags...>","Filter tags").action((async e=>{try{const t=await pe({...e,mode:"file"}),o=new oe(t);await o.init(),await o.build(),console.log("Creating files succeeded!"),process.exit(0)}catch(e){console.error("Creating files failed!",e.message),process.exit(1)}})),ne.command("input").description("Create or modify an input config file").argument("[name]","Optional input configuration name (e.g., dev, prod)").action((async(t,i)=>{try{const a=await pe({...i,name:t}),{project:s}=a,{projectDir:n,projectFileParsed:r}=s,c=r.input;if(!c)throw new Error("Config schema not found in project file.");let p=t;if(!p){p=(await o({type:"input",name:"inputName",message:"Input name:",initial:"dev"})).inputName}const d=e.resolve(n,".fnet");l.existsSync(d)||l.mkdirSync(d);const m=e.resolve(d,`${p}.fnet`),u=l.existsSync(m),f=await y({schema:c,format:"yaml",ref:u?m:void 0});l.writeFileSync(m,f),console.log(`Input config '${p}.fnet' ${u?"updated":"created"}.`)}catch(e){console.error(e.message),process.exit(1)}})),re(ne,{bin:"npm"}),re(ne,{bin:"node"}),re(ne,{bin:"bun"}),re(ne,{name:"serve",bin:"npm",preArgs:["run","serve"]}),re(ne,{name:"watch",bin:"npm",preArgs:["run","watch"]}),re(ne,{name:"app",bin:"npm",preArgs:["run","app"]}),re(ne,{name:"cli",bin:"npm",preArgs:["run","cli"]}),re(ne,{bin:"npx"}),re(ne,{bin:"cdk"}),re(ne,{bin:"aws"}),function(e,{name:o,preArgs:i=[]}){e.command(o).description("Run a command with environment variables from a .fnet config file.").argument("<config>","Name of the .fnet config file (without extension)").argument("<command>","The command to execute").argument("[command_args...]","Arguments for the command").option("--ftag <tags...>","Filter tags for loading config").allowUnknownOption().action((async(e,o,a,s)=>{try{const n=await pe(s),{projectDir:r}=n,c=await g({name:e,dir:r,transferEnv:!1,optional:!0,tags:n.tags}),p=c?.data?.env||{},d=t(o,[...i,...a],{cwd:l.existsSync(r)?r:ie,stdio:"inherit",shell:!0,env:{...process.env,...p}});d.on("close",(e=>{process.exit(e)})),d.on("error",(e=>{"ENOENT"===e.code?console.error(`Error: Command not found: '${o}'. Is it installed or in your PATH?`):console.error(`Failed to start command '${o}':`,e),process.exit(1)}))}catch(e){console.error(e.message),process.exit(1)}}))}(ne,{name:"with"}),function(e,{name:t,preArgs:o=[]}){e.command(t).description("Run a command group defined in node.yaml.").argument("<group>","Name of the command group in node.yaml commands section").option("--ftag <tags...>","Filter tags for loading project config").action((async(e,t)=>{try{const o=await pe(t),{project:i}=o,{projectFileParsed:a}=i,s=a.commands;if(!s)throw new Error("`commands` section not found in project file (node.yaml).");const n=s[e];if(!n)throw new Error(`Command group '${e}' not found in project file.`);await h({commands:n}),process.exit(0)}catch(t){console.error(`Error running command group '${e}':`,t.message),process.exit(1)}}))}(ne,{name:"run"}),ce(ne,{name:"python"}),ce(ne,{name:"python3"}),ce(ne,{name:"pip"}),ce(ne,{name:"pip3"}),ne.parse(process.argv),process.argv.slice(2).length||ne.outputHelp();export{X as w};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@flownet/lib-to-electron";import t from"lodash.clonedeep";import n from"semver";async function r({atom:r,target:a,onProgress:i,projectDir:s,dependencies:c,context:m,yamlTarget:p}){i&&await i({message:"Deploying it as electron package."});const f=a?.config?await e({name:a.config,dir:s,optional:!0,transferEnv:!1,tags:m.tags}):void 0,g=n.inc(a.version||"0.1.0","patch");a.version=g,p.set("version",g);const d=t(a.params);d.dependencies=t(c);const l={atom:r,params:d,config:f?.config,src:s,dest:s};return{deployer:await o(l)}}export{r as default};
|