@fnet/cli 0.4.25 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/dist/fbin/index.js +15 -0
  2. package/dist/fnet/index.0jcm9pn5.js +1 -0
  3. package/dist/fnet/index.2084z2ed.js +2 -0
  4. package/dist/fnet/index.33f1ggpr.js +1 -0
  5. package/dist/fnet/index.3exge2js.js +1 -0
  6. package/dist/fnet/index.3kfx538h.js +1 -0
  7. package/dist/fnet/index.490y87nc.js +1 -0
  8. package/dist/fnet/index.4g9yezkq.js +1 -0
  9. package/dist/fnet/index.4jkat7r4.js +1 -0
  10. package/dist/fnet/index.7crx8ky1.js +1 -0
  11. package/dist/fnet/index.7vw06nrn.js +1 -0
  12. package/dist/fnet/index.9567fa9x.js +1 -0
  13. package/dist/fnet/index.gh75wt1m.js +1 -0
  14. package/dist/fnet/index.hzsfswvp.js +1 -0
  15. package/dist/fnet/index.jgpc3grc.js +1 -0
  16. package/dist/fnet/index.js +20 -0
  17. package/dist/fnet/index.p0zb7e1b.js +1 -0
  18. package/dist/fnet/index.r19p3bpa.js +2 -0
  19. package/dist/fnet/index.r82rtnmz.js +1 -0
  20. package/dist/fnet/index.s662t98v.js +1 -0
  21. package/dist/fnet/index.w74dpnpn.js +1 -0
  22. package/dist/fnet/index.xeaw5xa9.js +1 -0
  23. package/dist/fnet/index.zm4kesg6.js +1 -0
  24. package/dist/fnode/index.05n3mvs9.js +2 -0
  25. package/dist/fnode/index.2hc9tbyx.js +1 -0
  26. package/dist/fnode/index.2pnjg6dc.js +1 -0
  27. package/dist/fnode/index.9qgtmxq3.js +2 -0
  28. package/dist/fnode/index.b1q7y05p.js +1 -0
  29. package/dist/fnode/index.bhapgrs7.js +1 -0
  30. package/dist/fnode/index.cvxrf34y.js +2 -0
  31. package/dist/fnode/index.dp9wyahp.js +1 -0
  32. package/dist/fnode/index.eqxmcpdc.js +1 -0
  33. package/dist/fnode/index.f2tb0x3t.js +1 -0
  34. package/dist/fnode/index.fbzv6wwf.js +1 -0
  35. package/dist/fnode/index.gazd9raq.js +1 -0
  36. package/dist/fnode/index.hv4s25f0.js +3 -0
  37. package/dist/fnode/index.j5z7dtsx.js +1 -0
  38. package/dist/fnode/index.js +10 -0
  39. package/dist/fnode/index.kb4e4bxf.js +1 -0
  40. package/dist/fnode/index.qn0schqp.js +1 -0
  41. package/dist/fnode/index.rht29phd.js +1 -0
  42. package/dist/fnode/index.rzsfmek6.js +3 -0
  43. package/dist/fnode/index.s0nk6cv8.js +4 -0
  44. package/dist/fnode/index.s66v6wt4.js +1 -0
  45. package/dist/fnode/index.sv7v0y60.js +1 -0
  46. package/dist/fnode/index.tgkhgnrp.js +1 -0
  47. package/dist/fnode/index.vq706f75.js +1 -0
  48. package/dist/fnode/index.y8pvdcny.js +1 -0
  49. package/dist/fnode/index.z4vz93ww.js +1 -0
  50. package/dist/frun/index.js +2 -0
  51. package/dist/fservice/index.js +19 -0
  52. package/dist/fservice/index.q01yvaz0.js +2 -0
  53. package/package.json +74 -57
  54. package/readme.md +298 -0
  55. package/template/fnet/core/assert.js +6 -0
  56. package/template/fnet/core/message.js +3 -0
  57. package/template/fnet/core/object.js +47 -0
  58. package/template/fnet/core/sleep.js +5 -0
  59. package/template/fnet/node/.gitignore.njk +9 -0
  60. package/template/fnet/node/build.js.njk +153 -0
  61. package/template/fnet/node/package.json.njk +121 -0
  62. package/template/fnet/node/readme.md.njk +21 -0
  63. package/template/fnet/node/rollup.config.mjs.njk +498 -0
  64. package/template/fnet/node/src/app/index.html.njk +67 -0
  65. package/template/fnet/node/src/app/index.js.njk +36 -0
  66. package/template/fnet/node/src/cli/index.js.njk +9 -0
  67. package/template/fnet/node/src/cli/index.js.v1.njk +318 -0
  68. package/template/fnet/node/src/cli/v2/core/args-parser.njk +10 -0
  69. package/template/fnet/node/src/cli/v2/core/imports.njk +31 -0
  70. package/template/fnet/node/src/cli/v2/core/run-wrapper.njk +25 -0
  71. package/template/fnet/node/src/cli/v2/index.js.njk +184 -0
  72. package/template/fnet/node/src/cli/v2/modes/default/extend.njk +11 -0
  73. package/template/fnet/node/src/cli/v2/modes/default/standard.njk +20 -0
  74. package/template/fnet/node/src/cli/v2/modes/http/builtin.njk +66 -0
  75. package/template/fnet/node/src/cli/v2/modes/http/imports.njk +9 -0
  76. package/template/fnet/node/src/cli/v2/modes/http/index.njk +12 -0
  77. package/template/fnet/node/src/cli/v2/modes/mcp/imports.njk +33 -0
  78. package/template/fnet/node/src/cli/v2/modes/mcp/index.njk +30 -0
  79. package/template/fnet/node/src/cli/v2/modes/mcp/server-setup.njk +15 -0
  80. package/template/fnet/node/src/cli/v2/modes/mcp/tool-handlers.njk +46 -0
  81. package/template/fnet/node/src/cli/v2/modes/mcp/transport-http.njk +222 -0
  82. package/template/fnet/node/src/cli/v2/modes/mcp/transport-stdio.njk +9 -0
  83. package/template/fnet/node/src/cli/v2/modes/pipeline/imports.njk +9 -0
  84. package/template/fnet/node/src/cli/v2/modes/pipeline/index.njk +113 -0
  85. package/template/fnet/node/src/cli/v2/modes/webhook/imports.njk +9 -0
  86. package/template/fnet/node/src/cli/v2/modes/webhook/index.njk +127 -0
  87. package/template/fnet/node/src/cli/v2/modes/websocket/imports.njk +15 -0
  88. package/template/fnet/node/src/cli/v2/modes/websocket/index.njk +104 -0
  89. package/template/fnet/node/src/default/blocks/assign.js.njk +15 -0
  90. package/template/fnet/node/src/default/blocks/call.js.njk +110 -0
  91. package/template/fnet/node/src/default/blocks/for.js.njk +71 -0
  92. package/template/fnet/node/src/default/blocks/form.js.njk +31 -0
  93. package/template/fnet/node/src/default/blocks/http.js.njk +135 -0
  94. package/template/fnet/node/src/default/blocks/modules.js.njk +15 -0
  95. package/template/fnet/node/src/default/blocks/new.js.njk +42 -0
  96. package/template/fnet/node/src/default/blocks/next.js.njk +15 -0
  97. package/template/fnet/node/src/default/blocks/output.js.njk +15 -0
  98. package/template/fnet/node/src/default/blocks/parallel.js.njk +64 -0
  99. package/template/fnet/node/src/default/blocks/pipeline.js.njk +109 -0
  100. package/template/fnet/node/src/default/blocks/raise.js.njk +15 -0
  101. package/template/fnet/node/src/default/blocks/retry.js.njk +70 -0
  102. package/template/fnet/node/src/default/blocks/return.js.njk +21 -0
  103. package/template/fnet/node/src/default/blocks/schedule.js.njk +66 -0
  104. package/template/fnet/node/src/default/blocks/signal.js.njk +15 -0
  105. package/template/fnet/node/src/default/blocks/steps.js.njk +47 -0
  106. package/template/fnet/node/src/default/blocks/switch.js.njk +49 -0
  107. package/template/fnet/node/src/default/blocks/tryexcept.js.njk +80 -0
  108. package/template/fnet/node/src/default/blocks/wait.js.njk +14 -0
  109. package/template/fnet/node/src/default/engine.js.njk +79 -0
  110. package/template/fnet/node/src/default/input.args.js.njk +125 -0
  111. package/template/fnet/node/src/default/macros/block-assign.js.njk +3 -0
  112. package/template/fnet/node/src/default/macros/block-body-header.js.njk +7 -0
  113. package/template/fnet/node/src/default/macros/block-entry-args.js.njk +2 -0
  114. package/template/fnet/node/src/default/macros/block-footer.js.njk +3 -0
  115. package/template/fnet/node/src/default/macros/block-header.js.njk +11 -0
  116. package/template/fnet/node/src/default/macros/block-library-header.js.njk +43 -0
  117. package/template/fnet/node/src/default/macros/block-modules-header.js.njk +8 -0
  118. package/template/fnet/node/src/default/macros/block-modules.js.njk +29 -0
  119. package/template/fnet/node/src/default/macros/block-next-header.js.njk +6 -0
  120. package/template/fnet/node/src/default/macros/block-next.js.njk +21 -0
  121. package/template/fnet/node/src/default/macros/block-run-footer.js.njk +7 -0
  122. package/template/fnet/node/src/default/macros/block-run-form.js.njk +32 -0
  123. package/template/fnet/node/src/default/macros/block-run-header.js.njk +43 -0
  124. package/template/fnet/node/src/default/macros/block-signal.js.njk +3 -0
  125. package/template/fnet/node/src/default/macros/page.js.njk +8 -0
  126. package/template/fnet/node/src/default/types/block.js.njk +133 -0
  127. package/template/fnet/node/src/default/workflow.js.njk +125 -0
  128. package/template/fnet/node/tsconfig.json.njk +16 -0
  129. package/template/fnet/project/.gitignore.njk +7 -0
  130. package/template/fnet/project/.vscode/launch.json.njk +41 -0
  131. package/template/fnet/project/.vscode/tasks.json.njk +46 -0
  132. package/template/fnet/project/fnet/flows.yaml.njk +4 -0
  133. package/template/fnet/project/fnet/targets.yaml.njk +7 -0
  134. package/template/fnet/project/fnet.yaml.njk +3 -0
  135. package/template/fnode/node/.gitignore.njk +9 -0
  136. package/template/fnode/node/build.js.njk +149 -0
  137. package/template/fnode/node/package.json.njk +121 -0
  138. package/template/fnode/node/readme.md.njk +21 -0
  139. package/template/fnode/node/rollup.config.mjs.njk +498 -0
  140. package/template/fnode/node/src/app/index-js-with-react-host.njk +50 -0
  141. package/template/fnode/node/src/app/index-js-without-react-host.njk +23 -0
  142. package/template/fnode/node/src/app/index.html.njk +67 -0
  143. package/template/fnode/node/src/app/index.js.njk +9 -0
  144. package/template/fnode/node/src/cli/index.js.njk +9 -0
  145. package/template/fnode/node/src/cli/index.js.v1.njk +464 -0
  146. package/template/fnode/node/src/cli/v2/core/args-parser.njk +10 -0
  147. package/template/fnode/node/src/cli/v2/core/imports.njk +29 -0
  148. package/template/fnode/node/src/cli/v2/core/run-wrapper.njk +25 -0
  149. package/template/fnode/node/src/cli/v2/index.js.njk +184 -0
  150. package/template/fnode/node/src/cli/v2/modes/default/extend.njk +11 -0
  151. package/template/fnode/node/src/cli/v2/modes/default/standard.njk +19 -0
  152. package/template/fnode/node/src/cli/v2/modes/http/builtin.njk +61 -0
  153. package/template/fnode/node/src/cli/v2/modes/http/imports.njk +9 -0
  154. package/template/fnode/node/src/cli/v2/modes/http/index.njk +12 -0
  155. package/template/fnode/node/src/cli/v2/modes/mcp/imports.njk +33 -0
  156. package/template/fnode/node/src/cli/v2/modes/mcp/index.njk +30 -0
  157. package/template/fnode/node/src/cli/v2/modes/mcp/server-setup.njk +15 -0
  158. package/template/fnode/node/src/cli/v2/modes/mcp/tool-handlers.njk +41 -0
  159. package/template/fnode/node/src/cli/v2/modes/mcp/transport-http.njk +212 -0
  160. package/template/fnode/node/src/cli/v2/modes/mcp/transport-stdio.njk +9 -0
  161. package/template/fnode/node/src/cli/v2/modes/pipeline/imports.njk +9 -0
  162. package/template/fnode/node/src/cli/v2/modes/pipeline/index.njk +103 -0
  163. package/template/fnode/node/src/cli/v2/modes/webhook/imports.njk +9 -0
  164. package/template/fnode/node/src/cli/v2/modes/webhook/index.njk +122 -0
  165. package/template/fnode/node/src/cli/v2/modes/websocket/imports.njk +15 -0
  166. package/template/fnode/node/src/cli/v2/modes/websocket/index.njk +99 -0
  167. package/template/fnode/node/src/default/engine.js.njk +17 -0
  168. package/template/fnode/node/src/default/input.args.js.njk +126 -0
  169. package/template/fnode/node/tsconfig.json.njk +16 -0
  170. package/template/fnode/project/.gitignore.njk +11 -0
  171. package/template/fnode/project/.vscode/launch.json.njk +78 -0
  172. package/template/fnode/project/.vscode/tasks.json.njk +46 -0
  173. package/template/fnode/project/fnet/targets.yaml.njk +25 -0
  174. package/template/fnode/project/fnode.yaml.njk +12 -0
  175. package/template/fnode/python/.gitignore.njk +7 -0
  176. package/template/fnode/python/package.json.njk +4 -0
  177. package/template/fnode/python/pyproject.toml.njk +3 -0
  178. package/template/fnode/python/readme.md.njk +12 -0
  179. package/template/fnode/python/setup.py.njk +19 -0
  180. package/template/fnode/python/src/cli/index.py.njk +25 -0
  181. package/template/schemas/to-npm.yaml +14 -0
  182. package/dist/builder/lib-cli.js +0 -2
  183. package/dist/builder/wf-cli.js +0 -2
  184. package/dist/index.js +0 -2
