@fnet/cli 0.128.5 → 0.129.2

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.
@@ -6,88 +6,103 @@
6
6
  "fnet/input.yaml",
7
7
  "fnet/output.yaml"
8
8
  ],
9
- {# "sideEffects": false, #}
9
+
10
10
  {% if atom.doc['npm::author'] %}
11
- "author": "{{atom.doc['npm::author'] | safe}}",
11
+ "author": "{{atom.doc['npm::author'] | safe}}",
12
12
  {% endif %}
13
13
 
14
14
  {% if atom.doc['npm::description'] %}
15
- "description": "{{atom.doc['npm::description'] | safe}}",
15
+ "description": "{{atom.doc['npm::description'] | safe}}",
16
16
  {% endif %}
17
17
 
18
18
  {% if atom.doc.features.project.format ==='cjs' %}
19
19
  {% if atom.doc.features.rollup_output.esm.enabled === true%}
20
- "main": "dist/default/esm/index.js",
21
- "type":"module",
20
+ "main": "dist/default/esm/index.js",
21
+ "type":"module",
22
22
  {% else %}
23
- "main": "dist/default/cjs/index.cjs",
23
+ "main": "dist/default/cjs/index.cjs",
24
24
  {% endif %}
25
- {% if atom.doc.features.dts_enabled ===true %}
26
- "types": "dist/default/types/index.d.ts",
27
- {% endif %}
28
- "exports":{
29
- ".":{
30
- "import":"./dist/default/esm/index.js",
31
- "require":"./dist/default/cjs/index.cjs"
32
- }
33
- },
25
+
26
+ {% if atom.doc.features.dts_enabled ===true %}
27
+ "types": "dist/default/types/index.d.ts",
28
+ {% endif %}
29
+
30
+ "exports":{
31
+ ".":{
32
+ "import":"./dist/default/esm/index.js",
33
+ "require":"./dist/default/cjs/index.cjs"
34
+ }
35
+ },
34
36
  {% else %}
35
- "main": "dist/default/esm/index.js",
36
- {% if atom.doc.features.dts_enabled ===true %}
37
- "types": "dist/default/types/index.d.ts",
38
- {% endif %}
39
- "type":"module",
40
- "exports":{
41
- ".":{
42
- "import":"./dist/default/esm/index.js",
43
- "require":"./dist/default/cjs/index.cjs"
44
- }
45
- },
37
+ "main": "dist/default/esm/index.js",
38
+ {% if atom.doc.features.dts_enabled ===true %}
39
+ "types": "dist/default/types/index.d.ts",
40
+ {% endif %}
41
+ "type":"module",
42
+ "exports":{
43
+ ".":{
44
+ "import":"./dist/default/esm/index.js",
45
+ "require":"./dist/default/cjs/index.cjs"
46
+ }
47
+ },
46
48
  {% endif %}
49
+
47
50
  "flownet": {
48
51
  "type": "node",
49
52
  },
53
+
50
54
  {% if atom.doc.repo.url %}
51
55
  "repository": {
52
- "type": "{{atom.doc.repo.type or 'git'}}",
53
- "url": "{{atom.doc.repo.url}}"
56
+ "type": "{{atom.doc.repo.type or 'git'}}",
57
+ "url": "{{atom.doc.repo.url}}"
54
58
  },
55
59
  {% endif %}
60
+
56
61
  "license": "{{atom.doc.license or 'MIT'}}",
62
+
57
63
  "scripts": {
58
64
  "build": "bun ./build.js",
59
- "watch": "bun --watch --watch-mode=poll --watch-ignore-dirs=node_modules,dist --watch-paths=./src ./build.js",
65
+ "build:dev": "bun ./build.js --dev",
66
+ "watch": "bun --watch --watch-mode=poll --watch-ignore-dirs=node_modules,dist --watch-paths=./src ./build.js --dev",
60
67
  "serve": "bunx serve ./"
61
68
  {% if atom.doc.features.cli.enabled %}
62
- {% if atom.doc.features.project.format ==='cjs' %}
63
- ,"cli": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.dir}}/index.cjs"
64
- {% else %}
65
- ,"cli": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.dir}}/"
66
- {% endif %}
67
- ,"compile": "fbin compile {{atom.doc.features.cli.dir}}/index.js -o .bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}}"
68
- ,"install-bin": "fbin install ./.bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}} --yes"
69
+ {% if atom.doc.features.project.format ==='cjs' %}
70
+ ,"cli": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.dir}}/index.cjs"
71
+ {% else %}
72
+ ,"cli": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.output.file}}"
73
+ ,"cli:dev": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.input.file}}"
74
+ {% endif %}
75
+ ,"cli:compile": "fbin compile {{atom.doc.features.cli.output.file}} -o .bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}}"
76
+ ,"cli:compile:dev": "fbin compile {{atom.doc.features.cli.input.file}} -o .bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}}"
77
+ ,"cli:install": "fbin install ./.bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}} --yes"
78
+
79
+ ,"compile": "fbin compile {{atom.doc.features.cli.output.file}} -o .bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}}"
80
+ ,"install-bin": "fbin install ./.bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}} --yes"
69
81
  {% endif %}
