@fnet/cli 0.2.11 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/fbin/index.js +16 -2
- package/dist/fnet/index.11tp336m.js +2 -0
- package/dist/fnet/index.3rmtt0x7.js +2 -0
- package/dist/fnet/index.44a1c2n0.js +2 -0
- package/dist/fnet/index.75sm2tte.js +2 -0
- package/dist/fnet/index.899ypy57.js +2 -0
- package/dist/fnet/index.8m14r891.js +2 -0
- package/dist/fnet/index.a203h4q3.js +2 -0
- package/dist/fnet/index.aqy4k3s3.js +3 -0
- package/dist/fnet/index.csbtwe06.js +2 -0
- package/dist/fnet/index.efd8jxdg.js +2 -0
- package/dist/fnet/index.exfvnegm.js +2 -0
- package/dist/fnet/index.f1f463rw.js +2 -0
- package/dist/fnet/index.h0bm9hcc.js +2 -0
- package/dist/fnet/index.jkdwz7zj.js +2 -0
- package/dist/fnet/index.js +15 -2
- package/dist/fnet/index.knj6ydvb.js +2 -0
- package/dist/fnet/index.mhsc3fmv.js +2 -0
- package/dist/fnet/index.nnfg65pt.js +2 -0
- package/dist/fnet/index.qt2n23jk.js +3 -0
- package/dist/fnet/index.t8b8gd46.js +2 -0
- package/dist/fnet/index.z27pg13j.js +2 -0
- package/dist/fnet/index.zna4hmc3.js +2 -0
- package/dist/fnode/index.1wdjbahr.js +2 -0
- package/dist/fnode/index.4yxsvz96.js +2 -0
- package/dist/fnode/index.5jg40ryx.js +2 -0
- package/dist/fnode/index.6gb58dbm.js +2 -0
- package/dist/fnode/index.aqwm90es.js +2 -0
- package/dist/fnode/index.cpemgmh3.js +2 -0
- package/dist/fnode/index.db23gkjb.js +3 -0
- package/dist/fnode/index.faf8snys.js +3 -0
- package/dist/fnode/index.fxaj7m36.js +2 -0
- package/dist/fnode/index.gg7xd5ds.js +2 -0
- package/dist/fnode/index.h1ff50eq.js +2 -0
- package/dist/fnode/index.js +11 -2
- package/dist/fnode/index.kmnw6drq.js +5 -0
- package/dist/fnode/index.macrngyn.js +4 -0
- package/dist/fnode/index.nxt9p59e.js +2 -0
- package/dist/fnode/index.qcv74vey.js +2 -0
- package/dist/fnode/index.qcwf1eeb.js +2 -0
- package/dist/fnode/index.rfxcs5xv.js +2 -0
- package/dist/fnode/index.rgzfnevb.js +3 -0
- package/dist/fnode/index.s7sg00yk.js +2 -0
- package/dist/fnode/index.w52p2w9f.js +2 -0
- package/dist/fnode/index.x373mns2.js +2 -0
- package/dist/fnode/index.xpj8mpeb.js +2 -0
- package/dist/fnode/index.y4t5xdxf.js +4 -0
- package/dist/fnode/index.y8tx9pad.js +2 -0
- package/dist/fnode/index.ywj1916c.js +2 -0
- package/dist/frun/index.js +3 -2
- package/dist/fservice/index.js +20 -2
- package/dist/fservice/index.teesee83.js +3 -0
- package/package.json +8 -8
- package/template/fnet/node/package.json.njk +2 -2
- package/template/fnet/node/src/cli/index.js.v1.njk +5 -6
- package/template/fnet/node/src/cli/v2/core/imports.njk +2 -4
- package/template/fnet/node/src/cli/v2/index.js.njk +4 -4
- package/template/fnet/node/src/default/input.args.js.njk +5 -2
- package/template/fnode/node/package.json.njk +2 -2
- package/template/fnode/node/src/cli/index.js.v1.njk +10 -14
- package/template/fnode/node/src/cli/v2/core/imports.njk +2 -4
- package/template/fnode/node/src/cli/v2/index.js.njk +4 -4
- package/template/fnode/node/src/default/input.args.js.njk +6 -2
- package/dist/fnet/index.-SGbq2cI.js +0 -1
- package/dist/fnet/index.B5XE4ChJ.js +0 -1
- package/dist/fnet/index.Bft2w7m3.js +0 -1
- package/dist/fnet/index.BuYxdKtK.js +0 -1
- package/dist/fnet/index.C2S9JYhS.js +0 -1
- package/dist/fnet/index.C7saWH6d.js +0 -1
- package/dist/fnet/index.CDct_kkF.js +0 -1
- package/dist/fnet/index.CMC8mlye.js +0 -1
- package/dist/fnet/index.CmMM-Ek9.js +0 -1
- package/dist/fnet/index.CuMyez3E.js +0 -1
- package/dist/fnet/index.CzAV0S36.js +0 -1
- package/dist/fnet/index.D2N9YZmA.js +0 -1
- package/dist/fnet/index.D3p7pncT.js +0 -1
- package/dist/fnet/index.DG8TqL-1.js +0 -1
- package/dist/fnet/index.DI3yyTtl.js +0 -1
- package/dist/fnet/index.DWpw12No.js +0 -1
- package/dist/fnet/index.DrwlOzAe.js +0 -1
- package/dist/fnet/index.M39aBK2r.js +0 -1
- package/dist/fnet/index.Q-CYRcna.js +0 -1
- package/dist/fnet/index.W6RYgypK.js +0 -1
- package/dist/fnet/index.rSKuKke7.js +0 -1
- package/dist/fnet/index.xd8c7XMr.js +0 -1
- package/dist/fnode/index.-SGbq2cI.js +0 -1
- package/dist/fnode/index.B5XE4ChJ.js +0 -1
- package/dist/fnode/index.Bft2w7m3.js +0 -1
- package/dist/fnode/index.BuYxdKtK.js +0 -1
- package/dist/fnode/index.C2S9JYhS.js +0 -1
- package/dist/fnode/index.C7saWH6d.js +0 -1
- package/dist/fnode/index.CDct_kkF.js +0 -1
- package/dist/fnode/index.CJof4wXN.js +0 -1
- package/dist/fnode/index.CMC8mlye.js +0 -1
- package/dist/fnode/index.CmMM-Ek9.js +0 -1
- package/dist/fnode/index.CuMyez3E.js +0 -1
- package/dist/fnode/index.CzAV0S36.js +0 -1
- package/dist/fnode/index.D2N9YZmA.js +0 -1
- package/dist/fnode/index.D3p7pncT.js +0 -1
- package/dist/fnode/index.DCuAwmrd.js +0 -1
- package/dist/fnode/index.DG8TqL-1.js +0 -1
- package/dist/fnode/index.DI3yyTtl.js +0 -1
- package/dist/fnode/index.DWpw12No.js +0 -1
- package/dist/fnode/index.DrwlOzAe.js +0 -1
- package/dist/fnode/index.N_a5FdgA.js +0 -1
- package/dist/fnode/index.Q-CYRcna.js +0 -1
- package/dist/fnode/index.Vs3L-_fp.js +0 -1
- package/dist/fnode/index.W6RYgypK.js +0 -1
- package/dist/fnode/index.iGlS_BAd.js +0 -1
- package/dist/fnode/index.xd8c7XMr.js +0 -1
|
@@ -303,7 +303,7 @@ run()
|
|
|
303
303
|
============================================================================ #}
|
|
304
304
|
{% if atom.doc.features.project.format==='esm' %}
|
|
305
305
|
|
|
306
|
-
import argv from '../default/input.args.js';
|
|
306
|
+
import argv,{argsParser} from '../default/input.args.js';
|
|
307
307
|
import { schema as inputSchema } from '../default/validate_input.js';
|
|
308
308
|
|
|
309
309
|
{# --------------------------------------------------------------------------
|
|
@@ -314,13 +314,12 @@ run()
|
|
|
314
314
|
import Node from '../../../cli';
|
|
315
315
|
|
|
316
316
|
{# Import dependencies based on enabled features #}
|
|
317
|
-
{% if atom.doc.features.cli.mcp.enabled
|
|
317
|
+
{% if atom.doc.features.cli.mcp.enabled !== false %}
|
|
318
318
|
{{ importMcpDependencies('esm') }}
|
|
319
319
|
{% elif atom.doc.features.cli.http.enabled===true %}
|
|
320
320
|
// Using express for HTTP mode
|
|
321
321
|
import express from 'express';
|
|
322
322
|
{% endif %}
|
|
323
|
-
import argsParser from 'yargs-parser';
|
|
324
323
|
|
|
325
324
|
const run = async () => {
|
|
326
325
|
const args = argsParser(process.argv.slice(2));
|
|
@@ -328,7 +327,7 @@ run()
|
|
|
328
327
|
|
|
329
328
|
{{ defaultModeExtend('Node') }}
|
|
330
329
|
|
|
331
|
-
{% if atom.doc.features.cli.mcp.enabled
|
|
330
|
+
{% if atom.doc.features.cli.mcp.enabled !== false %}
|
|
332
331
|
{{ mcpModeCode('Node') }}
|
|
333
332
|
{% endif %}
|
|
334
333
|
|
|
@@ -349,14 +348,13 @@ run()
|
|
|
349
348
|
import Node from '../../../src';
|
|
350
349
|
|
|
351
350
|
{# Import dependencies based on enabled features #}
|
|
352
|
-
{% if atom.doc.features.cli.mcp.enabled
|
|
351
|
+
{% if atom.doc.features.cli.mcp.enabled !== false %}
|
|
353
352
|
{{ importMcpDependencies('esm') }}
|
|
354
353
|
{% elif atom.doc.features.cli.http.enabled===true %}
|
|
355
354
|
// Using express for HTTP mode
|
|
356
355
|
import express from 'express';
|
|
357
356
|
{% endif %}
|
|
358
357
|
|
|
359
|
-
import argsParser from 'yargs-parser';
|
|
360
358
|
|
|
361
359
|
const run = async () => {
|
|
362
360
|
const args = argsParser(process.argv.slice(2));
|
|
@@ -364,7 +362,7 @@ run()
|
|
|
364
362
|
|
|
365
363
|
{{ defaultModeStandard('Node') }}
|
|
366
364
|
|
|
367
|
-
{% if atom.doc.features.cli.mcp.enabled
|
|
365
|
+
{% if atom.doc.features.cli.mcp.enabled !== false %}
|
|
368
366
|
{{ mcpModeCode('Node') }}
|
|
369
367
|
{% endif %}
|
|
370
368
|
|
|
@@ -385,7 +383,7 @@ run()
|
|
|
385
383
|
============================================================================ #}
|
|
386
384
|
{% elif atom.doc.features.project.format==='cjs' %}
|
|
387
385
|
|
|
388
|
-
const argv = require('../default/input.args.js');
|
|
386
|
+
const { default:argv,argsParser } = require('../default/input.args.js');
|
|
389
387
|
|
|
390
388
|
{# --------------------------------------------------------------------------
|
|
391
389
|
CJS - EXTEND MODE (require from cli wrapper)
|
|
@@ -395,14 +393,13 @@ run()
|
|
|
395
393
|
const Node = require('../../../cli');
|
|
396
394
|
|
|
397
395
|
{# Import dependencies based on enabled features #}
|
|
398
|
-
{% if atom.doc.features.cli.mcp.enabled
|
|
396
|
+
{% if atom.doc.features.cli.mcp.enabled !== false %}
|
|
399
397
|
{{ importMcpDependencies('cjs') }}
|
|
400
398
|
{% elif atom.doc.features.cli.http.enabled===true %}
|
|
401
399
|
// Using express for HTTP mode
|
|
402
400
|
const express = require('express');
|
|
403
401
|
{% endif %}
|
|
404
402
|
|
|
405
|
-
const argsParser = require('yargs-parser');
|
|
406
403
|
|
|
407
404
|
const run = async () => {
|
|
408
405
|
const args = argsParser(process.argv.slice(2));
|
|
@@ -410,7 +407,7 @@ run()
|
|
|
410
407
|
|
|
411
408
|
{{ defaultModeExtend('Node') }}
|
|
412
409
|
|
|
413
|
-
{% if atom.doc.features.cli.mcp.enabled
|
|
410
|
+
{% if atom.doc.features.cli.mcp.enabled !== false %}
|
|
414
411
|
{{ mcpModeCode('Node') }}
|
|
415
412
|
{% endif %}
|
|
416
413
|
|
|
@@ -431,14 +428,13 @@ run()
|
|
|
431
428
|
const Node = require('../../../src');
|
|
432
429
|
|
|
433
430
|
{# Import dependencies based on enabled features #}
|
|
434
|
-
{% if atom.doc.features.cli.mcp.enabled
|
|
431
|
+
{% if atom.doc.features.cli.mcp.enabled !== false %}
|
|
435
432
|
{{ importMcpDependencies('cjs') }}
|
|
436
433
|
{% elif atom.doc.features.cli.http.enabled===true %}
|
|
437
434
|
// Using express for HTTP mode
|
|
438
435
|
const express = require('express');
|
|
439
436
|
{% endif %}
|
|
440
437
|
|
|
441
|
-
const argsParser = require('yargs-parser');
|
|
442
438
|
|
|
443
439
|
const run = async () => {
|
|
444
440
|
const args = argsParser(process.argv.slice(2));
|
|
@@ -446,7 +442,7 @@ run()
|
|
|
446
442
|
|
|
447
443
|
{{ defaultModeStandard('Node') }}
|
|
448
444
|
|
|
449
|
-
{% if atom.doc.features.cli.mcp.enabled
|
|
445
|
+
{% if atom.doc.features.cli.mcp.enabled !== false %}
|
|
450
446
|
{{ mcpModeCode('Node') }}
|
|
451
447
|
{% endif %}
|
|
452
448
|
|
|
@@ -7,25 +7,23 @@
|
|
|
7
7
|
|
|
8
8
|
{% if atom.doc.features.project.format==='esm' %}
|
|
9
9
|
{# ESM Format #}
|
|
10
|
-
import argv from '../default/input.args.js';
|
|
10
|
+
import argv,{argsParser} from '../default/input.args.js';
|
|
11
11
|
import { schema as inputSchema } from '../default/validate_input.js';
|
|
12
12
|
{% if atom.doc.features.cli.extend===true %}
|
|
13
13
|
import Node from '../../../cli';
|
|
14
14
|
{% else %}
|
|
15
15
|
import Node from '../../../src';
|
|
16
16
|
{% endif %}
|
|
17
|
-
import argsParser from 'yargs-parser';
|
|
18
17
|
|
|
19
18
|
{% elif atom.doc.features.project.format==='cjs' %}
|
|
20
19
|
{# CJS Format #}
|
|
21
|
-
const argv = require('../default/input.args.js');
|
|
20
|
+
const { default:argv,argsParser} = require('../default/input.args.js');
|
|
22
21
|
const { schema: inputSchema } = require('../default/validate_input.js');
|
|
23
22
|
{% if atom.doc.features.cli.extend===true %}
|
|
24
23
|
const Node = require('../../../cli');
|
|
25
24
|
{% else %}
|
|
26
25
|
const Node = require('../../../src');
|
|
27
26
|
{% endif %}
|
|
28
|
-
const argsParser = require('yargs-parser');
|
|
29
27
|
|
|
30
28
|
{% endif %}
|
|
31
29
|
|
|
@@ -42,7 +42,7 @@ const http = require('http');
|
|
|
42
42
|
{% endif %}
|
|
43
43
|
{% endif %}
|
|
44
44
|
|
|
45
|
-
{% if atom.doc.features.cli.mcp.enabled
|
|
45
|
+
{% if atom.doc.features.cli.mcp.enabled !== false or atom.doc.features.cli.webhook.enabled===true %}
|
|
46
46
|
// Shared: crypto module (used by MCP and Webhook modes)
|
|
47
47
|
{% if atom.doc.features.project.format==='esm' %}
|
|
48
48
|
import crypto from 'crypto';
|
|
@@ -57,7 +57,7 @@ const crypto = require('crypto');
|
|
|
57
57
|
Import dependencies for ALL enabled CLI modes
|
|
58
58
|
Multiple modes can be enabled simultaneously
|
|
59
59
|
-------------------------------------------------------------------------- #}
|
|
60
|
-
{% if atom.doc.features.cli.mcp.enabled
|
|
60
|
+
{% if atom.doc.features.cli.mcp.enabled !== false %}
|
|
61
61
|
{% include "./modes/mcp/imports.njk" %}
|
|
62
62
|
{% endif %}
|
|
63
63
|
|
|
@@ -107,7 +107,7 @@ const run = async () => {
|
|
|
107
107
|
--------------------------------------------------------------------------
|
|
108
108
|
Model Context Protocol server with multiple transport options
|
|
109
109
|
-------------------------------------------------------------------------- #}
|
|
110
|
-
{% if atom.doc.features.cli.mcp.enabled
|
|
110
|
+
{% if atom.doc.features.cli.mcp.enabled !== false %}
|
|
111
111
|
{% include "./modes/mcp/index.njk" %}
|
|
112
112
|
{% endif %}
|
|
113
113
|
|
|
@@ -170,7 +170,7 @@ const run = async () => {
|
|
|
170
170
|
UNKNOWN MODE HANDLER
|
|
171
171
|
-------------------------------------------------------------------------- #}
|
|
172
172
|
console.error(`Unknown CLI mode: ${cliMode}`);
|
|
173
|
-
console.error(`Available modes: default{% if atom.doc.features.cli.mcp.enabled
|
|
173
|
+
console.error(`Available modes: default{% if atom.doc.features.cli.mcp.enabled !== false %}, mcp{% endif %}{% if atom.doc.features.cli.http.enabled===true %}, http{% endif %}{% if atom.doc.features.cli.pipeline.enabled===true %}, pipeline{% endif %}{% if atom.doc.features.cli.websocket.enabled===true %}, websocket{% endif %}{% if atom.doc.features.cli.webhook.enabled===true %}, webhook{% endif %}`);
|
|
174
174
|
process.exit(1);
|
|
175
175
|
};
|
|
176
176
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{% if atom.doc.features.project.format === 'esm' %}
|
|
2
|
-
import fnetArgs from '@fnet/args';
|
|
2
|
+
import fnetArgs,{argsParser} from '@fnet/args';
|
|
3
3
|
import validate,{schema as inputSchema} from "./validate_input";
|
|
4
4
|
|
|
5
5
|
{% elif atom.doc.features.project.format === 'cjs' %}
|
|
6
|
-
const fnetArgs = require('@fnet/args');
|
|
6
|
+
const {default:fnetArgs,argsParser} = require('@fnet/args');
|
|
7
7
|
const validate,{schema as inputSchema} = require("./validate_input");
|
|
8
8
|
{% endif %}
|
|
9
9
|
|
|
@@ -75,6 +75,8 @@
|
|
|
75
75
|
return await fnetArgs({schema,initial,validate,packageCallback});
|
|
76
76
|
};
|
|
77
77
|
|
|
78
|
+
export { argsParser };
|
|
79
|
+
|
|
78
80
|
{% elif atom.doc.features.project.format === 'cjs' %}
|
|
79
81
|
|
|
80
82
|
module.exports = async () => {
|
|
@@ -119,4 +121,6 @@
|
|
|
119
121
|
|
|
120
122
|
return await fnetArgs({schema,initial,validate,packageCallback});
|
|
121
123
|
};
|
|
124
|
+
|
|
125
|
+
module.exports.argsParser = argsParser;
|
|
122
126
|
{% endif %}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import t from"cli-table3";import r from"chalk";function e(e,o={}){const a={chars:{top:"─","top-mid":"─","top-left":" ","top-right":" ",bottom:"─","bottom-mid":"─","bottom-left":" ","bottom-right":" ",left:" ","left-mid":" ",mid:"─","mid-mid":"─",right:" ","right-mid":" ",middle:" "},style:{head:[],border:[],compact:!0},wordWrap:!0,...o,head:e.map((t=>r.bold(t)))};return new t(a)}function o(t,r,o={}){const a=e(t,o);return Array.isArray(r)&&r.forEach((t=>{a.push(t)})),a.toString()}function a(t){switch(t){case"running":return r.green;case"stopped":return r.yellow;case"failed":return r.red;case"registered":return r.blue;default:return r.gray}}var i={createTable:e,createTableWithData:o,getStatusColor:a};export{e as createTable,o as createTableWithData,i as default,a as getStatusColor};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import o from"@fnet/config";import e from"@flownet/lib-to-ios-app";import a from"lodash.clonedeep";import t from"semver";async function n({atom:n,target:r,onProgress:i,projectDir:s,dependencies:p,context:c,yamlTarget:m}){i&&await i({message:"Deploying it as ios-app package."});const f=r?.config?await o({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:c.tags}):void 0,g=t.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,m.set("version",g);const d=a(r.params);d.dependencies=a(p);const l={atom:n,params:d,config:f?.config,src:s,dest:s};return{deployer:await e(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import r from"semver";import a from"@fnet/shelljs";import n from"@fnet/config";async function i({setProgress:i,context:o,deploymentProject:s,deploymentProjectTarget:c,registerToPackageManager:m,yamlTarget:p}){await i({message:"Deploying it as gcs package."});const l=o.projectDir,d=t.resolve(l,"package.json"),g=e.readFileSync(d),f=JSON.parse(g);f.name=c.params.name,f.version=r.inc(c.version,"patch"),delete f.scripts,delete f.devDependencies,e.writeFileSync(d,JSON.stringify(f,null,"\t"));const{file:v,data:y}=await n({name:c.config||"gcs",dir:o.projectDir,tags:o.tags});let u="fnet-files-to-gcs";u+=` --projectId='${y.env.GCS_PROJECT_ID}'`,u+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,u+=` --keyFilename='${t.resolve(t.dirname(v),y.env.GCS_UPLOADER_KEY_FILE)}'`,u+=` --dir='${l}'`,u+=" --pattern='dist/**/**'",u+=" --pattern='bin/**/**'",u+=" --pattern='test/**/**'",u+=" --pattern='*.html'",u+=` --destDir='${f.name}/${f.version}'`,u+=" --metadata.cacheControl='public, max-age=31536000, immutable'",console.log(u),y.env.DOMAIN&&(u+=` --domain='${y.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(u+=" --dryRun"),await a(u),e.writeFileSync(d,g),!0!==c.dryRun&&(s.isDirty=!0,c.version=f.version,p.set("version",f.version),await m({target:c,packageJSON:f}))}export{i as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import r from"semver";import e from"@fnet/config";import o from"node:fs";import t from"@fnet/shelljs";import n from"form-data";async function i({setProgress:i,context:s,deploymentProject:a,deploymentProjectTarget:f,yamlTarget:c}){await i({message:"Deploying it as fnet flow."});const{file:p,data:w}=await e({name:f.config||"fnet-flow",dir:s.project.projectDir,tags:s.tags});if(!w.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${p}`);if(!w.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${p}`);if(!w.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${p}`);const d=`${w.env.ATOM_API_URL}/v1/auth/token`,m=w.env.ATOM_API_USERNAME,l=w.env.ATOM_API_PASSWORD,A=await fetch(d,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:m,password:l})});if(!A.ok)throw new Error(`Failed to fetch token: ${A.statusText}`);const h=await A.json(),_=h?.access_token;if(!_)throw new Error(`Invalid access_token from ${d}`);a.isDirty=!0;const u=r.inc(f.version,"patch");f.params.version=u,f.version=u,c.set("version",u);const v=`${w.env.ATOM_API_URL}/v1/service/fnet-flow/publish`,T=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${_}`},body:JSON.stringify({name:f.params.name,version:f.params.version,docs:f.params.docs,configs:f.params.configs})});if(!T.ok)throw new Error(`Error publishing fnet flow: ${T.statusText}`);const E=await T.json();if(E?.error)throw new Error("Error publishing fnet flow.");const O=E?.upload.id;let P="fnet-dir-zipper";P+=` --sourceDir='${s.project.projectDir}'`,P+=" --pattern=**/*",P+=" --stdout_format=json";const g=await t(P);if(0!==g.code)throw new Error(g.stderr);const S=JSON.parse(g.stdout).path;let M=new n;M.append("file",o.createReadStream(S));const $=await fetch(`${w.env.ATOM_API_URL}/v1/service/upload/single/${O}`,{method:"POST",headers:{...M.getHeaders(),Authorization:`Bearer ${_}`},body:M});if(!$.ok)throw new Error(`Error uploading fnet flow: ${$.statusText}`);const j=await $.json();if(j?.error)throw new Error("Error uploading fnet flow.")}export{i as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"semver";import r from"@fnet/config";import o from"node:fs";import t from"@fnet/shelljs";import n from"form-data";async function i({setProgress:i,context:s,deploymentProject:a,deploymentProjectTarget:d,yamlTarget:c}){await i({message:"Deploying it as fnet node."});const{file:f,data:p}=await r({name:d.config||"fnet-node",dir:s.project.projectDir,tags:s.tags});if(!p.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${f}`);if(!p.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${f}`);if(!p.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${f}`);const m=`${p.env.ATOM_API_URL}/v1/auth/token`,w=p.env.ATOM_API_USERNAME,A=p.env.ATOM_API_PASSWORD,h=await fetch(m,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:w,password:A})});if(!h.ok)throw new Error(`Failed to fetch token: ${h.statusText}`);const _=await h.json(),l=_?.access_token;if(!l)throw new Error(`Invalid access_token from ${m}`);a.isDirty=!0;const u=e.inc(d.version,"patch");d.params.version=u,d.version=u,c.set("version",u);const v=`${p.env.ATOM_API_URL}/v1/service/fnet-node/publish`,T=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${l}`},body:JSON.stringify({name:d.params.name,version:d.params.version,docs:d.params.docs,configs:d.params.configs})});if(!T.ok)throw new Error(`Error publishing fnet node: ${T.statusText}`);const E=await T.json();if(E?.error)throw new Error("Error publishing fnet node.");const O=E?.upload.id;let P="fnet-dir-zipper";P+=` --sourceDir='${s.project.projectDir}'`,P+=" --pattern=**/*",P+=" --stdout_format=json";const g=await t(P);if(0!==g.code)throw new Error(g.stderr);const S=JSON.parse(g.stdout).path;let M=new n;M.append("file",o.createReadStream(S));const $=await fetch(`${p.env.ATOM_API_URL}/v1/service/upload/single/${O}`,{method:"POST",headers:{...M.getHeaders(),Authorization:`Bearer ${l}`},body:M});if(!$.ok)throw new Error(`Error uploading fnet node: ${$.statusText}`);const j=await $.json();if(j?.error)throw new Error("Error uploading fnet node.")}export{i as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@fnet/to-pyip";import t from"lodash.clonedeep";import a from"semver";async function n({atom:n,target:r,onProgress:i,projectDir:s,dependencies:p,context:c,yamlTarget:m}){i&&await i({message:"Deploying it as pypi package."});const f=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:c.tags}):void 0,g=a.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,m.set("version",g);const d=t(r.params);d.dependencies=t(p);const l={atom:n,params:d,config:f?.config,src:s,dest:s};return{deployer:await o(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@flownet/lib-to-nextjs";import t from"lodash.clonedeep";import n from"semver";async function a({atom:a,target:r,onProgress:s,projectDir:i,dependencies:c,context:m,yamlTarget:p}){s&&await s({message:"Deploying it as nextjs package."});const f=r?.config?await e({name:r.config,dir:i,optional:!0,transferEnv:!1,tags:m.tags}):void 0,g=n.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,p.set("version",g);const d=t(r.params);d.dependencies=t(c);const l={atom:a,params:d,config:f?.config,src:i,dest:i};return{deployer:await o(l)}}export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@flownet/lib-to-webos";import t from"lodash.clonedeep";import a from"semver";async function n({atom:n,target:r,onProgress:s,projectDir:i,dependencies:c,context:m,yamlTarget:p}){s&&await s({message:"Deploying it as webos package."});const f=r?.config?await e({name:r.config,dir:i,optional:!0,transferEnv:!1,tags:m.tags}):void 0,g=a.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,p.set("version",g);const d=t(r.params);d.dependencies=t(c);const l={atom:n,params:d,config:f?.config,src:i,dest:i};return{deployer:await o(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import a from"node:os";import d from"nunjucks";import o from"@node-red/util";import i from"@fnet/config";async function n({atom:n,setProgress:l,context:r,deploymentProject:p,deploymentProjectTarget:s,buildId:c,packageDependencies:m,njEnv:f}){await l({message:"Deploying it as node-red flow."});const y=r.projectDir,u=r.templateDir,g="workflow"===n.type?"WF":"LIB";let h;if("simple"===s.deploy.template)h={atom:n,packageDependencies:m,red:{tab:{id:s.deploy.id||o.util.generateId(),label:`${g}/${n.id?n.id:a.hostname()}/${n.name}/${s.deploy.name||s.deploy.template}`},function:{id:o.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(y,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},inject:{id:o.util.generateId(),...s.params?.inject,payload:"json"===s.params?.inject?.payloadType?`'${JSON.stringify(s.params?.inject?.payload)}'`:s.params?.inject?.payload},debug:{id:o.util.generateId()}}};else if("cronjob"===s.deploy.template){let d=s.params?.schedules?cloneDeep(s.params?.schedules):void 0;d?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),h={atom:n,packageDependencies:m,red:{tab:{id:s.deploy.id||o.util.generateId(),label:`${g}/${n.id?n.id:a.hostname()}/${s.deploy.name||s.deploy.template}`},function:{id:o.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(y,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},cronjob:{id:o.util.generateId(),schedules:d},debug:{id:o.util.generateId()}}}}else{if("http"!==s.deploy.template)return;h={atom:n,packageDependencies:m,red:{tab:{id:s.deploy.id||o.util.generateId(),label:`${g}/${n.id?n.id:a.hostname()}/${s.deploy.name||s.deploy.template}`},function:{id:o.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(y,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},httpin:{id:o.util.generateId(),method:s.params.method||"get",url:s.params.url},httpout:{id:o.util.generateId()},debug:{id:o.util.generateId()}}}}let j=d.compile(e.readFileSync(t.resolve(u,`deploy/node-red/${s.deploy.template}.yaml.njk`),"utf8"),f).render(h);if(e.writeFileSync(t.resolve(y,"node-red.yaml"),j),j=yaml.load(j),!0===s.dryRun)return;p.isDirty=!0;const w=(await i({name:r.redConfig||"red",dir:r.projectDir,tags:r.tags}))?.data,$=s.deploy.url||w.env.RED_URL,b={};if(!1!==s.deploy.auth&&(b.Authorization="Bearer "+atomAccessToken),s.deploy.id)if(!0===s.actions?.delete){const e=await fetch(`${$}/flow/${s.deploy.id}`,{method:"DELETE",headers:b});if(!e.ok)throw new Error(`Failed to delete flow: ${e.statusText}`);delete s.actions.delete,delete s.deploy.id,s.enabled=!1}else{const e=await fetch(`${$}/flow/${s.deploy.id}`,{method:"PUT",headers:{...b,"Content-Type":"application/json"},body:JSON.stringify(j)});if(!e.ok)throw new Error(`Failed to update flow: ${e.statusText}`)}else{const e=await fetch(`${$}/flow`,{method:"POST",headers:{...b,"Content-Type":"application/json"},body:JSON.stringify(j)});if(!e.ok)throw new Error(`Failed to create flow: ${e.statusText}`);const t=await e.json();s.deploy.id=t.id}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
async function r(r){return{projectDir:process.cwd(),tags:r.ftag}}export{r as createContext};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@fnet/to-rust";import t from"lodash.clonedeep";import a from"semver";async function n({atom:n,target:r,onProgress:s,projectDir:i,dependencies:c,context:m,yamlTarget:p}){s&&await s({message:"Deploying it as Rust package."});const f=r?.config?await e({name:r.config,dir:i,optional:!0,transferEnv:!1,tags:m.tags}):void 0,g=a.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,p.set("version",g);const d=t(r.params);d.dependencies=t(c);const l={atom:n,params:d,config:f?.config,src:i,dest:i};return{deployer:await o(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@flownet/lib-to-docker";import t from"lodash.clonedeep";import r from"semver";async function a({atom:a,target:n,onProgress:i,projectDir:s,dependencies:c,context:m,yamlTarget:p}){i&&await i({message:"Deploying it as docker package."});const f=n?.config?await e({name:n.config,dir:s,optional:!0,transferEnv:!1,tags:m.tags}):void 0,d=r.inc(n.version||"0.1.0","patch");n.params.version=d,n.version=d,p.set("version",d);const g=t(n.params);g.dependencies=t(c);const l={atom:a,params:g,config:f?.config,src:s,dest:s};return{deployer:await o(l)}}export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import r from"semver";import n from"@fnet/shelljs";import o from"@fnet/config";async function a({setProgress:a,context:i,deploymentProject:s,deploymentProjectTarget:c,yamlTarget:p}){await a({message:"Deploying it as fnet package."});const d=i.projectDir,m=t.resolve(d,"package.json"),f=e.readFileSync(m),l=JSON.parse(f);l.name=c.params.name,l.version=r.inc(c.version,"patch"),delete l.scripts,delete l.devDependencies,e.writeFileSync(m,JSON.stringify(l,null,"\t"));const{file:A,data:_}=await o({name:c.config||"fnet-package",dir:i.projectDir,tags:i.tags});if(!_.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${A}`);if(!_.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${A}`);if(!_.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${A}`);const v=`${_.env.ATOM_API_URL}/v1/auth/token`,h=_.env.ATOM_API_USERNAME,w=_.env.ATOM_API_PASSWORD,O=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:h,password:w})});if(!O.ok)throw new Error(`Failed to fetch token: ${O.statusText}`);const g=await O.json(),u=g?.access_token;if(!u)throw new Error(`Invalid access_token from ${v}`);let y="fnet-files-to-gcs";if(y+=` --projectId='${_.env.GCS_PROJECT_ID}'`,y+=` --bucketName='${_.env.GCS_BUCKET_NAME}'`,y+=` --keyFilename='${t.resolve(t.dirname(A),_.env.GCS_UPLOADER_KEY_FILE)}'`,y+=` --dir='${d}'`,y+=" --pattern='dist/**/**'",y+=" --pattern='bin/**/**'",y+=" --pattern='test/**/**'",y+=" --pattern='*.html'",y+=` --destDir='${l.name}/${l.version}'`,y+=" --metadata.cacheControl='public, max-age=31536000, immutable'",_.env.DOMAIN&&(y+=` --domain='${_.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(y+=" --dryRun"),await n(y),e.writeFileSync(m,f),!0===c.dryRun)return;s.isDirty=!0,c.version=l.version,p.set("version",l.version);const S=`${_.env.ATOM_API_URL}/v1/service/fnet-package/publish`,P=await fetch(S,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${u}`},body:JSON.stringify({name:l.name,version:l.version,version_domain:_.env.DOMAIN,docs:c.params.docs,configs:c.params.configs})});if(!P.ok)throw new Error(`Failed to publish fnet package: ${P.statusText}`);const T=await P.json();if(T?.error)throw new Error("Failed to publish fnet package.")}export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import o from"@fnet/config";async function n({atom:n,Atom:i,setProgress:r,context:a,packageDependencies:d,deploymentProject:c,deploymentProjectTarget:l}){await r({message:"Deploying it as workflow lib."});const s=(await o({name:"atom",dir:a.projectDir,tags:a.tags}))?.data;let f,p,y,m=l.deploy.name.split("/");if(1===m.length)p=s.env.ATOM_LIBRARIES_ID,y=l.deploy.name;else{if(2!==m.length)throw new Error("Wrong name path.");{const e=await i.first({where:{name:m[0],parent_id:s.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");p=e.id,y=m[1]}}if(!0===l.dryRun)return;if(c.isDirty=!0,l.deploy.id){if(f=await i.get({id:l.deploy.id}),!f)return}else{if(f=await i.create({parent_id:p,doc:{name:y,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!f)return;l.deploy.id=f.id}const w=a.projectDir;f.doc.contents=[{content:e.readFileSync(t.resolve(w,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(t.resolve(w,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(t.resolve(w,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],f.doc.name=y,f.doc.dependencies=d,"workflow.lib"===n.type?f.doc.subtype="library":"workflow"===n.type&&(f.doc.subtype="workflow"),f=await i.update(f,{id:f.id})}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import t from"@fnet/shelljs";import a from"@fnet/config";async function e({setProgress:e,context:o,deploymentProject:r,deploymentProjectTarget:i,buildId:n}){await e({message:"Deploying it as gitlab project."});const s=o.projectDir;let l="fnet-to-gitlab";const c=i.params.config||"gitlab",g=await a({name:c,dir:o.projectDir,tags:o.tags});if(!g)throw new Error(`Couldnt load config ${c}`);const{data:p}=g.data;l+=` --projectGroupId=${p.projectGroupId}`,l+=` --projectPath='${s}'`,l+=` --projectName='${i.params.name}'`,l+=` --projectBranch='${i.params.branch||"main"}'`,l+=` --gitlabHost='${p.gitlabHost}'`,l+=` --gitlabToken='${p.gitlabToken}'`,l+=` --gitlabUsername='${p.gitlabUsername}'`,l+=` --gitlabUserEmail='${p.gitlabUserEmail}'`,!0!==i.dryRun&&(await t(l),r.isDirty=!0)}export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import r from"node:path";import{fileURLToPath as n}from"node:url";import e from"node:os";import i from"node:fs";async function t(n){const t=function(){const n=e.homedir(),t=r.join(n,".fnet","bin");return i.existsSync(t)||i.mkdirSync(t,{recursive:!0}),t}(),o=function(){const n=e.homedir(),t=r.join(n,".fnet");return i.existsSync(t)||i.mkdirSync(t,{recursive:!0}),r.join(t,"bin-registry.json")}();let s={};if(i.existsSync(o))try{const r=i.readFileSync(o,"utf8");s=JSON.parse(r)}catch(r){console.warn(`Warning: Could not parse bin registry: ${r.message}`)}return{binDir:t,registryPath:o,registry:s,args:n}}r.dirname(n(import.meta.url));export{t as createContext};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"fs";import r from"path";import n from"@fnet/yaml";import t from"@fnet/shell-flow";async function o({projectType:e,group:r,tags:o,args:f,argv:i}){try{const m=await a(e),{parsed:s}=await n({file:m.path,tags:o}),c=s.commands;if(!c)throw new Error(`Commands section not found in ${m.name}`);const y=c[r];if(!y)throw new Error(`Command group '${r}' not found in ${m.name}`);await t({commands:y,context:{args:f,argv:i,projectType:m.type}})}catch(e){console.error(`Error: ${e.message}`),process.exit(1)}}async function a(n){const t=process.cwd(),o=r.resolve(t,"fnode.yaml"),a=r.resolve(t,"fnet.yaml");if("fnode"===n){if(e.existsSync(o))return{path:o,name:"fnode.yaml",type:"fnode"};throw new Error("fnode.yaml file not found in current directory")}if("fnet"===n){if(e.existsSync(a))return{path:a,name:"fnet.yaml",type:"fnet"};throw new Error("fnet.yaml file not found in current directory")}if(e.existsSync(o))return{path:o,name:"fnode.yaml",type:"fnode"};if(e.existsSync(a))return{path:a,name:"fnet.yaml",type:"fnet"};throw new Error("No project file (fnode.yaml or fnet.yaml) found in current directory")}export{a as detectProjectFile,o as runCommandGroup};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:path";import t from"node:fs";import o from"@fnet/yaml";import r from"yaml";import{r as n}from"./index.js";import"yargs";import"chalk";import"node:util";import"tree-kill";import"node:url";import"node:child_process";import"@fnet/config";import"node:os";import"@flownet/lib-render-templates-dir";import"@fnet/shelljs";import"nunjucks";import"lodash.clonedeep";import"isobject";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";async function i(i){if(i.id)return{id:i.id,buildId:i.buildId,mode:i.mode,protocol:i.protocol||"ac:",templateDir:n("./template/fnode/node"),projectDir:e.resolve(process.cwd(),`./.output/${i.id}`),tags:i.ftag,dev:i.dev};try{const s=await async function({tags:n}){let i=function(o){const r=e.resolve(o,"node.yaml"),n=e.resolve(o,"fnode.yaml");if(t.existsSync(n))return n;if(t.existsSync(r))try{const e=t.readFileSync(r,"utf8");return t.writeFileSync(n,e,"utf8"),t.unlinkSync(r),console.log(`Migrated node.yaml to fnode.yaml in ${o}`),n}catch(e){return console.error(`Error migrating node.yaml to fnode.yaml: ${e.message}`),r}return n}(process.cwd());if(!t.existsSync(i))throw new Error("fnode.yaml file not found in current directory.");const{raw:s,parsed:m}=await o({file:i,tags:n}),p=e.dirname(i);m.features=m.features||{};const a=m.features;a.runtime=a.runtime||{},a.runtime.type=a.runtime.type||"node","python"===a.runtime.type?a.runtime.template=a.runtime.template||"python":(a.runtime.type,a.runtime.template=a.runtime.template||"node");const l={libraryAtom:{doc:{...m},fileName:"index"},projectDir:p,projectFilePath:i,projectFileContent:s,projectFileParsed:m,runtime:a.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:i}=await o({file:c,tags:n}),s=r.parseDocument(e);l.devops={filePath:c,fileContent:e,yamlDocument:s,doc:{...i},type:"library.deploy",save:async()=>{t.writeFileSync(l.devops.filePath,s.toString())}}}const d=e.resolve(p,"readme.md");if(t.existsSync(d)){const e=t.readFileSync(d,"utf8");l.readme={filePath:d,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return l}({tags:i.ftag}),m="bun"===s.runtime.type?"node":s.runtime.type;return{buildId:i.buildId,mode:i.mode,protocol:i.protocol||"src:",templateDir:n(`./template/fnode/${m}`),projectDir:e.resolve(s.projectDir,"./.workspace"),projectSrcDir:e.resolve(s.projectDir,"./src"),project:s,tags:i.ftag,dev:i.dev}}catch(e){return console.warn(`Warning: Could not load project: ${e.message}`),{projectDir:process.cwd(),tags:i.ftag}}}export{i as createContext};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import r from"semver";import e from"@fnet/config";async function o({setProgress:o,context:t,deploymentProject:n,deploymentProjectTarget:i,yamlTarget:s}){await o({message:"Deploying it as fnet form."});const{file:a,data:f}=await e({name:i.config||"fnet-form",dir:t.projectDir,tags:t.tags});if(!f.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${a}`);if(!f.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${a}`);if(!f.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${a}`);const c=`${f.env.ATOM_API_URL}/v1/auth/token`,A=f.env.ATOM_API_USERNAME,m=f.env.ATOM_API_PASSWORD,p=await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:A,password:m})});if(!p.ok)throw new Error(`Failed to fetch token: ${p.statusText}`);const _=await p.json(),w=_?.access_token;if(!w)throw new Error(`Invalid access_token from ${c}`);n.isDirty=!0;const h=r.inc(i.version,"patch");i.params.version=h,i.version=h,s.set("version",h);const d=`${f.env.ATOM_API_URL}/v1/service/fnet-form/publish`,v=await fetch(d,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${w}`},body:JSON.stringify({name:i.params.name,version:i.params.version,docs:i.params.docs,configs:i.params.configs})});if(!v.ok)throw new Error(`Error publishing fnet form: ${v.statusText}`);const P=await v.json();if(P?.error)throw new Error("Error publishing fnet form.")}export{o as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import o from"@fnet/config";import e from"@flownet/lib-to-macos-app";import a from"lodash.clonedeep";import t from"semver";async function n({atom:n,target:r,onProgress:s,projectDir:i,dependencies:c,context:p,yamlTarget:m}){s&&await s({message:"Deploying it as macos-app package."});const f=r?.config?await o({name:r.config,dir:i,optional:!0,transferEnv:!1,tags:p.tags}):void 0,g=t.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,m.set("version",g);const d=a(r.params);d.dependencies=a(c);const l={atom:n,params:d,config:f?.config,src:i,dest:i};return{deployer:await e(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import 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 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"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";async function l({atom:a,setProgress:l,context:c,deploymentProject:d,deploymentProjectTarget:f,yamlTarget:y}){await l({message:"Deploying it as npm package."});const b=c.projectDir,j=t.resolve(b,"package.json"),u=e.readFileSync(j),w=JSON.parse(u);w.name=f.params.name,w.version=r.inc(f.version,"patch");const g=f.params.bin?.name||f.params.bin;!1!==f.params.bin?.enabled&&g&&"string"==typeof g&&(w.bin={[g]:"dist/cli/esm/index.js"}),delete w.scripts,delete w.devDependencies,w.scripts={serve:"npx serve ."},e.writeFileSync(j,JSON.stringify(w,null,"\t"));const v=f.config||"npm";let h=(await i({name:v,dir:c.projectDir,tags:c.tags,optional:!0}))?.data;if(!h){const r=p("./template/schemas/to-npm.yaml"),o=await n({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,`${v}.fnet`),s.stringify(o)),h=o}if(e.writeFileSync(t.resolve(b,".npmrc"),`//registry.npmjs.org/:_authToken=${h.env.NPM_TOKEN}`),!0!==f.dryRun){if(m("bun")){if(0!==(await o("bun publish --access public",{cwd:b})).code)throw new Error("Couldnt publish to npm")}else{if(0!==(await o("npm publish --access public",{cwd:b})).code)throw new Error("Couldnt publish to npm")}e.writeFileSync(j,u),d.isDirty=!0,f.version=w.version,y.set("version",w.version)}}t.dirname(a(import.meta.url)),process.cwd();export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@flownet/lib-to-electron";import t from"lodash.clonedeep";import n from"semver";async function r({atom:r,target:a,onProgress:i,projectDir:s,dependencies:c,context:m,yamlTarget:p}){i&&await i({message:"Deploying it as electron package."});const f=a?.config?await e({name:a.config,dir:s,optional:!0,transferEnv:!1,tags:m.tags}):void 0,g=n.inc(a.version||"0.1.0","patch");a.version=g,p.set("version",g);const d=t(a.params);d.dependencies=t(c);const l={atom:r,params:d,config:f?.config,src:s,dest:s};return{deployer:await o(l)}}export{r as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import t from"cli-table3";import r from"chalk";function e(e,o={}){const a={chars:{top:"─","top-mid":"─","top-left":" ","top-right":" ",bottom:"─","bottom-mid":"─","bottom-left":" ","bottom-right":" ",left:" ","left-mid":" ",mid:"─","mid-mid":"─",right:" ","right-mid":" ",middle:" "},style:{head:[],border:[],compact:!0},wordWrap:!0,...o,head:e.map((t=>r.bold(t)))};return new t(a)}function o(t,r,o={}){const a=e(t,o);return Array.isArray(r)&&r.forEach((t=>{a.push(t)})),a.toString()}function a(t){switch(t){case"running":return r.green;case"stopped":return r.yellow;case"failed":return r.red;case"registered":return r.blue;default:return r.gray}}var i={createTable:e,createTableWithData:o,getStatusColor:a};export{e as createTable,o as createTableWithData,i as default,a as getStatusColor};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import o from"@fnet/config";import e from"@flownet/lib-to-ios-app";import a from"lodash.clonedeep";import t from"semver";async function n({atom:n,target:r,onProgress:i,projectDir:s,dependencies:p,context:c,yamlTarget:m}){i&&await i({message:"Deploying it as ios-app package."});const f=r?.config?await o({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:c.tags}):void 0,g=t.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,m.set("version",g);const d=a(r.params);d.dependencies=a(p);const l={atom:n,params:d,config:f?.config,src:s,dest:s};return{deployer:await e(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import r from"semver";import a from"@fnet/shelljs";import n from"@fnet/config";async function i({setProgress:i,context:o,deploymentProject:s,deploymentProjectTarget:c,registerToPackageManager:m,yamlTarget:p}){await i({message:"Deploying it as gcs package."});const l=o.projectDir,d=t.resolve(l,"package.json"),g=e.readFileSync(d),f=JSON.parse(g);f.name=c.params.name,f.version=r.inc(c.version,"patch"),delete f.scripts,delete f.devDependencies,e.writeFileSync(d,JSON.stringify(f,null,"\t"));const{file:v,data:y}=await n({name:c.config||"gcs",dir:o.projectDir,tags:o.tags});let u="fnet-files-to-gcs";u+=` --projectId='${y.env.GCS_PROJECT_ID}'`,u+=` --bucketName='${y.env.GCS_BUCKET_NAME}'`,u+=` --keyFilename='${t.resolve(t.dirname(v),y.env.GCS_UPLOADER_KEY_FILE)}'`,u+=` --dir='${l}'`,u+=" --pattern='dist/**/**'",u+=" --pattern='bin/**/**'",u+=" --pattern='test/**/**'",u+=" --pattern='*.html'",u+=` --destDir='${f.name}/${f.version}'`,u+=" --metadata.cacheControl='public, max-age=31536000, immutable'",console.log(u),y.env.DOMAIN&&(u+=` --domain='${y.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(u+=" --dryRun"),await a(u),e.writeFileSync(d,g),!0!==c.dryRun&&(s.isDirty=!0,c.version=f.version,p.set("version",f.version),await m({target:c,packageJSON:f}))}export{i as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import r from"semver";import e from"@fnet/config";import o from"node:fs";import t from"@fnet/shelljs";import n from"form-data";async function i({setProgress:i,context:s,deploymentProject:a,deploymentProjectTarget:f,yamlTarget:c}){await i({message:"Deploying it as fnet flow."});const{file:p,data:w}=await e({name:f.config||"fnet-flow",dir:s.project.projectDir,tags:s.tags});if(!w.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${p}`);if(!w.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${p}`);if(!w.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${p}`);const d=`${w.env.ATOM_API_URL}/v1/auth/token`,m=w.env.ATOM_API_USERNAME,l=w.env.ATOM_API_PASSWORD,A=await fetch(d,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:m,password:l})});if(!A.ok)throw new Error(`Failed to fetch token: ${A.statusText}`);const h=await A.json(),_=h?.access_token;if(!_)throw new Error(`Invalid access_token from ${d}`);a.isDirty=!0;const u=r.inc(f.version,"patch");f.params.version=u,f.version=u,c.set("version",u);const v=`${w.env.ATOM_API_URL}/v1/service/fnet-flow/publish`,T=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${_}`},body:JSON.stringify({name:f.params.name,version:f.params.version,docs:f.params.docs,configs:f.params.configs})});if(!T.ok)throw new Error(`Error publishing fnet flow: ${T.statusText}`);const E=await T.json();if(E?.error)throw new Error("Error publishing fnet flow.");const O=E?.upload.id;let P="fnet-dir-zipper";P+=` --sourceDir='${s.project.projectDir}'`,P+=" --pattern=**/*",P+=" --stdout_format=json";const g=await t(P);if(0!==g.code)throw new Error(g.stderr);const S=JSON.parse(g.stdout).path;let M=new n;M.append("file",o.createReadStream(S));const $=await fetch(`${w.env.ATOM_API_URL}/v1/service/upload/single/${O}`,{method:"POST",headers:{...M.getHeaders(),Authorization:`Bearer ${_}`},body:M});if(!$.ok)throw new Error(`Error uploading fnet flow: ${$.statusText}`);const j=await $.json();if(j?.error)throw new Error("Error uploading fnet flow.")}export{i as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"semver";import r from"@fnet/config";import o from"node:fs";import t from"@fnet/shelljs";import n from"form-data";async function i({setProgress:i,context:s,deploymentProject:a,deploymentProjectTarget:d,yamlTarget:c}){await i({message:"Deploying it as fnet node."});const{file:f,data:p}=await r({name:d.config||"fnet-node",dir:s.project.projectDir,tags:s.tags});if(!p.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${f}`);if(!p.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${f}`);if(!p.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${f}`);const m=`${p.env.ATOM_API_URL}/v1/auth/token`,w=p.env.ATOM_API_USERNAME,A=p.env.ATOM_API_PASSWORD,h=await fetch(m,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:w,password:A})});if(!h.ok)throw new Error(`Failed to fetch token: ${h.statusText}`);const _=await h.json(),l=_?.access_token;if(!l)throw new Error(`Invalid access_token from ${m}`);a.isDirty=!0;const u=e.inc(d.version,"patch");d.params.version=u,d.version=u,c.set("version",u);const v=`${p.env.ATOM_API_URL}/v1/service/fnet-node/publish`,T=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${l}`},body:JSON.stringify({name:d.params.name,version:d.params.version,docs:d.params.docs,configs:d.params.configs})});if(!T.ok)throw new Error(`Error publishing fnet node: ${T.statusText}`);const E=await T.json();if(E?.error)throw new Error("Error publishing fnet node.");const O=E?.upload.id;let P="fnet-dir-zipper";P+=` --sourceDir='${s.project.projectDir}'`,P+=" --pattern=**/*",P+=" --stdout_format=json";const g=await t(P);if(0!==g.code)throw new Error(g.stderr);const S=JSON.parse(g.stdout).path;let M=new n;M.append("file",o.createReadStream(S));const $=await fetch(`${p.env.ATOM_API_URL}/v1/service/upload/single/${O}`,{method:"POST",headers:{...M.getHeaders(),Authorization:`Bearer ${l}`},body:M});if(!$.ok)throw new Error(`Error uploading fnet node: ${$.statusText}`);const j=await $.json();if(j?.error)throw new Error("Error uploading fnet node.")}export{i as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@fnet/to-pyip";import t from"lodash.clonedeep";import a from"semver";async function n({atom:n,target:r,onProgress:i,projectDir:s,dependencies:p,context:c,yamlTarget:m}){i&&await i({message:"Deploying it as pypi package."});const f=r?.config?await e({name:r.config,dir:s,optional:!0,transferEnv:!1,tags:c.tags}):void 0,g=a.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,m.set("version",g);const d=t(r.params);d.dependencies=t(p);const l={atom:n,params:d,config:f?.config,src:s,dest:s};return{deployer:await o(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@flownet/lib-to-nextjs";import t from"lodash.clonedeep";import n from"semver";async function a({atom:a,target:r,onProgress:s,projectDir:i,dependencies:c,context:m,yamlTarget:p}){s&&await s({message:"Deploying it as nextjs package."});const f=r?.config?await e({name:r.config,dir:i,optional:!0,transferEnv:!1,tags:m.tags}):void 0,g=n.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,p.set("version",g);const d=t(r.params);d.dependencies=t(c);const l={atom:a,params:d,config:f?.config,src:i,dest:i};return{deployer:await o(l)}}export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import{randomUUID as i}from"node:crypto";import o from"yaml";import s from"nunjucks";import a from"chalk";import{Api as r,Atom as n}from"@flownet/lib-atom-api-js";import c from"@fnet/config";import d from"@fnet/list-files";import l from"@fnet/yaml";class p{init({config:e,accessToken:t}){return new Promise(((i,o)=>{if(r.set_api_url(e.data.url),t)return r.set_req_token(t),void i(t);fetch(`${e.data.issuer}/protocol/openid-connect/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(e.data.grant.params)}).then((async e=>{if(!e.ok)throw new Error(await e.text());return e.json()})).then((e=>{r.set_req_token(e.access_token),i(e.access_token)})).catch((e=>{r.set_req_token(),o(e)}))}))}}var m=async e=>{const{atom:t,packageDependencies:i,context:o,deploymentProjectTarget:s,setProgress:a,deploymentProject:r,yamlTarget:n}=e;if(!0!==s.enabled)return;const c=s.type;try{if("lib"===c)await(await import("./index.DG8TqL-1.js")).default({...e});else if("red"===c)await(await import("./index.CmMM-Ek9.js")).default({...e});else if("npm"===c)await(await import("./index.N_a5FdgA.js")).default({...e});else if("gcs"===c)await(await import("./index.Bft2w7m3.js")).default({...e});else if("gitlab"===c)await(await import("./index.DI3yyTtl.js")).default({...e});else if("fnet-package"===c)await(await import("./index.D3p7pncT.js")).default({...e});else if("fnet-form"===c)await(await import("./index.Q-CYRcna.js")).default({...e});else if("fnet-node"===c)await(await import("./index.C2S9JYhS.js")).default({...e});else if("fnet-flow"===c)await(await import("./index.BuYxdKtK.js")).default({...e});else if("nextjs"===c)await(await import("./index.CDct_kkF.js")).default({atom:t,target:s,onProgress:a,projectDir:o.projectDir,dependencies:i,context:o,yamlTarget:n}),r.isDirty=!0;else if("webos"===c)await(await import("./index.CMC8mlye.js")).default({atom:t,target:s,onProgress:a,projectDir:o.projectDir,dependencies:i,context:o,yamlTarget:n}),r.isDirty=!0;else if("electron"===c)await(await import("./index.xd8c7XMr.js")).default({atom:t,target:s,onProgress:a,projectDir:o.projectDir,dependencies:i,context:o,yamlTarget:n}),r.isDirty=!0;else if("docker"===c)await(await import("./index.D2N9YZmA.js")).default({atom:t,target:s,onProgress:a,projectDir:o.projectDir,dependencies:i,context:o,yamlTarget:n}),r.isDirty=!0;else if("ios"===c)await(await import("./index.B5XE4ChJ.js")).default({atom:t,target:s,onProgress:a,projectDir:o.projectDir,dependencies:i,context:o,yamlTarget:n}),r.isDirty=!0;else if("macos"===c)await(await import("./index.W6RYgypK.js")).default({atom:t,target:s,onProgress:a,projectDir:o.projectDir,dependencies:i,context:o,yamlTarget:n}),r.isDirty=!0;else if("rust"===c)await(await import("./index.CzAV0S36.js")).default({atom:t,target:s,onProgress:a,projectDir:o.projectDir,dependencies:i,context:o,yamlTarget:n}),r.isDirty=!0;else{if("pypi"!==c)return void console.warn(`No deployer found for type: ${c}`);await(await import("./index.C7saWH6d.js")).default({atom:t,target:s,onProgress:a,projectDir:o.projectDir,dependencies:i,context:o,yamlTarget:n}),r.isDirty=!0}}catch(e){throw console.error(`Error during deployment for type "${c}":`,e),e}};class g{#e;#t;#i;#o;#s;#a;#r;#n;#c;#d;#l;#p;#m;#g;#h;#f;#y;constructor(e){this.#e=new p,this.#t=e,this.#a=[],this.#r=[],this._expire_ttl=3600,this._expire_ttl_short=300,this.#y={packageDependencies:this.#a,packageDevDependencies:this.#r,setProgress:this.setProgress.bind(this),context:this.#t,Atom:n,registerToPackageManager:this.registerToPackageManager.bind(this)}}get apiContext(){return this.#y}get context(){return this.#t}get atom(){return this.#i}get libs(){return this.#s}set libs(e){this.#s=e}get fileMode(){return this.#g}get buildMode(){return this.#h}get deployMode(){return this.#f}async _cache_set(e,t,i){}async initAuth(){this.#t.id&&(this.#n=await this.#e.init({config:this.#p}),this.#y.atomAccessToken=this.#n)}async initLibrary(){const e=this.#t.id;this.#i=this.#t.project?.libraryAtom||await n.get({id:e});let t=this.#i.doc.bundleName;t=t||(this.#i.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#i.doc.bundleName=t,this.#i.type=this.#i.type||"workflow.lib",this.#y.atom=this.#i}async initLibraryDir(){this.setProgress({message:"Initializing library directory."});const i=this.#t.projectDir;this.setProgress({message:"Cleaning project directory."});const o=d({dir:i,ignore:[".cache","node_modules",".conda",".bin",".dev"],absolute:!0});for(const t of o)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."});let s=i;e.existsSync(s)||e.mkdirSync(s,{recursive:!0}),s=t.join(i,"src"),e.existsSync(s)||e.mkdirSync(s,{recursive:!0}),s=t.join(i,"src","default"),e.existsSync(s)||e.mkdirSync(s,{recursive:!0}),s=t.join(i,".dev"),e.existsSync(s)||e.mkdirSync(s,{recursive:!0})}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#t.templateDir;this.#o=s.configure(e,{watch:!1,dev:!0}),this.#y.njEnv=this.#o}async createProjectYaml(){const i="fnode.yaml",s=`Creating ${i}`;await this.setProgress({message:s});const{content:a,...r}=this.#i.doc,n=this.#t.projectDir,c=t.resolve(n,`${i}`);e.writeFileSync(c,o.stringify(r),"utf8")}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#t.project?.devops){const e=[this.#t.project?.devops];for(let t=0;t<e.length;t++){let i=e[t];await this.deployProject({deploymentProject:i}),!0===i.isDirty&&await i.save()}}else if(this.#i.id){const e=await n.list({type:"library.deploy",parent_id:this.#i.id});for(let t=0;t<e.length;t++){let i=e[t];await this.deployProject({deploymentProject:i}),!0===i.isDirty&&(i=await n.update(i,{id:i.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:i}=t;if(t.doc.targets&&Array.isArray(t.doc.targets))throw new Error("Deployment project targets are deprecated. Please update targets in the yaml file.");const o=Object.keys(t.doc||{}),s=i||{};for(let e=0;e<o.length;e++){const i=t.doc[o[e]];i.name=o[e];const a=s.get(o[e]);await m({...this.#y,deploymentProject:t,deploymentProjectTarget:i,yamlTarget:a})}}async registerToPackageManager(e){const{target:t,packageJSON:i}=e;if(!this.#t.id)return;let o=await n.first({name:t.params.name,parent_id:this.#p.env.ATOM_PACKAGES_ID});o?(o.doc.versions.splice(0,0,{v:i.version}),await n.update(o,{id:o.id})):o=await n.create({parent_id:this.#p.env.ATOM_PACKAGES_ID,doc:{name:t.params.name,type:"pm",versions:[{v:i.version}]}})}async setProgress(e){const t="string"==typeof e?e:e?.message;console.log(a.blue(t)),await this._cache_set(this.#d,{status:"IN_PROGRESS",message:t})}async init(){this.#c=this.#t.buildId||i(),this.#y.buildId=this.#c,this.#m=this.#t.mode,this.#g=["all","deploy","build","file"].includes(this.#m),this.#h=["all","deploy","build"].includes(this.#m),this.#f=["all","deploy"].includes(this.#m),this.#l=this.#t.protocol,this.#d="BUILD:"+this.#c,this.#p=(await c({optional:!0,name:this.#t.atomConfig||"atom",dir:this.#t.projectDir,tags:this.#t.tags}))?.data;try{await this.setProgress({message:"Initialization started."}),await this.initAuth(),await this.initLibrary(),await this.initRuntime()}catch(e){throw await this._cache_set(this.#d,{status:"FAILED",message:e?.message||e}),e}}async initRuntime(){throw new Error("initRuntime method must be implemented by runtime-specific builder")}async build(){throw new Error("build method must be implemented by runtime-specific builder")}}async function h({atom:i,setProgress:o,context:a,packageDependencies:r}){await o({message:"Creating .gitignore"});const n={atom:i,packageDependencies:r},c=a.templateDir,d=s.compile(e.readFileSync(t.resolve(c,".gitignore.njk"),"utf8"),s.configure(c)).render(n),l=a.projectDir,p=t.resolve(l,".gitignore");e.writeFileSync(p,d,"utf8")}async function f({atom:i,context:o,setProgress:a,Atom:r}){const n="readme.md",c=`Creating ${n}`;if(await a({message:c}),o.project?.readme){const i=o.projectDir,a={content:o.project.readme.doc.content},r=t.resolve(o.project.projectDir,"fnet/how-to.md");if(e.existsSync(r)){const t=e.readFileSync(r,"utf8");a.howto=t}const c=t.resolve(o.project.projectDir,"fnet/input.yaml");if(e.existsSync(c)){const e=await l({file:c,tags:o.tags});a.input=e.content}const d=t.resolve(o.project.projectDir,"fnet/output.yaml");if(e.existsSync(d)){const e=await l({file:d,tags:o.tags});a.output=e.content}const p=o.templateDir,m=s.compile(e.readFileSync(t.resolve(p,`${n}.njk`),"utf8"),s.configure(p)).render(a),g=t.resolve(i,`${n}`);e.writeFileSync(g,m,"utf8")}else if(i.id){const a=await r.first({type:"wiki",parent_id:i.id});if(!a||"markdown"!==a.doc?.["content-type"])return;const{content:c,...d}=a.doc,l={content:c},p=o.templateDir,m=s.compile(e.readFileSync(t.resolve(p,`${n}.njk`),"utf8"),s.configure(p)).render(l),g=o.projectDir,h=t.resolve(g,`${n}`);e.writeFileSync(h,m,"utf8")}}export{g as B,h as a,f as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@flownet/lib-to-webos";import t from"lodash.clonedeep";import a from"semver";async function n({atom:n,target:r,onProgress:s,projectDir:i,dependencies:c,context:m,yamlTarget:p}){s&&await s({message:"Deploying it as webos package."});const f=r?.config?await e({name:r.config,dir:i,optional:!0,transferEnv:!1,tags:m.tags}):void 0,g=a.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,p.set("version",g);const d=t(r.params);d.dependencies=t(c);const l={atom:n,params:d,config:f?.config,src:i,dest:i};return{deployer:await o(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import a from"node:os";import d from"nunjucks";import o from"@node-red/util";import i from"@fnet/config";async function n({atom:n,setProgress:l,context:r,deploymentProject:p,deploymentProjectTarget:s,buildId:c,packageDependencies:m,njEnv:f}){await l({message:"Deploying it as node-red flow."});const y=r.projectDir,u=r.templateDir,g="workflow"===n.type?"WF":"LIB";let h;if("simple"===s.deploy.template)h={atom:n,packageDependencies:m,red:{tab:{id:s.deploy.id||o.util.generateId(),label:`${g}/${n.id?n.id:a.hostname()}/${n.name}/${s.deploy.name||s.deploy.template}`},function:{id:o.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(y,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},inject:{id:o.util.generateId(),...s.params?.inject,payload:"json"===s.params?.inject?.payloadType?`'${JSON.stringify(s.params?.inject?.payload)}'`:s.params?.inject?.payload},debug:{id:o.util.generateId()}}};else if("cronjob"===s.deploy.template){let d=s.params?.schedules?cloneDeep(s.params?.schedules):void 0;d?.forEach((e=>{"json"===e.payloadType&&(e.payload=`'${JSON.stringify(e.payload)}'`)})),h={atom:n,packageDependencies:m,red:{tab:{id:s.deploy.id||o.util.generateId(),label:`${g}/${n.id?n.id:a.hostname()}/${s.deploy.name||s.deploy.template}`},function:{id:o.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(y,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},cronjob:{id:o.util.generateId(),schedules:d},debug:{id:o.util.generateId()}}}}else{if("http"!==s.deploy.template)return;h={atom:n,packageDependencies:m,red:{tab:{id:s.deploy.id||o.util.generateId(),label:`${g}/${n.id?n.id:a.hostname()}/${s.deploy.name||s.deploy.template}`},function:{id:o.util.generateId(),name:n.doc.name,initialize:{content:e.readFileSync(t.resolve(y,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),var:n.doc.bundleName}},httpin:{id:o.util.generateId(),method:s.params.method||"get",url:s.params.url},httpout:{id:o.util.generateId()},debug:{id:o.util.generateId()}}}}let j=d.compile(e.readFileSync(t.resolve(u,`deploy/node-red/${s.deploy.template}.yaml.njk`),"utf8"),f).render(h);if(e.writeFileSync(t.resolve(y,"node-red.yaml"),j),j=yaml.load(j),!0===s.dryRun)return;p.isDirty=!0;const w=(await i({name:r.redConfig||"red",dir:r.projectDir,tags:r.tags}))?.data,$=s.deploy.url||w.env.RED_URL,b={};if(!1!==s.deploy.auth&&(b.Authorization="Bearer "+atomAccessToken),s.deploy.id)if(!0===s.actions?.delete){const e=await fetch(`${$}/flow/${s.deploy.id}`,{method:"DELETE",headers:b});if(!e.ok)throw new Error(`Failed to delete flow: ${e.statusText}`);delete s.actions.delete,delete s.deploy.id,s.enabled=!1}else{const e=await fetch(`${$}/flow/${s.deploy.id}`,{method:"PUT",headers:{...b,"Content-Type":"application/json"},body:JSON.stringify(j)});if(!e.ok)throw new Error(`Failed to update flow: ${e.statusText}`)}else{const e=await fetch(`${$}/flow`,{method:"POST",headers:{...b,"Content-Type":"application/json"},body:JSON.stringify(j)});if(!e.ok)throw new Error(`Failed to create flow: ${e.statusText}`);const t=await e.json();s.deploy.id=t.id}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
async function r(r){return{projectDir:process.cwd(),tags:r.ftag}}export{r as createContext};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@fnet/to-rust";import t from"lodash.clonedeep";import a from"semver";async function n({atom:n,target:r,onProgress:s,projectDir:i,dependencies:c,context:m,yamlTarget:p}){s&&await s({message:"Deploying it as Rust package."});const f=r?.config?await e({name:r.config,dir:i,optional:!0,transferEnv:!1,tags:m.tags}):void 0,g=a.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,p.set("version",g);const d=t(r.params);d.dependencies=t(c);const l={atom:n,params:d,config:f?.config,src:i,dest:i};return{deployer:await o(l)}}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"@fnet/config";import o from"@flownet/lib-to-docker";import t from"lodash.clonedeep";import r from"semver";async function a({atom:a,target:n,onProgress:i,projectDir:s,dependencies:c,context:m,yamlTarget:p}){i&&await i({message:"Deploying it as docker package."});const f=n?.config?await e({name:n.config,dir:s,optional:!0,transferEnv:!1,tags:m.tags}):void 0,d=r.inc(n.version||"0.1.0","patch");n.params.version=d,n.version=d,p.set("version",d);const g=t(n.params);g.dependencies=t(c);const l={atom:a,params:g,config:f?.config,src:s,dest:s};return{deployer:await o(l)}}export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import r from"semver";import n from"@fnet/shelljs";import o from"@fnet/config";async function a({setProgress:a,context:i,deploymentProject:s,deploymentProjectTarget:c,yamlTarget:p}){await a({message:"Deploying it as fnet package."});const d=i.projectDir,m=t.resolve(d,"package.json"),f=e.readFileSync(m),l=JSON.parse(f);l.name=c.params.name,l.version=r.inc(c.version,"patch"),delete l.scripts,delete l.devDependencies,e.writeFileSync(m,JSON.stringify(l,null,"\t"));const{file:A,data:_}=await o({name:c.config||"fnet-package",dir:i.projectDir,tags:i.tags});if(!_.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${A}`);if(!_.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${A}`);if(!_.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${A}`);const v=`${_.env.ATOM_API_URL}/v1/auth/token`,h=_.env.ATOM_API_USERNAME,w=_.env.ATOM_API_PASSWORD,O=await fetch(v,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:h,password:w})});if(!O.ok)throw new Error(`Failed to fetch token: ${O.statusText}`);const g=await O.json(),u=g?.access_token;if(!u)throw new Error(`Invalid access_token from ${v}`);let y="fnet-files-to-gcs";if(y+=` --projectId='${_.env.GCS_PROJECT_ID}'`,y+=` --bucketName='${_.env.GCS_BUCKET_NAME}'`,y+=` --keyFilename='${t.resolve(t.dirname(A),_.env.GCS_UPLOADER_KEY_FILE)}'`,y+=` --dir='${d}'`,y+=" --pattern='dist/**/**'",y+=" --pattern='bin/**/**'",y+=" --pattern='test/**/**'",y+=" --pattern='*.html'",y+=` --destDir='${l.name}/${l.version}'`,y+=" --metadata.cacheControl='public, max-age=31536000, immutable'",_.env.DOMAIN&&(y+=` --domain='${_.env.DOMAIN}'`),!0!==c.dry_run&&!0!==c.params.dry_run||(y+=" --dryRun"),await n(y),e.writeFileSync(m,f),!0===c.dryRun)return;s.isDirty=!0,c.version=l.version,p.set("version",l.version);const S=`${_.env.ATOM_API_URL}/v1/service/fnet-package/publish`,P=await fetch(S,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${u}`},body:JSON.stringify({name:l.name,version:l.version,version_domain:_.env.DOMAIN,docs:c.params.docs,configs:c.params.configs})});if(!P.ok)throw new Error(`Failed to publish fnet package: ${P.statusText}`);const T=await P.json();if(T?.error)throw new Error("Failed to publish fnet package.")}export{a as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import i from"node:os";import s from"@fnet/list-files";import{B as a,c as n,a as r}from"./index.CJof4wXN.js";import o from"@flownet/lib-render-templates-dir";import c from"@fnet/auto-conda-env";import"node:crypto";import"yaml";import"nunjucks";import"chalk";import"@flownet/lib-atom-api-js";import"@fnet/config";import"@fnet/yaml";class p extends a{async initRuntime(){await async function(e){const{atom:t,context:i,setProgress:s}=e;s("Initializing features..."),t.doc.features=t.doc.features||{};const a=t.doc.features;!1===a.cli?a.cli={enabled:!1}:(a.cli,a.cli={enabled:!0}),a.cli.enabled=!0===a.cli.enabled&&(!1===t.doc.features.form_enabled||!0===a.cli.extend||!0===a.cli.enabled)}(this.apiContext),await async function({atom:e,packageDependencies:t,packageDevDependencies:i,setProgress:s}){s("Initializing dependencies")}(this.apiContext),await this.initLibraryDirPython(),await this.initNunjucks(),await this.initLibsPython()}async initLibraryDirPython(){this.setProgress({message:"Initializing library directory."});const a=this.context.projectDir;this.setProgress({message:"Cleaning project directory."});const n=s({dir:a,ignore:[".cache","node_modules",".conda",".bin",".dev"],absolute:!0});for(const t of n)e.rmSync(t,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."});let r=a;e.existsSync(r)||e.mkdirSync(r,{recursive:!0}),r=t.join(a,"src"),e.existsSync(r)||e.mkdirSync(r,{recursive:!0}),r=t.join(a,"src","default");const o=this.context.projectSrcDir;if(!e.existsSync(r))try{"win32"===i.platform()?e.symlinkSync(o,r,"junction"):e.symlinkSync(o,r,"dir")}catch(e){throw new Error(`Couldn't create symlink. Error: ${e.message}`)}r=t.join(a,".dev"),e.existsSync(r)||e.mkdirSync(r,{recursive:!0})}async initLibsPython(){this.setProgress({message:"Initializing external libs."});const e=this.atom;e.protocol="src:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const t=[{name:this.atom.doc.name,type:"atom",parent_id:this.atom.parent_id,atom:e}];this.libs=t}async createAtomLibFilesPython({libs:i}){await this.setProgress({message:"Creating external lib files."});const s=i.filter((e=>"atom"===e.type));for(let i=0;i<s.length;i++){const a=s[i].atom;if("src:"===a.protocol){const i=t.resolve(this.context.projectSrcDir,`${a.fileName||a.name}.py`);if(!e.existsSync(i)){e.mkdirSync(t.dirname(i),{recursive:!0});let s="def default():\n";s+=' print("Hello world!")\n',e.writeFileSync(i,s,"utf8")}}}}async build(){try{this.fileMode&&(await this.createAtomLibFilesPython({libs:this.libs}),await this.createProjectYaml(),await n(this.apiContext),await r(this.apiContext),await async function({atom:i,setProgress:s,context:a,packageDependencies:n}){if(!0!==i.doc.features.cli.enabled)return;await s({message:"Creating cli."});const r={atom:i,packageDependencies:n},c=a.templateDir,p=t.join(a.projectDir,"src","cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await o({pattern:["index.py.njk","__init__.py.njk"],dir:t.join(c,"src","cli"),outDir:p,context:r})}(this.apiContext),this.buildMode&&(await async function(e){const{setProgress:i,atom:s,context:a}=e;i({message:"Installing Python packages"});const n=a.projectDir,r=await c({pythonVersion:"3.12",packages:[{package:"fnet-import-parser",version:"0.1.9"}]}),{errors:p,result:d}=await r.runBin("fnet_import_parser",["--entry_file",t.join(n,"src","default","index.py")],{captureName:"result"});if(p)throw new Error(p.format());const l=JSON.parse(d.items[0].stdout),m=l.required["third-party"]?.map((e=>({package:e.metadata?.package||e.path,version:e.metadata?.version||void 0,channel:e.metadata?.channel||void 0})))||[],y=s.doc.dependencies||[];for(const e of m)y.some((t=>t.package===e.package))||y.push(e);const h=t.join(n,".conda"),f=await c({envDir:h,pythonVersion:s.doc.features.runtime.version||"3.12",packages:y});a.pythonEnv=f,e.packageDependencies=y;const u=s.doc.features.render?.dirs||[];for(const e of u)e.dir=t.resolve(n,e.dir),e.outDir=t.resolve(n,e.outDir),await o(e);let g={params:{}};g.params.package_name=s.doc.name,g.params.version="0.1.0",g.params.bin_name=s.doc.name,g.params.python_requires=s.doc.features.runtime.version||">=3.12",g.params.dependencies=y,g.params.scripts=JSON.stringify({cli:`PYTHONPATH='${t.join("src")}' '${t.relative(a.projectDir,f.pythonBin)}' '${t.join("src","cli","index.py")}'`}),await o({pattern:["setup.py.njk","package.json.njk","pyproject.toml.njk"],dir:a.templateDir,outDir:a.projectDir,context:g})}(this.apiContext),this.deployMode&&await this.deploy())),await this._cache_set(this.buildKey,{status:"COMPLETED"})}catch(e){throw await this._cache_set(this.buildKey,{status:"FAILED",message:e.message||e}),console.log(e),e}}}export{p as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import o from"@fnet/config";async function n({atom:n,Atom:i,setProgress:r,context:a,packageDependencies:d,deploymentProject:c,deploymentProjectTarget:l}){await r({message:"Deploying it as workflow lib."});const s=(await o({name:"atom",dir:a.projectDir,tags:a.tags}))?.data;let f,p,y,m=l.deploy.name.split("/");if(1===m.length)p=s.env.ATOM_LIBRARIES_ID,y=l.deploy.name;else{if(2!==m.length)throw new Error("Wrong name path.");{const e=await i.first({where:{name:m[0],parent_id:s.env.ATOM_LIBRARIES_ID,type:"folder"},limit:1});if(!e)throw new Error("Couldnt file lib folder.");p=e.id,y=m[1]}}if(!0===l.dryRun)return;if(c.isDirty=!0,l.deploy.id){if(f=await i.get({id:l.deploy.id}),!f)return}else{if(f=await i.create({parent_id:p,doc:{name:y,type:"workflow.lib","content-type":"javascript",dependencies:[],content:void 0,subtype:"workflow"}}),!f)return;l.deploy.id=f.id}const w=a.projectDir;f.doc.contents=[{content:e.readFileSync(t.resolve(w,"dist/default/esm/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"esm"},{content:e.readFileSync(t.resolve(w,"dist/default/cjs/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"cjs"},{content:e.readFileSync(t.resolve(w,"dist/default/iife/index.js"),{encoding:"utf8",flag:"r"}),"content-type":"javascript",format:"iife"}],f.doc.name=y,f.doc.dependencies=d,"workflow.lib"===n.type?f.doc.subtype="library":"workflow"===n.type&&(f.doc.subtype="workflow"),f=await i.update(f,{id:f.id})}export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import t from"@fnet/shelljs";import a from"@fnet/config";async function e({setProgress:e,context:o,deploymentProject:r,deploymentProjectTarget:i,buildId:n}){await e({message:"Deploying it as gitlab project."});const s=o.projectDir;let l="fnet-to-gitlab";const c=i.params.config||"gitlab",g=await a({name:c,dir:o.projectDir,tags:o.tags});if(!g)throw new Error(`Couldnt load config ${c}`);const{data:p}=g.data;l+=` --projectGroupId=${p.projectGroupId}`,l+=` --projectPath='${s}'`,l+=` --projectName='${i.params.name}'`,l+=` --projectBranch='${i.params.branch||"main"}'`,l+=` --gitlabHost='${p.gitlabHost}'`,l+=` --gitlabToken='${p.gitlabToken}'`,l+=` --gitlabUsername='${p.gitlabUsername}'`,l+=` --gitlabUserEmail='${p.gitlabUserEmail}'`,!0!==i.dryRun&&(await t(l),r.isDirty=!0)}export{e as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import r from"node:path";import{fileURLToPath as n}from"node:url";import e from"node:os";import i from"node:fs";async function t(n){const t=function(){const n=e.homedir(),t=r.join(n,".fnet","bin");return i.existsSync(t)||i.mkdirSync(t,{recursive:!0}),t}(),o=function(){const n=e.homedir(),t=r.join(n,".fnet");return i.existsSync(t)||i.mkdirSync(t,{recursive:!0}),r.join(t,"bin-registry.json")}();let s={};if(i.existsSync(o))try{const r=i.readFileSync(o,"utf8");s=JSON.parse(r)}catch(r){console.warn(`Warning: Could not parse bin registry: ${r.message}`)}return{binDir:t,registryPath:o,registry:s,args:n}}r.dirname(n(import.meta.url));export{t as createContext};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"fs";import r from"path";import n from"@fnet/yaml";import t from"@fnet/shell-flow";async function o({projectType:e,group:r,tags:o,args:f,argv:i}){try{const m=await a(e),{parsed:s}=await n({file:m.path,tags:o}),c=s.commands;if(!c)throw new Error(`Commands section not found in ${m.name}`);const y=c[r];if(!y)throw new Error(`Command group '${r}' not found in ${m.name}`);await t({commands:y,context:{args:f,argv:i,projectType:m.type}})}catch(e){console.error(`Error: ${e.message}`),process.exit(1)}}async function a(n){const t=process.cwd(),o=r.resolve(t,"fnode.yaml"),a=r.resolve(t,"fnet.yaml");if("fnode"===n){if(e.existsSync(o))return{path:o,name:"fnode.yaml",type:"fnode"};throw new Error("fnode.yaml file not found in current directory")}if("fnet"===n){if(e.existsSync(a))return{path:a,name:"fnet.yaml",type:"fnet"};throw new Error("fnet.yaml file not found in current directory")}if(e.existsSync(o))return{path:o,name:"fnode.yaml",type:"fnode"};if(e.existsSync(a))return{path:a,name:"fnet.yaml",type:"fnet"};throw new Error("No project file (fnode.yaml or fnet.yaml) found in current directory")}export{a as detectProjectFile,o as runCommandGroup};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import r from"node:path";import t from"semver";import i from"@fnet/shelljs";import o from"@fnet/config";import n from"@fnet/object-from-schema";import s from"yaml";import{r as a,w as m}from"./index.js";import{fileURLToPath as p}from"node:url";import"yargs";import"chalk";import"node:util";import"tree-kill";import"node:child_process";import"node:os";import"@flownet/lib-render-templates-dir";import"@fnet/yaml";import"@fnet/prompt";async function c({atom:p,setProgress:c,context:l,deploymentProject:d,deploymentProjectTarget:f,yamlTarget:y}){await c({message:"Deploying it as npm package."});const g=l.projectDir,u=r.resolve(g,"package.json"),w=e.readFileSync(u),b=JSON.parse(w);b.name=f.params.name,b.version=t.inc(f.version,"patch");const h=f.params.bin?.name||f.params.bin;!1!==f.params.bin?.enabled&&h&&"string"==typeof h&&(b.bin={[h]:"dist/cli/esm/index.js"}),delete b.scripts,delete b.devDependencies,b.scripts={serve:"npx serve ."},e.writeFileSync(u,JSON.stringify(b,null,"\t"));const v=f.config||"npm";let j=(await o({name:v,dir:l.projectDir,tags:l.tags,optional:!0}))?.data;if(!j){const t=a("./template/schemas/to-npm.yaml"),i=await n({schema:t,tags:l.tags}),o=l.project.projectDir,m=r.resolve(o,".fnet");e.existsSync(m)||e.mkdirSync(m),e.writeFileSync(r.resolve(m,`${v}.fnet`),s.stringify(i)),j=i}if(e.writeFileSync(r.resolve(g,".npmrc"),`//registry.npmjs.org/:_authToken=${j.env.NPM_TOKEN}`),!0!==f.dryRun){if(m("bun")){if(0!==(await i("bun publish --access public",{cwd:g})).code)throw new Error("Couldnt publish to npm")}else{if(0!==(await i("npm publish --access public",{cwd:g})).code)throw new Error("Couldnt publish to npm")}e.writeFileSync(u,w),d.isDirty=!0,f.version=b.version,y.set("version",b.version)}}r.dirname(p(import.meta.url)),process.cwd();export{c as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import r from"semver";import e from"@fnet/config";async function o({setProgress:o,context:t,deploymentProject:n,deploymentProjectTarget:i,yamlTarget:s}){await o({message:"Deploying it as fnet form."});const{file:a,data:f}=await e({name:i.config||"fnet-form",dir:t.projectDir,tags:t.tags});if(!f.env.ATOM_API_URL)throw new Error(`ATOM_API_URL is required in ${a}`);if(!f.env.ATOM_API_USERNAME)throw new Error(`ATOM_API_USERNAME is required in ${a}`);if(!f.env.ATOM_API_PASSWORD)throw new Error(`ATOM_API_PASSWORD is required in ${a}`);const c=`${f.env.ATOM_API_URL}/v1/auth/token`,A=f.env.ATOM_API_USERNAME,m=f.env.ATOM_API_PASSWORD,p=await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({username:A,password:m})});if(!p.ok)throw new Error(`Failed to fetch token: ${p.statusText}`);const _=await p.json(),w=_?.access_token;if(!w)throw new Error(`Invalid access_token from ${c}`);n.isDirty=!0;const h=r.inc(i.version,"patch");i.params.version=h,i.version=h,s.set("version",h);const d=`${f.env.ATOM_API_URL}/v1/service/fnet-form/publish`,v=await fetch(d,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${w}`},body:JSON.stringify({name:i.params.name,version:i.params.version,docs:i.params.docs,configs:i.params.configs})});if(!v.ok)throw new Error(`Error publishing fnet form: ${v.statusText}`);const P=await v.json();if(P?.error)throw new Error("Error publishing fnet form.")}export{o as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"node:fs";import t from"node:path";import a from"nunjucks";import s from"@flownet/lib-parse-imports-js";import o from"@flownet/lib-parse-node-url";import{B as n,c as r,a as i}from"./index.CJof4wXN.js";import p from"lodash.merge";import c from"@fnet/npm-list-versions";import l from"@flownet/lib-render-templates-dir";import u from"@fnet/npm-pick-versions";import d from"object-hash";import f from"ajv/dist/2020.js";import m from"ajv/dist/standalone/index.js";import g from"ajv-formats";import b from"@fnet/shelljs";import{w as h}from"./index.js";import"node:crypto";import"yaml";import"chalk";import"@flownet/lib-atom-api-js";import"@fnet/config";import"@fnet/list-files";import"@fnet/yaml";import"yargs";import"node:util";import"tree-kill";import"node:url";import"node:child_process";import"node:os";import"@fnet/prompt";function y({feature:e,features:t,packageDevDependencies:a}){const{name:s,packages:o,options:n,extraCheck:r,explicit:i}=e,c=`${s}_enabled`,l=t.rollup_output||{},u=Object.keys(l);let d=n||{};const f=t[s]?.options;f&&(d=p(d,f));const m=!t[s]||!1===t[s]?.enabled;u.forEach((e=>{const a=t.rollup_output[e];if(a){if(Reflect.has(a,s)){if(m||!a[s]||!1===a[s]?.enabled)return void delete a[s];!0===a[s]&&(a[s]={enabled:!0,options:d})}else{if(m||i||!1===t[c])return;a[s]={enabled:!0}}a[s]=a[s]||{},a[s].options={...d,...a[s].options}}}));let g=u.some((e=>!0===t.rollup_output[e][s]?.enabled));r&&(g=r()&&g),t[c]=g,g&&o.forEach((e=>a.push({package:e[0],version:e[1]})))}function k({dir:a,name:s="index"}){let o=t.resolve(a,`./${s}.tsx`);if(e.existsSync(o)||(o=t.resolve(a,`./${s}.ts`)),e.existsSync(o)||(o=t.resolve(a,`./${s}.jsx`)),e.existsSync(o)||(o=t.resolve(a,`./${s}.js`)),!e.existsSync(o))return{};const n=o,r=t.extname(o);return{file:n,ext:r,ts:".ts"===r||".tsx"===r,name:s}}async function w(e){const{atom:a,context:o,setProgress:n}=e;n("Initializing features..."),a.doc.features=a.doc.features||{};const r=a.doc.features;r.project=r.project||{},r.project.format=r.project.format||r.project_format||"esm",r.project_format=r.project.format,r.dts_enabled=!0===r.dts||void 0!==r.dts&&!1!==r.dts;const i=t.resolve(o.project.projectDir),c=k({dir:t.resolve(i,"./app")});if(c.file){n("Parsing app entry imports...");let e=await s({file:c.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));r.app_uses_jsx=t,r.app_has_entry=!0,e=await s({file:c.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),r.app_entry_uses_jsx=t,r.app_entry_is_ts=c.ts,r.app_entry_ext=c.ext}const l=k({dir:t.resolve(i,"./cli")});if(l.file){n("Parsing cli entry imports...");let e=await s({file:l.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));r.cli_uses_jsx=t,r.cli_has_entry=!0,e=await s({file:l.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),r.cli_entry_uses_jsx=t,r.cli_entry_is_ts=l.ts,r.cli_entry_ext=l.ext}if("workflow.lib"===a.type){const e=k({dir:t.resolve(i,"./src")});if(e.file){n("Parsing src entry imports...");let t=await s({file:e.file,recursive:!0}),a=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));r.src_uses_jsx=a,r.src_has_entry=!0,t=await s({file:e.file}),a=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),r.src_entry_uses_jsx=a,r.src_entry_is_ts=e.ts,r.src_entry_ext=e.ext}}const u=Reflect.has(r,"app_entry_uses_jsx")?!0===r.app_entry_uses_jsx:!0===r.src_entry_uses_jsx,d=Reflect.has(r,"cli_entry_uses_jsx")?!0===r.cli_entry_uses_jsx:!0===r.src_entry_uses_jsx;r.form_enabled=u||d||!0===r.form||!0===r.form?.enabled,r.multiple_enabled=r.multiple_enabled||!0===r.multiple||!0===r.multiple?.enabled,!1===r.app?r.app={enabled:!1}:!0===r.app?r.app={enabled:!0,extend:!0===r.app_has_entry,export:!0,react:u}:r.app={enabled:!0,extend:!0===r.app_has_entry,export:!0,react:u,...r.app||{}},r.app.enabled=!0===r.app.enabled&&(!0===a.doc.features.form_enabled||!0===r.app.extend||!0===r.app.enabled),r.app.format=r.app.format||"esm",r.app.folder=r.app.folder||r.app.format||"default",!1===r.cli?r.cli={enabled:!1}:!0===r.cli?r.cli={enabled:!0,extend:!0===r.cli_has_entry,export:!0,react:d}:r.cli={enabled:!0,extend:!0===r.cli_has_entry,export:!0,react:d,...r.cli||{}},r.cli.enabled=!0===r.cli.enabled&&(!1===a.doc.features.form_enabled||!0===r.cli.extend||!0===r.cli.enabled),r.cli.format=r.cli.format||"esm",r.cli.folder=r.cli.folder||r.cli.folder||"esm",r.cli.node_options=r.cli.node?.options||r.cli.node_options||"",r.cli.bin=r.cli.bin||a.doc.name,r.cli.installable=!0===r.cli.installable,r.cli.enabled&&(a.doc["npm::bin"]=r.cli.bin),r.json=r.cli.enabled||r.json;const f={cjs:{format:"cjs",context:r.form_enabled?"window":"global",babel:!0===r.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==r.cjs,copy:!1},esm:{format:"esm",context:r.form_enabled?"window":"global",babel:!0===r.src_uses_jsx||!1,browser:!1,replace:!0,terser:!1,enabled:!1!==r.esm,copy:!0},iife:{format:"iife",context:r.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!0===r.iife,terser:!0,copy:!1}};!0===r.webos&&(f.webos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,input:"./src/app/index.js",output_dir:"./dist/app/webos",copy:!1,babel_options:{targets:{chrome:"79"}}}),!0===r.electron&&(f.electron={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/electron"}),!0===r.nextjs&&(f.nextjs={format:"esm",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/nextjs"}),!0===r.ios&&(f.ios={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/ios"}),!0===r.macos&&(f.macos={format:"iife",browser:!0,babel:!0,context:"window",replace:!0,terser:!0,copy:!1,input:"./src/app/index.js",output_dir:"./dist/app/macos"}),!0===r.app.enabled&&(r.app.dir=`./dist/app/${r.app.folder}`,r.app.output={file:`./dist/app/${r.app.folder}/index.js`,dir:`./dist/app/${r.app.folder}/`,...r.app.output||{}},r.app.input={file:"./src/app/index.js",dir:"./src/app/",...r.app.input||{}},f.app={format:r.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:r.app.input.file,output_dir:r.app.dir,terser:!0,output_exports:!1===r.app.export?"none":"auto",browsersync:!0}),!0===r.cli.enabled&&(r.cli.dir=`./dist/cli/${r.cli.folder}`,r.cli.output={file:`./dist/cli/${r.cli.folder}/index.js`,dir:`./dist/cli/${r.cli.folder}/`,...r.cli.output||{}},r.cli.input={file:"./src/cli/index.js",dir:"./src/cli/",...r.cli.input||{}},f.cli={format:r.cli.format,context:"global",babel:!0===r.src_uses_jsx||!0===r.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:r.cli.input.file,output_dir:r.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===r.cli.export?"none":"auto"});const m={server:".",startPath:`${t.normalize(r.app.dir||".")}`,files:[t.normalize("./dist/**/*")],cors:!0,open:!1};r.babel_options=p({targets:{browsers:"last 9 versions, not dead",node:"18"}},r.babel_options||r.babel?.options),r.browsersync_options=p(m,r.browsersync_options||r.browsersync?.options||{}),r.replace_options=p({},r.replace_options||r.replace?.options||{}),Reflect.has(r.browsersync_options,"proxy")&&delete r.browsersync_options.server,r.rollup=r.rollup||{},r.rollup_output=p(f,r.rollup_output||r.rollup?.output||{}),r.preact_enabled=!0===r.preact||r.preact&&!1!==r.preact?.enabled;let g=Object.keys(f);for(const e of g){const t=f[e];t&&(!1!==r.rollup[e]?(t.babel_options=t.babel_options||r.babel_options,t.browsersync_options=p(r.browsersync_options,t.browsersync_options),t.replace_options=p(r.replace_options,t.replace_options),r.preact_enabled&&(t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{},t.alias.entries.react="preact/compat",t.alias.entries["react-dom"]="preact/compat"),(r.form_enabled||r.babel)&&(t.babel=!0)):delete r.rollup_output[e])}g=Object.keys(r.rollup_output),r.babel_enabled=g.some((e=>!0===r.rollup_output[e].babel)),r.browser_enabled=g.some((e=>!0===r.rollup_output[e].babel)),r.browsersync_enabled=!1!==r.browsersync&&g.some((e=>!0===r.rollup_output[e].browsersync)),r.browsersync_enabled=r.browsersync_enabled&&r.app.enabled,r.dependency_auto_enabled=!1!==r.dependency_auto&&!1!==r.dependency_auto?.enabled,r.npm_install_flags=r.npm_install_flags||"",r.react_version=r.react_version||r.react?.version||18,function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features,o=s.css&&!1!==s.css.enabled;let n=[];o&&(n.push(["rollup-plugin-postcss","^4"]),n.push(["sass","^1.66"]),(s.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":n.push(["postcss-import","^15"]);break;case"postcss-url":n.push(["postcss-url","^10"]);break;case"postcss-preset-env":n.push(["postcss-preset-env","^9"]);break;case"autoprefixer":n.push(["autoprefixer","^10"]);break;case"cssnano":n.push(["cssnano","^6"])}})));y({feature:{name:"css",packages:n},features:s,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features;if("bun"===s.runtime.type)return;const o={};!0===s.app?.enabled&&(o.targets=o.targets||[],o.targets.push({src:"./src/app/index.html",dest:s.app.dir}),Reflect.has(s.app,"copy")||Reflect.has(s,"copy")||(s.copy=!0)),y({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:o},features:s,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e,s=t.doc.features;"bun"!==s.runtime.type&&y({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:s,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"workbox",packages:[["rollup-plugin-workbox","^8"]],options:{generate:{swDest:"dist/app/esm/sw.js",globDirectory:"dist/app/esm",globPatterns:["**/*.{html,js,css,png,jpg}"],skipWaiting:!0,clientsClaim:!0}},explicit:!0},features:t.doc.features,packageDevDependencies:a})}(e),function(e){const{atom:t,packageDevDependencies:a}=e;y({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:t.doc.features,packageDevDependencies:a})}(e)}async function v({projectDir:a,name:s,setProgress:o,count:n=1}){let r;const i=d(["npm-pick-versions",s,n]),p=t.join(a,".cache"),c=t.join(p,i+".json");return e.existsSync(c)?(o&&o(`Picking npm version of ${s} from cache ...`),r=JSON.parse(e.readFileSync(c,"utf8"))):(o&&o(`Picking npm version of ${s} ...`),r=await u({name:s,count:n}),e.mkdirSync(p,{recursive:!0}),e.writeFileSync(c,JSON.stringify(r),"utf8")),r}class _ extends n{async initRuntime(){await w(this.apiContext);"bun"===this.apiContext.context.project.runtime.type?await async function({atom:e,packageDependencies:t,packageDevDependencies:a,setProgress:s}){s("Initializing dependencies for Bun");const o=e.doc.dependencies||[];if(o.filter((e=>!e.dev)).forEach((e=>t.push(e))),o.filter((e=>e.dev)).forEach((e=>a.push(e))),"workflow"===e.type&&(t.push({package:"get-value",version:"^3"}),t.push({package:"set-value",version:"^4"})),e.doc.features.form_enabled&&e.doc.features.dependency_auto_enabled){let a="^18.2";s("Fetching React versions"),a=`^${(await c({name:"react",groupBy:{major:!0}})).find((t=>t[0]===e.doc.features.react_version.toString()))[0]}`,t.push({package:"react",version:a}),t.push({package:"react-dom",version:a}),"workflow"===e.type&&(t.push({package:"@fnet/react-app",version:"^0.1"}),t.push({package:"@fnet/react-app-state",version:"^0.1"}))}e.doc.features.preact_enabled&&t.push({package:"preact",version:"^10"}),!0===e.doc.features.cli.enabled&&(t.push({package:"@fnet/args",version:"^0.1"}),t.push({package:"yargs-parser",version:"^22.0"}),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled&&t.push({package:"@fnet/config",version:"0.2.21"}),e.doc.features.cli.mcp&&!0===e.doc.features.cli.mcp.enabled&&(t.push({package:"@modelcontextprotocol/sdk",version:"^1.10"}),t.push({package:"express",version:"^4.18"}))),e.doc.features.render&&!1!==e.doc.features.render.enabled&&a.push({package:"@flownet/lib-render-templates-dir",version:"0.1.19"})}(this.apiContext):await async function({atom:e,packageDependencies:t,packageDevDependencies:a,setProgress:s}){s("Initializing dependencies");const o=e.doc.dependencies||[];if(o.filter((e=>!e.dev)).forEach((e=>t.push(e))),o.filter((e=>e.dev)).forEach((e=>a.push(e))),"workflow"===e.type&&(t.push({package:"get-value",version:"^3"}),t.push({package:"set-value",version:"^4"})),e.doc.features.form_enabled&&e.doc.features.dependency_auto_enabled){let a="^18.2";s("Fetching React versions"),a=`^${(await c({name:"react",groupBy:{major:!0}})).find((t=>t[0]===e.doc.features.react_version.toString()))[0]}`,t.push({package:"react",version:a}),t.push({package:"react-dom",version:a}),"workflow"===e.type&&(t.push({package:"@fnet/react-app",version:"^0.1"}),t.push({package:"@fnet/react-app-state",version:"^0.1"}))}e.doc.features.preact_enabled&&t.push({package:"preact",version:"^10"}),!0===e.doc.features.cli.enabled&&(t.push({package:"@fnet/args",version:"^0.1"}),t.push({package:"yargs-parser",version:"^22.0"}),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled&&t.push({package:"@fnet/config",version:"0.2.21"}),e.doc.features.cli.mcp&&!0===e.doc.features.cli.mcp.enabled&&(t.push({package:"@modelcontextprotocol/sdk",version:"^1.10"}),t.push({package:"express",version:"^4.18"}))),e.doc.features.render&&!1!==e.doc.features.render.enabled&&a.push({package:"@flownet/lib-render-templates-dir",version:"0.1.19"}),a.push({package:"@babel/core",version:"^7"}),a.push({package:"@rollup/plugin-commonjs",version:"^28"}),a.push({package:"@rollup/plugin-node-resolve",version:"^16"}),a.push({package:"@rollup/plugin-replace",version:"^6"}),a.push({package:"rollup",version:"^4"}),e.doc.features.dts_enabled&&a.push({package:"rollup-plugin-dts",version:"^6"}),a.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),a.push({package:"@rollup/plugin-alias",version:"^5"}),a.push({package:"fs-extra",version:"^11"}),e.doc.features.babel_enabled&&(a.push({package:"@rollup/plugin-babel",version:"^6"}),a.push({package:"@babel/preset-env",version:"^7"}),a.push({package:"@babel/preset-react",version:"^7"}),e.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":a.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":a.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":a.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":a.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":a.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),a.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),e.doc.features.browsersync_enabled&&a.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})}(this.apiContext),await this.initLibraryDir(),await this.initNunjucks(),await this.initLibs()}async initLibs(){this.setProgress({message:"Initializing external libs."});const e=[{name:this.atom.doc.name,type:"atom",parent_id:this.atom.parent_id}];this.libs=e,await this.initAtomLibsAndDeps({libs:e,packageDependencies:this.apiContext.packageDependencies})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const a=e.filter((e=>"atom"===e.type));for(let e=0;e<a.length;e++){const s=a[e],o=await this.findAtomLibrary({url:s.name});s.atom=o;const n=o.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));n?.forEach((e=>{const a=t.find((t=>t.package===e.package));a?"string"==typeof e.path?(a.path||[]).some((t=>t===e.path))||(a.path=a.path||[],a.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(a.path||[]).some((t=>t===e))||(a.path=a.path||[],a.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e}){const a=o({url:e});if(!a)throw new Error(`Invalid package name: ${e}`);if(a.protocol||(a.protocol=this.context.protocol),"ac:"===a.protocol){const t=a.pathname.split("/");if(1===t.length)return await this.apiContext.Atom.first({where:{name:e,parent_id:this.atomConfig.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await this.apiContext.Atom.first({where:{name:t[0],parent_id:this.atomConfig.env.ATOM_LIBRARIES_ID,type:"folder"}});return await this.apiContext.Atom.first({where:{name:t[1],parent_id:e.id,type:"workflow.lib"}})}}else if("src:"===a.protocol){const e=this.atom;e.protocol="src:",e.doc.dependencies=e.doc.dependencies||[],e.name=e.doc.name;const a=t.resolve(this.context.projectSrcDir,"index.js"),o=await s({file:a,recursive:!0}),n=e.doc.dependencies,r=o.all;for await(const e of r){if("npm"!==e.type)continue;if(n.find((t=>t.package===e.package)))continue;const t=await v({name:e.package,projectDir:this.context.projectDir,setProgress:this.apiContext.setProgress});n.push({package:e.package,subpath:e.subpath,version:t.minorRange,type:"npm"})}return e}}async createAtomLibFiles({libs:a}){await this.setProgress({message:"Creating external lib files."}),this.atom.typesDir="./types";const s=a.filter((e=>"atom"===e.type));for(let a=0;a<s.length;a++){const o=s[a].atom,n=this.context.projectDir;if("src:"===o.protocol){const a=t.resolve(this.context.projectSrcDir,`${o.fileName||o.name}.js`),s=t.relative(t.join(this.context.projectDir,"src","default"),a);if(!e.existsSync(a)){e.mkdirSync(t.dirname(a),{recursive:!0});let s="export default async (input)=>{\n";s+="}",e.writeFileSync(a,s,"utf8")}o.relativePath=s.split(t.sep).join("/"),this.atom.typesDir=`./types/${t.basename(n)}/src`}else{const a=t.join(n,"src","libs",`${o.id}.js`),s=o.doc.contents?.find((e=>"esm"===e.format))||o.doc;e.writeFileSync(a,s.content,"utf8")}}}async createEngine(){await this.setProgress({message:"Creating engine file."});const s={libs:this.libs.filter((e=>"atom"===e.type)),libraryAtom:this.atom,atom:this.atom},o=this.context.templateDir,n=a.compile(e.readFileSync(t.resolve(o,t.join("src","default","engine.js.njk")),"utf8"),this.apiContext.njEnv).render(s),r=this.context.projectDir,i=t.resolve(r,t.join("src","default","index.js"));e.writeFileSync(i,n,"utf8")}async build(){try{if(this.fileMode){const o=this.apiContext.context.project;await this.createAtomLibFiles({libs:this.libs}),await this.createEngine(),await this.createProjectYaml(),await r(this.apiContext),await async function({atom:s,setProgress:o,context:n,packageDependencies:r}){await o({message:"Creating tsconfig.json."});const i={atom:s,packageDependencies:r},p=n.templateDir,c=a.compile(e.readFileSync(t.resolve(p,"tsconfig.json.njk"),"utf8"),a.configure(p)).render(i),l=n.projectDir,u=t.resolve(l,"tsconfig.json");e.writeFileSync(u,c,"utf8")}(this.apiContext),await i(this.apiContext),await async function({atom:s,setProgress:o,context:n,njEnv:r}){if(!0!==s.doc.features.cli.enabled)return;await o({message:"Creating input args."});let i={};if(i=s.doc.input?s.doc.input:{type:"object",properties:{},required:[]},s.doc.features.cli.fargs&&!1!==s.doc.features.cli.fargs?.enabled){const e=s.doc.features.cli.fargs;Reflect.has(e,"default")&&e.default}const p={imports:[],atom:s},c=n.templateDir,l=a.compile(e.readFileSync(t.resolve(c,"src/default/input.args.js.njk"),"utf8"),r).render(p),u=n.projectDir,d=t.resolve(u,"src/default/input.args.js");e.writeFileSync(d,l,"utf8");const b=new f({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});g(b);const h=b.compile(i),y=m(b,h)+"\nexport { schema31 as schema };";e.writeFileSync(t.resolve(u,"src/default/validate_input.js"),y,"utf8")}(this.apiContext),await async function({atom:a,setProgress:s,context:o,packageDependencies:n}){if(!0!==a.doc.features.cli.enabled)return;await s({message:"Creating cli."});const r={atom:a,packageDependencies:n},i=o.templateDir,p=t.resolve(o.projectDir,"src/cli");e.existsSync(p)||e.mkdirSync(p,{recursive:!0}),await l({pattern:["index.js.njk"],dir:t.resolve(i,"src/cli"),outDir:p,context:r})}(this.apiContext),await async function({atom:a,setProgress:s,context:o,packageDependencies:n}){if(!0!==a.doc.features.app.enabled)return;await s({message:"Creating app folder"});const r={atom:a,packageDependencies:n,ts:Date.now()},i=o.templateDir,p=t.resolve(o.projectDir,"src/app");e.existsSync(p)||e.mkdirSync(p,{recursive:!0});let c=["index.js.njk"];!1!==a.doc.features.app.html&&c.push("index.html.njk"),await l({pattern:c,dir:t.resolve(i,"src/app"),outDir:p,context:r})}(this.apiContext),"bun"===o.runtime.type?await async function({atom:s,setProgress:o,context:n,packageDependencies:r}){await o({message:"Creating build.js file."});const i={atom:s,packageDependencies:r},p=n.templateDir,c=a.compile(e.readFileSync(t.resolve(p,"build.js.njk"),"utf8"),a.configure(p)).render(i),l=n.projectDir,u=t.resolve(l,"build.js");e.writeFileSync(u,c,"utf8"),e.chmodSync(u,"755")}(this.apiContext):await async function({atom:o,setProgress:n,context:r,packageDependencies:i}){await n({message:"Creating rollup file."});const p={atom:o,packageDependencies:i},c=t.resolve(r.projectDir,"src","default/index.js");if(!e.existsSync(c))throw new Error(`Entry file not found: ${c}`);const l=(await s({file:c,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),u=o.doc.features.rollup_output,d=Object.keys(u);for(let e=0;e<d.length;e++){const t=u[d[e]];if(!0===t.browser&&l.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(l.map((e=>({key:e,value:e})))),t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{};for(let e=0;e<l.length;e++){const a=l[e];t.alias.entries[a]=`node:${a}`,t.alias.entries[`node:${a}`]=a}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(l)}}const f=r.templateDir;let m=a.compile(e.readFileSync(t.resolve(f,"rollup.config.mjs.njk"),"utf8"),a.configure(f)).render(p);const g=r.projectDir;let b=t.resolve(g,"rollup.config.mjs");e.writeFileSync(b,m,"utf8")}(this.apiContext),await async function({atom:o,context:n,packageDependencies:r,packageDevDependencies:i,setProgress:p}){await p({message:"Creating package.json."}),r.filter((e=>!0===e.dev)).forEach((e=>{i.find((t=>t.package===e.package))||i.push(e);const t=r.findIndex((t=>t.package===e.package));r.splice(t,1)}));const c=r.find((e=>"react"===e.package)),l=r.find((e=>"react-dom"===e.package));c&&!l?r.push({package:"react-dom",version:c.version}):c&&l&&(l.version=c.version),c&&o.doc.features.react_version>=17&&(r.find((e=>"@emotion/react"===e.package))||r.push({package:"@emotion/react",version:"^11"}),r.find((e=>"@emotion/styled"===e.package))||r.push({package:"@emotion/styled",version:"^11"}));const u=[];!0===o.doc.features.app.enabled&&u.push({file:t.resolve(n.projectDir,"src/app/index.js"),dev:!1!==o.doc.features.app.dev}),!0===o.doc.features.cli.enabled&&u.push({file:t.resolve(n.projectDir,"src/cli/index.js"),dev:!1!==o.doc.features.cli.dev});for await(const t of u){const a=t.file;if(!e.existsSync(a))throw new Error(`App file not found: ${a}`);const o=(await s({file:a,recursive:!0,verbose:!1})).all;for await(const e of o){if("npm"!==e.type)continue;if(r.find((t=>t.package===e.package)))continue;if(i.find((t=>t.package===e.package)))continue;const a=await v({name:e.package,projectDir:n.projectDir,setProgress:p});(!0===t.dev?i:r).push({package:e.package,subpath:e.subpath,version:a.minorRange,type:"npm"})}}const d={atom:o,packageDependencies:r,packageDevDependencies:i},f=n.templateDir,m=a.compile(e.readFileSync(t.resolve(f,"package.json.njk"),"utf8"),a.configure(f)).render(d),g=n.projectDir,b=t.resolve(g,"package.json");e.writeFileSync(b,m,"utf8");const h=t.resolve(n.project.projectDir,"fnet");if(e.existsSync(h)){const a=t.resolve(n.projectDir,"fnet");e.existsSync(a)||e.mkdirSync(a);const s=e.readdirSync(h);for(const o of s){const s=t.resolve(h,o);if(!e.lstatSync(s).isFile())continue;const n=t.resolve(a,o);e.copyFileSync(s,n)}}}(this.apiContext),await async function({setProgress:e,context:a}){const s=a.projectDir;await e({message:"Prettifiying source files."});let o=t.join("src","**","*");if(h("bun")){const e=await b(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:s});if(0!==e.code)throw new Error(e.stderr)}else{const e=await b(`prettier --write ${o} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:s});if(0!==e.code)throw new Error(e.stderr)}}(this.apiContext),await async function({atom:e,setProgress:t,context:a}){if(!e.doc.features.dts_enabled)return;const s=a.projectDir;if(await t({message:"Creating .d.ts"}),0!==(await b("tsc",{cwd:s})).code)throw new Error("Couldnt create .d.ts files.")}(this.apiContext),this.buildMode&&(await async function({setProgress:e,atom:t,context:a}){const s=a.projectDir;if(await e({message:"Installing npm packages."}),h("bun")){if(0!==(await b(`bun install ${t.doc.features.npm_install_flags}`,{cwd:s})).code)throw new Error("Couldnt install npm packages.")}else if(0!==(await b(`npm install ${t.doc.features.npm_install_flags}`,{cwd:s})).code)throw new Error("Couldnt install npm packages.")}(this.apiContext),await async function({setProgress:e,context:t}){const a=t.projectDir;if(await e({message:"Building main project."}),h("bun")){if(0!==(await b(t.dev?"bun run build:dev":"bun run build",{cwd:a})).code)throw new Error("Couldnt build project.")}else if(0!==(await b(t.dev?"npm run build:dev":"npm run build",{cwd:a})).code)throw new Error("Couldnt build project.")}(this.apiContext),this.deployMode&&await this.deploy())}await this._cache_set(this.buildKey,{status:"COMPLETED"})}catch(e){throw await this._cache_set(this.buildKey,{status:"FAILED",message:e.message||e}),console.log(e),e}}}export{_ as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import o from"@fnet/config";import e from"@flownet/lib-to-macos-app";import a from"lodash.clonedeep";import t from"semver";async function n({atom:n,target:r,onProgress:s,projectDir:i,dependencies:c,context:p,yamlTarget:m}){s&&await s({message:"Deploying it as macos-app package."});const f=r?.config?await o({name:r.config,dir:i,optional:!0,transferEnv:!1,tags:p.tags}):void 0,g=t.inc(r.version||"0.1.0","patch");r.params.version=g,r.version=g,m.set("version",g);const d=a(r.params);d.dependencies=a(c);const l={atom:n,params:d,config:f?.config,src:i,dest:i};return{deployer:await e(l)}}export{n as default};
|