@fnet/cli 0.128.1 → 0.128.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/fnet/index.Bx5WAeSz.js +1 -0
  2. package/dist/fnet/index.DaKCw83b.js +1 -0
  3. package/dist/fnet/index.js +1 -1
  4. package/dist/fnode/index.Bf4wwB0L.js +1 -0
  5. package/dist/fnode/{index.COvqV4rS.js → index.BtvzsBtE.js} +1 -1
  6. package/dist/fnode/index.js +1 -1
  7. package/package.json +1 -1
  8. package/template/fnet/core/object.js +1 -1
  9. package/template/fnet/node/package.json.njk +59 -46
  10. package/template/fnet/node/src/app/index.js.njk +2 -2
  11. package/template/fnet/node/src/cli/index.js.njk +1 -1
  12. package/template/fnet/node/src/default/blocks/assign.js.njk +1 -0
  13. package/template/fnet/node/src/default/blocks/call.js.njk +15 -3
  14. package/template/fnet/node/src/default/blocks/for.js.njk +4 -2
  15. package/template/fnet/node/src/default/blocks/form.js.njk +4 -0
  16. package/template/fnet/node/src/default/blocks/modules.js.njk +2 -0
  17. package/template/fnet/node/src/default/blocks/new.js.njk +87 -0
  18. package/template/fnet/node/src/default/blocks/next.js.njk +2 -0
  19. package/template/fnet/node/src/default/blocks/raise.js.njk +2 -0
  20. package/template/fnet/node/src/default/blocks/return.js.njk +2 -0
  21. package/template/fnet/node/src/default/blocks/signal.js.njk +2 -0
  22. package/template/fnet/node/src/default/blocks/steps.js.njk +2 -1
  23. package/template/fnet/node/src/default/blocks/switch.js.njk +3 -2
  24. package/template/fnet/node/src/default/blocks/tryexcept.js.njk +5 -3
  25. package/template/fnet/node/src/default/blocks/wait.js.njk +1 -0
  26. package/template/fnet/node/src/default/engine.js.njk +2 -2
  27. package/template/fnet/node/src/default/input.args.js.njk +2 -2
  28. package/template/fnet/node/src/default/macros/block-header.js.njk +4 -4
  29. package/template/fnet/node/src/default/macros/block-library-header.js.njk +1 -1
  30. package/template/fnet/node/src/default/macros/block-modules-header.js.njk +1 -1
  31. package/template/fnet/node/src/default/macros/block-modules.js.njk +1 -1
  32. package/template/fnet/node/src/default/macros/block-next-header.js.njk +1 -1
  33. package/template/fnet/node/src/default/macros/block-next.js.njk +1 -1
  34. package/template/fnet/node/src/default/macros/block-run-footer.js.njk +7 -0
  35. package/template/fnet/node/src/default/macros/block-run-header.js.njk +0 -8
  36. package/template/fnet/node/src/default/macros/workflow-header.js.njk +2 -2
  37. package/template/fnet/node/src/default/workflow.js.njk +11 -10
  38. package/template/fnet/project/.vscode/launch.json.njk +1 -1
  39. package/dist/fnet/index.BbVrDxY_.js +0 -1
  40. package/dist/fnet/index.DwUKrF3q.js +0 -1
  41. package/dist/fnode/index.DofQ4rgT.js +0 -1
@@ -26,6 +26,8 @@ export default function Block(context){
26
26
  {% else %}
27
27
  resolve();
28
28
  {% endif %}
29
+
30
+ {% include "src/default/macros/block-run-footer.js.njk" %}
29
31
  });
30
32
  }
31
33
 
@@ -20,6 +20,8 @@ export default function Block(context){
20
20
  {% include "src/default/macros/block-signal.js.njk" %}
21
21
 
22
22
  onError? onError(new Error(raise?.message||raise||"Unknown error")) : reject(new Error(raise?.message||raise||"Unknown error"));
23
+
24
+ {% include "src/default/macros/block-run-footer.js.njk" %}
23
25
  });
24
26
  }
25
27
 