70
82
  {% if atom.doc.features.app.enabled %}
71
83
  ,"app": "bun {{atom.doc.features.app.dir}}/index.html"
72
84
  {% endif %}
73
85
  },
86
+
74
87
  "devDependencies": {
75
88
  {% for dep in packageDevDependencies %}
76
89
  "{{dep.package}}":"{{dep.version}}" {% if not loop.last%},{%endif%}
77
90
  {% endfor%}
78
91
  },
92
+
79
93
  "dependencies": {
80
94
  {% for dep in packageDependencies %}
81
- "{{dep.package}}":"{{dep.version}}" {% if not loop.last%},{%endif%}
95
+ "{{dep.package}}":"{{dep.version}}" {% if not loop.last%},{%endif%}
82
96
  {% endfor%}
83
- }
84
- {% if atom.doc.features.cli.enabled and atom.doc['npm::bin'] %}
97
+ }
98
+
99
+ {% if atom.doc.features.cli.enabled and atom.doc['npm::bin'] %}
85
100
  ,"bin":{
86
101
  {% if atom.doc.features.project.format ==='cjs' %}
87
- "{{atom.doc['npm::bin']}}":"{{atom.doc.features.cli.dir}}/index.cjs"
102
+ "{{atom.doc['npm::bin']}}":"{{atom.doc.features.cli.dir}}/index.cjs"
88
103
  {% else %}
89
- "{{atom.doc['npm::bin']}}":"{{atom.doc.features.cli.dir}}/index.js"
104
+ "{{atom.doc['npm::bin']}}":"{{atom.doc.features.cli.output.file}}"
90
105
  {% endif %}
91
106
  }
92
- {% endif %}
107
+ {% endif %}
93
108
  }
@@ -6,42 +6,43 @@
6
6
  "fnet/input.yaml",
7
7
  "fnet/output.yaml"
8
8
  ],