@@ -0,0 +1,498 @@
1
+ import commonjs from "@rollup/plugin-commonjs";
2
+ import { nodeResolve as resolve } from "@rollup/plugin-node-resolve";
3
+ import external from "rollup-plugin-peer-deps-external";
4
+
5
+ import fs from 'fs-extra';
6
+ import path from 'path';
7
+
8
+ const DEVELOPMENT = process.env.DEVELOPMENT ? true : false;
9
+ const FLOWNET_WATCH = process.env.FLOWNET_WATCH ? true : false;
10
+
11
+ const extensions = [".ts", ".tsx", ".js", ".jsx", ".json"];
12
+
13
+ {% if atom.doc.features.copy_enabled===true %}
14
+ const copyFiles = async (src, dest) => {
15
+ try {
16
+ await fs.copy(src, dest);
17
+ console.log(`Copied files from ${src} to ${dest}`);
18
+ } catch (err) {
19
+ console.error('Error copying files:', err);
20
+ }
21
+ };
22
+
23
+ const watchFiles = async (targets) => {
24
+ const chokidar = await import('chokidar');
25
+ targets.forEach(target => {
26
+ const watcher = chokidar.watch(target.src, { persistent: true });
27
+
28
+ watcher.on('add', async filePath => {
29
+ const destPath = target.dest;
30
+ const relativePath = path.relative(path.dirname(target.src), filePath);
31
+ await copyFiles(filePath, path.join(destPath, relativePath));
32
+ });
33
+
34
+ watcher.on('change', async filePath => {
35
+ const destPath = target.dest;
36
+ const relativePath = path.relative(path.dirname(target.src), filePath);
37
+ await copyFiles(filePath, path.join(destPath, relativePath));
38
+ });
39
+
40
+ watcher.on('unlink', async filePath => {
41
+ const destPath = target.dest;
42
+ const relativePath = path.relative(path.dirname(target.src), filePath);
43
+ try {
44
+ await fs.remove(path.join(destPath, relativePath));
45
+ console.log(`Removed files from ${path.join(destPath, relativePath)}`);
46
+ } catch (err) {
47
+ console.error('Error removing files:', err);
48
+ }
49
+ });
50
+ });
51
+ };
52
+ {% endif %}
53
+
54
+ const initPlugins = async (options) => {
55
+ const plugins = [];
56
+
57
+ {# DELETE #}
58
+ if (options.delete) {
59
+ const {default:del} = await import('@fnet/rollup-plugin-delete');
60
+ plugins.push(del(options.delete));
61
+ }
62
+
63
+ {# REPLACE #}
64
+ if (options.replace) {
65
+ const {default:replace} = await import("@rollup/plugin-replace");
66
+ plugins.push(replace({
67
+ "process.env.NODE_ENV": JSON.stringify(DEVELOPMENT ? 'development' : 'production'),
68
+ preventAssignment: true,
69
+ ...options.replace
70
+ }));
71
+ }
72
+
73
+ {# ALIAS #}
74
+ if (options.alias) {
75
+ const {default:alias} = await import('@rollup/plugin-alias');
76
+ plugins.push(alias(options.alias));
77
+ }
78
+
79
+ {# NUNJUCKS #}
80
+ {% if atom.doc.features.nunjucks_enabled===true %}
81
+ if (options.nunjucks) {
82
+ const {default:nunjucks} = await import('@fnet/rollup-plugin-nunjucks');
83
+ plugins.push(nunjucks(options.nunjucks.options));
84
+ }
85
+ {% endif %}
86
+
87
+ {# COPY #}
88
+ {% if atom.doc.features.copy_enabled===true %}
89
+ if (options.copy) {
90
+ const {default:copy} = await import('rollup-plugin-copy');
91
+ plugins.push(copy(options.copy.options));
92
+
93
+ if (FLOWNET_WATCH) watchFiles(options.copy.options.targets);
94
+ }
95
+ {% endif %}
96
+
97
+ {# STRING #}
98
+ {% if atom.doc.features.string_enabled===true %}
99
+ if (options.string) {
100
+ const { string } = await import('rollup-plugin-string');
101
+ plugins.push(string(options.string.options));
102
+ }
103
+ {% endif %}
104
+
105
+ {# IMAGE #}
106
+ {% if atom.doc.features.image_enabled===true %}
107
+ if (options.image) {
108
+ const {default:image} = await import('@rollup/plugin-image');
109
+ plugins.push(image(options.image.options));
110
+ }
111
+ {% endif %}
112
+
113
+ {# WASM #}
114
+ {% if atom.doc.features.wasm_enabled===true %}
115
+ if (options.wasm) {
116
+ const { wasm } = await import('@rollup/plugin-wasm');
117
+ plugins.push(wasm(options.wasm.options));
118
+ }
119
+ {% endif %}
120
+
121
+ {# POSTCSS #}
122
+ {% if atom.doc.features.css_enabled===true %}
123
+ if (options.postcss) {
124
+ const {default:postcss} = await import('rollup-plugin-postcss');
125
+ const { plugins: cssPlugins, ...cssOptions } = options.postcss.options;
126
+ const postcssPlugins = [];
127
+
128
+ if (cssPlugins) {
129
+ for (const plugin of cssPlugins) {
130
+ let pluginLib;
131
+ switch (plugin.name) {
132
+ case "postcss-import":
133
+ pluginLib = (await import("postcss-import")).default;
134
+ break;
135
+ case "postcss-url":
136
+ pluginLib = (await import("postcss-url")).default;
137
+ break;
138
+ case "postcss-preset-env":
139
+ pluginLib = (await import("postcss-preset-env")).default;
140
+ break;
141
+ case "autoprefixer":
142
+ pluginLib = (await import("autoprefixer")).default;
143
+ break;
144
+ case "cssnano":
145
+ pluginLib = (await import("cssnano")).default;
146
+ break;
147
+ default:
148
+ continue;
149
+ }
150
+ postcssPlugins.push(pluginLib(plugin.options));
151
+ }
152
+ }
153
+
154
+ plugins.push(postcss({
155
+ ...cssOptions,
156
+ plugins: postcssPlugins
157
+ }));
158
+ }
159
+ {% endif %}
160
+
161
+ {# JSON #}
162
+ {% if atom.doc.features.json_enabled===true %}
163
+ if (options.json) {
164
+ const {default:json} = await import('@rollup/plugin-json');
165
+ plugins.push(json(options.json.options));
166
+ }
167
+ {% endif %}
168
+
169
+ {# EXTERNAL #}
170
+ plugins.push(external({
171
+ includeDependencies: !options.browser
172
+ }));
173
+
174
+ {# RESOLVE #}
175
+ plugins.push(resolve({
176
+ extensions: extensions,
177
+ browser: options?.browser === true,
178
+ preferBuiltins: true,
179
+ modulePaths: ['./node_modules']
180
+ }));
181
+
182
+ {# COMMONJS #}
183
+ plugins.push(commonjs({
184
+ {% if atom.doc.features.project.format ==='esm' %}
185
+ include: /node_modules/,
186
+ ignore: ["fsevents"],
187
+ {% endif %}
188
+ }));
189
+
190
+
191
+ {# POLYFILL #}
192
+ {% if atom.doc.features.polyfill_enabled===true %}
193
+ if(options.polyfill){
194
+ const {default:polyfills} = await import('rollup-plugin-node-polyfills');
195
+ plugins.push(polyfills(options.polyfill.options));
196
+ }
197
+ {% endif %}
198
+
199
+ {# WORKBOX #}
200
+ {% if atom.doc.features.workbox_enabled===true %}
201
+ if (options?.workbox) {
202
+ const {generateSW,injectManifest} = await import('rollup-plugin-workbox');
203
+ if(options.workbox.options?.generate) plugins.push(generateSW(options.workbox.options.generate));
204
+ if(options.workbox.options?.inject) plugins.push(injectManifest(options.workbox.options.inject));
205
+ }
206
+ {% endif %}
207
+
208
+ {# BABEL #}
209
+ {% if atom.doc.features.babel_enabled===true %}
210
+ if (options?.babel) {
211
+ const { babel } = await import('@rollup/plugin-babel');
212
+ plugins.push(
213
+ babel({
214
+ babelHelpers: "bundled",
215
+ presets: [
216
+ ["@babel/preset-env", {
217
+ targets: options.babel.targets || "defaults",
218
+ }],
219
+ ["@babel/preset-react"]
220
+ ],
221
+ extensions: extensions,
222
+ exclude: "node_modules/**",
223
+ plugins: options.babel.plugins || [],
224
+ sourceMaps: DEVELOPMENT
225
+ })
226
+ );
227
+ }
228
+ {% endif %}
229
+
230
+ {# TERSER #}
231
+ {% if atom.doc.features.terser_enabled===true %}
232
+ if (options.terser) {
233
+ const {default:terser} = await import("@rollup/plugin-terser");
234
+ plugins.push(terser(options.terser.options));
235
+ }
236
+ {% endif %}
237
+
238
+ {# GZIP #}
239
+ {% if atom.doc.features.gzip_enabled===true %}
240
+ if (options.gzip) {
241
+ const {default:gzip} = await import('rollup-plugin-gzip');
242
+ if(options.gzip.options) plugins.push(gzip(options.gzip.options));
243
+ }
244
+ {% endif %}
245
+
246
+ {# ANALYZER #}
247
+ {% if atom.doc.features.analyzer_enabled===true %}
248
+ if (options.analyzer) {
249
+ const { default: analyzer } = await import("rollup-plugin-analyzer");
250
+ plugins.push(analyzer(options.analyzer.options));
251
+ }
252
+ {% endif %}
253
+
254
+ {# VISUALIZER #}
255
+ {% if atom.doc.features.visualizer_enabled===true %}
256
+ if (options.visualizer) {
257
+ const { visualizer } = await import("rollup-plugin-visualizer");
258
+ plugins.push(visualizer(options.visualizer.options));
259
+ }
260
+ {% endif %}
261
+
262
+ {# BROWSERSYNC #}
263
+ {% if atom.doc.features.browsersync_enabled===true %}
264
+ if (options.browsersync && FLOWNET_WATCH) {
265
+ const {default:browsersync} = await import('@fnet/rollup-plugin-browsersync');
266
+ options.browsersync.middleware = function (req, res, next) {
267
+ if (req.method === 'OPTIONS') {
268
+ res.setHeader('Access-Control-Allow-Origin', '*');
269
+ res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS');
270
+ res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
271
+ res.setHeader('Access-Control-Allow-Credentials', true);
272
+ res.end();
273
+ } else {
274
+ next();
275
+ }
276
+ };
277
+ plugins.push(browsersync(options.browsersync));
278
+ }
279
+ {% endif %}
280
+
281
+ return plugins;
282
+ }
283
+
284
+ const groups = [
285
+ { name: "default" }
286
+ ];
287
+
288
+ const configs = [];
289
+
290
+ const createConfigs = async () => {
291
+ for (const group of groups) {
292
+ let groupDir = path.normalize(`./dist/${group.name}/`);
293
+ if (!fs.existsSync(groupDir)) {
294
+ fs.mkdirSync(groupDir, { recursive: true });
295
+ }
296
+
297
+ {% for key, value in atom.doc.features.rollup_output %}
298
+ {% if value and value.enabled !== false %}
299
+ {
300
+ // {{key | upper}}
301
+ const config = {
302
+ input: path.normalize(`{{value.input or 'src/${group.name}/index.js'}}`),
303
+ output: {
304
+ dir: path.normalize(`{{value.output_dir or 'dist/${group.name}/' + key}}`),
305
+ format: "{{value.format}}",
306
+ {% if atom.doc.features.sourcemap === true %}
307
+ sourcemap: true,
308
+ {% endif %}
309
+ {% if value.format === 'cjs' %}
310
+ exports: "{{value.output_exports or 'named'}}",
311
+ interop: "auto",
312
+ entryFileNames: "[name].cjs",
313
+ chunkFileNames: "[name]-[hash].cjs",
314
+ {% endif %}
315
+ {# BEGIN: rollup_config_output_name #}
316
+ {% if value.format==='iife' or value.format==='umd'%}
317
+ name: "{{atom.doc.bundleName}}",
318
+ {% endif %}
319
+ {# END: rollup_config_output_name #}
320
+ {# BEGIN: rollup_config_output_globals #}
321
+ {% if value.browser===true %}
322
+ {% if value.globals.length %}
323
+ globals: {
324
+ {% for global in value.globals %}
325
+ "{{global.key}}":"{{global.value}}" {% if not loop.last %},{% endif %}
326
+ {% endfor %}
327
+ },
328
+ {% endif %}
329
+ {% endif %}
330
+ {# END: rollup_config_output_globals #}
331
+ {# BEGIN: rollup_config_output_banner #}
332
+ {% if value.banner %}
333
+ banner:'{{value.banner}}',
334
+ {% endif %}
335
+ {# END: rollup_config_output_banner #}
336
+ {# BEGIN: rollup_config_output_footer #}
337
+ {% if value.format==='iife' %}
338
+ {% if atom.type==='workflow'%}
339
+ {# footer: "new {{atom.doc.bundleName}}().run().catch(e=>{});" #}
340
+ {% endif %}
341
+ {% endif %}
342
+ {# END: rollup_config_output_footer #}
343
+ },
344
+ {% if value.context %}
345
+ context: "{{value.context}}",
346
+ {% endif %}
347
+ {# BEGIN: rollup_config_external #}
348
+ {% if value.external_enabled %}
349
+ external: [
350
+ {% for external in value.external %}
351
+ "{{external}}" {% if not loop.last %},{% endif %}
352
+ {% endfor %}
353
+ ],
354
+ {% endif %}
355
+ {# END: rollup_config_external #}
356
+ {# BEGIN: rollup_config_onwarn #}
357
+ onwarn(warning, warn) {
358
+ switch (warning.code) {
359
+ case 'MODULE_LEVEL_DIRECTIVE':
360
+ case 'CIRCULAR_DEPENDENCY':
361
+ return;
362
+ default:
363
+ warn(warning);
364
+ }
365
+ },
366
+ {# END: rollup_config_onwarn #}
367
+ {# BEGIN: rollup_config_plugins #}
368
+ plugins: await initPlugins({
369
+ delete:{ targets: [path.normalize(groupDir + '{{key}}')], runOnce: DEVELOPMENT },
370
+
371
+ format:"{{ value.format }}",
372
+
373
+ {% if value.babel===true %}
374
+ babel:{{value.babel_options | dump | safe}},
375
+ {% endif %}
376
+
377
+ {% if value.replace ===true %}
378
+ replace:{{value.replace_options | dump | safe}},
379
+ {% endif %}
380
+
381
+ {% if value.browser===true %}
382
+ browser:true,
383
+ {% endif %}
384
+
385
+ {% if value.browsersync===true and atom.doc.features.browsersync_enabled===true%}
386
+ browsersync: {{value.browsersync_options | dump | safe}},
387
+ {% endif %}
388
+
389
+ {% if value.alias_enabled===true %}
390
+ alias:{{value.alias | dump | safe}},
391
+ {% endif %}
392
+
393
+ {# OK #}
394
+ {% if value.css %}
395
+ postcss:{{value.css | dump | safe}},
396
+ {% endif %}
397
+
398
+ {# OK #}
399
+ {% if value.copy %}
400
+ copy:{{value.copy | dump | safe}},
401
+ {% endif %}
402
+
403
+ {# OK #}
404
+ {% if value.terser%}
405
+ terser:{{value.terser | dump | safe}},
406
+ {% endif %}
407
+
408
+ {# OK #}
409
+ {% if value.json %}
410
+ json:{{value.json | dump | safe}},
411
+ {% endif %}
412
+
413
+ {# OK #}
414
+ {% if value.wasm %}
415
+ wasm: {{value.wasm | dump | safe}},
416
+ {% endif %}
417
+
418
+ {# OK #}
419
+ {% if value.string %}
420
+ string:{{value.string | dump | safe}},
421
+ {% endif %}
422
+
423
+ {# OK #}
424
+ {% if value.image %}
425
+ image:{{value.image | dump | safe}},
426
+ {% endif %}
427
+
428
+ {# OK #}
429
+ {% if value.analyzer %}
430
+ analyzer:{{value.analyzer | dump | safe}},
431
+ {% endif %}
432
+
433
+ {# OK #}
434
+ {% if value.visualizer %}
435
+ visualizer:{{value.visualizer | dump | safe}},
436
+ {% endif %}
437
+
438
+ {# OK #}
439
+ {% if value.polyfill %}
440
+ polyfill:{{value.polyfill | dump | safe}},
441
+ {% endif %}
442
+
443
+ {# OK #}
444
+ {% if value.nunjucks %}
445
+ nunjucks:{{value.nunjucks | dump | safe}},
446
+ {% endif %}
447
+
448
+ {# OK #}
449
+ {% if value.workbox %}
450
+ workbox:{{value.workbox | dump | safe}},
451
+ {% endif %}
452
+
453
+ {# OK #}
454
+ {% if value.gzip %}
455
+ gzip:{{value.gzip | dump | safe}},
456
+ {% endif %}
457
+ }),
458
+ {# END: rollup_config_plugins #}
459
+ }
460
+ configs.push(config);
461
+ }
462
+ {% endif %}
463
+ {% endfor %}
464
+ }
465
+
466
+ {# DTS #}
467
+ {% if atom.doc.features.dts_enabled ===true %}
468
+ const { dts } = await import("rollup-plugin-dts");
469
+ const typesConfig = {
470
+ input: path.normalize('{{atom.typesDir}}/default/index.d.ts'),
471
+ output: {
472
+ file: path.normalize("./dist/default/types/index.d.ts"),
473
+ format: "es"
474
+ },
475
+ plugins: [dts()],
476
+ }
477
+ configs.push(typesConfig);
478
+ {% endif %}
479
+ }
480
+
481
+ {% if atom.doc.features.render and atom.doc.features.render.enabled !== false %}
482
+ async function render(){
483
+ const { default:fnetRender } = await import('@flownet/lib-render-templates-dir');
484
+
485
+ const dirs={{atom.doc.features.render.dirs | default([]) | dump | safe}};
486
+
487
+ for (const dir of dirs) {
488
+ await fnetRender(dir);
489
+ }
490
+ }
491
+ {% endif %}
492
+ export default async () => {
493
+ {% if atom.doc.features.render and atom.doc.features.render.enabled !== false %}
494
+ await render();
495
+ {% endif %}
496
+ await createConfigs();
497
+ return configs;
498
+ };
@@ -0,0 +1,50 @@
1
+ {% if not atom.doc.features.react_version or atom.doc.features.react_version > 17 %}
2
+ import React from 'react';
3
+ import { createRoot } from 'react-dom/client';
4
+ {% else %}
5
+ import React from 'react';
6
+ import ReactDOM from 'react-dom';
7
+ {% endif %}
8
+
9
+ {% if atom.doc.features.react_app_state_enabled===true %}
10
+ import { Provider } from "@fnet/react-app-state";
11
+ {% endif%}
12
+
13
+ {% if atom.doc.features.app.extend===true %}
14
+ import Library from '../../../app';
15
+ {% elif atom.doc.features.multiple===true %}
16
+ const Library = React.Fragment;
17
+ {% else %}
18
+ import Library from '../../../src';
19
+ {% endif%}
20
+
21
+ export default function App(props) {
22
+ return (
23
+ {% if atom.doc.features.react_app_state_enabled===true %}
24
+ <Provider>
25
+ {% endif %}
26
+ <Library {...props} />
27
+ {% if atom.doc.features.react_app_state_enabled===true %}
28
+ </Provider>
29
+ {% endif %}
30
+ )
31
+ }
32
+
33
+ {% if not atom.doc.features.react_version or atom.doc.features.react_version > 17 %}
34
+ const createApp = ({ container }) => {
35
+ return (props) => {
36
+ const root = createRoot(container);
37
+ root.render(<App {...props} />);
38
+ return ()=> root.unmount();
39
+ }
40
+ }
41
+ {% else %}
42
+ const createApp = ({ container }) => {
43
+ return (props) => {
44
+ ReactDOM.render(<App {...props} />, container);
45
+ return () => ReactDOM.unmountComponentAtNode(container);
46
+ }
47
+ }
48
+ {% endif %}
49
+
50
+ export { createApp };
@@ -0,0 +1,23 @@
1
+ {% if atom.doc.features.app.export===true %}
2
+ {% if atom.doc.features.app.extend===true %}
3
+ import init from '../../../app';
4
+ const createApp = ({ container }) => {
5
+ return init({container});
6
+ };
7
+ export { createApp };
8
+ {% else %}
9
+ import Node from "../default";
10
+ const createApp = ({ container }) => {
11
+ return (props) => Node({ ...props, container });
12
+ };
13
+ export { createApp };
14
+ {% endif %}
15
+ {% else %}
16
+ {% if atom.doc.features.app.extend===true %}
17
+ import run from '../../../app';
18
+ run();
19
+ {% else %}
20
+ import Node from "../default";
21
+ Node();
22
+ {% endif %}
23
+ {% endif %}
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>{{atom.doc.title or atom.doc.name}}</title>
8
+
9
+ {% if atom.doc.features.css.options.extract===true %}
10
+ <link rel="stylesheet" href="./index.css" />
11
+ {% endif %}
12
+
13
+ {% if atom.doc.features.app.format==='iife' %}
14
+ <script src="./index.js"></script>
15
+ {% endif %}
16
+
17
+ </head>
18
+ <body style="height:100vh;margin:0;padding:0;background-color: #eeeeee;">
19
+ <div id="container" style="height:100%;"></div>
20
+ {% if atom.doc.features.app.export===true %}
21
+ {% if atom.doc.features.app.format==='esm' %}
22
+ <script type="module">
23
+ import { createApp } from "./index.js";
24
+ const run = createApp({container: document.getElementById("container")});
25
+ {% if atom.doc.features.app.props %}
26
+ const dispose=run({{ atom.doc.features.app.props | dump | safe }});
27
+ {% else %}
28
+ const dispose=run();
29
+ {% endif %}
30
+ </script>
31
+ {% endif %}
32
+
33
+ {% if atom.doc.features.app.format==='iife' %}
34
+ <script>
35
+ const { createApp } = window['{{atom.doc.bundleName}}'];
36
+ const run = createApp({container: document.getElementById("container")});
37
+ {% if atom.doc.features.app.props %}
38
+ const dispose=run({{ atom.doc.features.app.props | dump | safe }});
39
+ {% else %}
40
+ const dispose=run();
41
+ {% endif %}
42
+ </script>
43
+ {% endif %}
44
+ {% endif %}
45
+
46
+ {% if atom.doc.features.workbox_enabled %}
47
+ {% if atom.doc.features.rollup_output.app.workbox.enabled %}
48
+ <!-- Service Worker Registration -->
49
+ <script>
50
+ if ('serviceWorker' in navigator) {
51
+ window.addEventListener('load', () => {
52
+ navigator
53
+ .serviceWorker
54
+ .register('./sw.js', {scope: './'}) // Optionally add scope
55
+ .then((registration) => {
56
+ console.log('Service Worker registered with scope:', registration.scope);
57
+ })
58
+ .catch((error) => {
59
+ console.log('Service Worker registration failed:', error);
60
+ });
61
+ });
62
+ }
63
+ </script>
64
+ {% endif%}
65
+ {% endif%}
66
+ </body>
67
+ </html>
@@ -0,0 +1,9 @@
1
+ {% if atom.doc.features.app.enabled===true %}
2
+
3
+ {% if atom.doc.features.app.react===true %}
4
+ {% include "index-js-with-react-host.njk" %}
5
+ {% else %}
6
+ {% include "index-js-without-react-host.njk" %}
7
+ {% endif %}
8
+
9
+ {% endif %}
@@ -0,0 +1,9 @@
1
+ {% if atom.doc.features.cli.enabled===true %}
2
+
3
+ {% if atom.doc.features.cli.template.version ==='v1' %}
4
+ {% include "./index.js.v1.njk" %}
5
+ {% else %}
6
+ {% include "./v2/index.js.njk" %}
7
+ {% endif %}
8
+
9
+ {% endif %}