@@ -22,6 +22,8 @@ export default function Block(context){
22
22
  {% include "src/default/macros/block-signal.js.njk" %}
23
23
 
24
24
  resolve({type:'return',value: value});
25
+
26
+ {% include "src/default/macros/block-run-footer.js.njk" %}
25
27
  });
26
28
  }
27
29
 
@@ -28,6 +28,8 @@ export default function Block(context){
28
28
  {% if context.transform.signal==='next' %}
29
29
  flow.continueForNext({key:'{{indexKey}}'});
30
30
  {% endif %}
31
+
32
+ {% include "src/default/macros/block-run-footer.js.njk" %}
31
33
  });
32
34
  }
33
35
  }
@@ -18,7 +18,7 @@ export default function Block(context){
18
18
 
19
19
  // NEXT : {{context.next.indexKey}}
20
20
  {% if context.next.definition.dynamic %}
21
- const { default: {{context.next.codeKey}} } = await import("./{{context.next.codeKey}}");
21
+ const { default: {{context.next.codeKey}} } = await import("./{{context.next.codeKey}}.js");
22
22
  {% endif %}
23
23
 
24
24
  let current=new {{context.next.codeKey}}({ parent:_this, engine, flow, caller:c ,onError, error });
@@ -53,6 +53,7 @@ export default function Block(context){
53
53
 
54
54
  resolve();
55
55
 
56
+ {% include "src/default/macros/block-run-footer.js.njk" %}
56
57
  });
57
58
  }
58
59
 
@@ -9,7 +9,7 @@
9
9
  {% for child in childs %}
10
10
  {% if not child.definition.dynamic %}
11
11
  // CHILD: {{child.indexKey}}
12
- import {{child.codeKey}} from "./{{child.codeKey}}";
12
+ import {{child.codeKey}} from "./{{child.codeKey}}.js";
13
13
  {% endif %}
14
14
  {% endfor%}
15
15
 
@@ -42,7 +42,7 @@ export default function Block(context) {
42
42
  {
43
43
  {% if child.definition.dynamic %}
44
44
  // CHILD: {{child.indexKey}}
45
- const { default: {{child.codeKey}} } = await import("./{{child.codeKey}}");
45
+ const { default: {{child.codeKey}} } = await import("./{{child.codeKey}}.js");
46
46
  {% endif %}
47
47
 
48
48
  const current=new {{child.codeKey}}({ parent:_this, engine, flow, caller:c, onError });
@@ -69,6 +69,7 @@ export default function Block(context) {
69
69
  {% endif %}
70
70
  {% endif %}
71
71
 
72
+ {% include "src/default/macros/block-run-footer.js.njk" %}
72
73
  });
73
74
  }
74
75
 
@@ -8,7 +8,7 @@
8
8
  {% for child in childs %}
9
9
  {% if not child.definition.dynamic %}
10
10
  // CHILD: {{child.indexKey}}
11
- import {{child.codeKey}} from "./{{child.codeKey}}";
11
+ import {{child.codeKey}} from "./{{child.codeKey}}.js";
12
12
  {% endif %}
13
13
  {% endfor%}
14
14
 
@@ -32,7 +32,7 @@ export default function Block(context) {
32
32
 
33
33
  const onError=error=>{
34
34
  {% if context.except.definition.dynamic %}
35
- const { default: {{context.except.codeKey}} } = await import("./{{context.except.codeKey}}");
35
+ const { default: {{context.except.codeKey}} } = await import("./{{context.except.codeKey}}.js");
36
36
  {% endif %}
37
37
 
38
38
  const current=new {{context.except.codeKey}}({ parent:_this, engine, flow, caller:c , error });
@@ -45,7 +45,7 @@ export default function Block(context) {
45
45
  };
46
46
 
47
47
  {% if context.try.definition.dynamic %}
48
- const { default: {{context.try.codeKey}} } = await import("./{{context.try.codeKey}}");
48
+ const { default: {{context.try.codeKey}} } = await import("./{{context.try.codeKey}}.js");
49
49
  {% endif %}
50
50
 
51
51
  const current=new {{context.try.codeKey}}({ parent:_this, engine, flow, caller:c ,onError, error });
@@ -63,6 +63,8 @@ export default function Block(context) {
63
63
  {% include "src/default/macros/block-assign.js.njk" %}
64
64
 
65
65
  {% include "src/default/macros/block-signal.js.njk" %}
66
+
67
+ {% include "src/default/macros/block-run-footer.js.njk" %}
66
68
  });
67
69
  }