9
- {# "sideEffects": false, #}
10
9
  {% if atom.doc['npm::author'] %}
11
- "author": "{{atom.doc['npm::author'] | safe}}",
10
+ "author": "{{atom.doc['npm::author'] | safe}}",
12
11
  {% endif %}
13
12
 
14
13
  {% if atom.doc['npm::description'] %}
15
- "description": "{{atom.doc['npm::description'] | safe}}",
14
+ "description": "{{atom.doc['npm::description'] | safe}}",
16
15
  {% endif %}
17
16
 
18
17
  {% if atom.doc.features.project.format ==='cjs' %}
19
18
  {% if atom.doc.features.rollup_output.esm.enabled === true%}
20
- "main": "dist/default/esm/index.js",
21
- "type":"module",
19
+ "main": "dist/default/esm/index.js",
20
+ "type":"module",
22
21
  {% else %}
23
- "main": "dist/default/cjs/index.cjs",
22
+ "main": "dist/default/cjs/index.cjs",
24
23
  {% endif %}
25
- {% if atom.doc.features.dts_enabled ===true %}
26
- "types": "dist/default/types/index.d.ts",
27
- {% endif %}
28
- "exports":{
29
- ".":{
30
- "import":"./dist/default/esm/index.js",
31
- "require":"./dist/default/cjs/index.cjs"
32
- }
24
+
25
+ {% if atom.doc.features.dts_enabled ===true %}
26
+ "types": "dist/default/types/index.d.ts",
27
+ {% endif %}
28
+
29
+ "exports":{
30
+ ".":{
31
+ "import":"./dist/default/esm/index.js",
32
+ "require":"./dist/default/cjs/index.cjs"
33
+ }
33
34
  },
34
35
  {% else %}
35
- "main": "dist/default/esm/index.js",
36
- {% if atom.doc.features.dts_enabled ===true %}
37
- "types": "dist/default/types/index.d.ts",
38
- {% endif %}
39
- "type":"module",
40
- "exports":{
41
- ".":{
42
- "import":"./dist/default/esm/index.js",
43
- "require":"./dist/default/cjs/index.cjs"
44
- }
36
+ "main": "dist/default/esm/index.js",
37
+ {% if atom.doc.features.dts_enabled ===true %}
38
+ "types": "dist/default/types/index.d.ts",
39
+ {% endif %}
40
+ "type":"module",
41
+ "exports":{
42
+ ".":{
43
+ "import":"./dist/default/esm/index.js",
44
+ "require":"./dist/default/cjs/index.cjs"
45
+ }
45
46
  },
46
47
  {% endif %}
47
48
  "flownet": {
@@ -57,46 +58,58 @@
57
58
  "scripts": {
58
59
  "build": "rollup --config",
59
60
  "build:dev": "rollup --config --sourcemap --environment DEVELOPMENT",
60
- "watch": "rollup --config --watch --sourcemap --environment DEVELOPMENT",
61
+ "watch": "rollup --config --watch --sourcemap --environment DEVELOPMENT --environment FLOWNET_WATCH",
61
62
  "serve": "bunx serve ./"
63
+
62
64
  {% if atom.doc.features.cli.enabled %}
63
- {% if atom.doc.features.project.format ==='cjs' %}
64
- ,"cli": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.dir}}/index.cjs",
65
- {% if atom.doc.features.cli.mcp.enabled===true %}
66
- ,"mcp": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.dir}}/index.cjs --cli-mode=mcp"
67
- ,"mcp-inspect": "bunx @modelcontextprotocol/inspector bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.dir}}/index.cjs --cli-mode=mcp"
68
- {% endif %}
69
- {% else %}
70
- ,"cli": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.dir}}/"
71
- {% if atom.doc.features.cli.mcp.enabled===true %}
72
- ,"mcp": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.dir}}/ --cli-mode=mcp"
73
- ,"mcp-inspect": "bunx @modelcontextprotocol/inspector bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.dir}}/ --cli-mode=mcp"
74
- {% endif %}
75
- {% endif %}
76
- ,"compile": "fbin compile {{atom.doc.features.cli.dir}}/index.js -o .bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}}"
77
- ,"install-bin": "fbin install ./.bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}} --yes"
65
+ {% if atom.doc.features.project.format ==='cjs' %}
66
+ ,"cli": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.dir}}/index.cjs"
67
+ {% if atom.doc.features.cli.mcp.enabled===true %}
68
+ ,"mcp": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.dir}}/index.cjs --cli-mode=mcp"
69
+ ,"mcp-inspect": "bunx @modelcontextprotocol/inspector bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.dir}}/index.cjs --cli-mode=mcp"
70
+ {% endif %}
71
+ {% else %}
72
+ ,"cli": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.output.file}}"
73
+ ,"cli:dev": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.input.file}}"
74
+ {% if atom.doc.features.cli.mcp.enabled===true %}
75
+ ,"cli:mcp": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.output.file}} --cli-mode=mcp"
76
+ ,"cli:mcp:inspect": "bunx @modelcontextprotocol/inspector bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.output.file}} --cli-mode=mcp"
77
+ ,"cli:mcp:dev": "bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.input.file}} --cli-mode=mcp"
78
+ ,"cli:mcp:inspect:dev": "bunx @modelcontextprotocol/inspector bun {{atom.doc.features.cli.node_options}} {{atom.doc.features.cli.input.file}} --cli-mode=mcp"
79
+ {% endif %}
80
+ {% endif %}
81
+ ,"cli:compile": "fbin compile {{atom.doc.features.cli.output.file}} -o .bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}}"
82
+ ,"cli:compile:dev": "fbin compile {{atom.doc.features.cli.input.file}} -o .bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}}"
83
+ ,"cli:install": "fbin install ./.bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}} --yes"
84
+
85
+ ,"compile": "fbin compile {{atom.doc.features.cli.output.file}} -o .bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}}"
86
+ ,"install-bin": "fbin install ./.bin/{{atom.doc['npm::bin'] or atom.doc['name'] or atom['id']}} --yes"
78
87
  {% endif %}
