@fnet/cli 0.100.1 → 0.101.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/fnet/index.B5vpZn1Z.js +53 -0
  2. package/dist/fnet/index.B6WHm9H0.js +106 -0
  3. package/dist/fnet/index.B90Vm9uq.js +114 -0
  4. package/dist/fnet/index.BMsD46br.js +60 -0
  5. package/dist/fnet/index.BUhoGq-h.js +70 -0
  6. package/dist/fnet/index.BjzEMdm1.js +52 -0
  7. package/dist/fnet/index.C9zKEF61.js +106 -0
  8. package/dist/fnet/index.CQNYMi1Z.js +51 -0
  9. package/dist/fnet/index.CX8eMqfH.js +191 -0
  10. package/dist/fnet/index.Ce8sTnt_.js +52 -0
  11. package/dist/fnet/index.D2kFuxXo.js +52 -0
  12. package/dist/fnet/index.D61MduW1.js +106 -0
  13. package/dist/fnet/index.Dd0lngp8.js +41 -0
  14. package/dist/fnet/index.DqwVukIB.js +52 -0
  15. package/dist/fnet/index.MWHLt6g3.js +52 -0
  16. package/dist/fnet/index.f798DPwo.js +93 -0
  17. package/dist/fnet/index.j5JP-zGw.js +52 -0
  18. package/dist/fnet/index.js +4562 -0
  19. package/dist/fnode/index.B5vpZn1Z.js +53 -0
  20. package/dist/fnode/index.B6WHm9H0.js +106 -0
  21. package/dist/fnode/index.BMsD46br.js +60 -0
  22. package/dist/fnode/index.BNSTS5o6.js +109 -0
  23. package/dist/fnode/index.BUhoGq-h.js +70 -0
  24. package/dist/fnode/index.BjzEMdm1.js +52 -0
  25. package/dist/fnode/index.C9zKEF61.js +106 -0
  26. package/dist/fnode/index.CQNYMi1Z.js +51 -0
  27. package/dist/fnode/index.CX8eMqfH.js +191 -0
  28. package/dist/fnode/index.Ce8sTnt_.js +52 -0
  29. package/dist/fnode/index.D2kFuxXo.js +52 -0
  30. package/dist/fnode/index.D61MduW1.js +106 -0
  31. package/dist/fnode/index.Dd0lngp8.js +41 -0
  32. package/dist/fnode/index.DqwVukIB.js +52 -0
  33. package/dist/fnode/index.MWHLt6g3.js +52 -0
  34. package/dist/fnode/index.f798DPwo.js +93 -0
  35. package/dist/fnode/index.j5JP-zGw.js +52 -0
  36. package/dist/fnode/index.js +2784 -0
  37. package/package.json +7 -7
  38. package/dist/fnet/index.B5XE4ChJ.mjs +0 -1
  39. package/dist/fnet/index.Bfg4lyu-.mjs +0 -1
  40. package/dist/fnet/index.BoO2Mnox.mjs +0 -1
  41. package/dist/fnet/index.C7saWH6d.mjs +0 -1
  42. package/dist/fnet/index.CDct_kkF.mjs +0 -1
  43. package/dist/fnet/index.CMC8mlye.mjs +0 -1
  44. package/dist/fnet/index.CmMM-Ek9.mjs +0 -1
  45. package/dist/fnet/index.CzAV0S36.mjs +0 -1
  46. package/dist/fnet/index.D2N9YZmA.mjs +0 -1
  47. package/dist/fnet/index.D33Vzwbk.mjs +0 -1
  48. package/dist/fnet/index.DI3yyTtl.mjs +0 -1
  49. package/dist/fnet/index.DLGSTm8o.mjs +0 -1
  50. package/dist/fnet/index.Q-CYRcna.mjs +0 -1
  51. package/dist/fnet/index.UOds5XLl.mjs +0 -1
  52. package/dist/fnet/index.W6RYgypK.mjs +0 -1
  53. package/dist/fnet/index.dpz2QIRu.mjs +0 -1
  54. package/dist/fnet/index.mjs +0 -2
  55. package/dist/fnet/index.xd8c7XMr.mjs +0 -1
  56. package/dist/fnode/index.B5XE4ChJ.mjs +0 -1
  57. package/dist/fnode/index.Bfg4lyu-.mjs +0 -1
  58. package/dist/fnode/index.BoO2Mnox.mjs +0 -1
  59. package/dist/fnode/index.C7saWH6d.mjs +0 -1
  60. package/dist/fnode/index.CDct_kkF.mjs +0 -1
  61. package/dist/fnode/index.CMC8mlye.mjs +0 -1
  62. package/dist/fnode/index.CmMM-Ek9.mjs +0 -1
  63. package/dist/fnode/index.CzAV0S36.mjs +0 -1
  64. package/dist/fnode/index.D2N9YZmA.mjs +0 -1
  65. package/dist/fnode/index.DI3yyTtl.mjs +0 -1
  66. package/dist/fnode/index.DLGSTm8o.mjs +0 -1
  67. package/dist/fnode/index.DuVHEqKs.mjs +0 -1
  68. package/dist/fnode/index.Q-CYRcna.mjs +0 -1
  69. package/dist/fnode/index.UOds5XLl.mjs +0 -1
  70. package/dist/fnode/index.W6RYgypK.mjs +0 -1
  71. package/dist/fnode/index.dpz2QIRu.mjs +0 -1
  72. package/dist/fnode/index.mjs +0 -2
  73. package/dist/fnode/index.xd8c7XMr.mjs +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fnet/cli",
3
- "version": "0.100.1",
3
+ "version": "0.101.0",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -27,7 +27,7 @@
27
27
  "@flownet/lib-to-ios-app": "^0.3.16",
28
28
  "@flownet/lib-to-macos-app": "^0.3.13",
29
29
  "@flownet/lib-to-nextjs": "^0.3.10",
30
- "@flownet/lib-to-webos": "^0.3.14",
30
+ "@flownet/lib-to-webos": "^0.3.16",
31
31
  "@fnet/auto-conda-env": "^0.1.24",
32
32
  "@fnet/cli-project-common": "^0.3.5",
33
33
  "@fnet/cli-project-flow": "^0.12.1",
@@ -50,15 +50,15 @@
50
50
  "@fnet/up-list-files": "^0.1.13",
51
51
  "@fnet/yaml": "^0.1.30",
52
52
  "@node-red/util": "^4.0.9",
53
- "@rollup/plugin-esm-shim": "^0.1.8",
54
53
  "ajv": "^8.17.1",
55
54
  "ajv-formats": "^3.0.1",
56
55
  "bpmn-moddle": "^9.0.1",
57
- "chalk": "^4.1.2",
56
+ "bun": "^1.2.7",
57
+ "chalk": "^5.4.1",
58
58
  "commander": "^13.1.0",
59
59
  "dagre": "^0.8.5",
60
60
  "form-data": "^4.0.2",
61
- "get-value": "^3.0.1",
61
+ "get-value": "^4.0.1",
62
62
  "isobject": "^4.0.0",
63
63
  "lodash.clonedeep": "^4.5.0",
64
64
  "lodash.merge": "^4.6.2",
@@ -74,8 +74,8 @@
74
74
  "yaml": "^2.7.1"
75
75
  },
76
76
  "bin": {
77
- "fnet": "dist/fnet/index.mjs",
78
- "fnode": "dist/fnode/index.mjs"
77
+ "fnet": "dist/fnet/index.js",
78
+ "fnode": "dist/fnode/index.js"
79
79
  },