68
70
 
@@ -26,6 +26,7 @@ export default function Block(context){
26
26
  flow.set({{assign.key | safe}},{{assign.value | safe}});
27
27
  {% endfor%}
28
28
 
29
+ {% include "src/default/macros/block-run-footer.js.njk" %}
29
30
  });
30
31
  }
31
32
  }
@@ -1,6 +1,6 @@
1
- import Object from "../core/object";
1
+ import Object from "../core/object.js";
2
2
 
3
- import { default as Workflow } from "./{{flow.codeKey}}";
3
+ import { default as Workflow } from "./{{flow.codeKey}}.js";
4
4
 
5
5
  {% set form_enabled = false if flow.name === 'cli' else flow.parent.context.atom.doc.features.form_enabled %}
6
6
 
@@ -1,10 +1,10 @@
1
1
  {% if atom.doc.features.project.format === 'esm' %}
2
2
  import fnetArgs from '@fnet/args';
3
- import validate,{schema as inputSchema} from "./validate_input";
3
+ import validate,{schema as inputSchema} from "./validate_input.js";
4
4
 
5
5
  {% elif atom.doc.features.project.format === 'cjs' %}
6
6
  const fnetArgs = require('@fnet/args');
7
- const validate,{schema as inputSchema} = require("./validate_input");
7
+ const validate,{schema as inputSchema} = require("./validate_input.js");
8
8
  {% endif %}
9
9
 
10
10
  {% if atom.doc.features.cli.fargs and atom.doc.features.cli.fargs?.enabled !== false %}
@@ -1,14 +1,14 @@
1
1
  // BLOCK: {{indexKey}}
2
2
 
3
- import Message from "../../core/message";
3
+ import Message from "../../core/message.js";
4
4
  {% if context.transform.print %}
5
- import print from "../../core/print";
5
+ import print from "../../core/print.js";
6
6
  {% endif %}
7
7
 
8
8
  {% if context.transform.sleep %}
9
- import sleep from "../../core/sleep";
9
+ import sleep from "../../core/sleep.js";
10
10
  {% endif %}
11
11
 
12
12
  {% if context.transform.assert %}
13
- import assert from "../../core/assert";
13
+ import assert from "../../core/assert.js";
14
14
  {% endif %}
@@ -31,5 +31,5 @@
31
31
  {% endif %}
32
32
  {% elseif context.lib.type==='subworkflow' %}
33
33
  // LIBRARY: {{context.lib.indexKey}}
34
- import { default as {{context.lib.codeKey}} } from "../{{context.lib.codeKey}}";
34
+ import { default as {{context.lib.codeKey}} } from "../{{context.lib.codeKey}}.js";
35
35
  {% endif %}
@@ -2,7 +2,7 @@
2
2
  {% if child.module===true%}
3
3
  {% if not child.definition.dynamic %}
4
4
  // MODULE : {{child.indexKey}}
5
- import { default as {{child.codeKey}} } from "./{{child.codeKey}}";
5
+ import { default as {{child.codeKey}} } from "./{{child.codeKey}}.js";
6
6
  {% endif %}
7
7
  {% endif %}
8
8
  {% endfor%}
@@ -4,7 +4,7 @@
4
4
 
5
5
  // MODULE : {{child.indexKey}}
6
6
  {% if child.definition.dynamic %}
7
- const { default: {{child.codeKey}} } = await import("./{{child.codeKey}}");
7
+ const { default: {{child.codeKey}} } = await import("./{{child.codeKey}}.js");
8
8
  {% endif %}
9
9
 