88
+
79
89
  {% if atom.doc.features.app.enabled %}
80
- ,"app": "bunx serve {{atom.doc.features.app.dir}}/"
90
+ ,"app": "bunx serve {{atom.doc.features.app.dir}}/"
81
91
  {% endif %}
82
92
  },
93
+
83
94
  "devDependencies": {
84
95
  {% for dep in packageDevDependencies %}
85
- "{{dep.package}}":"{{dep.version}}" {% if not loop.last%},{%endif%}
96
+ "{{dep.package}}":"{{dep.version}}" {% if not loop.last%},{%endif%}
86
97
  {% endfor%}
87
98
  },
99
+
88
100
  "dependencies": {
89
101
  {% for dep in packageDependencies %}
90
- "{{dep.package}}":"{{dep.version}}" {% if not loop.last%},{%endif%}
102
+ "{{dep.package}}":"{{dep.version}}" {% if not loop.last%},{%endif%}
91
103
  {% endfor%}
92
- }
93
- {% if atom.doc.features.cli.enabled and atom.doc['npm::bin'] %}
104
+ }
105
+
106
+ {% if atom.doc.features.cli.enabled and atom.doc['npm::bin'] %}
94
107
  ,"bin":{
95
108
  {% if atom.doc.features.project.format ==='cjs' %}
96
- "{{atom.doc['npm::bin']}}":"{{atom.doc.features.cli.dir}}/index.cjs"
109
+ "{{atom.doc['npm::bin']}}":"{{atom.doc.features.cli.dir}}/index.cjs"
97
110
  {% else %}
98
- "{{atom.doc['npm::bin']}}":"{{atom.doc.features.cli.dir}}/index.js"
111
+ "{{atom.doc['npm::bin']}}":"{{atom.doc.features.cli.output.file}}"
99
112
  {% endif %}
100
113
  }
101
- {% endif %}
114
+ {% endif %}
102
115
  }
@@ -6,6 +6,8 @@ import fs from 'fs-extra';
6
6
  import path from 'path';
7
7
 
8
8
  const DEVELOPMENT = process.env.DEVELOPMENT ? true : false;
9
+ const FLOWNET_WATCH = process.env.FLOWNET_WATCH ? true : false;
10
+
9
11
  const extensions = [".ts", ".tsx", ".js", ".jsx", ".json"];
10
12
 
11
13
  {% if atom.doc.features.copy_enabled===true %}
@@ -88,7 +90,7 @@ const initPlugins = async (options) => {
88
90
  const {default:copy} = await import('rollup-plugin-copy');
89
91
  plugins.push(copy(options.copy.options));
90
92
 
91
- if (DEVELOPMENT) watchFiles(options.copy.options.targets);
93
+ if (FLOWNET_WATCH) watchFiles(options.copy.options.targets);
92
94
  }
93
95
  {% endif %}
94
96
 