80
80
  "devDependencies": {
81
81
  "@rollup/plugin-commonjs": "^28.0.3",
@@ -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 r from"node:path";import t from"semver";import n from"@fnet/shelljs";import o from"@fnet/config";async function i({setProgress:i,context:a,deploymentProject:s,deploymentProjectTarget:c,yamlTarget:d}){await i({message:"Deploying it as fnet package."});const m=a.projectDir,p=r.resolve(m,"package.json"),f=e.readFileSync(p),l=JSON.parse(f);l.name=c.params.name,l.version=t.inc(c.version,"patch"),delete l.scripts,delete l.devDependencies,e.writeFileSync(p,JSON.stringify(l,null,"\t"));const{file:A,data:_}=await o({name:c.config||"fnet-package",dir:a.projectDir,tags:a.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='${r.resolve(r.dirname(A),_.env.GCS_UPLOADER_KEY_FILE)}'`,y+=` --dir='${m}'`,y+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.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(p,f),!0===c.dryRun)return;s.isDirty=!0,c.version=l.version,d.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{i as default};
@@ -1 +0,0 @@
1
- import e from"semver";import r from"@fnet/config";import o from"fs";import t from"@fnet/shelljs";import n from"form-data";async function i({setProgress:i,context:s,deploymentProject:a,deploymentProjectTarget:c,yamlTarget:d}){await i({message:"Deploying it as fnet node."});const{file:f,data:p}=await r({name:c.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(c.version,"patch");c.params.version=u,c.version=u,d.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:c.params.name,version:c.params.version,docs:c.params.docs,configs:c.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
- 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 o from"@fnet/shelljs";import i from"@fnet/config";import n from"@fnet/up-list-files";import s from"@fnet/object-from-schema";import m from"yaml";import{w as p}from"./index.mjs";import"child_process";import"@fnet/prompt";import"path";import"commander";import"fs";import"@fnet/yaml";import"@fnet/shell-flow";import"@flownet/lib-render-templates-dir";import"nunjucks";import"lodash.clonedeep";import"isobject";import"redis";import"@flownet/lib-is-redis-online";import"node:crypto";import"@flownet/lib-atom-api-js";import"lodash.merge";import"@flownet/lib-parse-imports-js";import"@fnet/npm-list-versions";import"@fnet/npm-pick-versions";import"object-hash";import"ajv/dist/2020.js";import"ajv/dist/standalone/index.js";import"ajv-formats";import"@flownet/lib-parse-node-url";import"bpmn-moddle";import"dagre";import"@fnet/expression";import"chalk";import"@fnet/list-files";import"@fnet/key-value-transformer";import"lodash.pick";import"lodash.omit";import a from"node:url";import l from"node:path";import c from"node:module";const f=a.fileURLToPath(import.meta.url),d=l.dirname(f);c.createRequire(import.meta.url);async function h({atom:a,setProgress:l,context:c,deploymentProject:f,deploymentProjectTarget:h,yamlTarget:u}){await l({message:"Deploying it as npm package."});const j=c.projectDir,y=t.resolve(j,"package.json"),g=e.readFileSync(y),v=JSON.parse(g);v.name=h.params.name,v.version=r.inc(h.version,"patch");const b=h.params.bin?.name||h.params.bin;!1!==h.params.bin?.enabled&&b&&"string"==typeof b&&(v.bin={[b]:"dist/cli/esm/index.js"}),delete v.scripts,delete v.devDependencies,v.scripts={serve:"npx serve ."},e.writeFileSync(y,JSON.stringify(v,null,"\t"));const w=h.config||"npm";let k=(await i({name:w,dir:c.projectDir,tags:c.tags,optional:!0}))?.data;if(!k){const r=n({dir:d,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===r.length)throw new Error("Couldnt find schema to create npm config");const o=await s({schema:r[0],tags:c.tags}),i=c.project.projectDir,p=t.resolve(i,".fnet");e.existsSync(p)||e.mkdirSync(p),e.writeFileSync(t.resolve(p,`${w}.fnet`),m.stringify(o)),k=o}if(e.writeFileSync(t.resolve(j,".npmrc"),`//registry.npmjs.org/:_authToken=${k.env.NPM_TOKEN}`),!0===h.dryRun)return;const S=p("bun")?"bun":"npm";if(0!==(await o(`${S} publish --access public`,{cwd:j})).code)throw new Error("Couldnt publish to npm");e.writeFileSync(y,g),f.isDirty=!0,h.version=v.version,u.set("version",v.version)}export{h 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 e from"fs";import t from"path";import o from"@fnet/config";async function i({atom:i,Atom:n,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 n.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 n.get({id:l.deploy.id}),!f)return}else{if(f=await n.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"===i.type?f.doc.subtype="library":"workflow"===i.type&&(f.doc.subtype="workflow"),f=await n.update(f,{id:f.id})}export{i 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 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:l}){await i({message:"Deploying it as gcs package."});const p=o.projectDir,d=t.resolve(p,"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='${p}'`,u+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",u+=` --destDir='${f.name}/${f.version}'`,u+=" --metadata.cacheControl='public, max-age=31536000, immutable'",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,l.set("version",f.version),await m({target:c,packageJSON:f}))}export{i 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 r from"semver";import e from"@fnet/config";import o from"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,2 +0,0 @@
1
- #!/usr/bin/env node
2
- import{spawn as e}from"child_process";import t from"@fnet/prompt";import o,{existsSync as n}from"node:fs";import i,{delimiter as s,join as r}from"node:path";import a from"@fnet/config";import c from"path";import{Command as p,Option as l}from"commander";import d from"fs";import f from"yaml";import m from"@fnet/shelljs";import u from"@fnet/yaml";import h from"@fnet/object-from-schema";import y from"@fnet/shell-flow";import g from"@flownet/lib-render-templates-dir";import w from"nunjucks";import x from"lodash.clonedeep";import b from"isobject";import k from"redis";import v from"@flownet/lib-is-redis-online";import{randomUUID as j}from"node:crypto";import{Api as D,Atom as _}from"@flownet/lib-atom-api-js";import E from"lodash.merge";import S from"@flownet/lib-parse-imports-js";import P from"@fnet/npm-list-versions";import $ from"@fnet/npm-pick-versions";import C from"object-hash";import T from"ajv/dist/2020.js";import N from"ajv/dist/standalone/index.js";import F from"ajv-formats";import A from"@flownet/lib-parse-node-url";import O from"bpmn-moddle";import I from"dagre";import B from"@fnet/expression";import K from"chalk";import R from"@fnet/list-files";import M from"@fnet/key-value-transformer";import J from"lodash.pick";import L from"lodash.omit";import z from"node:url";import q from"node:path";import W from"node:module";const U=z.fileURLToPath(import.meta.url),X=q.dirname(U);W.createRequire(import.meta.url);var V,H,G=e=>{const t=process.env.PATH||"",o="win32"===process.platform?(process.env.PATHEXT||".EXE;.CMD;.BAT;.COM").split(";"):[""],i=t.split(s);for(const t of i)for(const i of o){const o=r(t,"win32"===process.platform?e+i:e);if(n(o))return o}return null},Y="0.100.1";class Z{init({config:e,accessToken:t}){return new Promise(((o,n)=>{if(D.set_api_url(e.data.url),t)return D.set_req_token(t),void o(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=>{D.set_req_token(e.access_token),o(e.access_token)})).catch((e=>{D.set_req_token(),n(e)}))}))}}function Q({feature:e,features:t,packageDevDependencies:o}){const{name:n,packages:i,options:s,extraCheck:r,explicit:a}=e,c=`${n}_enabled`,p=t.rollup_output||{},l=Object.keys(p);let d=s||{};const f=t[n]?.options;f&&(d=E(d,f));const m=!t[n]||!1===t[n]?.enabled;l.forEach((e=>{const o=t.rollup_output[e];if(o){if(Reflect.has(o,n)){if(m||!o[n]||!1===o[n]?.enabled)return void delete o[n];!0===o[n]&&(o[n]={enabled:!0,options:d})}else{if(m||a||!1===t[c])return;o[n]={enabled:!0}}o[n]=o[n]||{},o[n].options={...d,...o[n].options}}}));let u=l.some((e=>!0===t.rollup_output[e][n]?.enabled));r&&(u=r()&&u),t[c]=u,u&&i.forEach((e=>o.push({package:e[0],version:e[1]})))}function ee({dir:e,name:t="index"}){let n=i.resolve(e,`./${t}.tsx`);if(o.existsSync(n)||(n=i.resolve(e,`./${t}.ts`)),o.existsSync(n)||(n=i.resolve(e,`./${t}.jsx`)),o.existsSync(n)||(n=i.resolve(e,`./${t}.js`)),!o.existsSync(n))return{};const s=n,r=i.extname(n);return{file:s,ext:r,ts:".ts"===r||".tsx"===r,name:t}}async function te(e){const{atom:t,context:o,setProgress:n}=e;n("Initializing features..."),t.doc.features=t.doc.features||{};const s=t.doc.features;s.project=s.project||{},s.project.format=s.project.format||s.project_format||"esm",s.project_format=s.project.format,s.dts_enabled=!0===s.dts||void 0!==s.dts&&!1!==s.dts;const r=i.resolve(o.project.projectDir),a=ee({dir:i.resolve(r,"./app")});if(a.file){n("Parsing app entry imports...");let e=await S({file:a.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));s.app_uses_jsx=t,s.app_has_entry=!0,e=await S({file:a.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),s.app_entry_uses_jsx=t,s.app_entry_is_ts=a.ts,s.app_entry_ext=a.ext}const c=ee({dir:i.resolve(r,"./cli")});if(c.file){n("Parsing cli entry imports...");let e=await S({file:c.file,recursive:!0}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type));s.cli_uses_jsx=t,s.cli_has_entry=!0,e=await S({file:c.file}),t=e.all.some((e=>!0===e.usesJSX&&"local"===e.type)),s.cli_entry_uses_jsx=t,s.cli_entry_is_ts=c.ts,s.cli_entry_ext=c.ext}if("workflow.lib"===t.type){const e=ee({dir:i.resolve(r,"./src")});if(e.file){n("Parsing src entry imports...");let t=await S({file:e.file,recursive:!0}),o=t.all.some((e=>!0===e.usesJSX&&"local"===e.type));s.src_uses_jsx=o,s.src_has_entry=!0,t=await S({file:e.file}),o=t.all.some((e=>!0===e.usesJSX&&"local"===e.type)),s.src_entry_uses_jsx=o,s.src_entry_is_ts=e.ts,s.src_entry_ext=e.ext}}const p=Reflect.has(s,"app_entry_uses_jsx")?!0===s.app_entry_uses_jsx:!0===s.src_entry_uses_jsx,l=Reflect.has(s,"cli_entry_uses_jsx")?!0===s.cli_entry_uses_jsx:!0===s.src_entry_uses_jsx;s.form_enabled=p||l||!0===s.form||!0===s.form?.enabled,s.multiple_enabled=s.multiple_enabled||!0===s.multiple||!0===s.multiple?.enabled,!1===s.app?s.app={enabled:!1}:!0===s.app?s.app={enabled:!0,extend:!0===s.app_has_entry,export:!0,react:p}:s.app={enabled:!0,extend:!0===s.app_has_entry,export:!0,react:p,...s.app||{}},s.app.enabled=!0===s.app.enabled&&(!0===t.doc.features.form_enabled||!0===s.app.extend||!0===s.app.enabled),s.app.format=s.app.format||"esm",s.app.folder=s.app.folder||s.app.format||"default",!1===s.cli?s.cli={enabled:!1}:!0===s.cli?s.cli={enabled:!0,extend:!0===s.cli_has_entry,export:!0,react:l}:s.cli={enabled:!0,extend:!0===s.cli_has_entry,export:!0,react:l,...s.cli||{}},s.cli.enabled=!0===s.cli.enabled&&(!1===t.doc.features.form_enabled||!0===s.cli.extend||!0===s.cli.enabled),s.cli.format=s.cli.format||"esm",s.cli.folder=s.cli.folder||s.cli.folder||"esm",s.cli.node_options=s.cli.node?.options||s.cli.node_options||"",s.json=s.cli.enabled||s.json;const d={cjs:{format:"cjs",context:s.form_enabled?"window":"global",babel:!0===s.src_uses_jsx||!1,browser:!1,replace:!0,terser:!0,enabled:!1!==s.cjs,copy:!1},esm:{format:"esm",context:s.form_enabled?"window":"global",babel:!0===s.src_uses_jsx||!1,browser:!1,replace:!0,terser:!1,enabled:!1!==s.esm,copy:!0},iife:{format:"iife",context:s.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:!0===s.iife,terser:!0,copy:!1}};!0===s.webos&&(d.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===s.electron&&(d.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===s.nextjs&&(d.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===s.ios&&(d.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===s.macos&&(d.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===s.app.enabled&&(s.app.dir=`./dist/app/${s.app.folder}`,d.app={format:s.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:"./src/app/index.js",output_dir:s.app.dir,terser:!0,output_exports:!1===s.app.export?"none":"auto",browsersync:!0}),!0===s.cli.enabled&&(s.cli.dir=`./dist/cli/${s.cli.folder}`,d.cli={format:s.cli.format,context:"global",babel:!0===s.src_uses_jsx||!0===s.cli_uses_jsx||!1,browser:!1,replace:!0,enabled:!0,input:"./src/cli/index.js",output_dir:s.cli.dir,banner:"#!/usr/bin/env node",terser:!0,output_exports:!1===s.cli.export?"none":"auto"});const f={server:".",startPath:`${i.normalize(s.app.dir||".")}`,files:[i.normalize("./dist/**/*")],cors:!0,open:!1};s.babel_options=E({targets:{browsers:"last 9 versions, not dead",node:"18"}},s.babel_options||s.babel?.options),s.browsersync_options=E(f,s.browsersync_options||s.browsersync?.options||{}),s.replace_options=E({},s.replace_options||s.replace?.options||{}),Reflect.has(s.browsersync_options,"proxy")&&delete s.browsersync_options.server,s.rollup=s.rollup||{},s.rollup_output=E(d,s.rollup_output||s.rollup?.output||{}),s.preact_enabled=!0===s.preact||s.preact&&!1!==s.preact?.enabled;let m=Object.keys(d);for(const e of m){const t=d[e];t&&(!1!==s.rollup[e]?(t.babel_options=t.babel_options||s.babel_options,t.browsersync_options=E(s.browsersync_options,t.browsersync_options),t.replace_options=E(s.replace_options,t.replace_options),s.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"),(s.form_enabled||s.babel)&&(t.babel=!0)):delete s.rollup_output[e])}m=Object.keys(s.rollup_output),s.babel_enabled=m.some((e=>!0===s.rollup_output[e].babel)),s.browser_enabled=m.some((e=>!0===s.rollup_output[e].babel)),s.browsersync_enabled=!1!==s.browsersync&&m.some((e=>!0===s.rollup_output[e].browsersync)),s.browsersync_enabled=s.browsersync_enabled&&s.app.enabled,s.dependency_auto_enabled=!1!==s.dependency_auto&&!1!==s.dependency_auto?.enabled,s.npm_install_flags=s.npm_install_flags||"",s.react_version=s.react_version||s.react?.version||18,function(e){const{atom:t,packageDevDependencies:o}=e,n=t.doc.features,i=n.css&&!1!==n.css.enabled;let s=[];i&&(s.push(["rollup-plugin-postcss","^4"]),s.push(["sass","^1.66"]),(n.css?.options?.plugins||[]).forEach((e=>{switch(e.name){case"postcss-import":s.push(["postcss-import","^15"]);break;case"postcss-url":s.push(["postcss-url","^10"]);break;case"postcss-preset-env":s.push(["postcss-preset-env","^9"]);break;case"autoprefixer":s.push(["autoprefixer","^10"]);break;case"cssnano":s.push(["cssnano","^6"])}})));Q({feature:{name:"css",packages:s},features:n,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e,n=t.doc.features,i={};!0===n.app?.enabled&&(i.targets=i.targets||[],i.targets.push({src:"./src/app/index.html",dest:n.app.dir}),Reflect.has(n.app,"copy")||Reflect.has(n,"copy")||(n.copy=!0)),Q({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:i},features:n,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Q({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Q({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Q({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Q({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Q({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Q({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Q({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Q({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Q({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:t.doc.features,packageDevDependencies:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Q({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:o})}(e),function(e){const{atom:t,packageDevDependencies:o}=e;Q({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:t.doc.features,packageDevDependencies:o})}(e)}async function oe({projectDir:e,name:t,setProgress:n,count:s=1}){let r;const a=C(["npm-pick-versions",t,s]),c=i.join(e,".cache"),p=i.join(c,a+".json");return o.existsSync(p)?(n&&n(`Picking npm version of ${t} from cache ...`),r=JSON.parse(o.readFileSync(p,"utf8"))):(n&&n(`Picking npm version of ${t} ...`),r=await $({name:t,count:s}),o.mkdirSync(c,{recursive:!0}),o.writeFileSync(p,JSON.stringify(r),"utf8")),r}function ne(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ie=ne(H?V:(H=1,V=async e=>{const{atom:t,packageDependencies:o,context:n,deploymentProjectTarget:i,setProgress:s,deploymentProject:r,yamlTarget:a}=e;if(!0!==i.enabled)return;const c=i.type;try{if("lib"===c)await(await import("./index.DLGSTm8o.mjs")).default({...e});else if("red"===c)await(await import("./index.CmMM-Ek9.mjs")).default({...e});else if("npm"===c)await(await import("./index.D33Vzwbk.mjs")).default({...e});else if("gcs"===c)await(await import("./index.UOds5XLl.mjs")).default({...e});else if("gitlab"===c)await(await import("./index.DI3yyTtl.mjs")).default({...e});else if("fnet-package"===c)await(await import("./index.Bfg4lyu-.mjs")).default({...e});else if("fnet-form"===c)await(await import("./index.Q-CYRcna.mjs")).default({...e});else if("fnet-node"===c)await(await import("./index.BoO2Mnox.mjs")).default({...e});else if("fnet-flow"===c)await(await import("./index.dpz2QIRu.mjs")).default({...e});else if("nextjs"===c)await(await import("./index.CDct_kkF.mjs")).default({atom:t,target:i,onProgress:s,projectDir:n.projectDir,dependencies:o,context:n,yamlTarget:a}),r.isDirty=!0;else if("webos"===c)await(await import("./index.CMC8mlye.mjs")).default({atom:t,target:i,onProgress:s,projectDir:n.projectDir,dependencies:o,context:n,yamlTarget:a}),r.isDirty=!0;else if("electron"===c)await(await import("./index.xd8c7XMr.mjs")).default({atom:t,target:i,onProgress:s,projectDir:n.projectDir,dependencies:o,context:n,yamlTarget:a}),r.isDirty=!0;else if("docker"===c)await(await import("./index.D2N9YZmA.mjs")).default({atom:t,target:i,onProgress:s,projectDir:n.projectDir,dependencies:o,context:n,yamlTarget:a}),r.isDirty=!0;else if("ios"===c)await(await import("./index.B5XE4ChJ.mjs")).default({atom:t,target:i,onProgress:s,projectDir:n.projectDir,dependencies:o,context:n,yamlTarget:a}),r.isDirty=!0;else if("macos"===c)await(await import("./index.W6RYgypK.mjs")).default({atom:t,target:i,onProgress:s,projectDir:n.projectDir,dependencies:o,context:n,yamlTarget:a}),r.isDirty=!0;else if("rust"===c)await(await import("./index.CzAV0S36.mjs")).default({atom:t,target:i,onProgress:s,projectDir:n.projectDir,dependencies:o,context:n,yamlTarget:a}),r.isDirty=!0;else{if("pypi"!==c)return void console.warn(`No deployer found for type: ${c}`);await(await import("./index.C7saWH6d.mjs")).default({atom:t,target:i,onProgress:s,projectDir:n.projectDir,dependencies:o,context:n,yamlTarget:a}),r.isDirty=!0}}catch(e){throw console.error(`Error during deployment for type "${c}":`,e),e}})),se={name:"ATOM",uri:"http://atom.org/bpmn",prefix:"atom",types:[{name:"AtomExtension",extends:["bpmn:BaseElement"],properties:[{name:"atom",type:"atom:Atom",isMany:!1}]},{name:"Atom",properties:[{name:"type",type:"String",isAttr:!0}]}]};function re(e,t){return e.filter(((e,o,n)=>n.map((e=>e[t])).indexOf(e[t])===o))}function ae(e){const{nodes:t,nodeIndex:o,root:n}=e,i=e.targetNodes||n.childs;i.forEach((t=>{const o="workflow"===t.type||"subworkflow"===t.type,n=!o&&t.childs.filter((e=>!e.virtual)).length>0;if(n&&(t.bpmn.type="bpmn:SubProcess"),o||n){const o=t.childs.filter((e=>!0!==e.module))[0];t.childs.filter((e=>!0===e.module)).forEach((o=>{const n=ce({...e,parent:t,bpmnType:"bpmn:IntermediateCatchEvent",type:"inter",definitions:[{type:"bpmn:SignalEventDefinition"}]});n.bpmn.edges=[{from:n.indexKey,to:o.indexKey,type:"bpmn:SequenceFlow"}]}));const n=t.childs.find((e=>"try"===e.name&&"tryexcept"===t.type)),s=t.childs.filter((e=>"except"===e.name&&"tryexcept"===t.type));n&&s.length&&s.forEach((o=>{const i=ce({location:t.childs.indexOf(o),...e,parent:t,bpmnType:"bpmn:BoundaryEvent",type:"boundary",attrs:{attachedToRef:n},definitions:[{type:"bpmn:ErrorEventDefinition"}]});i.bpmn.edges=[{from:i.indexKey,to:o.indexKey,type:"bpmn:SequenceFlow"}]}));const r=t.childs.find((e=>"raise"===e.type));if(r){const o=ce({...e,parent:t,bpmnType:"bpmn:EndEvent",type:"end",name:"ERROR",definitions:[{type:"bpmn:ErrorEventDefinition"}]});r.bpmn.edges=[{from:r.indexKey,to:o.indexKey,type:"bpmn:SequenceFlow"}]}if(o)if(t.bpmn.starts.length>1){const o=ce({...e,parent:t,bpmnType:"bpmn:StartEvent",type:"start"}),n=ce({...e,parent:t,bpmnType:"bpmn:ExclusiveGateway",type:"switch"});o.bpmn.edges=[{from:o.indexKey,to:n.indexKey,type:"bpmn:SequenceFlow"}],n.bpmn.edges=t.bpmn.starts.map((e=>({...e,from:n.indexKey})));const i=n.bpmn.edges.find((e=>!0===e.next));if(i){const o=ce({...e,parent:t,bpmnType:"bpmn:EndEvent",type:"end",name:i.to});i.to=o.indexKey}}else{const n=ce({...e,parent:t,bpmnType:"bpmn:StartEvent",type:"start"});n.bpmn.edges.push({from:n.indexKey,to:o.indexKey,type:"bpmn:SequenceFlow"})}t.childs.filter((e=>!0!==e.virtual&&e.bpmn.outside.length&&"bpmn:EndEvent"!==e.bpmn.type)).forEach((o=>{o.bpmn.outside.forEach((n=>{const s=i.indexOf(t),r=ce({...e,parent:t,bpmnType:"bpmn:EndEvent",type:"end",name:n.to,location:s+1});o.bpmn.edges.push({from:o.indexKey,to:r.indexKey,type:"bpmn:SequenceFlow"})}))}));t.childs.filter((e=>!0!==e.virtual&&e.bpmn.edges.length>1)).forEach((o=>{const n=i.indexOf(o),s=ce({...e,parent:t,bpmnType:"bpmn:ExclusiveGateway",type:"switch",location:n+1});s.bpmn.edges=o.bpmn.edges.map((e=>({...e,from:s.indexKey}))),o.bpmn.edges=[{from:o.indexKey,to:s.indexKey,type:"bpmn:SequenceFlow"}],o.bpmn.outside=[]}))}ae({...e,targetNodes:t.childs})}))}function ce(e){const{parent:t,nodes:o,nodeIndex:n,bpmnType:i,type:s,name:r,outside:a,location:c,definitions:p,attrs:l}=e,d=t.childs.filter((e=>e.type===`v${s}`)).length,f={indexKey:`${t.indexKey}/_${s}${d}`,pathKey:`${t.pathKey}._${s}${d}`,type:`v${s}`,name:r,bpmn:{edges:[],outside:[],type:i,width:36,height:36,fill:"#c8e6c9",stroke:"#205022",definitions:p,attrs:l},virtual:!0,childs:[]};return t.childs.splice(c||0,0,f),o.push(f),n[f.indexKey]=f,f}function pe(e){const{targetNode:t,targetFlowElementsContainer:o,targetPlaneElement:n,moddle:i,elementIndex:s,nodeIndex:r,diagrams:a,nodes:c}=e;!function(e){const{targetNode:t,targetFlowElementsContainer:o,targetPlaneElement:n,moddle:i,elementIndex:s,nodeIndex:r,nodes:a}=e,c=o.get("flowElements");o.$nodes=o.$nodes||[],t.childs.forEach((e=>{const t=i.create(e.bpmn.type,{id:`node.${e.pathKey}`,name:e.definition?.title||e.name});if(s[t.id]=t,t.$isNode=!0,t.$node=e,e.$flow=t,o.$nodes.push(t),c.push(t),e.bpmn.attrs){Object.keys(e.bpmn.attrs).forEach((o=>{"attachedToRef"===o&&t.set(o,e.bpmn.attrs[o].$flow)}))}if(e.bpmn.definitions){const o=e.bpmn.definitions.map((e=>{const t=i.create(e.type);return Object.keys(e.attrs||{}).forEach((o=>{t.set(o,e.attrs[o])})),t}));t.eventDefinitions=o}}))}(e),function(e){const{targetNode:t,targetFlowElementsContainer:o,targetPlaneElement:n,moddle:i,elementIndex:s,nodeIndex:r}=e,a=o.get("flowElements");o.$edges=o.$edges||[],t.childs.forEach((e=>{e.bpmn.edges.forEach((t=>{const n=e,c=r[t.to],p=`edge.${n.pathKey}_${c.pathKey}`;if(s[p])return;const l=s[`node.${n.pathKey}`],d=s[`node.${c.pathKey}`],f=i.create(t.type,{id:p,sourceRef:l,targetRef:d});s[f.id]=f,f.$is_edge=!0,l.get("outgoing").push(f),d.get("incoming").push(f),o.$edges.push({from:l,to:d,flow:f}),a.push(f)}))}))}(e),function(e){const{targetNode:t,targetFlowElementsContainer:o,targetPlaneElement:n,moddle:i,elementIndex:s,nodeIndex:r}=e,a=120,c=80,p=160,l=160,d=new I.graphlib.Graph;d.setDefaultEdgeLabel((()=>({}))),d.setGraph({rankdir:"TB",nodesep:a,ranksep:c,xranker:"longest-path"}),o.$nodes.forEach((e=>{d.setNode(e.id,{width:e.$node?.bpmn.width||a,height:e.$node?.bpmn.height||c,label:e.id})})),o.$edges.forEach((e=>{d.setEdge(e.from.id,e.to.id)})),I.layout(d),o.$nodes.forEach((e=>{const t=d.node(e.id);let o=t.width,s=t.height;const r=i.create("bpmndi:BPMNShape",{id:`shape.${e.id}`,bpmnElement:e,bounds:i.create("dc:Bounds",{x:p+t.x-t.width/2,y:l+t.y-t.height/2,width:o,height:s}),label:i.create("bpmndi:BPMNLabel")});e.$node.bpmn.fill&&r.set("bioc:fill",e.$node.bpmn.fill),e.$node.bpmn.stroke&&r.set("bioc:stroke",e.$node.bpmn.stroke);n.get("planeElement").push(r)})),o.$edges.forEach((e=>{const t=d.edge(e.from.id,e.to.id),o=i.create("bpmndi:BPMNEdge",{id:`edge.${e.from.id}_${e.to.id}`,bpmnElement:e.flow,label:i.create("bpmndi:BPMNLabel")});t.points.forEach((e=>{const t=i.create("dc:Point",{x:p+e.x,y:l+e.y});o.get("waypoint").push(t)}));n.get("planeElement").push(o)}))}(e),function(e){const{targetNode:t,targetFlowElementsContainer:o,targetPlaneElement:n,moddle:i,elementIndex:s,nodeIndex:r,diagrams:a}=e,c=t.childs.filter((e=>"bpmn:SubProcess"===e.bpmn.type));c.forEach((t=>{const o=s[`node.${t.pathKey}`],n=i.create("bpmndi:BPMNDiagram",{id:`diagram_${t.pathKey}`});s[n.id]=n,a.push(n);const r=i.create("bpmndi:BPMNPlane",{id:`plane_${t.pathKey}`});s[r.id]=r,n.plane=r,r.bpmnElement=o,pe({...e,targetNode:t,targetFlowElementsContainer:o,targetPlaneElement:r})}))}(e)}async function le(e){const t=e.root,o=t.context.index,n=Object.keys(o).map((e=>o[e]));!function(e){const{nodes:t}=e;t.forEach((e=>{const t=[],o=[],n=i=>{i.context.next&&(t.push({from:i,to:i.context.next,type:"bpmn:SequenceFlow"}),i===e&&o.push({to:i.context.next,type:"bpmn:SequenceFlow",next:!0})),i.childs.forEach((t=>{i===e&&"switch"===e.type&&o.push({to:t,type:"bpmn:SequenceFlow"}),n(t)}))};n(e);const i=t.filter((t=>t.to.parent.indexKey===e.parent.indexKey)).map((t=>({...t,from:e.indexKey,to:t.to.indexKey}))),s=t.filter((t=>t.to.parent.indexKey!==e.parent.indexKey&&!t.to.indexKey.startsWith(e.indexKey+"/"))).map((t=>({...t,from:e.indexKey,to:t.to.indexKey}))),r=o.map((e=>({...e,to:e.to.indexKey})));e.bpmn=e.bpmn||{},e.bpmn.edges=re(i,"to"),e.bpmn.outside=re(s,"to"),e.bpmn.starts=re(r,"to"),e.bpmn.type=function(e){return"call"===e.type?"bpmn:ServiceTask":"form"===e.type?"bpmn:UserTask":"return"===e.type?"bpmn:EndEvent":"bpmn:Task"}(e),e.bpmn.width=120,e.bpmn.height=80,"return"===e.type&&(e.bpmn.width=36,e.bpmn.height=36)}))}({nodes:n}),ae({nodes:n,nodeIndex:o,root:t});const i=new O({atom:se}),s={},r=i.create("bpmn:Definitions",{id:"definitions_0"});s[r.id]=r;for await(const e of t.childs){const a=r.get("rootElements"),c=r.get("diagrams"),p=i.create("bpmn:Process",{id:`process_${e.pathKey}`,documentation:[i.create("bpmn:Documentation",{text:`Atom Workflow - ${t.context.atom.name}`})]});s[p.id]=p,p.isExecutable=!0,a.push(p);const l=i.create("bpmndi:BPMNDiagram",{id:`diagram_${e.pathKey}`});s[l.id]=l,c.push(l);const d=i.create("bpmndi:BPMNPlane",{id:`plane_${e.pathKey}`});s[d.id]=d,l.plane=d,d.bpmnElement=p;pe({targetNode:e,targetFlowElementsContainer:p,targetPlaneElement:d,moddle:i,elementIndex:s,nodeIndex:o,nodes:n,diagrams:c})}return{diagramXML:(await i.toXML(r,{format:!0})).xml}}async function de(e={}){return await le(x(e))}async function fe({node:e,initNode:t}){if(Reflect.has(e.definition,"modules")&&!Array.isArray(e.definition.modules)){const t=e.definition.modules;e.definition.modules=[],Object.keys(t).forEach((o=>{const n={...t[o]};"modules"===e.type&&(n.export=n.export||o),e.definition.modules.push({[o]:n})}))}const o=[],n=await M({data:e.definition,callback:(e,t,n)=>{const i=B({expression:e});if("m"===i?.processor){const e=n.slice(0,-1);e.push(i.statement);const s=e.join("_");return o.push({[s]:t}),[i.statement,`m::${s}`]}return[e,t]}});o.length>0&&(e.definition=n,e.definition.modules=e.definition.modules||[],e.definition.modules=e.definition.modules.concat(o)),e.hasModules=e.definition.modules?.length>0;for(let o=0;o<e.definition.modules?.length;o++){const n=e.definition.modules[o],i=Object.keys(n)[0],s={name:i,childs:[],parent:e,definition:n[i],module:!0,blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1,index:e.childs.length,context:{}};e.childs.push(s),await t({node:s})}}async function me({node:e,transformExpression:t}){const o=e.context.transform;Reflect.has(o,"export")&&(o.export=await t(o.export)),Reflect.has(o,"return")&&(e.hasReturn=!0,o.return=await t(o.return)),o.hasOwnProperty("nextArgs")&&(e.hasNextArgs=!0,o.nextArgs=await t(o.nextArgs))}async function ue({node:e,resolveTypeCommon:t,resolveNextBlock:o,transformExpression:n}){e.context.transform=e.context.transform||x(e.definition),e.context.transform;for(const t of e.childs)t.context.transform=t.context.transform||x(t.definition),t.definition.hasOwnProperty("condition")&&(t.context.transform.condition=await n(t.definition.condition));await me({node:e,transformExpression:n}),await t({node:e}),o({node:e})}var he={hits:async function({node:e}){return!!e.definition.hasOwnProperty("switch")},init:async function({node:e,initNode:t}){e.type="switch";const o=e.definition.switch||[];if(!o.every((e=>e.hasOwnProperty("condition")||e.hasOwnProperty("default"))))throw new Error("Switch must have condition or default");if(0===o.filter((e=>e.hasOwnProperty("condition"))).length)throw new Error("Switch must have at least one condition");const n=o.filter((e=>e.hasOwnProperty("default")));if(n.length>1)throw new Error("Switch must have only one default");if(1===n.length&&!o[o.length-1].hasOwnProperty("default"))throw new Error("Switch default must be the last child");e.hasDefaultCondition=1===n.length,await fe({node:e,initNode:t}),e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0;for(let o=0;o<e.definition.switch.length;o++){let n=e.definition.switch[o],i=`${o}`;n.hasOwnProperty("default")&&(i="default",n=n.default);const s={name:n.condition||i,childs:[],parent:e,definition:n,index:e.childs.length,context:{}};e.childs.push(s),await t({node:s})}e.resolve=ue},resolve:ue};var ye={hits:async function({node:e}){return 1===Object.keys(e.definition).map((e=>B({expression:e}))).filter((e=>"if"===e?.processor)).length},init:async function(e){const{node:t}=e,o=Object.keys(t.definition).map((e=>B({expression:e}))),n=[],i=o.find((e=>"if"===e?.processor)),s=t.definition[i.expression];n.push({name:`${t.name}_if`,definition:s,processor:i}),delete t.definition[i.expression];const r=o.filter((e=>"elseif"===e?.processor));let a=0;for(const e of r){const o=t.definition[e.expression];n.push({name:`${t.name}_elseif_${a++}`,definition:o,processor:e}),delete t.definition[e.expression]}t.definition.switch=[];for(const e of n)t.definition.switch.push({condition:e.processor.statement,...e.definition});if(t.definition?.else){const e=t.definition.else;t.definition.switch.push({default:e}),delete t.definition.else}await he.init(e)}};async function ge({node:e,resolveTypeCommon:t,resolveNextBlock:o,transformExpression:n}){if(e.context.transform=e.context.transform||x(e.definition),e.context.transform,e.context.try=e.childs.find((e=>"try"===e.name)),e.context.except=e.childs.find((e=>"except"===e.name)),e.context.except){const t=e.context.except;t.context.transform=t.context.transform||x(t.definition),t.context.transform.hasOwnProperty("as")||(t.context.transform.as="error")}await me({node:e,transformExpression:n}),await t({node:e}),o({node:e})}var we={hits:async function({node:e}){return e.definition.hasOwnProperty("try")&&e.definition.hasOwnProperty("except")},init:async function({node:e,initNode:t}){if(e.type="tryexcept",await fe({node:e,initNode:t}),e.blockAutoJumpToParent=!1,e.blockAutoJumpToSibling=!0,e.definition.try){const o="try",n={name:o,childs:[],parent:e,definition:e.definition[o],index:e.childs.length,context:{}};e.childs.push(n),await t({node:n})}if(e.definition.except){const o="except",n={name:o,childs:[],parent:e,definition:e.definition[o],index:e.childs.length,context:{}};e.childs.push(n),await t({node:n})}e.resolve=ge},resolve:ge};async function xe({node:e,resolveTypeCommon:t,resolveNextBlock:o,transformExpression:n}){e.context.transform=e.context.transform||x(e.definition);const i=e.context.transform;for(let e=0;e<i.assign?.length;e++){let t=i.assign[e],o=Object.keys(t)[0],s=t[o],r={key:await n(o),value:await n(s)};i.assign[e]=r}await me({node:e,transformExpression:n}),await t({node:e}),o({node:e})}var be={hits:async function({node:e}){return e.definition.hasOwnProperty("assign")},init:async function({node:e,initNode:t}){e.type="assign",await fe({node:e,initNode:t}),e.resolve=xe},resolve:xe};async function ke({node:e,resolveTypeCommon:t,resolveNextBlock:o,transformExpression:n}){e.context.transform=e.context.transform||x(e.definition);e.context.transform.for.in=await n(e.definition.for.in),await me({node:e,transformExpression:n}),await t({node:e}),o({node:e})}var ve={hits:async function({node:e}){return e.definition.hasOwnProperty("for")},init:async function({node:e,initNode:t}){if(e.type="for",await fe({node:e,initNode:t}),e.blockAutoJumpToParent=!0,e.blockAutoJumpToSibling=!1,!e.definition.for.hasOwnProperty("steps")){const t=["value","in"],[o,n]=[J(e.definition.for,t),L(e.definition.for,t)];e.definition.for=o,e.definition.for.steps=[{[`${e.name}_step`]:n}]}Array.isArray(e.definition.for.steps)||(e.definition.for.steps=[{[`${e.name}_step`]:e.definition.for.steps}]);for(let o=0;o<e.definition.for.steps.length;o++){const n=e.definition.for.steps[o],i=Object.keys(n)[0],s={name:i,childs:[],parent:e,definition:n[i],index:e.childs.length,context:{}};e.childs.push(s),await t({node:s})}e.resolve=ke},resolve:ke};var je={hits:async function({node:e}){return!1},init:async function({node:e,initNode:t}){},resolve:async function({node:e,resolveTypeCommon:t,resolveNextBlock:o,transformExpression:n,transformValue:i}){}};async function De({node:e,resolveTypeCommon:t,transformExpression:o}){e.context.transform=e.context.transform||x(e.definition);const n=e.context.transform;n.raise=await o(n.raise),await t({node:e})}var _e={hits:async function({node:e}){return e.definition.hasOwnProperty("raise")},init:async function({node:e,initNode:t}){e.type="raise",e.resolve=De},resolve:De};async function Ee({node:e,resolveTypeCommon:t,transformExpression:o}){e.context.transform=e.context.transform||x(e.definition);const n=e.context.transform;e.hasReturn=!0,n.return=await o(n.return),await t({node:e})}var Se={hits:async function({node:e}){return e.definition.hasOwnProperty("return")},init:async function({node:e,initNode:t}){e.type="return",e.resolve=Ee},resolve:Ee};async function Pe({node:e,resolveTypeCommon:t,resolveNextBlock:o,transformExpression:n}){e.context.transform=e.context.transform||x(e.definition);const i=e.context.transform;if("function"===e.target?.atom?.doc?.type&&(i.call=await n(e.target.atom.name)),i.args&&(i.args=await n(i.args)),i.result){"string"==typeof i.result&&(i.result=[{[i.result]:"e::result"}]);for(let e=0;e<i.result?.length;e++){let t=i.result[e],o=Object.keys(t)[0],s=t[o],r={key:await n(o),value:await n(s)};i.result[e]=r}}const s=e.workflow.parent;i.import?e.context.lib=s.context.libs.find((e=>e.name===i.import)):e.context.lib=s.context.libs.find((e=>e.name===i.call)),await me({node:e,transformExpression:n}),await t({node:e}),o({node:e})}var $e={hits:async function({node:e}){return e.definition.hasOwnProperty("call")},init:async function({node:e,initNode:t}){e.type="call",await fe({node:e,initNode:t}),e.resolve=Pe},resolve:Pe};async function Ce({node:e,transformExpression:t}){e.context.next=e.childs[0],e.context.transform=e.context.transform||x(e.definition),await me({node:e,transformExpression:t})}var Te={hits:async function({node:e}){return e.definition.hasOwnProperty("steps")},init:async function({node:e,initNode:t}){e.type||(e.type="steps");const o=e.definition.steps||[];for await(const n of o){const o=Object.keys(n)[0],i={name:o,childs:[],parent:e,definition:n[o],index:e.childs.length,context:{}};e.childs.push(i),await t({node:i})}e.resolve=Ce},resolve:Ce};async function Ne({node:e,resolveTypeCommon:t,resolveNextBlock:o,transformExpression:n}){e.context.transform=e.context.transform||x(e.definition);const i=e.context.transform;i.props&&(i.props=await n(i.props));const s=e.workflow.parent;e.context.lib=s.context.libs.find((e=>e.name===i.form)),await me({node:e,transformExpression:n}),await t({node:e}),o({node:e})}var Fe={hits:async function({node:e}){return e.definition.hasOwnProperty("form")},init:async function({node:e,initNode:t}){e.type="form",await fe({node:e,initNode:t}),e.resolve=Ne},resolve:Ne};async function Ae({node:e,resolveTypeCommon:t,resolveNextBlock:o,transformExpression:n,transformValue:i}){e.context.transform=e.context.transform||x(e.definition),await t({node:e})}var Oe={hits:async function({node:e}){return e.definition.hasOwnProperty("operation")},init:async function({node:e,initNode:t}){e.type="operation",e.resolve=Ae},resolve:Ae};async function Ie({node:e,resolveTypeCommon:t,resolveNextBlock:o,transformExpression:n}){e.context.transform=e.context.transform||x(e.definition);const i=e.context.transform;i.next=await n(i.next),await me({node:e,transformExpression:n}),await t({node:e}),o({node:e})}var Be={hits:async function({node:e}){return e.definition.hasOwnProperty("next")},init:async function({node:e,initNode:t}){e.type="jump",e.resolve=Ie},resolve:Ie};async function Ke({node:e,resolveTypeCommon:t,resolveNextBlock:o,transformExpression:n}){e.context.transform=e.context.transform||x(e.definition),e.context.transform,await me({node:e,transformExpression:n}),await t({node:e}),o({node:e})}var Re={hits:async function({node:e}){return e.definition.hasOwnProperty("modules")},init:async function({node:e,initNode:t}){e.type="modules",await fe({node:e,initNode:t}),e.resolve=Ke},resolve:Ke};function Me({node:e}){const t=e.definition;if(!e.hasReturn)if("end"===t.next);else if("stop"===t.next);else if("none"===t.next);else if(t.next){let o=e.parent;for(;o.parent;){const n=o.childs.find((e=>e.name===t.next));if(n){e.context.next=n;break}o=o.parent}}else{if(!0===e.module)return;let t=e.parent,o=e.index+1;for(;t.parent&&(!t.blockAutoJumpToParent||!t.blockAutoJumpToSibling);)if(Reflect.has(t,"blockAutoJumpToParent")||Reflect.has(t,"blockAutoJumpToSibling")){if(t.blockAutoJumpToParent){const n=t.childs.find((e=>e.index===o));n&&(e.context.next=n);break}t.blockAutoJumpToParent||(o=t.index+1,t=t.parent)}else{const n=t.childs.find((e=>e.index===o));if(n){e.context.next=n;break}o=t.index+1,t=t.parent}}}class Je{#e;#t;#o;#n;constructor({key:e,npm:t,master:o,extras:n}){this.#e=e,this.#t=t,this.#o=o,this.#n=n}hits({node:e}){return e.definition.hasOwnProperty(this.#e)}async init(e){const{node:t}=e,o=this.#e,n=t.definition,i=typeof n[o];if(n.call=`npm:${this.#t}`,n.args="object"!==i?{...n.args,[`${this.#o}`]:n[o]}:n[o],delete n[o],this.#n)for(const e in this.#n)n[e]=this.#n[e];console.log(`[npm-block] ${this.#e} --\x3e ${this.#t}`),await $e.init(e)}}function Le(e){return new Je(e)}class ze{#i;#s;#r;#a;#c;#p;#l;#d;#f;#m;#u;#h;#y;#g;#w;#x;#b;#k;#v;#j;#D;#_=[];constructor(e){this.#i=new Z,this.#s=e,this.#p=[],this.#l=[],this.#d={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#_.push(Le({key:"config",npm:"@fnet/config",master:"name"})),this.#_.push(Le({key:"yaml",npm:"@fnet/yaml",master:"file"})),this.#_.push(Le({key:"prompt",npm:"@fnet/prompt",master:"message"})),this.#_.push(Le({key:"html-link",npm:"@flownet/lib-load-browser-link-url",master:"src"})),this.#_.push(Le({key:"html-script",npm:"@flownet/lib-load-browser-script-url",master:"src"})),this.#_.push(Le({key:"http-server",npm:"@fnet/node-express",master:"server_port"})),this.#_.push(Le({key:"shell",npm:"@fnet/shell-flow",master:"commands"})),this.#_.push(Le({key:"list-files",npm:"@fnet/list-files",master:"pattern"})),this.#_.push(Le({key:"up-list-files",npm:"@fnet/up-list-files",master:"pattern"})),this.#_.push(Le({key:"auto-conda-env",npm:"@fnet/auto-conda-env",master:"envDir"})),this.#_.push(Le({key:"ollama-chat",npm:"@fnet/ollama-chat",master:"model"})),this.#_.push(Le({key:"ai",npm:"@fnet/ai",master:"prompt",extras:{subtype:"flow"}})),this.#_.push(Le({key:"invoke",npm:"@fnet/invoke",master:"method",extras:{}})),this.#_.push(Le({key:"fetch",npm:"@fnet/fetch",master:"url",extras:{}})),this.#_.push(Le({key:"filemap",npm:"@fnet/filemap",master:"target",extras:{}})),this.#j={packageDependencies:this.#p,packageDevDependencies:this.#l,setProgress:this.setProgress.bind(this),context:this.#s,Atom:_,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#D={initNode:this.initNode.bind(this),cloneDeep:x,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:Me,transformExpression:this.transformExpression.bind(this),transformValue:this.transformValue.bind(this)}}async _cache_set(e,t,o){this._redis_client&&await this._redis_client.SETEX(e,o||this._expire_ttl,JSON.stringify(t)).catch(console.error)}async init(){this._redis_client=await async function(){if(!await v({host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}))return;const e=k.createClient({socket:{host:process.env.REDIS_HOST,port:process.env.REDIS_PORT}});return await e.connect(),e}(),this.#u=this.#s.buildId||j(),this.#j.buildId=this.#u,this.#w=this.#s.mode,this.#x=["all","deploy","build","file"].includes(this.#w),this.#b=["all","deploy","build"].includes(this.#w),this.#k=["all","deploy"].includes(this.#w),this.#v=["all","deploy","build","file","bpmn"].includes(this.#w),this.#y=this.#s.protocol,this.#h="BUILD:"+this.#u,this.#g=(await a({optional:!0,name:"atom",dir:this.#s.projectDir,tags:this.#s.tags}))?.data;try{await this.setProgress({message:"Initialization started."}),await this.initAuth(),await this.initWorkflow(),this.transformWorkflow({workflow:this.#a});const e=await this.initNodeTree({workflow:this.#a});await this.initNodeTreeIndex({root:e}),await this.initNodeCalls({root:e}),await this.initNodeCallLibs({root:e}),await this.initNodeForms({root:e}),await this.initNodeFormLibs({root:e}),await this.initEntryFiles({root:e,features:this.#r.doc.features}),await this.initFeaturesFromNodes({childs:e.childs,features:this.#r.doc.features}),await te(this.#j),await async function({atom:e,packageDependencies:t,packageDevDependencies:o,setProgress:n}){n("Initializing dependencies");const i=e.doc.dependencies||[];if(i.filter((e=>!e.dev)).forEach((e=>t.push(e))),i.filter((e=>e.dev)).forEach((e=>o.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 o="^18.2";n("Fetching React versions"),o=`^${(await P({name:"react",groupBy:{major:!0}})).find((t=>t[0]===e.doc.features.react_version.toString()))[0]}`,t.push({package:"react",version:o}),t.push({package:"react-dom",version:o}),"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"}),o.push({package:"ajv",version:"^8"}),e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled&&t.push({package:"@fnet/config",version:"0.2.21"})),e.doc.features.render&&!1!==e.doc.features.render.enabled&&o.push({package:"@flownet/lib-render-templates-dir",version:"0.1.19"}),o.push({package:"@babel/core",version:"^7"}),o.push({package:"@rollup/plugin-commonjs",version:"^28"}),o.push({package:"@rollup/plugin-node-resolve",version:"^16"}),o.push({package:"@rollup/plugin-replace",version:"^6"}),o.push({package:"rollup",version:"^4"}),e.doc.features.dts_enabled&&o.push({package:"rollup-plugin-dts",version:"^6"}),o.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),o.push({package:"@rollup/plugin-alias",version:"^5"}),o.push({package:"fs-extra",version:"^11"}),e.doc.features.babel_enabled&&(o.push({package:"@rollup/plugin-babel",version:"^6"}),o.push({package:"@babel/preset-env",version:"^7"}),o.push({package:"@babel/preset-react",version:"^7"}),e.doc.features.babel?.options?.plugins?.forEach((e=>{switch(e[0]){case"@babel/plugin-proposal-decorators":o.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":o.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":o.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":o.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":o.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"})}}))),o.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),e.doc.features.browsersync_enabled&&o.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})}(this.#j),await this.initAtomLibsAndDeps({libs:e.context.libs,packageDependencies:this.#p}),await this.resolveNodeTree({root:e}),this.#m=e}catch(e){throw await this._cache_set(this.#h,{status:"FAILED",message:e?.message||e}),e}}async initAuth(){this.#s.id&&(this.#f=await this.#i.init({config:this.#g}),this.#j.atomAccessToken=this.#f)}async initWorkflow(){const e=this.#s.id;this.#r=this.#s.project?.workflowAtom||await _.get({id:e}),this.#a="string"==typeof this.#r.doc.content?(await u({content:this.#r.doc.content,tags:this.#s.tags})).parsed:this.#r.doc.content;let t=this.#r.doc.bundleName;t=t||(this.#r.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#r.doc.bundleName=t,this.#r.type=this.#r.type||"workflow",this.#j.atom=this.#r,this.#r.doc.features=this.#r.doc.features||{}}#E(e){console.log("filePath",e),o.statSync(e).isDirectory()?(o.readdirSync(e).forEach((t=>{const o=i.join(e,t);this.#E(o)})),o.rmSync(e)):o.unlinkSync(e)}#S(e,t){const n=o.existsSync(e),s=n&&o.statSync(e);n&&s.isDirectory()?(o.mkdirSync(t,{recursive:!0}),o.readdirSync(e).forEach((o=>{this.#S(i.join(e,o),i.join(t,o))}))):o.copyFileSync(e,t)}async initWorkflowDir(){this.setProgress({message:"Initializing library directory."});const e=this.#s.projectDir,t=this.#s.coreDir;this.setProgress({message:"Cleaning project directory."});const n=R({dir:e,ignore:[".cache","node_modules",".conda"],absolute:!0});for(const e of n)o.rmSync(e,{recursive:!0,force:!0});this.setProgress({message:"Creating project directory."}),o.existsSync(e)||o.mkdirSync(e,{recursive:!0});const s=i.join(e,"src");o.existsSync(s)||o.mkdirSync(s,{recursive:!0});const r=i.join(s,"core");this.#S(t,r);const a=i.join(s,"default","blocks");o.existsSync(a)||o.mkdirSync(a,{recursive:!0})}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});const e=this.#s.templateDir;this.#c=w.configure(e,{watch:!1,dev:!0}),this.#j.njEnv=this.#c}transformWorkflow({workflow:e}){for(const t of Object.values(e))t.steps=t.steps||[],t.steps=t.steps.filter((e=>Object.keys(e).length>0)),t.steps=t.steps.map((e=>this.transformStep({step:e})))}transformStep({step:e}){if(Array.isArray(e))throw new Error("Step must be an object.");const[t,o]=Object.entries(e)[0];if(o.hasOwnProperty("onerror")){const{onerror:n,...i}=o;e[t]={try:i,except:n}}if(e[t].hasOwnProperty("steps")){const o=e[t].steps;if(!Array.isArray(o))throw new Error("Steps must be an array.");e[t].steps=o.map((e=>this.transformStep({step:e})))}return e}async initNodeTree({workflow:e}){const t=Object.keys(e),o={definition:e,name:void 0,type:"root",parent:void 0,childs:[],blockAutoJumpToParent:!0,blockAutoJumpToSibling:!0,index:0,depth:0,context:{libs:[],atom:this.#r}};t.forEach((t=>{const n={name:t,type:"main"===t?"workflow":"subworkflow",childs:[],parent:o,definition:e[t],index:o.childs.length,depth:o.depth+1,context:{},blockAutoJumpToParent:!0,blockAutoJumpToSibling:!1};o.childs.push(n)}));for await(const e of o.childs)await this.initNode({node:e});return o}async initNode({node:e}){const t={...this.#D,node:e};if(e.workflow=e.parent.workflow||e,e.depth=e.parent.depth+1,await we.hits(t))await we.init(t);else if(await ve.hits(t))await ve.init(t);else if(await he.hits(t))await he.init(t);else if(await ye.hits(t))await ye.init(t);else if(await je.hits(t))await je.init(t);else if(await be.hits(t))await be.init(t);else if(await _e.hits(t))await _e.init(t);else if(await $e.hits(t))await $e.init(t);else if(this.#_.find((e=>e.hits(t))))await this.#_.find((e=>e.hits(t))).init(t);else if(await Fe.hits(t))await Fe.init(t);else if(await Oe.hits(t))await Oe.init(t);else if(await Te.hits(t))await Te.init(t);else if(await Be.hits(t))await Be.init(t);else if(await Re.hits(t))await Re.init(t);else{if(!await Se.hits(t))throw new Error("Undefined step type.");await Se.init(t)}}async initNodeTreeIndex({root:e}){const t={};e.indexKey="/";for await(const o of e.childs)await this.initNodeIndex({node:o,index:t});return e.context.index=t,t}async initNodeIndex({node:e,index:t}){const o=i.join(e.parent.indexKey,e.name);e.indexKey=o,t[o]=e;const n=[];let s=e;for(;s?.parent;)n.push(s.index),s=s.parent;n.reverse(),e.codeKey=`B_${n.join("_")}_${e.type}`,e.pathKey=`${n.join(".")}`,e.typeId=j();for await(const o of e.childs)await this.initNodeIndex({node:o,index:t})}async initNodeCalls({root:e}){const t=e.context.index,o=[];for await(const e of Object.keys(t)){const n=t[e];"call"===n.type&&o.push(n)}return e.context.calls=o,o}async initNodeCallLibs({root:e}){const t=[],o=e.context.calls;for await(const e of o){const o=e.definition.import||e.definition.call,n=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:o,type:"atom",definition:e.definition},i=t.find((e=>e.name===n.name&&e.type===n.type));i||t.push(n),e.target=i||n}return e.context.callLibs=t,e.context.libs=[...e.context.libs,...t],t}async findNodeCallTarget({refNode:e,curNode:t}){if(!t)return;const o=e.definition.call,n=t.childs.find((e=>e.name===o&&"subworkflow"===e.type));return n||await this.findNodeCallTarget({refNode:e,curNode:t.parent})}async initNodeForms({root:e}){const t=e.context.index,o=[];for await(const e of Object.keys(t)){const n=t[e];"form"===n.type&&o.push(n)}return e.context.forms=o,o}async initNodeFormLibs({root:e}){const t=[],o=e.context.forms;for await(const e of o){const o=e.definition.import||e.definition.form,n=await this.findNodeCallTarget({refNode:e,curNode:e.parent})||{name:o,type:"atom"},i=t.find((e=>e.name===n.name&&e.type===n.type));i||t.push(n),e.target=i||n}return e.context.formLibs=t,e.context.libs=[...e.context.libs,...t],t}async initFeaturesFromNodes({childs:e,features:t}){for await(const o of e)"form"!==o.type||Reflect.has(t,"form")||(t.form=!0),await this.initFeaturesFromNodes({childs:o.childs,features:t})}async initEntryFiles({root:e,features:t}){for await(const o of e.childs){let e;if("main"===o.name)e="index.js";else if("cli"===o.name)e="cli.js";else if("app"===o.name)e="app.js";else{if("api"!==o.name)continue;e="api.js"}t[`${o.name}_default_entry_file`]=e,o.entryFile=e}}async findNodeFormTarget({refNode:e,curNode:t}){if(!t)return;const o=e.definition.form,n=t.childs.find((e=>e.name===o&&"subworkflow"===e.type));return n||await this.findNodeFormTarget({refNode:e,curNode:t.parent})}async initAtomLibsAndDeps({libs:e,packageDependencies:t}){const o=e.filter((e=>"atom"===e.type));for(let e=0;e<o.length;e++){const n=o[e],i=await this.findAtomLibrary({url:n.name,libRef:n});n.atom=i;const s=i.doc.dependencies?.filter((e=>void 0===e.repo||"npm"===e.repo));s?.forEach((e=>{const o=t.find((t=>t.package===e.package));o?"string"==typeof e.path?(o.path||[]).some((t=>t===e.path))||(o.path=o.path||[],o.path.push(e.path)):Array.isArray(e.path)&&e.path.forEach((e=>{(o.path||[]).some((t=>t===e))||(o.path=o.path||[],o.path.push(e))})):t.push(e)}))}t.sort(((e,t)=>e.package?.localeCompare(t.package)))}async findAtomLibrary({url:e,libRef:t}){const o=A({url:e});if(!o)throw new Error(`Invalid package name: ${e}`);if(o.protocol||(o.protocol=this.#y),"ac:"===o.protocol){const t=o.pathname.split("/");if(1===t.length)return await _.first({where:{name:e,parent_id:this.#g.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(2===t.length){const e=await _.first({where:{name:t[0],parent_id:this.#g.env.ATOM_LIBRARIES_ID,type:"folder"}});return await _.first({where:{name:t[1],parent_id:e.id,type:"workflow.lib"}})}}else{if("local:"===o.protocol){const e=i.resolve(this.#s.projectSrcDir,`${o.pathname}.js`),t=[],n=(await S({file:e,recursive:!0})).all;for await(const e of n){if("npm"!==e.type)continue;if(t.find((t=>t.package===e.package)))continue;const o=await oe({name:e.package,projectDir:this.#s.projectDir,setProgress:this.#j.setProgress});t.push({package:e.package,subpath:e.subpath,version:o.minorRange,type:"npm"})}return{name:o.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:t},protocol:o.protocol}}if("npm:"===o.protocol){const e=await oe({name:o.pathname,projectDir:this.#s.projectDir,setProgress:this.#j.setProgress});return{name:o.pathname,doc:{type:"workflow.lib",subtype:"flow"===t?.definition?.subtype?"workflow":null,"content-type":"javascript",language:"js",dependencies:[{package:o.pathname,version:e.minorRange,type:"npm"}]},protocol:o.protocol}}if("use:"===o.protocol){return{name:o.pathname,doc:{type:"function",dependencies:[]},protocol:o.protocol}}}}async resolveNodeTree({root:e}){for await(const t of e.childs)await this.resolveTypeWorkflow({node:t})}async resolveTypeWorkflow({node:e}){e.context.transform=e.context.transform||x(e.definition);const t=e.context.transform;for(let e=0;e<t.params?.length;e++){const o=t.params[e];if("string"==typeof o)t.params[e]={key:o,hasDefault:!1};else{const n=Object.keys(o)[0];t.params[e]={key:n,hasDefault:!0,default:o[n],type:typeof o[n]}}}e.context.next=e.childs[0];for await(const t of e.childs)await this.resolveType({node:t})}async resolveType({node:e}){const t={...this.#D,node:e};"function"==typeof e.resolve&&await e.resolve(t);for await(const t of e.childs)await this.resolveType({node:t})}async resolveTypeCommon({node:e}){const t=e.context.transform;t.hasOwnProperty("operation")&&(t.operation=await this.transformExpression(t.operation)),t.hasOwnProperty("page")&&(t.page=await this.transformExpression(t.page)),t.hasOwnProperty("print")&&(t.print=await this.transformExpression(t.print)),t.hasOwnProperty("sleep")&&(t.sleep=await this.transformExpression(t.sleep)),t.hasOwnProperty("assert")&&(t.assert=await this.transformExpression(t.assert))}async createAtomLibFiles({root:e}){await this.setProgress({message:"Creating external lib files."}),this.#r.typesDir="./types";const t=e.context.libs.filter((e=>"atom"===e.type));for(let e=0;e<t.length;e++){const n=t[e].atom,s=this.#s.projectDir;if("local:"===n.protocol){const e=i.resolve(this.#s.projectSrcDir,`${n.fileName||n.name}.js`),t=i.relative(`${this.#s.projectDir}/src/default/blocks`,e);if(!o.existsSync(e)){o.mkdirSync(i.dirname(e),{recursive:!0});let t="export default async (args)=>{\n";t+="}",o.writeFileSync(e,t,"utf8")}n.relativePath=t.split(i.sep).join("/"),this.#r.typesDir=`./types/${i.basename(s)}/src`}else if("npm:"===n.protocol)n.relativePath=n.name;else if("use:"===n.protocol);else{const e=`${s}/src/libs/${n.id}.js`,t=n.doc.contents?.find((e=>"esm"===e.format))||n.doc;o.writeFileSync(i.normalize(e),t.content,"utf8")}}}async createEngine({root:e}){await this.setProgress({message:"Creating engine file."});const t=this.#s.templateDir,n=w.compile(o.readFileSync(i.resolve(t,"src/default/engine.js.njk"),"utf8"),this.#c);for(let t=0;t<e.childs.length;t++){const s=e.childs[t];if(!s.entryFile)continue;const r=n.render({flow:s,ui:{package:"@fnet/react-app"}}),a=this.#s.projectDir,c=i.resolve(a,`src/default/${s.entryFile}`);o.writeFileSync(c,r,"utf8")}}async createNodeTree({root:e}){await this.setProgress({message:"Creating block files."});for await(const t of e.childs)await this.createTypeWorkflow({node:t})}async createTypeWorkflow({node:e}){const t=this.#s.templateDir,n=w.compile(o.readFileSync(i.resolve(t,"src/default/workflow.js.njk"),"utf8"),this.#c).render(e),s=this.#s.projectDir,r=i.resolve(s,`src/default/${e.codeKey}.js`);o.writeFileSync(r,n,"utf8");for await(const t of e.childs)await this.createType({node:t})}async createType({node:e}){switch(e.type){case"assign":case"steps":case"return":case"call":case"form":case"raise":case"switch":case"jump":case"tryexcept":case"for":case"operation":case"modules":this.createBlockFromTemplate({node:e})}for await(const t of e.childs)await this.createType({node:t})}createBlockFromTemplate({node:e}){const t=this.getBlockTemplate({node:e});e.context.render=t.render(e),this.createStepFile({node:e})}getBlockTemplate({node:e}){let t=this.#d[e.type];if(t)return t;const n=this.#s.templateDir;return t=w.compile(o.readFileSync(i.resolve(n,`src/default/blocks/${e.type}.js.njk`),"utf8"),this.#c),this.#d[e.type]=t,t}createStepFile({node:e}){const t=this.#s.projectDir,n=`${e.codeKey}.js`,s=i.resolve(t,`src/default/blocks/${n}`);o.writeFileSync(s,e.context.render,"utf8"),e.context.fileName=n,e.context.filePath=s}async transformExpression(e){let t=await this.transformValue(e);return t=JSON.stringify(t),t=this.replaceSpecialPattern(t),t}async transformValue(e){if(Array.isArray(e))for(let t=0;t<e.length;t++)e[t]=await this.transformValue(e[t]);else if(b(e)){const t=Object.keys(e);for(let o=0;o<t.length;o++){const n=t[o],i=B({expression:n});if(i)if("e"===i.processor){const t=e[n].replace(/(\r\n|\n|\r)/g,"");e[i.statement]=`$::${t}::`,delete e[n]}else e[n]=await this.transformValue(e[n]);else e[n]=await this.transformValue(e[n])}}else if("string"==typeof e){const t=B({expression:e});if(t){const{processor:o,statement:n}=t;switch(o){case"v":e=`$::v.${n}::`;break;case"e":e=`$::${n}::`;break;case"m":e=`$::c.module['${n}']::`;break;case"fm":e=`$::flow.getModule('${n}')::`;break;case"f":e=`$::c.form.${n}::`;break;case"for":e=`$::caller.for.${n}::`}}}return e}replaceSpecialPattern(e){return e.replace(/"\$::(.*?)::"/g,"$1")}replaceExpressionLegacy(e){return e.replaceAll(/(?<outer>"\${(?<inner>[^{]*)}")/g,"$2")}async createProjectYaml(){const e="fnet.yaml",t=`Creating ${e}`;await this.setProgress({message:t});const{content:n,...s}=this.#r.doc,r={content:f.stringify(s)},a=this.#s.templateDir,c=w.compile(o.readFileSync(i.resolve(a,`${e}.njk`),"utf8"),this.#c).render(r),p=this.#s.projectDir,l=i.resolve(p,`${e}`);o.writeFileSync(l,c,"utf8")}async createProjectMainYaml(){const e="flow.main.yaml",t=`Creating ${e}`;await this.setProgress({message:t});const n={content:f.stringify(this.#a)},s=this.#s.templateDir,r=w.compile(o.readFileSync(i.resolve(s,`${e}.njk`),"utf8"),this.#c).render(n),a=this.#s.projectDir,c=i.resolve(a,`${e}`);o.writeFileSync(c,r,"utf8")}async runPrettifier(){const e=this.#s.projectDir,t=await m("prettier --write .",{cwd:i.resolve(e,"src")});if(0!==t.code)throw new Error(t.stderr)}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#s.project?.devops){const e=[this.#s.project?.devops];for(let t=0;t<e.length;t++){let o=e[t];await this.deployProject({deploymentProject:o}),!0===o.isDirty&&await o.save()}}else if(this.#r.id){const e=await _.list({type:"workflow.deploy",parent_id:this.#r.id});for(let t=0;t<e.length;t++){let o=e[t];await this.deployProject({deploymentProject:o}),!0===o.isDirty&&(o=await _.update(o,{id:o.id}))}}}async deployProject(e){const{deploymentProject:t}=e,{yamlDocument:o}=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 n=Object.keys(t.doc||{}),i=o||{};for(let e=0;e<n.length;e++){const o=t.doc[n[e]];o.name=n[e];const s=i.get(n[e]);await ie({...this.#j,deploymentProject:t,deploymentProjectTarget:o,yamlTarget:s})}}async registerToPackageManager(e){const{target:t,packageJSON:o}=e;if(!this.#s.id)return;let n=await _.first({name:t.params.name,parent_id:this.#g.env.ATOM_PACKAGES_ID});n?(n.doc.versions.splice(0,0,{v:o.version}),await _.update(n,{id:n.id})):n=await _.create({parent_id:this.#g.env.ATOM_PACKAGES_ID,doc:{name:t.params.name,type:"pm",versions:[{v:o.version}]}})}async setProgress(e){const t="string"==typeof e?e:e?.message;console.log(K.blue(t)),await this._cache_set(this.#h,{status:"IN_PROGRESS",message:t})}async build(){if(this.#v&&!this.#x)return await this.createNetwork();try{const e=this.#v?await de({root:this.#m}):void 0;if(this.#x){if(await this.initWorkflowDir(),await this.initNunjucks(),this.#v){let t=this.#s.project?.projectDir||this.#s.projectDir;t=i.resolve(t,"fnet"),o.existsSync(t)&&o.writeFileSync(i.resolve(t,"flow.bpmn"),e.diagramXML,"utf8")}await this.createAtomLibFiles({root:this.#m}),await this.createEngine({root:this.#m}),await this.createNodeTree({root:this.#m}),await this.createProjectYaml(),await async function({atom:e,context:t,setProgress:n,Atom:s}){const r="readme.md",a=`Creating ${r}`;if(await n({message:a}),t.project?.readme){const e=t.projectDir,n={content:t.project.readme.doc.content},s=i.resolve(t.project.projectDir,"fnet/how-to.md");if(o.existsSync(s)){const e=o.readFileSync(s,"utf8");n.howto=e}const a=i.resolve(t.project.projectDir,"fnet/input.yaml");if(o.existsSync(a)){const e=await u({file:a,tags:t.tags});n.input=e.content}const c=t.templateCommonDir,p=w.compile(o.readFileSync(i.resolve(c,`${r}.njk`),"utf8"),w.configure(c)).render(n),l=i.resolve(e,`${r}`);o.writeFileSync(l,p,"utf8")}else if(e.id){const n=await s.first({type:"wiki",parent_id:e.id});if(!n||"markdown"!==n.doc?.["content-type"])return;const{content:a,...c}=n.doc,p={content:a},l=t.templateCommonDir,d=w.compile(o.readFileSync(i.resolve(l,`${r}.njk`),"utf8"),w.configure(l)).render(p),f=t.projectDir,m=i.resolve(f,`${r}`);o.writeFileSync(m,d,"utf8")}}(this.#j),await async function({atom:e,setProgress:t,context:n,packageDependencies:s}){await t({message:"Creating tsconfig.json."});const r={atom:e,packageDependencies:s},a=n.templateCommonDir,c=w.compile(o.readFileSync(i.resolve(a,"tsconfig.json.njk"),"utf8"),w.configure(a)).render(r),p=n.projectDir,l=i.resolve(p,"tsconfig.json");o.writeFileSync(l,c,"utf8")}(this.#j),await async function({atom:e,setProgress:t,context:n,packageDependencies:s}){await t({message:"Creating .gitignore"});const r={atom:e,packageDependencies:s},a=n.templateCommonDir,c=w.compile(o.readFileSync(i.resolve(a,".gitignore.njk"),"utf8"),w.configure(a)).render(r),p=n.projectDir,l=i.resolve(p,".gitignore");o.writeFileSync(l,c,"utf8")}(this.#j),await async function({atom:e,setProgress:t,context:n,njEnv:s}){if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating yargs."});let r={};if(r=e.doc.input?e.doc.input:{type:"object",properties:{},required:[]},e.doc.features.cli.fargs&&!1!==e.doc.features.cli.fargs?.enabled){const t=e.doc.features.cli.fargs,o={type:"string",description:"Config name to load args",hidden:!1},n={type:"array",description:"Tags to filter the config",hidden:!1};Reflect.has(t,"default")&&(o.default=t.default),r.properties&&(r.properties.fargs=o,r.properties.ftag=n)}const a={options:r,imports:[],atom:e},c=n.templateDir,p=w.compile(o.readFileSync(i.resolve(c,"src/default/to.args.js.njk"),"utf8"),s).render(a),l=n.projectDir,d=i.resolve(l,"src/default/to.args.js");o.writeFileSync(d,p,"utf8");const f=new T({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});F(f);const m=f.compile(r),u=N(f,m);o.writeFileSync(i.resolve(l,"src/default/validate_input.js"),u,"utf8")}(this.#j),await async function({atom:e,setProgress:t,context:n,packageDependencies:s}){if(!0!==e.doc.features.cli.enabled)return;await t({message:"Creating cli."});const r={atom:e,packageDependencies:s},a=n.templateDir,c=i.resolve(n.projectDir,"src/cli");o.existsSync(c)||o.mkdirSync(c,{recursive:!0}),await g({pattern:["index.js.njk"],dir:i.resolve(a,"src/cli"),outDir:c,context:r})}(this.#j),await async function({atom:e,setProgress:t,context:n,packageDependencies:s}){if(!0!==e.doc.features.app.enabled)return;await t({message:"Creating app folder"});const r={atom:e,packageDependencies:s,ts:Date.now()},a=n.templateDir,c=i.resolve(n.projectDir,"src/app");o.existsSync(c)||o.mkdirSync(c,{recursive:!0});let p=["index.js.njk"];!1!==e.doc.features.app.html&&p.push("index.html.njk"),await g({pattern:p,dir:i.resolve(a,"src/app"),outDir:c,context:r})}(this.#j),await async function({atom:e,setProgress:t,context:n,packageDependencies:s}){await t({message:"Creating rollup file."});const r={atom:e,packageDependencies:s},a=i.resolve(n.projectDir,"src","default/index.js");if(!o.existsSync(a))throw new Error(`Entry file not found: ${a}`);const c=(await S({file:a,recursive:!0})).all.filter((e=>"node"===e.type)).map((e=>e.path)),p=e.doc.features.rollup_output,l=Object.keys(p);for(let e=0;e<l.length;e++){const t=p[l[e]];if(!0===t.browser&&c.length>0){t.globals_enabled=!0,t.globals=t.globals||[],t.globals=t.globals.concat(c.map((e=>({key:e,value:e})))),t.alias_enabled=!0,t.alias=t.alias||{},t.alias.entries=t.alias.entries||{};for(let e=0;e<c.length;e++){const o=c[e];t.alias.entries[o]=`node:${o}`,t.alias.entries[`node:${o}`]=o}t.external_enabled=!0,t.external=t.external||[],t.external=t.external.concat(c)}}const d=n.templateCommonDir;let f=w.compile(o.readFileSync(i.resolve(d,"rollup.config.mjs.njk"),"utf8"),w.configure(d)).render(r);const m=n.projectDir;let u=i.resolve(m,"rollup.config.mjs");o.writeFileSync(u,f,"utf8")}(this.#j),await async function({atom:e,context:t,packageDependencies:n,packageDevDependencies:s,setProgress:r}){await r({message:"Creating package.json."}),n.filter((e=>!0===e.dev)).forEach((e=>{s.find((t=>t.package===e.package))||s.push(e);const t=n.findIndex((t=>t.package===e.package));n.splice(t,1)}));const a=n.find((e=>"react"===e.package)),c=n.find((e=>"react-dom"===e.package));a&&!c?n.push({package:"react-dom",version:a.version}):a&&c&&(c.version=a.version),a&&e.doc.features.react_version>=17&&(n.find((e=>"@emotion/react"===e.package))||n.push({package:"@emotion/react",version:"^11"}),n.find((e=>"@emotion/styled"===e.package))||n.push({package:"@emotion/styled",version:"^11"}));const p=[];!0===e.doc.features.app.enabled&&p.push({file:i.resolve(t.projectDir,"src/app/index.js"),dev:!1!==e.doc.features.app.dev}),!0===e.doc.features.cli.enabled&&p.push({file:i.resolve(t.projectDir,"src/cli/index.js"),dev:!1!==e.doc.features.cli.dev});for await(const e of p){const i=e.file;if(!o.existsSync(i))throw new Error(`App file not found: ${i}`);const a=(await S({file:i,recursive:!0})).all;for await(const o of a){if("npm"!==o.type)continue;if(n.find((e=>e.package===o.package)))continue;if(s.find((e=>e.package===o.package)))continue;const i=await oe({name:o.package,projectDir:t.projectDir,setProgress:r});(!0===e.dev?s:n).push({package:o.package,subpath:o.subpath,version:i.minorRange,type:"npm"})}}const l={atom:e,packageDependencies:n,packageDevDependencies:s},d=t.templateCommonDir,f=w.compile(o.readFileSync(i.resolve(d,"package.json.njk"),"utf8"),w.configure(d)).render(l),m=t.projectDir,u=i.resolve(m,"package.json");o.writeFileSync(u,f,"utf8");const h=i.resolve(t.project.projectDir,"fnet");if(o.existsSync(h)){const e=i.resolve(t.projectDir,"fnet");o.existsSync(e)||o.mkdirSync(e);const n=o.readdirSync(h);for(const t of n){const n=i.resolve(h,t);if(!o.lstatSync(n).isFile())continue;const s=i.resolve(e,t);o.copyFileSync(n,s)}}}(this.#j),await async function({setProgress:e,context:t}){const o=t.projectDir;await e({message:"Prettifiying source files."});let n=c.join("src","**","*");await y({commands:{steps:[`prettier --write ${n} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`],wdir:o}})}(this.#j),await async function({atom:e,setProgress:t,context:o}){if(!e.doc.features.dts_enabled)return;const n=o.projectDir;if(await t({message:"Creating .d.ts"}),0!==(await m("tsc",{cwd:n})).code)throw new Error("Couldnt create .d.ts files.")}(this.#j),this.#b&&(await async function({setProgress:e,atom:t,context:o}){const n=o.projectDir;await e({message:"Installing npm packages."});const i=G("bun")?"bun":"npm";if(0!==(await m(`${i} install ${t.doc.features.npm_install_flags}`,{cwd:n})).code)throw new Error("Couldnt install npm packages.")}(this.#j),await async function({setProgress:e,context:t}){const o=t.projectDir;if(await e({message:"Building main project."}),0!==(await m("npm run build",{cwd:o})).code)throw new Error("Couldnt build project.")}(this.#j),this.#k&&await this.deploy())}await this._cache_set(this.#h,{status:"COMPLETED",data:{network:e}})}catch(e){throw await this._cache_set(this.#h,{status:"FAILED",message:e.message||e}),e}}async createNetwork(){try{const e=await de({root:this.#m});await this._cache_set(this.#h,{status:"COMPLETED",data:{...e}})}catch(e){throw await this._cache_set(this.#h,{status:"FAILED",message:e.message||e}),e}}}const qe=process.cwd();a({name:["redis"],dir:qe,optional:!0});const We=function({baseDir:e}){let t=e=e||X;for(;t!==i.parse(t).root;){const e=i.join(t,"node_modules");if(o.existsSync(e))return e;t=i.dirname(t)}return null}({baseDir:X}),Ue="win32"===process.platform?";":":";process.env.PATH=`${c.join(We,"/.bin")}${Ue}${process.env.PATH}`;const Xe=new p;function Ve(t,{name:o,bin:n,preArgs:i=[]}){const s=o||n;t.command(s,{isDefault:!1,hidden:!1}).description(`Run ${n} ${i.join(" ")} in project context. Pass arguments directly after command name.`).argument("[command_args...]",`Arguments for ${n}`).allowUnknownOption().action((async(t,o)=>{try{const s=await He(o),r=s?.projectDir&&d.existsSync(s.projectDir)?s.projectDir:s?.project?.projectDir&&d.existsSync(s.project.projectDir)?s.project.projectDir:qe,a=t,c=e(n,[...i,...a],{cwd:r,stdio:"inherit",shell:!0});c.on("close",(e=>{void 0===process.exitCode&&process.exit(e)})),c.on("error",(e=>{console.error(`Failed to start ${n}:`,e),void 0===process.exitCode&&process.exit(1)}))}catch(e){console.error(`Error setting up context for ${s}:`,e.message),void 0===process.exitCode&&process.exit(1)}}))}async function He(e){const t=e.ftag||[];if(e.id)return{id:e.id,buildId:e.buildId,mode:e.mode,protocol:e.protocol||"ac:",projectDir:c.resolve(qe,`./.output/${e.id}`),templateDir:c.resolve(We,"@fnet/cli-project-flow/dist/template/default"),templateCommonDir:c.resolve(We,"@fnet/cli-project-common/dist/template/default"),coreDir:c.resolve(We,"@fnet/cli-project-flow/dist/template/core"),tags:t};{const o=await async function({tags:e=[]}){const t=c.resolve(qe,"fnet.yaml");if(!d.existsSync(t))throw new Error("fnet.yaml file not found in current directory.");const o=Array.isArray(e)?e:e?[e]:[],{raw:n,parsed:i}=await u({file:t,tags:o}),s=c.dirname(t);let r={};if("object"==typeof i.flows&&null!==i.flows)r=i.flows;else{let e="flow.main.yaml";const t=c.join(s,"fnet","flows.yaml");d.existsSync(t)&&(e=c.join("fnet","flows.yaml"));const n=i.main||e;let a=c.resolve(s,n);if(d.existsSync(a))try{const{parsed:e}=await u({file:a,tags:o});r=e}catch(e){throw console.error(`Error parsing flow file: ${a}`),e}else i.main&&console.warn(`Warning: Main flow file specified in fnet.yaml (${n}) not found.`),r={main:{steps:[]}}}const a={workflowAtom:{doc:{...i,content:r}},projectDir:s,projectFilePath:t,projectFileContent:n,projectFileParsed:i};let p=c.resolve(s,"fnet/targets.yaml");const l=c.resolve(s,"flow.devops.yaml");if(!d.existsSync(p)&&d.existsSync(l)){console.log(`Migrating legacy devops file: ${l}`);try{const e=c.resolve(s,"fnet");d.existsSync(e)||d.mkdirSync(e),d.copyFileSync(l,p),d.unlinkSync(l),console.log(`Successfully migrated to ${p}`)}catch(e){console.error(`Error migrating devops file: ${e.message}`)}}if(d.existsSync(p))try{const{raw:e,parsed:t}=await u({file:p,tags:o}),n=f.parseDocument(e);a.devops={filePath:p,fileContent:e,yamlDocument:n,doc:{...t},type:"workflow.deploy",save:async()=>{d.writeFileSync(a.devops.filePath,n.toString())}}}catch(e){console.error(`Error loading or parsing devops file: ${p}`)}const m=c.resolve(s,"readme.md");if(d.existsSync(m)){const e=d.readFileSync(m,"utf8");a.readme={filePath:m,fileContent:e,doc:{content:e,"content-type":"markdown"},type:"wiki"}}return a}({tags:t});return{buildId:e.buildId,mode:e.mode,protocol:e.protocol||"local:",templateDir:c.resolve(We,"@fnet/cli-project-flow/dist/template/default"),templateCommonDir:c.resolve(We,"@fnet/cli-project-common/dist/template/default"),coreDir:c.resolve(We,"@fnet/cli-project-flow/dist/template/core"),projectDir:c.resolve(o.projectDir,"./.workspace"),projectSrcDir:c.resolve(o.projectDir,"./src"),project:o,tags:t}}}Xe.name("fnet").version(Y).description("CLI tool for FlowNet workflow projects"),Xe.command("create").description("Initialize flow workflow project").requiredOption("-n, --name <string>","Project name").addOption(new l("-r, --runtime <type>","Runtime environment (currently only node)").choices(["node"]).default("node")).option("--vscode","Open project in VSCode after creation",!0).option("--no-vscode","Do not open project in VSCode").action((async e=>{try{const t=c.resolve(We,"@fnet/cli-project-flow/dist/template/project"),o=c.resolve(qe,e.name);d.existsSync(o)||d.mkdirSync(o),await g({dir:t,outDir:o,context:e,copyUnmatchedAlso:!0});let n=await m("fnet build",{cwd:o});if(0!==n.code)throw new Error("Failed to build project.");if(G("git")&&(n=await m("git init --initial-branch=main",{cwd:o}),0!==n.code))throw new Error("Failed to initialize git.");if(e.vscode&&G("code")&&(n=await m(`cd ${o} && code .`),0!==n.code))throw new Error("Failed to open vscode.");console.log("Creating project succeeded!"),process.exit(0)}catch(e){console.error("Initialization failed!",e.message),process.exit(1)}})),Xe.command("project").description("Flow workflow project operations").option("-u, --update","Update project files from template",!1).action((async e=>{try{const t=c.resolve(We,"@fnet/cli-project-flow/dist/template/project"),o=process.cwd(),n=await He(e);if(e.update){if(await g({dir:t,outDir:o,context:{name:n.project.projectFileParsed.name,runtime:"node"},copyUnmatchedAlso:!0}),0!==(await m("fnet build",{cwd:o})).code)throw new Error("Failed to build project.");console.log("Updating project succeeded!")}else console.log("Use 'fnet project --update' to update project files.");process.exit(0)}catch(e){console.error("Project command failed.",e.message),process.exit(1)}})),Xe.command("build").description("Build flownet workflow project").option("--id <string>","Build identifier").option("--buildId <string>","Specific build ID").addOption(new l("--mode <mode>","Build mode").choices(["all","file","build","deploy","bpmn"]).default("build")).option("--ftag <tags...>","Filter tags (specify multiple times or space-separated)").action((async e=>{try{const t=await He(e),o=new ze(t);await o.init(),await o.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(e){console.error("Building workflow failed!",e.message),process.exit(1)}})),Xe.command("deploy").description("Build and deploy flownet workflow project").option("--id <string>","Build identifier").option("--buildId <string>","Specific build ID").option("--ftag <tags...>","Filter tags").action((async e=>{try{const t=await He({...e,mode:"all"}),o=new ze(t);await o.init(),await o.build(),console.log("Building and deploying workflow succeeded!"),process.exit(0)}catch(e){console.error("Building/deploying workflow failed!",e.message),process.exit(1)}})),Xe.command("file").description("Just create files (part of workflow build)").option("--id <string>","Build identifier").option("--buildId <string>","Specific build ID").option("--ftag <tags...>","Filter tags").action((async e=>{try{const t=await He({...e,mode:"file"}),o=new ze(t);await o.init(),await o.build(),console.log("Creating workflow files succeeded!"),process.exit(0)}catch(e){console.error("Creating workflow files failed!",e.message),process.exit(1)}})),Xe.command("input").description("Create or modify an input config file").argument("[name]","Optional input configuration name (e.g., dev, prod)").action((async(e,o)=>{try{const n=await He({...o,name:e}),{project:i}=n,{projectDir:s,projectFileParsed:r}=i,a=r.input;if(!a)throw new Error("Config schema `input` not found in project file (fnet.yaml).");let p=e;if(!p){p=(await t({type:"input",name:"inputName",message:"Input name:",initial:"dev"})).inputName,p||(console.error("Input name cannot be empty."),process.exit(1))}const l=c.resolve(s,".fnet");d.existsSync(l)||d.mkdirSync(l);const f=c.resolve(l,`${p}.fnet`),m=d.existsSync(f),u=await h({schema:a,format:"yaml",ref:m?f:void 0});d.writeFileSync(f,u),console.log(`Input config '${p}.fnet' ${m?"updated":"created"}.`)}catch(e){console.error(e.message),process.exit(1)}})),Ve(Xe,{bin:"npm"}),Ve(Xe,{bin:"node"}),Ve(Xe,{bin:"bun"}),Ve(Xe,{name:"serve",bin:"npm",preArgs:["run","serve"]}),Ve(Xe,{name:"watch",bin:"npm",preArgs:["run","watch"]}),Ve(Xe,{name:"app",bin:"npm",preArgs:["run","app"]}),Ve(Xe,{name:"cli",bin:"npm",preArgs:["run","cli"]}),Ve(Xe,{bin:"npx"}),Ve(Xe,{bin:"cdk"}),Ve(Xe,{bin:"aws"}),function(t,{name:o,preArgs:n=[]}){t.command(o).description("Run a command with environment variables from a .fnet config file.").argument("<config>","Name of the .fnet config file (without extension)").argument("<command>","The command to execute").argument("[command_args...]","Arguments for the command").option("--ftag <tags...>","Filter tags for loading config").allowUnknownOption().action((async(t,i,s,r)=>{try{const o=await He(r),c=o?.project?.projectDir&&d.existsSync(o.project.projectDir)?o.project.projectDir:qe,p=await a({name:t,dir:c,transferEnv:!1,optional:!0,tags:o?.tags||r.ftag||[]}),l=p?.data?.env||{},f=o?.projectDir&&d.existsSync(o.projectDir)?o.projectDir:c,m=e(i,[...n,...s],{cwd:f,stdio:"inherit",shell:!0,env:{...process.env,...l}});m.on("close",(e=>{void 0===process.exitCode&&process.exit(e)})),m.on("error",(e=>{"ENOENT"===e.code?console.error(`Error: Command not found: '${i}'. Is it installed or in your PATH?`):console.error(`Failed to start command '${i}':`,e),void 0===process.exitCode&&process.exit(1)}))}catch(e){console.error(`Error setting up context or running command for '${o}': ${e.message}`),void 0===process.exitCode&&process.exit(1)}}))}(Xe,{name:"with"}),function(e,{name:t,preArgs:o=[]}){e.command(t).description("Run a command group defined in fnet.yaml.").argument("<group>","Name of the command group in fnet.yaml commands section").option("--ftag <tags...>","Filter tags for loading project config").action((async(e,t)=>{try{const o=await He(t);if(!o||!o.project||!o.project.projectFileParsed)throw new Error("Could not load project context. Are you in a fnet project directory?");const{projectFileParsed:n}=o.project,i=n.commands;if(!i)throw new Error("`commands` section not found in project file (fnet.yaml).");const s=i[e];if(!s)throw new Error(`Command group '${e}' not found in project file.`);await y({commands:s}),void 0===process.exitCode&&process.exit(0)}catch(t){console.error(`Error running command group '${e}':`,t.message),void 0===process.exitCode&&process.exit(1)}}))}(Xe,{name:"run"}),Xe.parse(process.argv),process.argv.slice(2).length||Xe.outputHelp();export{G as w};
@@ -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 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 r from"node:path";import t from"semver";import n from"@fnet/shelljs";import o from"@fnet/config";async function i({setProgress:i,context:a,deploymentProject:s,deploymentProjectTarget:c,yamlTarget:d}){await i({message:"Deploying it as fnet package."});const m=a.projectDir,p=r.resolve(m,"package.json"),f=e.readFileSync(p),l=JSON.parse(f);l.name=c.params.name,l.version=t.inc(c.version,"patch"),delete l.scripts,delete l.devDependencies,e.writeFileSync(p,JSON.stringify(l,null,"\t"));const{file:A,data:_}=await o({name:c.config||"fnet-package",dir:a.projectDir,tags:a.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='${r.resolve(r.dirname(A),_.env.GCS_UPLOADER_KEY_FILE)}'`,y+=` --dir='${m}'`,y+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.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(p,f),!0===c.dryRun)return;s.isDirty=!0,c.version=l.version,d.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{i as default};
@@ -1 +0,0 @@
1
- import e from"semver";import r from"@fnet/config";import o from"fs";import t from"@fnet/shelljs";import n from"form-data";async function i({setProgress:i,context:s,deploymentProject:a,deploymentProjectTarget:c,yamlTarget:d}){await i({message:"Deploying it as fnet node."});const{file:f,data:p}=await r({name:c.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(c.version,"patch");c.params.version=u,c.version=u,d.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:c.params.name,version:c.params.version,docs:c.params.docs,configs:c.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
- 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 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 e from"fs";import t from"path";import o from"@fnet/config";async function i({atom:i,Atom:n,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 n.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 n.get({id:l.deploy.id}),!f)return}else{if(f=await n.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"===i.type?f.doc.subtype="library":"workflow"===i.type&&(f.doc.subtype="workflow"),f=await n.update(f,{id:f.id})}export{i 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/up-list-files";import s from"@fnet/object-from-schema";import m from"yaml";import{w as p}from"./index.mjs";import"path";import"child_process";import"@fnet/prompt";import"commander";import"fs";import"os";import"@fnet/yaml";import"@fnet/shell-flow";import"@flownet/lib-render-templates-dir";import"node:os";import"nunjucks";import"redis";import"@flownet/lib-is-redis-online";import"node:crypto";import"@flownet/lib-atom-api-js";import"lodash.merge";import"@flownet/lib-parse-imports-js";import"@fnet/npm-list-versions";import"@fnet/npm-pick-versions";import"object-hash";import"ajv/dist/2020.js";import"ajv/dist/standalone/index.js";import"ajv-formats";import"@fnet/auto-conda-env";import"@flownet/lib-parse-node-url";import"@fnet/list-files";import"chalk";import a from"node:url";import l from"node:path";import c from"node:module";const f=a.fileURLToPath(import.meta.url),d=l.dirname(f);c.createRequire(import.meta.url);async function u({atom:a,setProgress:l,context:c,deploymentProject:f,deploymentProjectTarget:u,yamlTarget:h}){await l({message:"Deploying it as npm package."});const j=c.projectDir,y=t.resolve(j,"package.json"),g=e.readFileSync(y),v=JSON.parse(g);v.name=u.params.name,v.version=r.inc(u.version,"patch");const w=u.params.bin?.name||u.params.bin;!1!==u.params.bin?.enabled&&w&&"string"==typeof w&&(v.bin={[w]:"dist/cli/esm/index.js"}),delete v.scripts,delete v.devDependencies,v.scripts={serve:"npx serve ."},e.writeFileSync(y,JSON.stringify(v,null,"\t"));const b=u.config||"npm";let S=(await i({name:b,dir:c.projectDir,tags:c.tags,optional:!0}))?.data;if(!S){const r=n({dir:d,pattern:"@fnet/cli-project-schemas/dist/schemas/to-npm.yaml",absolute:!0});if(0===r.length)throw new Error("Couldnt find schema to create npm config");const o=await s({schema:r[0],tags:c.tags}),i=c.project.projectDir,p=t.resolve(i,".fnet");e.existsSync(p)||e.mkdirSync(p),e.writeFileSync(t.resolve(p,`${b}.fnet`),m.stringify(o)),S=o}if(e.writeFileSync(t.resolve(j,".npmrc"),`//registry.npmjs.org/:_authToken=${S.env.NPM_TOKEN}`),!0===u.dryRun)return;const k=p("bun")?"bun":"npm";if(0!==(await o(`${k} publish --access public`,{cwd:j})).code)throw new Error("Couldnt publish to npm");e.writeFileSync(y,g),f.isDirty=!0,u.version=v.version,h.set("version",v.version)}export{u 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 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:l}){await i({message:"Deploying it as gcs package."});const p=o.projectDir,d=t.resolve(p,"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='${p}'`,u+=" --pattern={'dist/**/**','bin/**/**','test/**/**','*.html'}",u+=` --destDir='${f.name}/${f.version}'`,u+=" --metadata.cacheControl='public, max-age=31536000, immutable'",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,l.set("version",f.version),await m({target:c,packageJSON:f}))}export{i 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 r from"semver";import e from"@fnet/config";import o from"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};