10
10
  m['{{child.name}}']=async function(){
@@ -1,6 +1,6 @@
1
1
  {% if context.next %}
2
2
  {% if not context.next.definition.dynamic %}
3
3
  // NEXT : {{context.next.indexKey}}
4
- import { default as {{context.next.codeKey}} } from "./{{context.next.codeKey}}";
4
+ import { default as {{context.next.codeKey}} } from "./{{context.next.codeKey}}.js";
5
5
  {% endif %}
6
6
  {% endif %}
@@ -2,7 +2,7 @@
2
2
 
3
3
  // NEXT : {{context.next.indexKey}}
4
4
  {% if context.next.definition.dynamic %}
5
- const { default: {{context.next.codeKey}} } = await import("./{{context.next.codeKey}}");
5
+ const { default: {{context.next.codeKey}} } = await import("./{{context.next.codeKey}}.js");
6
6
  {% endif %}
7
7
 
8
8
 
@@ -0,0 +1,7 @@
1
+ {% if context.transform.print %}
2
+ print({{context.transform.print | safe}});
3
+ {% endif%}
4
+
5
+ {% if context.transform.assert %}
6
+ assert({{context.transform.assert | safe}});
7
+ {% endif%}
@@ -26,14 +26,6 @@ console.log(new Date().toLocaleString(),'{{indexKey}}');
26
26
  debugger;
27
27
  {% endif %}
28
28
 
29
- {% if context.transform.print %}
30
- print({{context.transform.print | safe}});
31
- {% endif%}
32
-
33
- {% if context.transform.assert %}
34
- assert({{context.transform.assert | safe}});
35
- {% endif%}
36
-
37
29
  {% if context.transform.sleep %}
38
30
  await sleep({{context.transform.sleep}});
39
31
  {% endif %}
@@ -1,7 +1,7 @@
1
1
  // WORKFLOW: {{ indexKey }}
2
2
 
3
- import Object from "../core/object";
3
+ import Object from "../core/object.js";
4
4
 
5
5
  {% if context.transform.print %}
6
- import print from "../core/print";
6
+ import print from "../core/print.js";
7
7
  {% endif %}
@@ -3,7 +3,7 @@
3
3
  {% if context.next %}
4
4
  {% if not context.next.definition.dynamic %}
5
5
  // NEXT: {{context.next.indexKey}}
6
- import {{context.next.codeKey}} from "./blocks/{{context.next.codeKey}}";
6
+ import {{context.next.codeKey}} from "./blocks/{{context.next.codeKey}}.js";
7
7
  {% endif %}
8
8
  {% endif %}
9
9
 
@@ -62,14 +62,6 @@ export default class Workflow extends Object {
62
62
  debugger;
63
63
  {% endif %}
64
64
 
65
- {% if context.transform.print %}
66
- print({{context.transform.print | safe}});
67
- {% endif%}
68
-
69
- {% if context.transform.assert %}
70
- assert({{context.transform.assert | safe}});
71
- {% endif%}
72
-
73
65
  {% if context.transform.sleep %}
74
66
  await sleep({{context.transform.sleep}});
75
67
  {% endif %}
@@ -80,7 +72,7 @@ export default class Workflow extends Object {
80
72
 
81
73
  {% if context.next.definition.dynamic %}
82
74
  // NEXT : {{context.next.indexKey}}
83
- const { default: {{context.next.codeKey}} } = await import("./blocks/{{context.next.codeKey}}");
75
+ const { default: {{context.next.codeKey}} } = await import("./blocks/{{context.next.codeKey}}.js");
84
76
  {% endif %}
85
77
 
86
78
  {# closure #}
@@ -112,6 +104,15 @@ export default class Workflow extends Object {
112
104
 
113
105
  {% endif %}
114
106
 
107
+
108
+ {% if context.transform.print %}
109
+ print({{context.transform.print | safe}});
110
+ {% endif%}
111
+
112
+ {% if context.transform.assert %}
113
+ assert({{context.transform.assert | safe}});
114
+ {% endif%}
115
+
115
116
  return this.result;
116
117
  }
117
118
  }
@@ -11,7 +11,7 @@
11
11
  "skipFiles": [
12
12
  "<node_internals>/**"
13
13
  ],
14
- "program": "${workspaceFolder}/.workspace/dist/cli/esm/index.js",
14
+ "program": "${workspaceFolder}/.workspace/src/cli/index.js",
15
15
  "cwd": "${workspaceFolder}/.workspace",
16
16
  "preLaunchTask": "fnet-watch",
17
17
  "console": "integratedTerminal"
@@ -1 +0,0 @@
1
- import e from"node:fs";import t from"node:path";import r from"semver";import o from"@fnet/shelljs";import i from"@fnet/config";import s from"@fnet/object-from-schema";import n from"yaml";import{r as p,w as m}from"./index.js";import{fileURLToPath as a}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"nunjucks";import"lodash.clonedeep";import"isobject";import"redis";import"@flownet/lib-is-redis-online";import"node:crypto";import"@flownet/lib-atom-api-js";import"lodash.merge";import"@flownet/lib-parse-imports-js";import"@fnet/npm-list-versions";import"@fnet/npm-pick-versions";import"object-hash";import"ajv/dist/2020.js";import"ajv/dist/standalone/index.js";import"ajv-formats";import"@flownet/lib-parse-node-url";import"bpmn-moddle";import"dagre";import"@fnet/expression";import"@fnet/list-files";import"@fnet/key-value-transformer";import"@fnet/prompt";import"fs";import"path";import"@fnet/shell-flow";async function l({atom:a,setProgress:l,context:c,deploymentProject:d,deploymentProjectTarget:f,yamlTarget:y}){await l({message:"Deploying it as npm package."});const w=c.projectDir,b=t.resolve(w,"package.json"),j=e.readFileSync(b),u=JSON.parse(j);u.name=f.params.name,u.version=r.inc(f.version,"patch");const g=f.params.bin?.name||f.params.bin;!1!==f.params.bin?.enabled&&g&&"string"==typeof g&&(u.bin={[g]:"dist/cli/esm/index.js"}),delete u.scripts,delete u.devDependencies,u.scripts={serve:"npx serve ."},e.writeFileSync(b,JSON.stringify(u,null,"\t"));const h=f.config||"npm";let v=(await i({name:h,dir:c.projectDir,tags:c.tags,optional:!0}))?.data;if(!v){const r=p("./template/schemas/to-npm.yaml"),o=await s({schema:r,tags:c.tags}),i=c.project.projectDir,m=t.resolve(i,".fnet");e.existsSync(m)||e.mkdirSync(m),e.writeFileSync(t.resolve(m,`${h}.fnet`),n.stringify(o)),v=o}if(e.writeFileSync(t.resolve(w,".npmrc"),`//registry.npmjs.org/:_authToken=${v.env.NPM_TOKEN}`),!0!==f.dryRun){if(m("bun")){if(0!==(await o("bun publish --access public",{cwd:w})).code)throw new Error("Couldnt publish to npm")}else{if(0!==(await o("npm publish --access public",{cwd:w})).code)throw new Error("Couldnt publish to npm")}e.writeFileSync(b,j),d.isDirty=!0,f.version=u.version,y.set("version",u.version)}}t.dirname(a(import.meta.url)),process.cwd();export{l 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"node:url";import"yargs";import"chalk";import"node:util";import"tree-kill";import"node:child_process";import"@fnet/config";import"node:os";import"@flownet/lib-render-templates-dir";import"@fnet/shelljs";import"nunjucks";import"lodash.clonedeep";import"isobject";import"redis";import"@flownet/lib-is-redis-online";import"node:crypto";import"@flownet/lib-atom-api-js";import"lodash.merge";import"@flownet/lib-parse-imports-js";import"@fnet/npm-list-versions";import"@fnet/npm-pick-versions";import"object-hash";import"ajv/dist/2020.js";import"ajv/dist/standalone/index.js";import"ajv-formats";import"@flownet/lib-parse-node-url";import"bpmn-moddle";import"dagre";import"@fnet/expression";import"@fnet/list-files";import"@fnet/key-value-transformer";import"@fnet/prompt";import"fs";import"path";import"@fnet/shell-flow";async function n(n){if(n.id)return{id:n.id,buildId:n.buildId,mode:n.mode,protocol:n.protocol||"ac:",templateDir:i("./template/fnode/node"),projectDir:e.resolve(process.cwd(),`./.output/${n.id}`),tags:n.ftag,dev:n.dev};try{const s=await async function({tags:i}){let n=function(o){const r=e.resolve(o,"node.yaml"),i=e.resolve(o,"fnode.yaml");if(t.existsSync(i))return i;if(t.existsSync(r))try{const e=t.readFileSync(r,"utf8");return t.writeFileSync(i,e,"utf8"),t.unlinkSync(r),console.log(`Migrated node.yaml to fnode.yaml in ${o}`),i}catch(e){return console.error(`Error migrating node.yaml to fnode.yaml: ${e.message}`),r}return i}(process.cwd());if(!t.existsSync(n))throw new Error("fnode.yaml file not found in current directory.");const{raw:s,parsed:m}=await o({file:n,tags:i}),l=e.dirname(n);m.features=m.features||{};const p=m.features;p.runtime=p.runtime||{},p.runtime.type=p.runtime.type||"node","python"===p.runtime.type?p.runtime.template=p.runtime.template||"python":"bun"===p.runtime.type?p.runtime.template=p.runtime.template||"bun":p.runtime.template=p.runtime.template||"node";const a={libraryAtom:{doc:{...m},fileName:"index"},projectDir:l,projectFilePath:n,projectFileContent:s,projectFileParsed:m,runtime:p.runtime};let c=e.resolve(l,"fnet/targets.yaml");if(!t.existsSync(c)&&(c=e.resolve(l,"node.devops.yaml"),t.existsSync(c))){const o=e.resolve(l,"fnet");t.existsSync(o)||t.mkdirSync(o),t.copyFileSync(c,e.resolve(l,"fnet/targets.yaml")),t.unlinkSync(c)}if(t.existsSync(c)){const{raw:e,parsed:n}=await o({file:c,tags:i}),s=r.parseDocument(e);a.devops={filePath:c,fileContent:e,yamlDocument:s,doc:{...n},type:"library.deploy",save:async()=>{t.writeFileSync(a.devops.filePath,s.toString())}}}const d=e.resolve(l,"readme.md");if(t.existsSync(d)){const e=t.readFileSync(d,"utf8");a.readme={filePath:d,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return a}({tags:n.ftag});return{buildId:n.buildId,mode:n.mode,protocol:n.protocol||"local:",templateDir:i(`./template/fnode/${s.runtime.template}`),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 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 i,c as r,a as n}from"./index.DBxLarjt.js";import p from"lodash.merge";import{f as l,i as c,a as d,b as u,c as f,d as m,p as b,e as g,g as h,h as _,j as w,k as y,l as x,m as v,r as k}from"./index.BqI7rTjk.js";import j from"@fnet/npm-list-versions";import D from"@fnet/shelljs";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"@flownet/lib-render-templates-dir";import"@fnet/npm-pick-versions";import"object-hash";import"ajv/dist/2020.js";import"ajv/dist/standalone/index.js";import"ajv-formats";import"./index.js";import"node:url";import"yargs";import"node:util";import"tree-kill";import"node:child_process";import"node:os";import"@fnet/prompt";import"fs";import"path";import"@fnet/shell-flow";function C({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 i=o,r=t.extname(o);return{file:i,ext:r,ts:".ts"===r||".tsx"===r,name:s}}async function S(e){const{atom:a,context:o,setProgress:i}=e;i("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 n=t.resolve(o.project.projectDir),b=C({dir:t.resolve(n,"./app")});if(b.file){i("Parsing app entry imports...");let e=await s({file:b.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:b.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),r.app_entry_uses_jsx=t,r.app_entry_is_ts=b.ts,r.app_entry_ext=b.ext}const g=C({dir:t.resolve(n,"./cli")});if(g.file){i("Parsing cli entry imports...");let e=await s({file:g.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:g.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),r.cli_entry_uses_jsx=t,r.cli_entry_is_ts=g.ts,r.cli_entry_ext=g.ext}if("workflow.lib"===a.type){const e=C({dir:t.resolve(n,"./src")});if(e.file){i("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 h=Reflect.has(r,"app_entry_uses_jsx")?!0===r.app_entry_uses_jsx:!0===r.src_entry_uses_jsx,_=Reflect.has(r,"cli_entry_uses_jsx")?!0===r.cli_entry_uses_jsx:!0===r.src_entry_uses_jsx;r.form_enabled=h||_||!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:h}:r.app={enabled:!0,extend:!0===r.app_has_entry,export:!0,react:h,...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:_}:r.cli={enabled:!0,extend:!0===r.cli_has_entry,export:!0,react:_,...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,console.log(`Setting npm::bin to ${r.cli.bin} from features.cli.bin`)),r.json=r.cli.enabled||r.json;const w={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&&(w.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&&(w.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&&(w.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&&(w.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&&(w.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}`,w.app={format:r.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",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}`,w.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:"./src/cli/index.js",output_dir:r.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===r.cli.export?"none":"auto"});const y={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(y,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(w,r.rollup_output||r.rollup?.output||{}),r.preact_enabled=!0===r.preact||r.preact&&!1!==r.preact?.enabled;let x=Object.keys(w);for(const e of x){const t=w[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])}x=Object.keys(r.rollup_output),r.babel_enabled=x.some((e=>!0===r.rollup_output[e].babel)),r.browser_enabled=x.some((e=>!0===r.rollup_output[e].babel)),r.browsersync_enabled=!1!==r.browsersync&&x.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,c(e),d(e),function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features;l({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:s,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features;l({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:s,packageDevDependencies:a})}(e),u(e),f(e),m(e),function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features;l({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:s,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features;l({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]]},features:s,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features;l({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:s,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features;l({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:s,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features;l({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:s,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features;l({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:s,packageDevDependencies:a})}(e)}class A extends i{async initRuntime(){await S(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 j({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"}),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 i=o.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));i?.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}),i=e.doc.dependencies,r=o.all;for await(const e of r){if("npm"!==e.type)continue;if(i.find((t=>t.package===e.package)))continue;const t=await b({name:e.package,projectDir:this.context.projectDir,setProgress:this.apiContext.setProgress});i.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,i=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(i)}/src`}else{const a=t.join(i,"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,i=a.compile(e.readFileSync(t.resolve(o,t.join("src","default","engine.js.njk")),"utf8"),this.apiContext.njEnv).render(s),r=this.context.projectDir,n=t.resolve(r,t.join("src","default","index.js"));e.writeFileSync(n,i,"utf8")}async build(){try{this.fileMode&&(await this.createAtomLibFiles({libs:this.libs}),await this.createEngine(),await this.createProjectYaml(),await r(this.apiContext),await g(this.apiContext),await n(this.apiContext),await h(this.apiContext),await _(this.apiContext),await w(this.apiContext),await async function({atom:o,setProgress:i,context:r,packageDependencies:n}){await i({message:"Creating rollup file."});const p={atom:o,packageDependencies:n},l=t.resolve(r.projectDir,"src","default/index.js");if(!e.existsSync(l))throw new Error(`Entry file not found: ${l}`);const c=(await s({file:l,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),d=o.doc.features.rollup_output,u=Object.keys(d);for(let e=0;e<u.length;e++){const t=d[u[e]];if(!0===t.browser&&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 a=c[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(c)}}const f=r.templateDir;let m=a.compile(e.readFileSync(t.resolve(f,"rollup.config.mjs.njk"),"utf8"),a.configure(f)).render(p);const b=r.projectDir;let g=t.resolve(b,"rollup.config.mjs");e.writeFileSync(g,m,"utf8")}(this.apiContext),await y(this.apiContext),await x(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 D("tsc",{cwd:s})).code)throw new Error("Couldnt create .d.ts files.")}(this.apiContext),this.buildMode&&(await v(this.apiContext),await k(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{A as default};