@@ -259,7 +261,7 @@ const initPlugins = async (options) => {
259
261
 
260
262
  {# BROWSERSYNC #}
261
263
  {% if atom.doc.features.browsersync_enabled===true %}
262
- if (options.browsersync && DEVELOPMENT) {
264
+ if (options.browsersync && FLOWNET_WATCH) {
263
265
  const {default:browsersync} = await import('@fnet/rollup-plugin-browsersync');
264
266
  options.browsersync.middleware = function (req, res, next) {
265
267
  if (req.method === 'OPTIONS') {
@@ -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"@flownet/lib-parse-npm-path";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:w}){await l({message:"Deploying it as npm package."});const y=c.projectDir,b=t.resolve(y,"package.json"),h=e.readFileSync(b),j=JSON.parse(h);j.name=f.params.name,j.version=r.inc(f.version,"patch");const u=f.params.bin?.name||f.params.bin;!1!==f.params.bin?.enabled&&u&&"string"==typeof u&&(j.bin={[u]:"dist/cli/esm/index.js"}),delete j.scripts,delete j.devDependencies,j.scripts={serve:"npx serve ."},e.writeFileSync(b,JSON.stringify(j,null,"\t"));const g=f.config||"npm";let v=(await i({name:g,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,`${g}.fnet`),n.stringify(o)),v=o}if(e.writeFileSync(t.resolve(y,".npmrc"),`//registry.npmjs.org/:_authToken=${v.env.NPM_TOKEN}`),!0!==f.dryRun){if(m("bun")){if(0!==(await o("bun publish --access public",{cwd:y})).code)throw new Error("Couldnt publish to npm")}else{if(0!==(await o("npm publish --access public",{cwd:y})).code)throw new Error("Couldnt publish to npm")}e.writeFileSync(b,h),d.isDirty=!0,f.version=j.version,w.set("version",j.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"@flownet/lib-parse-npm-path";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}),p=e.dirname(n);m.features=m.features||{};const l=m.features;l.runtime=l.runtime||{},l.runtime.type=l.runtime.type||"node","python"===l.runtime.type?l.runtime.template=l.runtime.template||"python":"bun"===l.runtime.type?l.runtime.template=l.runtime.template||"bun":l.runtime.template=l.runtime.template||"node";const a={libraryAtom:{doc:{...m},fileName:"index"},projectDir:p,projectFilePath:n,projectFileContent:s,projectFileParsed:m,runtime:l.runtime};let c=e.resolve(p,"fnet/targets.yaml");if(!t.existsSync(c)&&(c=e.resolve(p,"node.devops.yaml"),t.existsSync(c))){const o=e.resolve(p,"fnet");t.existsSync(o)||t.mkdirSync(o),t.copyFileSync(c,e.resolve(p,"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(p,"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: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"@fnet/config";import"node:util";import"tree-kill";import"node:child_process";import"node:os";import"@flownet/lib-render-templates-dir";import"@fnet/shelljs";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/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:l,parsed:a}=await o({file:n,tags:i}),c=e.dirname(n);a.features=a.features||{};const p=a.features;let m;if(p.runtime=p.runtime||{},p.runtime.type=p.runtime.type||"node","object"==typeof a.flows)m=a.flows;else{let r="flow.main.yaml";t.existsSync(e.join(c,"fnet","flows.yaml"))&&(r=e.join("fnet","flows.yaml"));const n=a.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 f={workflowAtom:{doc:{...a,content:m}},projectDir:c,projectFilePath:n,projectFileContent:l,projectFileParsed:a,runtime:p.runtime};let d=e.resolve(c,"fnet/targets.yaml");if(t.existsSync(d)){const{raw:e,parsed:n}=await o({file:d,tags:i}),s=r.parseDocument(e);f.devops={filePath:d,fileContent:e,yamlDocument:s,doc:{...n},type:"workflow.deploy",save:async()=>{t.writeFileSync(f.devops.filePath,s.toString())}}}const u=e.resolve(c,"readme.md");if(t.existsSync(u)){const e=t.readFileSync(u,"utf8");f.readme={filePath:u,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return f}({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 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 y,k as w,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 y={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&&(y.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&&(y.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&&(y.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&&(y.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&&(y.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||{}},y.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||{}},y.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 w={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(w,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(y,r.rollup_output||r.rollup?.output||{}),r.preact_enabled=!0===r.preact||r.preact&&!1!==r.preact?.enabled;let x=Object.keys(y);for(const e of x){const t=y[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 $ 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"}),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 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 y(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 w(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{$ as default};
@@ -1 +0,0 @@
1
- import e from"node:fs";import t from"node:path";import a from"nunjucks";import i from"@flownet/lib-parse-imports-js";import s from"@flownet/lib-parse-node-url";import{B as r,c as o,a as n}from"./index.DBxLarjt.js";import p from"lodash.merge";import{i as l,a as c,b as d,c as m,d as f,p as u,e as h,g as y,h as _,j as b,k as x,l as g,m as j,r as w}from"./index.BqI7rTjk.js";import v from"@fnet/npm-list-versions";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"@fnet/shelljs";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 k({dir:a,name:i="index"}){let s=t.resolve(a,`./${i}.tsx`);if(e.existsSync(s)||(s=t.resolve(a,`./${i}.ts`)),e.existsSync(s)||(s=t.resolve(a,`./${i}.jsx`)),e.existsSync(s)||(s=t.resolve(a,`./${i}.js`)),!e.existsSync(s))return{};const r=s,o=t.extname(s);return{file:r,ext:o,ts:".ts"===o||".tsx"===o,name:i}}class D extends r{async initRuntime(){await async function({atom:e,context:a,setProgress:s}){await s({message:"Initializing features..."}),e.doc.features=e.doc.features||{};const r=e.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 o=t.resolve(a.project.projectDir),n=k({dir:t.resolve(o,"./app")});if(n.file){s("Parsing app entry imports...");let e=await i({file:n.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 i({file:n.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),r.app_entry_uses_jsx=t,r.app_entry_is_ts=n.ts,r.app_entry_ext=n.ext}const u=k({dir:t.resolve(o,"./cli")});if(u.file){s("Parsing cli entry imports...");let e=await i({file:u.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 i({file:u.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),r.cli_entry_uses_jsx=t,r.cli_entry_is_ts=u.ts,r.cli_entry_ext=u.ext}if("workflow.lib"===e.type){const e=k({dir:t.resolve(o,"./src")});if(e.file){s("Parsing src entry imports...");let t=await i({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 i({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,y=Reflect.has(r,"cli_entry_uses_jsx")?!0===r.cli_entry_uses_jsx:!0===r.src_entry_uses_jsx;r.form_enabled=h||y||!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===e.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||"esm",r.app.dir=`./dist/app/${r.app.folder}`,r.app.html=!1!==r.app.html,!1===r.cli?r.cli={enabled:!1}:!0===r.cli?r.cli={enabled:!0,extend:!0===r.cli_has_entry,export:!0,react:y}:r.cli={enabled:!0,extend:!0===r.cli_has_entry,export:!0,react:y,...r.cli||{}},r.cli.enabled=!0===r.cli.enabled&&(!1===e.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.dir=`./dist/cli/${r.cli.folder}`,r.cli.node_options=r.cli.node?.options||r.cli.node_options||"",r.json=r.cli.enabled||r.json,r.bun=r.bun||{},r.bun.build=r.bun.build||{};const _={default:{format:"esm",target:"browser",minify:!1,sourcemap:"external",entrypoints:["./src/default/index.js"],outdir:"./dist/default/esm"},defaultCjs:{format:"cjs",target:"node",minify:!1,sourcemap:"external",entrypoints:["./src/default/index.js"],outdir:"./dist/default/cjs"}};r.cli.enabled&&(_.cli={format:"esm",target:"node",minify:!1,sourcemap:"external",entrypoints:["./src/cli/index.js"],outdir:r.cli.dir}),r.app.enabled&&(_.app={format:"esm",target:"browser",minify:!1,sourcemap:"external",entrypoints:["./src/app/index.js"],outdir:r.app.dir}),r.bun.build=p(_,r.bun.build||{}),r.preact_enabled=!0===r.preact||r.preact&&!1!==r.preact?.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,r.runtime=r.runtime||{},r.runtime.type="bun",r.runtime.template="bun",l({atom:e}),c({atom:e}),d({atom:e}),m({atom:e}),f({atom:e})}(this.apiContext),await async function({atom:e,packageDependencies:t,packageDevDependencies:a,setProgress:i}){i("Initializing dependencies for Bun");const s=e.doc.dependencies||[];if(s.filter((e=>!e.dev)).forEach((e=>t.push(e))),s.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";i("Fetching React versions"),a=`^${(await v({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 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 i=a[e],s=await this.findAtomLibrary({url:i.name});i.atom=s;const r=s.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));r?.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=s({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"),s=await i({file:a,recursive:!0}),r=e.doc.dependencies,o=s.all;for await(const e of o){if("npm"!==e.type)continue;if(r.find((t=>t.package===e.package)))continue;const t=await u({name:e.package,projectDir:this.context.projectDir,setProgress:this.apiContext.setProgress});r.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 i=a.filter((e=>"atom"===e.type));for(let a=0;a<i.length;a++){const s=i[a].atom,r=this.context.projectDir;if("local:"===s.protocol){const a=t.resolve(this.context.projectSrcDir,`${s.fileName||s.name}.js`),i=t.relative(t.join(this.context.projectDir,"src","default"),a);if(!e.existsSync(a)){e.mkdirSync(t.dirname(a),{recursive:!0});let i="export default async (input)=>{\n";i+="}",e.writeFileSync(a,i,"utf8")}s.relativePath=i.split(t.sep).join("/"),this.atom.typesDir=`./types/${t.basename(r)}/src`}else{const a=t.join(r,"src","libs",`${s.id}.js`),i=s.doc.contents?.find((e=>"esm"===e.format))||s.doc;e.writeFileSync(a,i.content,"utf8")}}}async createEngine(){await this.setProgress({message:"Creating engine file."});const i={libs:this.libs.filter((e=>"atom"===e.type)),libraryAtom:this.atom,atom:this.atom},s=this.context.templateDir,r=a.compile(e.readFileSync(t.resolve(s,t.join("src","default","engine.js.njk")),"utf8"),this.apiContext.njEnv).render(i),o=this.context.projectDir,n=t.resolve(o,t.join("src","default","index.js"));e.writeFileSync(n,r,"utf8")}async build(){try{this.fileMode&&(await this.createAtomLibFiles({libs:this.libs}),await this.createEngine(),await this.createProjectYaml(),await o(this.apiContext),await h(this.apiContext),await n(this.apiContext),await y(this.apiContext),await _(this.apiContext),await b(this.apiContext),await async function({atom:i,setProgress:s,context:r,packageDependencies:o}){await s({message:"Creating build.js file."});const n={atom:i,packageDependencies:o},p=r.templateDir,l=a.compile(e.readFileSync(t.resolve(p,"build.js.njk"),"utf8"),a.configure(p)).render(n),c=r.projectDir,d=t.resolve(c,"build.js");e.writeFileSync(d,l,"utf8"),e.chmodSync(d,"755")}(this.apiContext),await x(this.apiContext),await g(this.apiContext),this.buildMode&&(await j(this.apiContext),await w(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{D as default};
@@ -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 n from"@fnet/object-from-schema";import s from"yaml";import{r as m,w as p}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"@fnet/prompt";import"fs";import"path";import"@fnet/shell-flow";async function c({atom:a,setProgress:c,context:l,deploymentProject:f,deploymentProjectTarget:d,yamlTarget:y}){await c({message:"Deploying it as npm package."});const g=l.projectDir,w=t.resolve(g,"package.json"),u=e.readFileSync(w),h=JSON.parse(u);h.name=d.params.name,h.version=r.inc(d.version,"patch");const b=d.params.bin?.name||d.params.bin;!1!==d.params.bin?.enabled&&b&&"string"==typeof b&&(h.bin={[b]:"dist/cli/esm/index.js"}),delete h.scripts,delete h.devDependencies,h.scripts={serve:"npx serve ."},e.writeFileSync(w,JSON.stringify(h,null,"\t"));const v=d.config||"npm";let j=(await i({name:v,dir:l.projectDir,tags:l.tags,optional:!0}))?.data;if(!j){const r=m("./template/schemas/to-npm.yaml"),o=await n({schema:r,tags:l.tags}),i=l.project.projectDir,p=t.resolve(i,".fnet");e.existsSync(p)||e.mkdirSync(p),e.writeFileSync(t.resolve(p,`${v}.fnet`),s.stringify(o)),j=o}if(e.writeFileSync(t.resolve(g,".npmrc"),`//registry.npmjs.org/:_authToken=${j.env.NPM_TOKEN}`),!0!==d.dryRun){if(p("bun")){if(0!==(await o("bun publish --access public",{cwd:g})).code)throw new Error("Couldnt publish to npm")}else{if(0!==(await o("npm publish --access public",{cwd:g})).code)throw new Error("Couldnt publish to npm")}e.writeFileSync(w,u),f.isDirty=!0,d.version=h.version,y.set("version",h.version)}}t.dirname(a(import.meta.url)),process.cwd();export{c as default};