@fnet/cli 0.132.0 → 0.133.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/fbin/index.js +14 -1
- package/dist/fnet/index.0jcm9pn5.js +1 -0
- package/dist/fnet/index.2084z2ed.js +2 -0
- package/dist/fnet/index.33f1ggpr.js +1 -0
- package/dist/fnet/index.3exge2js.js +1 -0
- package/dist/fnet/index.3kfx538h.js +1 -0
- package/dist/fnet/index.490y87nc.js +1 -0
- package/dist/fnet/index.4g9yezkq.js +1 -0
- package/dist/fnet/index.4jkat7r4.js +1 -0
- package/dist/fnet/index.7crx8ky1.js +1 -0
- package/dist/fnet/index.7vw06nrn.js +1 -0
- package/dist/fnet/index.9567fa9x.js +1 -0
- package/dist/fnet/index.gh75wt1m.js +1 -0
- package/dist/fnet/index.hzsfswvp.js +1 -0
- package/dist/fnet/index.jgpc3grc.js +1 -0
- package/dist/fnet/index.js +19 -1
- package/dist/fnet/index.p0zb7e1b.js +1 -0
- package/dist/fnet/index.r19p3bpa.js +2 -0
- package/dist/fnet/index.r82rtnmz.js +1 -0
- package/dist/fnet/index.s662t98v.js +1 -0
- package/dist/fnet/index.w74dpnpn.js +1 -0
- package/dist/fnet/index.xeaw5xa9.js +1 -0
- package/dist/fnet/index.zm4kesg6.js +1 -0
- package/dist/fnode/index.05n3mvs9.js +2 -0
- package/dist/fnode/index.2hc9tbyx.js +1 -0
- package/dist/fnode/index.2pnjg6dc.js +1 -0
- package/dist/fnode/index.9qgtmxq3.js +2 -0
- package/dist/fnode/index.b1q7y05p.js +1 -0
- package/dist/fnode/index.bhapgrs7.js +1 -0
- package/dist/fnode/index.cvxrf34y.js +2 -0
- package/dist/fnode/index.dp9wyahp.js +1 -0
- package/dist/fnode/index.eqxmcpdc.js +1 -0
- package/dist/fnode/index.f2tb0x3t.js +1 -0
- package/dist/fnode/index.fbzv6wwf.js +1 -0
- package/dist/fnode/index.gazd9raq.js +1 -0
- package/dist/fnode/index.hv4s25f0.js +3 -0
- package/dist/fnode/index.j5z7dtsx.js +1 -0
- package/dist/fnode/index.js +9 -1
- package/dist/fnode/index.kb4e4bxf.js +1 -0
- package/dist/fnode/index.qn0schqp.js +1 -0
- package/dist/fnode/index.rht29phd.js +1 -0
- package/dist/fnode/index.rzsfmek6.js +3 -0
- package/dist/fnode/index.s0nk6cv8.js +4 -0
- package/dist/fnode/index.s66v6wt4.js +1 -0
- package/dist/fnode/index.sv7v0y60.js +1 -0
- package/dist/fnode/index.tgkhgnrp.js +1 -0
- package/dist/fnode/index.vq706f75.js +1 -0
- package/dist/fnode/index.y8pvdcny.js +1 -0
- package/dist/fnode/index.z4vz93ww.js +1 -0
- package/dist/frun/index.js +1 -1
- package/dist/fservice/index.js +18 -1
- package/dist/fservice/index.q01yvaz0.js +2 -0
- package/package.json +21 -18
- package/readme.md +62 -15
- package/template/fnet/core/object.js +10 -10
- package/template/fnet/node/package.json.njk +6 -3
- package/template/fnet/node/src/cli/index.js.njk +5 -315
- package/template/fnet/node/src/cli/index.js.v1.njk +318 -0
- package/template/fnet/node/src/cli/v2/core/args-parser.njk +10 -0
- package/template/fnet/node/src/cli/v2/core/imports.njk +31 -0
- package/template/fnet/node/src/cli/v2/core/run-wrapper.njk +25 -0
- package/template/fnet/node/src/cli/v2/index.js.njk +184 -0
- package/template/fnet/node/src/cli/v2/modes/default/extend.njk +11 -0
- package/template/fnet/node/src/cli/v2/modes/default/standard.njk +20 -0
- package/template/fnet/node/src/cli/v2/modes/http/builtin.njk +66 -0
- package/template/fnet/node/src/cli/v2/modes/http/imports.njk +9 -0
- package/template/fnet/node/src/cli/v2/modes/http/index.njk +12 -0
- package/template/fnet/node/src/cli/v2/modes/mcp/imports.njk +33 -0
- package/template/fnet/node/src/cli/v2/modes/mcp/index.njk +30 -0
- package/template/fnet/node/src/cli/v2/modes/mcp/server-setup.njk +15 -0
- package/template/fnet/node/src/cli/v2/modes/mcp/tool-handlers.njk +46 -0
- package/template/fnet/node/src/cli/v2/modes/mcp/transport-http.njk +222 -0
- package/template/fnet/node/src/cli/v2/modes/mcp/transport-stdio.njk +9 -0
- package/template/fnet/node/src/cli/v2/modes/pipeline/imports.njk +9 -0
- package/template/fnet/node/src/cli/v2/modes/pipeline/index.njk +113 -0
- package/template/fnet/node/src/cli/v2/modes/webhook/imports.njk +9 -0
- package/template/fnet/node/src/cli/v2/modes/webhook/index.njk +127 -0
- package/template/fnet/node/src/cli/v2/modes/websocket/imports.njk +15 -0
- package/template/fnet/node/src/cli/v2/modes/websocket/index.njk +104 -0
- package/template/fnet/node/src/default/blocks/assign.js.njk +10 -48
- package/template/fnet/node/src/default/blocks/call.js.njk +110 -156
- package/template/fnet/node/src/default/blocks/for.js.njk +58 -74
- package/template/fnet/node/src/default/blocks/form.js.njk +21 -59
- package/template/fnet/node/src/default/blocks/http.js.njk +135 -0
- package/template/fnet/node/src/default/blocks/modules.js.njk +10 -52
- package/template/fnet/node/src/default/blocks/new.js.njk +40 -85
- package/template/fnet/node/src/default/blocks/next.js.njk +10 -32
- package/template/fnet/node/src/default/blocks/output.js.njk +10 -48
- package/template/fnet/node/src/default/blocks/parallel.js.njk +64 -0
- package/template/fnet/node/src/default/blocks/pipeline.js.njk +109 -0
- package/template/fnet/node/src/default/blocks/raise.js.njk +9 -25
- package/template/fnet/node/src/default/blocks/retry.js.njk +70 -0
- package/template/fnet/node/src/default/blocks/return.js.njk +13 -25
- package/template/fnet/node/src/default/blocks/schedule.js.njk +66 -0
- package/template/fnet/node/src/default/blocks/signal.js.njk +10 -32
- package/template/fnet/node/src/default/blocks/steps.js.njk +32 -48
- package/template/fnet/node/src/default/blocks/switch.js.njk +37 -67
- package/template/fnet/node/src/default/blocks/tryexcept.js.njk +58 -52
- package/template/fnet/node/src/default/blocks/wait.js.njk +10 -30
- package/template/fnet/node/src/default/input.args.js.njk +5 -2
- package/template/fnet/node/src/default/macros/block-body-header.js.njk +1 -1
- package/template/fnet/node/src/default/macros/block-header.js.njk +0 -3
- package/template/fnet/node/src/default/macros/block-next.js.njk +1 -1
- package/template/fnet/node/src/default/macros/block-run-footer.js.njk +1 -1
- package/template/fnet/node/src/default/macros/block-run-header.js.njk +14 -2
- package/template/fnet/node/src/default/macros/page.js.njk +1 -1
- package/template/fnet/node/src/default/types/block.js.njk +133 -0
- package/template/fnet/node/src/default/workflow.js.njk +8 -6
- package/template/fnode/node/package.json.njk +5 -4
- package/template/fnode/node/src/cli/index.js.njk +3 -397
- package/template/fnode/node/src/cli/index.js.v1.njk +464 -0
- package/template/fnode/node/src/cli/v2/core/args-parser.njk +10 -0
- package/template/fnode/node/src/cli/v2/core/imports.njk +29 -0
- package/template/fnode/node/src/cli/v2/core/run-wrapper.njk +25 -0
- package/template/fnode/node/src/cli/v2/index.js.njk +184 -0
- package/template/fnode/node/src/cli/v2/modes/default/extend.njk +11 -0
- package/template/fnode/node/src/cli/v2/modes/default/standard.njk +19 -0
- package/template/fnode/node/src/cli/v2/modes/http/builtin.njk +61 -0
- package/template/fnode/node/src/cli/v2/modes/http/imports.njk +9 -0
- package/template/fnode/node/src/cli/v2/modes/http/index.njk +12 -0
- package/template/fnode/node/src/cli/v2/modes/mcp/imports.njk +33 -0
- package/template/fnode/node/src/cli/v2/modes/mcp/index.njk +30 -0
- package/template/fnode/node/src/cli/v2/modes/mcp/server-setup.njk +15 -0
- package/template/fnode/node/src/cli/v2/modes/mcp/tool-handlers.njk +41 -0
- package/template/fnode/node/src/cli/v2/modes/mcp/transport-http.njk +212 -0
- package/template/fnode/node/src/cli/v2/modes/mcp/transport-stdio.njk +9 -0
- package/template/fnode/node/src/cli/v2/modes/pipeline/imports.njk +9 -0
- package/template/fnode/node/src/cli/v2/modes/pipeline/index.njk +103 -0
- package/template/fnode/node/src/cli/v2/modes/webhook/imports.njk +9 -0
- package/template/fnode/node/src/cli/v2/modes/webhook/index.njk +122 -0
- package/template/fnode/node/src/cli/v2/modes/websocket/imports.njk +15 -0
- package/template/fnode/node/src/cli/v2/modes/websocket/index.njk +99 -0
- package/template/fnode/node/src/default/input.args.js.njk +6 -2
- package/dist/fnet/index.-SGbq2cI.js +0 -1
- package/dist/fnet/index.B5XE4ChJ.js +0 -1
- package/dist/fnet/index.Bft2w7m3.js +0 -1
- package/dist/fnet/index.BuYxdKtK.js +0 -1
- package/dist/fnet/index.C0YpfQ5j.js +0 -1
- package/dist/fnet/index.C2S9JYhS.js +0 -1
- package/dist/fnet/index.C7saWH6d.js +0 -1
- package/dist/fnet/index.CDct_kkF.js +0 -1
- package/dist/fnet/index.CMC8mlye.js +0 -1
- package/dist/fnet/index.CmMM-Ek9.js +0 -1
- package/dist/fnet/index.CuMyez3E.js +0 -1
- package/dist/fnet/index.CzAV0S36.js +0 -1
- package/dist/fnet/index.D2N9YZmA.js +0 -1
- package/dist/fnet/index.D3p7pncT.js +0 -1
- package/dist/fnet/index.DG8TqL-1.js +0 -1
- package/dist/fnet/index.DI3yyTtl.js +0 -1
- package/dist/fnet/index.DOYkqsYT.js +0 -1
- package/dist/fnet/index.DWpw12No.js +0 -1
- package/dist/fnet/index.DrwlOzAe.js +0 -1
- package/dist/fnet/index.Q-CYRcna.js +0 -1
- package/dist/fnet/index.W6RYgypK.js +0 -1
- package/dist/fnet/index.xd8c7XMr.js +0 -1
- package/dist/fnode/index.-SGbq2cI.js +0 -1
- package/dist/fnode/index.B5XE4ChJ.js +0 -1
- package/dist/fnode/index.BTXKZRR5.js +0 -1
- package/dist/fnode/index.Bft2w7m3.js +0 -1
- package/dist/fnode/index.BpWyDwfw.js +0 -1
- package/dist/fnode/index.BuYxdKtK.js +0 -1
- package/dist/fnode/index.C2S9JYhS.js +0 -1
- package/dist/fnode/index.C7saWH6d.js +0 -1
- package/dist/fnode/index.CDct_kkF.js +0 -1
- package/dist/fnode/index.CMC8mlye.js +0 -1
- package/dist/fnode/index.CmMM-Ek9.js +0 -1
- package/dist/fnode/index.CuMyez3E.js +0 -1
- package/dist/fnode/index.CzAV0S36.js +0 -1
- package/dist/fnode/index.D2N9YZmA.js +0 -1
- package/dist/fnode/index.D3p7pncT.js +0 -1
- package/dist/fnode/index.DG8TqL-1.js +0 -1
- package/dist/fnode/index.DI3yyTtl.js +0 -1
- package/dist/fnode/index.DWpw12No.js +0 -1
- package/dist/fnode/index.DrwlOzAe.js +0 -1
- package/dist/fnode/index.N_a5FdgA.js +0 -1
- package/dist/fnode/index.Q-CYRcna.js +0 -1
- package/dist/fnode/index.UNoFg95r.js +0 -1
- package/dist/fnode/index.W6RYgypK.js +0 -1
- package/dist/fnode/index.e2SSlEgE.js +0 -1
- package/dist/fnode/index.xd8c7XMr.js +0 -1
- package/template/fnet/core/print.js +0 -1
- package/template/fnet/node/src/default/macros/workflow-header.js.njk +0 -7
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import a from"nunjucks";import s from"@flownet/lib-parse-imports-js";import o from"@flownet/lib-parse-node-url";import{B as n,c as r,a as i}from"./index.BTXKZRR5.js";import p from"lodash.merge";import c from"@fnet/npm-list-versions";import l from"@flownet/lib-render-templates-dir";import u from"@fnet/npm-pick-versions";import d from"object-hash";import f from"ajv/dist/2020.js";import m from"ajv/dist/standalone/index.js";import g from"ajv-formats";import b from"@fnet/shelljs";import{w as h}from"./index.js";import"node:crypto";import"yaml";import"chalk";import"@flownet/lib-atom-api-js";import"@fnet/config";import"@fnet/list-files";import"redis";import"@flownet/lib-is-redis-online";import"@fnet/yaml";import"yargs";import"node:util";import"tree-kill";import"node:url";import"node:child_process";import"node:os";import"@fnet/prompt";function y({feature:e,features:t,packageDevDependencies:a}){const{name:s,packages:o,options:n,extraCheck:r,explicit:i}=e,c=`${s}_enabled`,l=t.rollup_output||{},u=Object.keys(l);let d=n||{};const f=t[s]?.options;f&&(d=p(d,f));const m=!t[s]||!1===t[s]?.enabled;u.forEach((e=>{const a=t.rollup_output[e];if(a){if(Reflect.has(a,s)){if(m||!a[s]||!1===a[s]?.enabled)return void delete a[s];!0===a[s]&&(a[s]={enabled:!0,options:d})}else{if(m||i||!1===t[c])return;a[s]={enabled:!0}}a[s]=a[s]||{},a[s].options={...d,...a[s].options}}}));let g=u.some((e=>!0===t.rollup_output[e][s]?.enabled));r&&(g=r()&&g),t[c]=g,g&&o.forEach((e=>a.push({package:e[0],version:e[1]})))}function w({dir:a,name:s="index"}){let o=t.resolve(a,`./${s}.tsx`);if(e.existsSync(o)||(o=t.resolve(a,`./${s}.ts`)),e.existsSync(o)||(o=t.resolve(a,`./${s}.jsx`)),e.existsSync(o)||(o=t.resolve(a,`./${s}.js`)),!e.existsSync(o))return{};const n=o,r=t.extname(o);return{file:n,ext:r,ts:".ts"===r||".tsx"===r,name:s}}async function k(e){const{atom:a,context:o,setProgress:n}=e;n("Initializing features..."),a.doc.features=a.doc.features||{};const r=a.doc.features;r.project=r.project||{},r.project.format=r.project.format||r.project_format||"esm",r.project_format=r.project.format,r.dts_enabled=!0===r.dts||void 0!==r.dts&&!1!==r.dts;const i=t.resolve(o.project.projectDir),c=w({dir:t.resolve(i,"./app")});if(c.file){n("Parsing app entry imports...");let e=await s({file:c.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));r.app_uses_jsx=t,r.app_has_entry=!0,e=await s({file:c.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),r.app_entry_uses_jsx=t,r.app_entry_is_ts=c.ts,r.app_entry_ext=c.ext}const l=w({dir:t.resolve(i,"./cli")});if(l.file){n("Parsing cli entry imports...");let e=await s({file:l.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));r.cli_uses_jsx=t,r.cli_has_entry=!0,e=await s({file:l.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),r.cli_entry_uses_jsx=t,r.cli_entry_is_ts=l.ts,r.cli_entry_ext=l.ext}if("workflow.lib"===a.type){const e=w({dir:t.resolve(i,"./src")});if(e.file){n("Parsing src entry imports...");let t=await s({file:e.file,recursive:!0}),a=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));r.src_uses_jsx=a,r.src_has_entry=!0,t=await s({file:e.file}),a=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),r.src_entry_uses_jsx=a,r.src_entry_is_ts=e.ts,r.src_entry_ext=e.ext}}const u=Reflect.has(r,"app_entry_uses_jsx")?!0===r.app_entry_uses_jsx:!0===r.src_entry_uses_jsx,d=Reflect.has(r,"cli_entry_uses_jsx")?!0===r.cli_entry_uses_jsx:!0===r.src_entry_uses_jsx;r.form_enabled=u||d||!0===r.form||!0===r.form?.enabled,r.multiple_enabled=r.multiple_enabled||!0===r.multiple||!0===r.multiple?.enabled,!1===r.app?r.app={enabled:!1}:!0===r.app?r.app={enabled:!0,extend:!0===r.app_has_entry,export:!0,react:u}:r.app={enabled:!0,extend:!0===r.app_has_entry,export:!0,react:u,...r.app||{}},r.app.enabled=!0===r.app.enabled&&(!0===a.doc.features.form_enabled||!0===r.app.extend||!0===r.app.enabled),r.app.format=r.app.format||"esm",r.app.folder=r.app.folder||r.app.format||"default",!1===r.cli?r.cli={enabled:!1}:!0===r.cli?r.cli={enabled:!0,extend:!0===r.cli_has_entry,export:!0,react:d}:r.cli={enabled:!0,extend:!0===r.cli_has_entry,export:!0,react:d,...r.cli||{}},r.cli.enabled=!0===r.cli.enabled&&(!1===a.doc.features.form_enabled||!0===r.cli.extend||!0===r.cli.enabled),r.cli.format=r.cli.format||"esm",r.cli.folder=r.cli.folder||r.cli.folder||"esm",r.cli.node_options=r.cli.node?.options||r.cli.node_options||"",r.cli.bin=r.cli.bin||a.doc.name,r.cli.installable=!0===r.cli.installable,r.cli.enabled&&(a.doc["npm::bin"]=r.cli.bin),r.json=r.cli.enabled||r.json;const f={cjs:{format:"cjs",context:r.form_enabled?"window":"global",babel:!0===r.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==r.cjs,copy:!1},esm:{format:"esm",context:r.form_enabled?"window":"global",babel:!0===r.src_uses_jsx||!1,browser:!1,replace:!0,terser:!1,enabled:!1!==r.esm,copy:!0},iife:{format:"iife",context:r.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!0===r.iife,terser:!0,copy:!1}};!0===r.webos&&(f.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===r.electron&&(f.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===r.nextjs&&(f.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===r.ios&&(f.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===r.macos&&(f.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===r.app.enabled&&(r.app.dir=`./dist/app/${r.app.folder}`,r.app.output={file:`./dist/app/${r.app.folder}/index.js`,dir:`./dist/app/${r.app.folder}/`,...r.app.output||{}},r.app.input={file:"./src/app/index.js",dir:"./src/app/",...r.app.input||{}},f.app={format:r.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:r.app.input.file,output_dir:r.app.dir,terser:!0,output_exports:!1===r.app.export?"none":"auto",browsersync:!0}),!0===r.cli.enabled&&(r.cli.dir=`./dist/cli/${r.cli.folder}`,r.cli.output={file:`./dist/cli/${r.cli.folder}/index.js`,dir:`./dist/cli/${r.cli.folder}/`,...r.cli.output||{}},r.cli.input={file:"./src/cli/index.js",dir:"./src/cli/",...r.cli.input||{}},f.cli={format:r.cli.format,context:"global",babel:!0===r.src_uses_jsx||!0===r.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:r.cli.input.file,output_dir:r.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===r.cli.export?"none":"auto"});const m={server:".",startPath:`${t.normalize(r.app.dir||".")}`,files:[t.normalize("./dist/**/*")],cors:!0,open:!1};r.babel_options=p({targets:{browsers:"last 9 versions, not dead",node:"18"}},r.babel_options||r.babel?.options),r.browsersync_options=p(m,r.browsersync_options||r.browsersync?.options||{}),r.replace_options=p({},r.replace_options||r.replace?.options||{}),Reflect.has(r.browsersync_options,"proxy")&&delete r.browsersync_options.server,r.rollup=r.rollup||{},r.rollup_output=p(f,r.rollup_output||r.rollup?.output||{}),r.preact_enabled=!0===r.preact||r.preact&&!1!==r.preact?.enabled;let g=Object.keys(f);for(const e of g){const t=f[e];t&&(!1!==r.rollup[e]?(t.babel_options=t.babel_options||r.babel_options,t.browsersync_options=p(r.browsersync_options,t.browsersync_options),t.replace_options=p(r.replace_options,t.replace_options),r.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"),(r.form_enabled||r.babel)&&(t.babel=!0)):delete r.rollup_output[e])}g=Object.keys(r.rollup_output),r.babel_enabled=g.some((e=>!0===r.rollup_output[e].babel)),r.browser_enabled=g.some((e=>!0===r.rollup_output[e].babel)),r.browsersync_enabled=!1!==r.browsersync&&g.some((e=>!0===r.rollup_output[e].browsersync)),r.browsersync_enabled=r.browsersync_enabled&&r.app.enabled,r.dependency_auto_enabled=!1!==r.dependency_auto&&!1!==r.dependency_auto?.enabled,r.npm_install_flags=r.npm_install_flags||"",r.react_version=r.react_version||r.react?.version||18,function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features,o=s.css&&!1!==s.css.enabled;let n=[];o&&(n.push(["rollup-plugin-postcss","^4"]),n.push(["sass","^1.66"]),(s.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":n.push(["postcss-import","^15"]);break;case"postcss-url":n.push(["postcss-url","^10"]);break;case"postcss-preset-env":n.push(["postcss-preset-env","^9"]);break;case"autoprefixer":n.push(["autoprefixer","^10"]);break;case"cssnano":n.push(["cssnano","^6"])}})));y({feature:{name:"css",packages:n},features:s,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features;if("bun"===s.runtime.type)return;const o={};!0===s.app?.enabled&&(o.targets=o.targets||[],o.targets.push({src:"./src/app/index.html",dest:s.app.dir}),Reflect.has(s.app,"copy")||Reflect.has(s,"copy")||(s.copy=!0)),y({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:o},features:s,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features;"bun"!==s.runtime.type&&y({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:s,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=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:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:t.doc.features,packageDevDependencies:a})}(e)}async function v({projectDir:a,name:s,setProgress:o,count:n=1}){let r;const i=d(["npm-pick-versions",s,n]),p=t.join(a,".cache"),c=t.join(p,i+".json");return e.existsSync(c)?(o&&o(`Picking npm version of ${s} from cache ...`),r=JSON.parse(e.readFileSync(c,"utf8"))):(o&&o(`Picking npm version of ${s} ...`),r=await u({name:s,count:n}),e.mkdirSync(p,{recursive:!0}),e.writeFileSync(c,JSON.stringify(r),"utf8")),r}class _ extends n{async initRuntime(){await k(this.apiContext);"bun"===this.apiContext.context.project.runtime.type?await async function({atom:e,packageDependencies:t,packageDevDependencies:a,setProgress:s}){s("Initializing dependencies for Bun");const o=e.doc.dependencies||[];if(o.filter((e=>!e.dev)).forEach((e=>t.push(e))),o.filter((e=>e.dev)).forEach((e=>a.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 a="^18.2";s("Fetching React versions"),a=`^${(await c({name:"react",groupBy:{major:!0}})).find((t=>t[0]===e.doc.features.react_version.toString()))[0]}`,t.push({package:"react",version:a}),t.push({package:"react-dom",version:a}),"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"}),t.push({package:"yargs-parser",version:"^22.0"}),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled&&t.push({package:"@fnet/config",version:"0.2.21"}),e.doc.features.cli.mcp&&!0===e.doc.features.cli.mcp.enabled&&(t.push({package:"@modelcontextprotocol/sdk",version:"^1.10"}),t.push({package:"express",version:"^4.18"}))),e.doc.features.render&&!1!==e.doc.features.render.enabled&&a.push({package:"@flownet/lib-render-templates-dir",version:"0.1.19"})}(this.apiContext):await async function({atom:e,packageDependencies:t,packageDevDependencies:a,setProgress:s}){s("Initializing dependencies");const o=e.doc.dependencies||[];if(o.filter((e=>!e.dev)).forEach((e=>t.push(e))),o.filter((e=>e.dev)).forEach((e=>a.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 a="^18.2";s("Fetching React versions"),a=`^${(await c({name:"react",groupBy:{major:!0}})).find((t=>t[0]===e.doc.features.react_version.toString()))[0]}`,t.push({package:"react",version:a}),t.push({package:"react-dom",version:a}),"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"}),t.push({package:"yargs-parser",version:"^22.0"}),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled&&t.push({package:"@fnet/config",version:"0.2.21"}),e.doc.features.cli.mcp&&!0===e.doc.features.cli.mcp.enabled&&(t.push({package:"@modelcontextprotocol/sdk",version:"^1.10"}),t.push({package:"express",version:"^4.18"}))),e.doc.features.render&&!1!==e.doc.features.render.enabled&&a.push({package:"@flownet/lib-render-templates-dir",version:"0.1.19"}),a.push({package:"@babel/core",version:"^7"}),a.push({package:"@rollup/plugin-commonjs",version:"^28"}),a.push({package:"@rollup/plugin-node-resolve",version:"^16"}),a.push({package:"@rollup/plugin-replace",version:"^6"}),a.push({package:"rollup",version:"^4"}),e.doc.features.dts_enabled&&a.push({package:"rollup-plugin-dts",version:"^6"}),a.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),a.push({package:"@rollup/plugin-alias",version:"^5"}),a.push({package:"fs-extra",version:"^11"}),e.doc.features.babel_enabled&&(a.push({package:"@rollup/plugin-babel",version:"^6"}),a.push({package:"@babel/preset-env",version:"^7"}),a.push({package:"@babel/preset-react",version:"^7"}),e.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":a.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":a.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":a.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":a.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":a.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),a.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),e.doc.features.browsersync_enabled&&a.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})}(this.apiContext),await this.initLibraryDir(),await this.initNunjucks(),await this.initLibs()}async initLibs(){this.setProgress({message:"Initializing external libs."});const e=[{name:this.atom.doc.name,type:"atom",parent_id:this.atom.parent_id}];this.libs=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.apiContext.packageDependencies})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const a=e.filter((e=>"atom"===e.type));for(let e=0;e<a.length;e++){const s=a[e],o=await this.findAtomLibrary({url:s.name});s.atom=o;const n=o.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));n?.forEach((e=>{const a=t.find((t=>t.package===e.package));a?"string"==typeof e.path?(a.path||[]).some((t=>t===e.path))||(a.path=a.path||[],a.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(a.path||[]).some((t=>t===e))||(a.path=a.path||[],a.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const a=o({url:e});if(!a)throw new Error(`Invalid package name: ${e}`);if(a.protocol||(a.protocol=this.context.protocol),"ac:"===a.protocol){const t=a.pathname.split("/");if(1===t.length)return await this.apiContext.Atom.first({where:{name:e,parent_id:this.atomConfig.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await this.apiContext.Atom.first({where:{name:t[0],parent_id:this.atomConfig.env.ATOM_LIBRARIES_ID,type:"folder"}});return await this.apiContext.Atom.first({where:{name:t[1],parent_id:e.id,type:"workflow.lib"}})}}else if("local:"===a.protocol){const e=this.atom;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const a=t.resolve(this.context.projectSrcDir,"index.js"),o=await s({file:a,recursive:!0}),n=e.doc.dependencies,r=o.all;for await(const e of r){if("npm"!==e.type)continue;if(n.find((t=>t.package===e.package)))continue;const t=await v({name:e.package,projectDir:this.context.projectDir,setProgress:this.apiContext.setProgress});n.push({package:e.package,subpath:e.subpath,version:t.minorRange,type:"npm"})}return e}}async createAtomLibFiles({libs:a}){await this.setProgress({message:"Creating external lib files."}),this.atom.typesDir="./types";const s=a.filter((e=>"atom"===e.type));for(let a=0;a<s.length;a++){const o=s[a].atom,n=this.context.projectDir;if("local:"===o.protocol){const a=t.resolve(this.context.projectSrcDir,`${o.fileName||o.name}.js`),s=t.relative(t.join(this.context.projectDir,"src","default"),a);if(!e.existsSync(a)){e.mkdirSync(t.dirname(a),{recursive:!0});let s="export default async (input)=>{\n";s+="}",e.writeFileSync(a,s,"utf8")}o.relativePath=s.split(t.sep).join("/"),this.atom.typesDir=`./types/${t.basename(n)}/src`}else{const a=t.join(n,"src","libs",`${o.id}.js`),s=o.doc.contents?.find((e=>"esm"===e.format))||o.doc;e.writeFileSync(a,s.content,"utf8")}}}async createEngine(){await this.setProgress({message:"Creating engine file."});const s={libs:this.libs.filter((e=>"atom"===e.type)),libraryAtom:this.atom,atom:this.atom},o=this.context.templateDir,n=a.compile(e.readFileSync(t.resolve(o,t.join("src","default","engine.js.njk")),"utf8"),this.apiContext.njEnv).render(s),r=this.context.projectDir,i=t.resolve(r,t.join("src","default","index.js"));e.writeFileSync(i,n,"utf8")}async build(){try{if(this.fileMode){const o=this.apiContext.context.project;await this.createAtomLibFiles({libs:this.libs}),await this.createEngine(),await this.createProjectYaml(),await r(this.apiContext),await async function({atom:s,setProgress:o,context:n,packageDependencies:r}){await o({message:"Creating tsconfig.json."});const i={atom:s,packageDependencies:r},p=n.templateDir,c=a.compile(e.readFileSync(t.resolve(p,"tsconfig.json.njk"),"utf8"),a.configure(p)).render(i),l=n.projectDir,u=t.resolve(l,"tsconfig.json");e.writeFileSync(u,c,"utf8")}(this.apiContext),await i(this.apiContext),await async function({atom:s,setProgress:o,context:n,njEnv:r}){if(!0!==s.doc.features.cli.enabled)return;await o({message:"Creating input args."});let i={};if(i=s.doc.input?s.doc.input:{type:"object",properties:{},required:[]},s.doc.features.cli.fargs&&!1!==s.doc.features.cli.fargs?.enabled){const e=s.doc.features.cli.fargs;Reflect.has(e,"default")&&e.default}const p={imports:[],atom:s},c=n.templateDir,l=a.compile(e.readFileSync(t.resolve(c,"src/default/input.args.js.njk"),"utf8"),r).render(p),u=n.projectDir,d=t.resolve(u,"src/default/input.args.js");e.writeFileSync(d,l,"utf8");const b=new f({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});g(b);const h=b.compile(i),y=m(b,h)+"\nexport { schema31 as schema };";e.writeFileSync(t.resolve(u,"src/default/validate_input.js"),y,"utf8")}(this.apiContext),await async function({atom:a,setProgress:s,context:o,packageDependencies:n}){if(!0!==a.doc.features.cli.enabled)return;await s({message:"Creating cli."});const r={atom:a,packageDependencies:n},i=o.templateDir,p=t.resolve(o.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await l({pattern:["index.js.njk"],dir:t.resolve(i,"src/cli"),outDir:p,context:r})}(this.apiContext),await async function({atom:a,setProgress:s,context:o,packageDependencies:n}){if(!0!==a.doc.features.app.enabled)return;await s({message:"Creating app folder"});const r={atom:a,packageDependencies:n,ts:Date.now()},i=o.templateDir,p=t.resolve(o.projectDir,"src/app");e.existsSync(p)||e.mkdirSync(p,{recursive:!0});let c=["index.js.njk"];!1!==a.doc.features.app.html&&c.push("index.html.njk"),await l({pattern:c,dir:t.resolve(i,"src/app"),outDir:p,context:r})}(this.apiContext),"bun"===o.runtime.type?await async function({atom:s,setProgress:o,context:n,packageDependencies:r}){await o({message:"Creating build.js file."});const i={atom:s,packageDependencies:r},p=n.templateDir,c=a.compile(e.readFileSync(t.resolve(p,"build.js.njk"),"utf8"),a.configure(p)).render(i),l=n.projectDir,u=t.resolve(l,"build.js");e.writeFileSync(u,c,"utf8"),e.chmodSync(u,"755")}(this.apiContext):await async function({atom:o,setProgress:n,context:r,packageDependencies:i}){await n({message:"Creating rollup file."});const p={atom:o,packageDependencies:i},c=t.resolve(r.projectDir,"src","default/index.js");if(!e.existsSync(c))throw new Error(`Entry file not found: ${c}`);const l=(await s({file:c,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),u=o.doc.features.rollup_output,d=Object.keys(u);for(let e=0;e<d.length;e++){const t=u[d[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 a=l[e];t.alias.entries[a]=`node:${a}`,t.alias.entries[`node:${a}`]=a}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(l)}}const f=r.templateDir;let m=a.compile(e.readFileSync(t.resolve(f,"rollup.config.mjs.njk"),"utf8"),a.configure(f)).render(p);const g=r.projectDir;let b=t.resolve(g,"rollup.config.mjs");e.writeFileSync(b,m,"utf8")}(this.apiContext),await async function({atom:o,context:n,packageDependencies:r,packageDevDependencies:i,setProgress:p}){await p({message:"Creating package.json."}),r.filter((e=>!0===e.dev)).forEach((e=>{i.find((t=>t.package===e.package))||i.push(e);const t=r.findIndex((t=>t.package===e.package));r.splice(t,1)}));const c=r.find((e=>"react"===e.package)),l=r.find((e=>"react-dom"===e.package));c&&!l?r.push({package:"react-dom",version:c.version}):c&&l&&(l.version=c.version),c&&o.doc.features.react_version>=17&&(r.find((e=>"@emotion/react"===e.package))||r.push({package:"@emotion/react",version:"^11"}),r.find((e=>"@emotion/styled"===e.package))||r.push({package:"@emotion/styled",version:"^11"}));const u=[];!0===o.doc.features.app.enabled&&u.push({file:t.resolve(n.projectDir,"src/app/index.js"),dev:!1!==o.doc.features.app.dev}),!0===o.doc.features.cli.enabled&&u.push({file:t.resolve(n.projectDir,"src/cli/index.js"),dev:!1!==o.doc.features.cli.dev});for await(const t of u){const a=t.file;if(!e.existsSync(a))throw new Error(`App file not found: ${a}`);const o=(await s({file:a,recursive:!0,verbose:!1})).all;for await(const e of o){if("npm"!==e.type)continue;if(r.find((t=>t.package===e.package)))continue;if(i.find((t=>t.package===e.package)))continue;const a=await v({name:e.package,projectDir:n.projectDir,setProgress:p});(!0===t.dev?i:r).push({package:e.package,subpath:e.subpath,version:a.minorRange,type:"npm"})}}const d={atom:o,packageDependencies:r,packageDevDependencies:i},f=n.templateDir,m=a.compile(e.readFileSync(t.resolve(f,"package.json.njk"),"utf8"),a.configure(f)).render(d),g=n.projectDir,b=t.resolve(g,"package.json");e.writeFileSync(b,m,"utf8");const h=t.resolve(n.project.projectDir,"fnet");if(e.existsSync(h)){const a=t.resolve(n.projectDir,"fnet");e.existsSync(a)||e.mkdirSync(a);const s=e.readdirSync(h);for(const o of s){const s=t.resolve(h,o);if(!e.lstatSync(s).isFile())continue;const n=t.resolve(a,o);e.copyFileSync(s,n)}}}(this.apiContext),await async function({setProgress:e,context:a}){const s=a.projectDir;await e({message:"Prettifiying source files."});let o=t.join("src","**","*");if(h("bun")){const e=await b(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:s});if(0!==e.code)throw new Error(e.stderr)}else{const e=await b(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:s});if(0!==e.code)throw new Error(e.stderr)}}(this.apiContext),await async function({atom:e,setProgress:t,context:a}){if(!e.doc.features.dts_enabled)return;const s=a.projectDir;if(await t({message:"Creating .d.ts"}),0!==(await b("tsc",{cwd:s})).code)throw new Error("Couldnt create .d.ts files.")}(this.apiContext),this.buildMode&&(await async function({setProgress:e,atom:t,context:a}){const s=a.projectDir;if(await e({message:"Installing npm packages."}),h("bun")){if(0!==(await b(`bun install ${t.doc.features.npm_install_flags}`,{cwd:s})).code)throw new Error("Couldnt install npm packages.")}else if(0!==(await b(`npm install ${t.doc.features.npm_install_flags}`,{cwd:s})).code)throw new Error("Couldnt install npm packages.")}(this.apiContext),await async function({setProgress:e,context:t}){const a=t.projectDir;if(await e({message:"Building main project."}),h("bun")){if(0!==(await b(t.dev?"bun run build:dev":"bun run build",{cwd:a})).code)throw new Error("Couldnt build project.")}else if(0!==(await b(t.dev?"npm run build:dev":"npm run build",{cwd:a})).code)throw new Error("Couldnt build project.")}(this.apiContext),this.deployMode&&await this.deploy())}await this._cache_set(this.buildKey,{status:"COMPLETED"})}catch(e){throw await this._cache_set(this.buildKey,{status:"FAILED",message:e.message||e}),console.log(e),e}}}export{_ as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import r from"semver";import e from"@fnet/config";import o from"node:fs";import t from"@fnet/shelljs";import n from"form-data";async function i({setProgress:i,context:s,deploymentProject:a,deploymentProjectTarget:f,yamlTarget:c}){await i({message:"Deploying it as fnet flow."});const{file:p,data:w}=await e({name:f.config||"fnet-flow",dir:s.project.projectDir,tags:s.tags});if(!w.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${p}`);if(!w.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${p}`);if(!w.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${p}`);const d=`${w.env.ATOM_API_URL}/v1/auth/token`,m=w.env.ATOM_API_USERNAME,l=w.env.ATOM_API_PASSWORD,A=await fetch(d,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:m,password:l})});if(!A.ok)throw new Error(`Failed to fetch token: ${A.statusText}`);const h=await A.json(),_=h?.access_token;if(!_)throw new Error(`Invalid access_token from ${d}`);a.isDirty=!0;const u=r.inc(f.version,"patch");f.params.version=u,f.version=u,c.set("version",u);const v=`${w.env.ATOM_API_URL}/v1/service/fnet-flow/publish`,T=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${_}`},body:JSON.stringify({name:f.params.name,version:f.params.version,docs:f.params.docs,configs:f.params.configs})});if(!T.ok)throw new Error(`Error publishing fnet flow: ${T.statusText}`);const E=await T.json();if(E?.error)throw new Error("Error publishing fnet flow.");const O=E?.upload.id;let P="fnet-dir-zipper";P+=` --sourceDir='${s.project.projectDir}'`,P+=" --pattern=**/*",P+=" --stdout_format=json";const g=await t(P);if(0!==g.code)throw new Error(g.stderr);const S=JSON.parse(g.stdout).path;let M=new n;M.append("file",o.createReadStream(S));const $=await fetch(`${w.env.ATOM_API_URL}/v1/service/upload/single/${O}`,{method:"POST",headers:{...M.getHeaders(),Authorization:`Bearer ${_}`},body:M});if(!$.ok)throw new Error(`Error uploading fnet flow: ${$.statusText}`);const j=await $.json();if(j?.error)throw new Error("Error uploading fnet flow.")}export{i as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"semver";import r from"@fnet/config";import o from"node:fs";import t from"@fnet/shelljs";import n from"form-data";async function i({setProgress:i,context:s,deploymentProject:a,deploymentProjectTarget:d,yamlTarget:c}){await i({message:"Deploying it as fnet node."});const{file:f,data:p}=await r({name:d.config||"fnet-node",dir:s.project.projectDir,tags:s.tags});if(!p.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${f}`);if(!p.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${f}`);if(!p.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${f}`);const m=`${p.env.ATOM_API_URL}/v1/auth/token`,w=p.env.ATOM_API_USERNAME,A=p.env.ATOM_API_PASSWORD,h=await fetch(m,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:w,password:A})});if(!h.ok)throw new Error(`Failed to fetch token: ${h.statusText}`);const _=await h.json(),l=_?.access_token;if(!l)throw new Error(`Invalid access_token from ${m}`);a.isDirty=!0;const u=e.inc(d.version,"patch");d.params.version=u,d.version=u,c.set("version",u);const v=`${p.env.ATOM_API_URL}/v1/service/fnet-node/publish`,T=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${l}`},body:JSON.stringify({name:d.params.name,version:d.params.version,docs:d.params.docs,configs:d.params.configs})});if(!T.ok)throw new Error(`Error publishing fnet node: ${T.statusText}`);const E=await T.json();if(E?.error)throw new Error("Error publishing fnet node.");const O=E?.upload.id;let P="fnet-dir-zipper";P+=` --sourceDir='${s.project.projectDir}'`,P+=" --pattern=**/*",P+=" --stdout_format=json";const g=await t(P);if(0!==g.code)throw new Error(g.stderr);const S=JSON.parse(g.stdout).path;let M=new n;M.append("file",o.createReadStream(S));const $=await fetch(`${p.env.ATOM_API_URL}/v1/service/upload/single/${O}`,{method:"POST",headers:{...M.getHeaders(),Authorization:`Bearer ${l}`},body:M});if(!$.ok)throw new Error(`Error uploading fnet node: ${$.statusText}`);const j=await $.json();if(j?.error)throw new Error("Error uploading fnet node.")}export{i as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@fnet/to-pyip";import t from"lodash.clonedeep";import a from"semver";async function n({atom:n,target:r,onProgress:i,projectDir:s,dependencies:p,context:c,yamlTarget:m}){i&&await i({message:"Deploying it as pypi package."});const f=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:c.tags}):void 0,g=a.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,m.set("version",g);const d=t(r.params);d.dependencies=t(p);const l={atom:n,params:d,config:f?.config,src:s,dest:s};return{deployer:await o(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@flownet/lib-to-nextjs";import t from"lodash.clonedeep";import n from"semver";async function a({atom:a,target:r,onProgress:s,projectDir:i,dependencies:c,context:m,yamlTarget:p}){s&&await s({message:"Deploying it as nextjs package."});const f=r?.config?await e({name:r.config,dir:i,optional:!0,transferEnv:!1,tags:m.tags}):void 0,g=n.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,p.set("version",g);const d=t(r.params);d.dependencies=t(c);const l={atom:a,params:d,config:f?.config,src:i,dest:i};return{deployer:await o(l)}}export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@flownet/lib-to-webos";import t from"lodash.clonedeep";import a from"semver";async function n({atom:n,target:r,onProgress:s,projectDir:i,dependencies:c,context:m,yamlTarget:p}){s&&await s({message:"Deploying it as webos package."});const f=r?.config?await e({name:r.config,dir:i,optional:!0,transferEnv:!1,tags:m.tags}):void 0,g=a.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,p.set("version",g);const d=t(r.params);d.dependencies=t(c);const l={atom:n,params:d,config:f?.config,src:i,dest:i};return{deployer:await o(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import a from"node:os";import d from"nunjucks";import o from"@node-red/util";import i from"@fnet/config";async function n({atom:n,setProgress:l,context:r,deploymentProject:p,deploymentProjectTarget:s,buildId:c,packageDependencies:m,njEnv:f}){await l({message:"Deploying it as node-red flow."});const y=r.projectDir,u=r.templateDir,g="workflow"===n.type?"WF":"LIB";let h;if("simple"===s.deploy.template)h={atom:n,packageDependencies:m,red:{tab:{id:s.deploy.id||o.util.generateId(),label:`${g}/${n.id?n.id:a.hostname()}/${n.name}/${s.deploy.name||s.deploy.template}`},function:{id:o.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(y,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},inject:{id:o.util.generateId(),...s.params?.inject,payload:"json"===s.params?.inject?.payloadType?`'${JSON.stringify(s.params?.inject?.payload)}'`:s.params?.inject?.payload},debug:{id:o.util.generateId()}}};else if("cronjob"===s.deploy.template){let d=s.params?.schedules?cloneDeep(s.params?.schedules):void 0;d?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),h={atom:n,packageDependencies:m,red:{tab:{id:s.deploy.id||o.util.generateId(),label:`${g}/${n.id?n.id:a.hostname()}/${s.deploy.name||s.deploy.template}`},function:{id:o.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(y,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},cronjob:{id:o.util.generateId(),schedules:d},debug:{id:o.util.generateId()}}}}else{if("http"!==s.deploy.template)return;h={atom:n,packageDependencies:m,red:{tab:{id:s.deploy.id||o.util.generateId(),label:`${g}/${n.id?n.id:a.hostname()}/${s.deploy.name||s.deploy.template}`},function:{id:o.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(y,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},httpin:{id:o.util.generateId(),method:s.params.method||"get",url:s.params.url},httpout:{id:o.util.generateId()},debug:{id:o.util.generateId()}}}}let j=d.compile(e.readFileSync(t.resolve(u,`deploy/node-red/${s.deploy.template}.yaml.njk`),"utf8"),f).render(h);if(e.writeFileSync(t.resolve(y,"node-red.yaml"),j),j=yaml.load(j),!0===s.dryRun)return;p.isDirty=!0;const w=(await i({name:r.redConfig||"red",dir:r.projectDir,tags:r.tags}))?.data,$=s.deploy.url||w.env.RED_URL,b={};if(!1!==s.deploy.auth&&(b.Authorization="Bearer "+atomAccessToken),s.deploy.id)if(!0===s.actions?.delete){const e=await fetch(`${$}/flow/${s.deploy.id}`,{method:"DELETE",headers:b});if(!e.ok)throw new Error(`Failed to delete flow: ${e.statusText}`);delete s.actions.delete,delete s.deploy.id,s.enabled=!1}else{const e=await fetch(`${$}/flow/${s.deploy.id}`,{method:"PUT",headers:{...b,"Content-Type":"application/json"},body:JSON.stringify(j)});if(!e.ok)throw new Error(`Failed to update flow: ${e.statusText}`)}else{const e=await fetch(`${$}/flow`,{method:"POST",headers:{...b,"Content-Type":"application/json"},body:JSON.stringify(j)});if(!e.ok)throw new Error(`Failed to create flow: ${e.statusText}`);const t=await e.json();s.deploy.id=t.id}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
async function r(r){return{projectDir:process.cwd(),tags:r.ftag}}export{r as createContext};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@fnet/to-rust";import t from"lodash.clonedeep";import a from"semver";async function n({atom:n,target:r,onProgress:s,projectDir:i,dependencies:c,context:m,yamlTarget:p}){s&&await s({message:"Deploying it as Rust package."});const f=r?.config?await e({name:r.config,dir:i,optional:!0,transferEnv:!1,tags:m.tags}):void 0,g=a.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,p.set("version",g);const d=t(r.params);d.dependencies=t(c);const l={atom:n,params:d,config:f?.config,src:i,dest:i};return{deployer:await o(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@flownet/lib-to-docker";import t from"lodash.clonedeep";import r from"semver";async function a({atom:a,target:n,onProgress:i,projectDir:s,dependencies:c,context:m,yamlTarget:p}){i&&await i({message:"Deploying it as docker package."});const f=n?.config?await e({name:n.config,dir:s,optional:!0,transferEnv:!1,tags:m.tags}):void 0,d=r.inc(n.version||"0.1.0","patch");n.params.version=d,n.version=d,p.set("version",d);const g=t(n.params);g.dependencies=t(c);const l={atom:a,params:g,config:f?.config,src:s,dest:s};return{deployer:await o(l)}}export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import r from"semver";import n from"@fnet/shelljs";import o from"@fnet/config";async function a({setProgress:a,context:i,deploymentProject:s,deploymentProjectTarget:c,yamlTarget:p}){await a({message:"Deploying it as fnet package."});const d=i.projectDir,m=t.resolve(d,"package.json"),f=e.readFileSync(m),l=JSON.parse(f);l.name=c.params.name,l.version=r.inc(c.version,"patch"),delete l.scripts,delete l.devDependencies,e.writeFileSync(m,JSON.stringify(l,null,"\t"));const{file:A,data:_}=await o({name:c.config||"fnet-package",dir:i.projectDir,tags:i.tags});if(!_.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${A}`);if(!_.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${A}`);if(!_.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${A}`);const v=`${_.env.ATOM_API_URL}/v1/auth/token`,h=_.env.ATOM_API_USERNAME,w=_.env.ATOM_API_PASSWORD,O=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:h,password:w})});if(!O.ok)throw new Error(`Failed to fetch token: ${O.statusText}`);const g=await O.json(),u=g?.access_token;if(!u)throw new Error(`Invalid access_token from ${v}`);let y="fnet-files-to-gcs";if(y+=` --projectId='${_.env.GCS_PROJECT_ID}'`,y+=` --bucketName='${_.env.GCS_BUCKET_NAME}'`,y+=` --keyFilename='${t.resolve(t.dirname(A),_.env.GCS_UPLOADER_KEY_FILE)}'`,y+=` --dir='${d}'`,y+=" --pattern='dist/**/**'",y+=" --pattern='bin/**/**'",y+=" --pattern='test/**/**'",y+=" --pattern='*.html'",y+=` --destDir='${l.name}/${l.version}'`,y+=" --metadata.cacheControl='public, max-age=31536000, immutable'",_.env.DOMAIN&&(y+=` --domain='${_.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(y+=" --dryRun"),await n(y),e.writeFileSync(m,f),!0===c.dryRun)return;s.isDirty=!0,c.version=l.version,p.set("version",l.version);const S=`${_.env.ATOM_API_URL}/v1/service/fnet-package/publish`,P=await fetch(S,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${u}`},body:JSON.stringify({name:l.name,version:l.version,version_domain:_.env.DOMAIN,docs:c.params.docs,configs:c.params.configs})});if(!P.ok)throw new Error(`Failed to publish fnet package: ${P.statusText}`);const T=await P.json();if(T?.error)throw new Error("Failed to publish fnet package.")}export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import o from"@fnet/config";async function n({atom:n,Atom:i,setProgress:r,context:a,packageDependencies:d,deploymentProject:c,deploymentProjectTarget:l}){await r({message:"Deploying it as workflow lib."});const s=(await o({name:"atom",dir:a.projectDir,tags:a.tags}))?.data;let f,p,y,m=l.deploy.name.split("/");if(1===m.length)p=s.env.ATOM_LIBRARIES_ID,y=l.deploy.name;else{if(2!==m.length)throw new Error("Wrong name path.");{const e=await i.first({where:{name:m[0],parent_id:s.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");p=e.id,y=m[1]}}if(!0===l.dryRun)return;if(c.isDirty=!0,l.deploy.id){if(f=await i.get({id:l.deploy.id}),!f)return}else{if(f=await i.create({parent_id:p,doc:{name:y,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!f)return;l.deploy.id=f.id}const w=a.projectDir;f.doc.contents=[{content:e.readFileSync(t.resolve(w,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(t.resolve(w,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(t.resolve(w,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],f.doc.name=y,f.doc.dependencies=d,"workflow.lib"===n.type?f.doc.subtype="library":"workflow"===n.type&&(f.doc.subtype="workflow"),f=await i.update(f,{id:f.id})}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import t from"@fnet/shelljs";import a from"@fnet/config";async function e({setProgress:e,context:o,deploymentProject:r,deploymentProjectTarget:i,buildId:n}){await e({message:"Deploying it as gitlab project."});const s=o.projectDir;let l="fnet-to-gitlab";const c=i.params.config||"gitlab",g=await a({name:c,dir:o.projectDir,tags:o.tags});if(!g)throw new Error(`Couldnt load config ${c}`);const{data:p}=g.data;l+=` --projectGroupId=${p.projectGroupId}`,l+=` --projectPath='${s}'`,l+=` --projectName='${i.params.name}'`,l+=` --projectBranch='${i.params.branch||"main"}'`,l+=` --gitlabHost='${p.gitlabHost}'`,l+=` --gitlabToken='${p.gitlabToken}'`,l+=` --gitlabUsername='${p.gitlabUsername}'`,l+=` --gitlabUserEmail='${p.gitlabUserEmail}'`,!0!==i.dryRun&&(await t(l),r.isDirty=!0)}export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import r from"node:path";import{fileURLToPath as n}from"node:url";import e from"node:os";import i from"node:fs";async function t(n){const t=function(){const n=e.homedir(),t=r.join(n,".fnet","bin");return i.existsSync(t)||i.mkdirSync(t,{recursive:!0}),t}(),o=function(){const n=e.homedir(),t=r.join(n,".fnet");return i.existsSync(t)||i.mkdirSync(t,{recursive:!0}),r.join(t,"bin-registry.json")}();let s={};if(i.existsSync(o))try{const r=i.readFileSync(o,"utf8");s=JSON.parse(r)}catch(r){console.warn(`Warning: Could not parse bin registry: ${r.message}`)}return{binDir:t,registryPath:o,registry:s,args:n}}r.dirname(n(import.meta.url));export{t as createContext};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"fs";import r from"path";import n from"@fnet/yaml";import t from"@fnet/shell-flow";async function o({projectType:e,group:r,tags:o,args:f,argv:i}){try{const m=await a(e),{parsed:s}=await n({file:m.path,tags:o}),c=s.commands;if(!c)throw new Error(`Commands section not found in ${m.name}`);const y=c[r];if(!y)throw new Error(`Command group '${r}' not found in ${m.name}`);await t({commands:y,context:{args:f,argv:i,projectType:m.type}})}catch(e){console.error(`Error: ${e.message}`),process.exit(1)}}async function a(n){const t=process.cwd(),o=r.resolve(t,"fnode.yaml"),a=r.resolve(t,"fnet.yaml");if("fnode"===n){if(e.existsSync(o))return{path:o,name:"fnode.yaml",type:"fnode"};throw new Error("fnode.yaml file not found in current directory")}if("fnet"===n){if(e.existsSync(a))return{path:a,name:"fnet.yaml",type:"fnet"};throw new Error("fnet.yaml file not found in current directory")}if(e.existsSync(o))return{path:o,name:"fnode.yaml",type:"fnode"};if(e.existsSync(a))return{path:a,name:"fnet.yaml",type:"fnet"};throw new Error("No project file (fnode.yaml or fnet.yaml) found in current directory")}export{a as detectProjectFile,o as runCommandGroup};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import r from"node:path";import t from"semver";import i from"@fnet/shelljs";import o from"@fnet/config";import n from"@fnet/object-from-schema";import s from"yaml";import{r as a,w as m}from"./index.js";import{fileURLToPath as p}from"node:url";import"yargs";import"chalk";import"node:util";import"tree-kill";import"node:child_process";import"node:os";import"@flownet/lib-render-templates-dir";import"@fnet/yaml";import"@fnet/prompt";async function c({atom:p,setProgress:c,context:l,deploymentProject:d,deploymentProjectTarget:f,yamlTarget:y}){await c({message:"Deploying it as npm package."});const g=l.projectDir,u=r.resolve(g,"package.json"),w=e.readFileSync(u),b=JSON.parse(w);b.name=f.params.name,b.version=t.inc(f.version,"patch");const h=f.params.bin?.name||f.params.bin;!1!==f.params.bin?.enabled&&h&&"string"==typeof h&&(b.bin={[h]:"dist/cli/esm/index.js"}),delete b.scripts,delete b.devDependencies,b.scripts={serve:"npx serve ."},e.writeFileSync(u,JSON.stringify(b,null,"\t"));const v=f.config||"npm";let j=(await o({name:v,dir:l.projectDir,tags:l.tags,optional:!0}))?.data;if(!j){const t=a("./template/schemas/to-npm.yaml"),i=await n({schema:t,tags:l.tags}),o=l.project.projectDir,m=r.resolve(o,".fnet");e.existsSync(m)||e.mkdirSync(m),e.writeFileSync(r.resolve(m,`${v}.fnet`),s.stringify(i)),j=i}if(e.writeFileSync(r.resolve(g,".npmrc"),`//registry.npmjs.org/:_authToken=${j.env.NPM_TOKEN}`),!0!==f.dryRun){if(m("bun")){if(0!==(await i("bun publish --access public",{cwd:g})).code)throw new Error("Couldnt publish to npm")}else{if(0!==(await i("npm publish --access public",{cwd:g})).code)throw new Error("Couldnt publish to npm")}e.writeFileSync(u,w),d.isDirty=!0,f.version=b.version,y.set("version",b.version)}}r.dirname(p(import.meta.url)),process.cwd();export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import r from"semver";import e from"@fnet/config";async function o({setProgress:o,context:t,deploymentProject:n,deploymentProjectTarget:i,yamlTarget:s}){await o({message:"Deploying it as fnet form."});const{file:a,data:f}=await e({name:i.config||"fnet-form",dir:t.projectDir,tags:t.tags});if(!f.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${a}`);if(!f.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${a}`);if(!f.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${a}`);const c=`${f.env.ATOM_API_URL}/v1/auth/token`,A=f.env.ATOM_API_USERNAME,m=f.env.ATOM_API_PASSWORD,p=await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:A,password:m})});if(!p.ok)throw new Error(`Failed to fetch token: ${p.statusText}`);const _=await p.json(),w=_?.access_token;if(!w)throw new Error(`Invalid access_token from ${c}`);n.isDirty=!0;const h=r.inc(i.version,"patch");i.params.version=h,i.version=h,s.set("version",h);const d=`${f.env.ATOM_API_URL}/v1/service/fnet-form/publish`,v=await fetch(d,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${w}`},body:JSON.stringify({name:i.params.name,version:i.params.version,docs:i.params.docs,configs:i.params.configs})});if(!v.ok)throw new Error(`Error publishing fnet form: ${v.statusText}`);const P=await v.json();if(P?.error)throw new Error("Error publishing fnet form.")}export{o as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:path";import t from"node:fs";import o from"@fnet/yaml";import r from"yaml";import{r as i}from"./index.js";import"yargs";import"chalk";import"node:util";import"tree-kill";import"node:url";import"node:child_process";import"@fnet/config";import"node:os";import"@flownet/lib-render-templates-dir";import"@fnet/shelljs";import"@fnet/prompt";async function n(n){if(n.id)return{id:n.id,buildId:n.buildId,mode:n.mode,protocol:n.protocol||"ac:",templateDir:i("./template/fnet/node"),coreDir:i("./template/fnet/core"),projectDir:e.resolve(process.cwd(),`./.output/${n.id}`),tags:n.ftag,dev:n.dev};try{const s=await async function({tags:i}){let n=(s=process.cwd(),e.resolve(s,"fnet.yaml"));var s;if(!t.existsSync(n))throw new Error("fnet.yaml file not found in current directory.");const{raw:a,parsed:l}=await o({file:n,tags:i}),c=e.dirname(n);l.features=l.features||{};const p=l.features;let m;if(p.runtime=p.runtime||{},p.runtime.type=p.runtime.type||"node","object"==typeof l.flows)m=l.flows;else{let r="flow.main.yaml";t.existsSync(e.join(c,"fnet","flows.yaml"))&&(r=e.join("fnet","flows.yaml"));const n=l.main||r;let s=e.resolve(c,n);if(t.existsSync(s)){const{parsed:e}=await o({file:s,tags:i});m=e}else m={main:{steps:[]}}}const d={workflowAtom:{doc:{...l,content:m}},projectDir:c,projectFilePath:n,projectFileContent:a,projectFileParsed:l,runtime:p.runtime};let f=e.resolve(c,"fnet/targets.yaml");if(t.existsSync(f)){const{raw:e,parsed:n}=await o({file:f,tags:i}),s=r.parseDocument(e);d.devops={filePath:f,fileContent:e,yamlDocument:s,doc:{...n},type:"workflow.deploy",save:async()=>{t.writeFileSync(d.devops.filePath,s.toString())}}}const u=e.resolve(c,"readme.md");if(t.existsSync(u)){const e=t.readFileSync(u,"utf8");d.readme={filePath:u,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return d}({tags:n.ftag});return{buildId:n.buildId,mode:n.mode,protocol:n.protocol||"local:",templateDir:i("./template/fnet/node"),coreDir:i("./template/fnet/core"),projectDir:e.resolve(s.projectDir,"./.workspace"),projectSrcDir:e.resolve(s.projectDir,"./src"),project:s,tags:n.ftag,dev:n.dev}}catch(e){return console.warn(`Warning: Could not load project: ${e.message}`),{projectDir:process.cwd(),tags:n.ftag}}}export{n as createContext};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import o from"@fnet/config";import e from"@flownet/lib-to-macos-app";import a from"lodash.clonedeep";import t from"semver";async function n({atom:n,target:r,onProgress:s,projectDir:i,dependencies:c,context:p,yamlTarget:m}){s&&await s({message:"Deploying it as macos-app package."});const f=r?.config?await o({name:r.config,dir:i,optional:!0,transferEnv:!1,tags:p.tags}):void 0,g=t.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,m.set("version",g);const d=a(r.params);d.dependencies=a(c);const l={atom:n,params:d,config:f?.config,src:i,dest:i};return{deployer:await e(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import i from"node:os";import a from"@fnet/list-files";import{B as s,c as n,a as r}from"./index.BTXKZRR5.js";import o from"@flownet/lib-render-templates-dir";import c from"@fnet/auto-conda-env";import"node:crypto";import"yaml";import"nunjucks";import"chalk";import"@flownet/lib-atom-api-js";import"@fnet/config";import"redis";import"@flownet/lib-is-redis-online";import"@fnet/yaml";class p extends s{async initRuntime(){await async function(e){const{atom:t,context:i,setProgress:a}=e;a("Initializing features..."),t.doc.features=t.doc.features||{};const s=t.doc.features;!1===s.cli?s.cli={enabled:!1}:(s.cli,s.cli={enabled:!0}),s.cli.enabled=!0===s.cli.enabled&&(!1===t.doc.features.form_enabled||!0===s.cli.extend||!0===s.cli.enabled)}(this.apiContext),await async function({atom:e,packageDependencies:t,packageDevDependencies:i,setProgress:a}){a("Initializing dependencies")}(this.apiContext),await this.initLibraryDirPython(),await this.initNunjucks(),await this.initLibsPython()}async initLibraryDirPython(){this.setProgress({message:"Initializing library directory."});const s=this.context.projectDir;this.setProgress({message:"Cleaning project directory."});const n=a({dir:s,ignore:[".cache","node_modules",".conda",".bin"],absolute:!0});for(const t of n)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."});let r=s;e.existsSync(r)||e.mkdirSync(r,{recursive:!0}),r=t.join(s,"src"),e.existsSync(r)||e.mkdirSync(r,{recursive:!0}),r=t.join(s,"src","default");const o=this.context.projectSrcDir;if(!e.existsSync(r))try{"win32"===i.platform()?e.symlinkSync(o,r,"junction"):e.symlinkSync(o,r,"dir")}catch(e){throw new Error(`Couldn't create symlink. Error: ${e.message}`)}}async initLibsPython(){this.setProgress({message:"Initializing external libs."});const e=this.atom;e.protocol="local:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=[{name:this.atom.doc.name,type:"atom",parent_id:this.atom.parent_id,atom:e}];this.libs=t}async createAtomLibFilesPython({libs:i}){await this.setProgress({message:"Creating external lib files."});const a=i.filter((e=>"atom"===e.type));for(let i=0;i<a.length;i++){const s=a[i].atom;if("local:"===s.protocol){const i=t.resolve(this.context.projectSrcDir,`${s.fileName||s.name}.py`);if(!e.existsSync(i)){e.mkdirSync(t.dirname(i),{recursive:!0});let a="def default():\n";a+=' print("Hello world!")\n',e.writeFileSync(i,a,"utf8")}}}}async build(){try{this.fileMode&&(await this.createAtomLibFilesPython({libs:this.libs}),await this.createProjectYaml(),await n(this.apiContext),await r(this.apiContext),await async function({atom:i,setProgress:a,context:s,packageDependencies:n}){if(!0!==i.doc.features.cli.enabled)return;await a({message:"Creating cli."});const r={atom:i,packageDependencies:n},c=s.templateDir,p=t.join(s.projectDir,"src","cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await o({pattern:["index.py.njk","__init__.py.njk"],dir:t.join(c,"src","cli"),outDir:p,context:r})}(this.apiContext),this.buildMode&&(await async function(e){const{setProgress:i,atom:a,context:s}=e;i({message:"Installing Python packages"});const n=s.projectDir,r=await c({pythonVersion:"3.12",packages:[{package:"fnet-import-parser",version:"0.1.9"}]}),{errors:p,result:l}=await r.runBin("fnet_import_parser",["--entry_file",t.join(n,"src","default","index.py")],{captureName:"result"});if(p)throw new Error(p.format());const d=JSON.parse(l.items[0].stdout),m=d.required["third-party"]?.map((e=>({package:e.metadata?.package||e.path,version:e.metadata?.version||void 0,channel:e.metadata?.channel||void 0})))||[],y=a.doc.dependencies||[];for(const e of m)y.some((t=>t.package===e.package))||y.push(e);const f=t.join(n,".conda"),h=await c({envDir:f,pythonVersion:a.doc.features.runtime.version||"3.12",packages:y});s.pythonEnv=h,e.packageDependencies=y;const u=a.doc.features.render?.dirs||[];for(const e of u)e.dir=t.resolve(n,e.dir),e.outDir=t.resolve(n,e.outDir),await o(e);let g={params:{}};g.params.package_name=a.doc.name,g.params.version="0.1.0",g.params.bin_name=a.doc.name,g.params.python_requires=a.doc.features.runtime.version||">=3.12",g.params.dependencies=y,g.params.scripts=JSON.stringify({cli:`PYTHONPATH='${t.join("src")}' '${t.relative(s.projectDir,h.pythonBin)}' '${t.join("src","cli","index.py")}'`}),await o({pattern:["setup.py.njk","package.json.njk","pyproject.toml.njk"],dir:s.templateDir,outDir:s.projectDir,context:g})}(this.apiContext),this.deployMode&&await this.deploy())),await this._cache_set(this.buildKey,{status:"COMPLETED"})}catch(e){throw await this._cache_set(this.buildKey,{status:"FAILED",message:e.message||e}),console.log(e),e}}}export{p as default};
|
|
@@ -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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default console.log;
|