@fnet/cli 1.12.1 → 1.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/fbin/index.js +1 -1
  2. package/dist/fnet/index.4gymwzqb.js +1 -0
  3. package/dist/fnet/index.5r21wfyc.js +1 -0
  4. package/dist/fnet/index.js +9 -9
  5. package/dist/fnet/index.kanz1359.js +2 -0
  6. package/dist/fnet/index.kjw4nv5z.js +1 -0
  7. package/dist/fnet/index.n7q2w82x.js +1 -0
  8. package/dist/{fnode/index.c8qd1bz3.js → fnet/index.pj3wr582.js} +1 -1
  9. package/dist/fnet/index.r3cben5x.js +1 -0
  10. package/dist/fnet/index.sbphkm7x.js +1 -0
  11. package/dist/{fnode/index.e6g5y0zg.js → fnet/index.wmeh7jrw.js} +1 -1
  12. package/dist/fnet/index.xym49mp3.js +1 -0
  13. package/dist/fnet/index.ydv6st7k.js +1 -0
  14. package/dist/fnode/index.05n3mvs9.js +2 -0
  15. package/dist/fnode/index.22v7wtt0.js +2 -0
  16. package/dist/fnode/{index.dtp0a202.js → index.3ay4fp2s.js} +1 -1
  17. package/dist/fnode/index.6g3j97vm.js +1 -0
  18. package/dist/fnode/{index.q61zqpb9.js → index.782edcjp.js} +1 -1
  19. package/dist/fnode/index.7cqahb2f.js +1 -0
  20. package/dist/fnode/index.fy1xwqp2.js +1 -0
  21. package/dist/fnode/index.js +2 -2
  22. package/dist/fnode/index.kswhzt5n.js +1 -0
  23. package/dist/fnode/{index.1k1sj9qs.js → index.q9ghzdn2.js} +3 -3
  24. package/dist/fnode/index.r4xke6yy.js +1 -0
  25. package/dist/fnode/index.w4cz5r8m.js +1 -0
  26. package/dist/fnode/index.wd23pxn8.js +1 -0
  27. package/dist/fnode/index.xvyybysy.js +1 -0
  28. package/dist/fnode/index.z9232w6h.js +1 -0
  29. package/dist/frun/index.js +1 -1
  30. package/dist/fservice/index.js +1 -1
  31. package/package.json +6 -10
  32. package/readme.md +240 -191
  33. package/scripts/postinstall.js +19 -4
  34. package/template/deploy/to-docker/aws/Dockerfile.njk +114 -0
  35. package/template/deploy/to-docker/aws/build.sh.njk +127 -0
  36. package/template/deploy/to-docker/docker/Dockerfile.njk +67 -0
  37. package/template/deploy/to-docker/docker/build.sh.njk +48 -0
  38. package/template/deploy/to-docker/gcloud/Dockerfile.njk +69 -0
  39. package/template/deploy/to-docker/gcloud/build.sh.njk +39 -0
  40. package/template/deploy/to-docker/podman/Dockerfile.njk +69 -0
  41. package/template/deploy/to-docker/podman/build.sh.njk +44 -0
  42. package/template/deploy/to-electron/mac/entitlements.plist.njk +18 -0
  43. package/template/deploy/to-electron/main.js.njk +37 -0
  44. package/template/deploy/to-electron/package.json.njk +36 -0
  45. package/template/deploy/to-electron/src/index.html.njk +23 -0
  46. package/template/deploy/to-ios-app/fnet/index.html.njk +23 -0
  47. package/template/deploy/to-ios-app/fnet-ios-app/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  48. package/template/deploy/to-ios-app/fnet-ios-app/Assets.xcassets/AppIcon.appiconset/Contents.json +112 -0
  49. package/template/deploy/to-ios-app/fnet-ios-app/Assets.xcassets/Contents.json +6 -0
  50. package/template/deploy/to-ios-app/fnet-ios-app/Assets.xcassets/launch-images.imageset/Contents.json +23 -0
  51. package/template/deploy/to-ios-app/fnet-ios-app/ContentView.swift +32 -0
  52. package/template/deploy/to-ios-app/fnet-ios-app/Info.plist +10 -0
  53. package/template/deploy/to-ios-app/fnet-ios-app/LaunchScreen.storyboard +26 -0
  54. package/template/deploy/to-ios-app/fnet-ios-app/Preview Content/Preview Assets.xcassets/Contents.json +6 -0
  55. package/template/deploy/to-ios-app/fnet-ios-app/WebView.swift +42 -0
  56. package/template/deploy/to-ios-app/fnet-ios-app/fnet_ios_appApp.swift +17 -0
  57. package/template/deploy/to-ios-app/fnet-ios-app.xcodeproj/project.pbxproj.njk +417 -0
  58. package/template/deploy/to-ios-app/fnet-ios-app.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  59. package/template/deploy/to-ios-app/fnet-ios-app.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  60. package/template/deploy/to-ios-app/fnet-ios-app.xcodeproj/xcshareddata/xcschemes/fnet-ios-app.xcscheme +77 -0
  61. package/template/deploy/to-macos-app/fnet/index.html.njk +23 -0
  62. package/template/deploy/to-macos-app/fnet-macos-app/Assets.xcassets/AccentColor.colorset/Contents.json +11 -0
  63. package/template/deploy/to-macos-app/fnet-macos-app/Assets.xcassets/AppIcon.appiconset/Contents.json +68 -0
  64. package/template/deploy/to-macos-app/fnet-macos-app/Assets.xcassets/Contents.json +6 -0
  65. package/template/deploy/to-macos-app/fnet-macos-app/ContentView.swift +13 -0
  66. package/template/deploy/to-macos-app/fnet-macos-app/Preview Content/Preview Assets.xcassets/Contents.json +6 -0
  67. package/template/deploy/to-macos-app/fnet-macos-app/WebView.swift +30 -0
  68. package/template/deploy/to-macos-app/fnet-macos-app/fnet_macos_app.entitlements +16 -0
  69. package/template/deploy/to-macos-app/fnet-macos-app/fnet_macos_appApp.swift +17 -0
  70. package/template/deploy/to-macos-app/fnet-macos-app.xcodeproj/project.pbxproj.njk +396 -0
  71. package/template/deploy/to-macos-app/fnet-macos-app.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  72. package/template/deploy/to-macos-app/fnet-macos-app.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  73. package/template/deploy/to-nextjs/app/layout.tsx.njk +13 -0
  74. package/template/deploy/to-nextjs/app/page.tsx.njk +28 -0
  75. package/template/deploy/to-nextjs/next-env.d.ts +5 -0
  76. package/template/deploy/to-nextjs/package.json.njk +20 -0
  77. package/template/deploy/to-nextjs/tsconfig.json +34 -0
  78. package/template/deploy/to-pyip/package/__init__.py.njk +4 -0
  79. package/template/deploy/to-pyip/package/cli/__init__.py.njk +3 -0
  80. package/template/deploy/to-pyip/package/cli/index.py.njk +24 -0
  81. package/template/deploy/to-pyip/package/lib/__init__.py.njk +3 -0
  82. package/template/deploy/to-pyip/pyproject.toml +3 -0
  83. package/template/deploy/to-pyip/setup.py.njk +32 -0
  84. package/template/deploy/to-rust/Cargo.toml.njk +16 -0
  85. package/template/deploy/to-rust/src/main.rs.njk +112 -0
  86. package/template/deploy/to-webos/appinfo.json.njk +14 -0
  87. package/template/deploy/to-webos/index.html.njk +39 -0
  88. package/template/deploy/to-webos/webOSTVjs-1.2.10/LICENSE-2.0.txt +202 -0
  89. package/template/deploy/to-webos/webOSTVjs-1.2.10/webOSTV-dev.js +1 -0
  90. package/template/deploy/to-webos/webOSTVjs-1.2.10/webOSTV.js +1 -0
  91. package/dist/fnet/index.06vbpwcx.js +0 -1
  92. package/dist/fnet/index.26r88tdp.js +0 -1
  93. package/dist/fnet/index.2g93a9kt.js +0 -1
  94. package/dist/fnet/index.61jdafta.js +0 -1
  95. package/dist/fnet/index.80hh5mtp.js +0 -1
  96. package/dist/fnet/index.a2mbqyxe.js +0 -1
  97. package/dist/fnet/index.gywx3fae.js +0 -1
  98. package/dist/fnet/index.gza1frda.js +0 -1
  99. package/dist/fnet/index.r2gf0b3s.js +0 -1
  100. package/dist/fnet/index.rfysmk2b.js +0 -2
  101. package/dist/fnode/index.5f1kfz9t.js +0 -1
  102. package/dist/fnode/index.7ev6y63q.js +0 -1
  103. package/dist/fnode/index.a4q2w1yd.js +0 -1
  104. package/dist/fnode/index.btj5x5s4.js +0 -1
  105. package/dist/fnode/index.n1598ffs.js +0 -1
  106. package/dist/fnode/index.ng6w9cac.js +0 -1
  107. package/dist/fnode/index.r8s8r2n7.js +0 -2
  108. package/dist/fnode/index.xc08sjp4.js +0 -1
  109. package/dist/fnode/index.zb59076q.js +0 -1
@@ -1,20 +1,20 @@
1
1
  #!/usr/bin/env node
2
- import{a as h7}from"./index.pbtmt70j.js";import{b as v0,c as M0}from"./index.rfysmk2b.js";import{d as S5,e as C9,f as h}from"./index.drbq51nw.js";var P9=C9((Sq,N9)=>{N9.exports=w9;function w9(Q,Z,X){if(Q instanceof RegExp)Q=j9(Q,X);if(Z instanceof RegExp)Z=j9(Z,X);var q=S9(Q,Z,X);return q&&{start:q[0],end:q[1],pre:X.slice(0,q[0]),body:X.slice(q[0]+Q.length,q[1]),post:X.slice(q[1]+Z.length)}}function j9(Q,Z){var X=Z.match(Q);return X?X[0]:null}w9.range=S9;function S9(Q,Z,X){var q,Y,J,W,H,V=X.indexOf(Q),K=X.indexOf(Z,V+1),z=V;if(V>=0&&K>0){if(Q===Z)return[V,K];q=[],J=X.length;while(z>=0&&!H){if(z==V)q.push(z),V=X.indexOf(Q,z+1);else if(q.length==1)H=[q.pop(),K];else{if(Y=q.pop(),Y<J)J=Y,W=K;K=X.indexOf(Z,z+1)}z=V<K&&V>=0?V:K}if(q.length)H=[J,W]}return H}});var u9=C9((Nq,x9)=>{var k9=P9();x9.exports=$5;var D9="\x00SLASH"+Math.random()+"\x00",b9="\x00OPEN"+Math.random()+"\x00",c6="\x00CLOSE"+Math.random()+"\x00",v9="\x00COMMA"+Math.random()+"\x00",y9="\x00PERIOD"+Math.random()+"\x00";function l6(Q){return parseInt(Q,10)==Q?parseInt(Q,10):Q.charCodeAt(0)}function G5(Q){return Q.split("\\\\").join(D9).split("\\{").join(b9).split("\\}").join(c6).split("\\,").join(v9).split("\\.").join(y9)}function U5(Q){return Q.split(D9).join("\\").split(b9).join("{").split(c6).join("}").split(v9).join(",").split(y9).join(".")}function E9(Q){if(!Q)return[""];var Z=[],X=k9("{","}",Q);if(!X)return Q.split(",");var{pre:q,body:Y,post:J}=X,W=q.split(",");W[W.length-1]+="{"+Y+"}";var H=E9(J);if(J.length)W[W.length-1]+=H.shift(),W.push.apply(W,H);return Z.push.apply(Z,W),Z}function $5(Q){if(!Q)return[];if(Q.substr(0,2)==="{}")Q="\\{\\}"+Q.substr(2);return s0(G5(Q),!0).map(U5)}function O5(Q){return"{"+Q+"}"}function M5(Q){return/^-?0\d/.test(Q)}function A5(Q,Z){return Q<=Z}function R5(Q,Z){return Q>=Z}function s0(Q,Z){var X=[],q=k9("{","}",Q);if(!q)return[Q];var Y=q.pre,J=q.post.length?s0(q.post,!1):[""];if(/\$$/.test(q.pre))for(var W=0;W<J.length;W++){var H=Y+"{"+q.body+"}"+J[W];X.push(H)}else{var V=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(q.body),K=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(q.body),z=V||K,G=q.body.indexOf(",")>=0;if(!z&&!G){if(q.post.match(/,.*\}/))return Q=q.pre+"{"+q.body+c6+q.post,s0(Q);return[Q]}var _;if(z)_=q.body.split(/\.\./);else if(_=E9(q.body),_.length===1){if(_=s0(_[0],!1).map(O5),_.length===1)return J.map(function(P7){return q.pre+_[0]+P7})}var A;if(z){var U=l6(_[0]),M=l6(_[1]),$=Math.max(_[0].length,_[1].length),R=_.length==3?Math.abs(l6(_[2])):1,O=A5,B=M<U;if(B)R*=-1,O=R5;var T=_.some(M5);A=[];for(var S=U;O(S,M);S+=R){var y;if(K){if(y=String.fromCharCode(S),y==="\\")y=""}else if(y=String(S),T){var v=$-y.length;if(v>0){var J0=Array(v+1).join("0");if(S<0)y="-"+J0+y.slice(1);else y=J0+y}}A.push(y)}}else{A=[];for(var H0=0;H0<_.length;H0++)A.push.apply(A,s0(_[H0],!1))}for(var H0=0;H0<A.length;H0++)for(var W=0;W<J.length;W++){var H=Y+A[H0]+J[W];if(!Z||z||H)X.push(H)}}return X}});import T1 from"yargs";import $Z from"chalk";import{ProcessManager as j1}from"@fnet/shell-flow";import r0 from"node:path";import{spawn as E7}from"node:child_process";import A8 from"node:fs";import n0 from"chalk";import CZ from"@fnet/config";function o(Q,{name:Z,bin:X,preArgs:q=[],createContext:Y,processManager:J}){if(typeof X==="function")X=X();return Q.command(`${Z||X} [commands..]`,`${X} ${q.join(" ")}`,(W)=>{return W.help(!1).version(!1)},async(W)=>{try{let H=await Y(W),{projectDir:V}=H,K=(U)=>{if(!U.includes(" "))return U;if(process.platform==="win32")return`"${U.replace(/(["^])/g,"^$1")}"`;else return`"${U.replace(/(["\\$`])/g,"\\$1")}"`},z=process.argv.slice(3).map(K),G={...process.env},_=r0.join(V,"node_modules");G.NODE_PATH=_,G.NODE_PRESERVE_SYMLINKS=1;let A=E7(X,[...q,...z],{cwd:V,stdio:"inherit",shell:!0,env:G});if(J)J.track(A);await new Promise((U)=>{A.on("close",(M)=>{U(M)})})}catch(H){console.error(H.message),process.exit(1)}})}function x7(Q,{name:Z,preArgs:X=[],createContext:q,processManager:Y}){return Q.command(`${Z} <config> <command> [options..]`,"Run a command with a config context",(J)=>{return J.positional("config",{type:"string"}).positional("command",{type:"string"}).help(!1).version(!1)},async(J)=>{try{let W=await q(J),{projectDir:H}=W,V=J.config,z=(await CZ({name:V,dir:H,transferEnv:!1,optional:!0,tags:W.tags}))?.data?.env||void 0,G=J.command,_=process.argv.slice(5),A=E7(G,[...X,..._],{cwd:A8.existsSync(H)?H:process.cwd(),stdio:"inherit",shell:!0,env:{...process.env,...z}});if(Y)Y.track(A);await new Promise((U)=>{A.on("close",(M)=>{U(M)})})}catch(W){console.error(W.message),process.exit(1)}})}function u7(Q,{name:Z,projectType:X="auto",processManager:q}){return Q.command(`${Z} group [options..]`,"Run a command group.",(Y)=>{return Y.positional("group",{type:"string"}).option("ftag",{type:"array"}).help(!1).version(!1)},async(Y)=>{try{let{runCommandGroup:J}=await import("./index.6nhq5ca9.js");await J({projectType:X,group:Y.group,tags:Y.ftag,args:Y,argv:process.argv,processManager:q})}catch(J){console.error(J.message),process.exit(1)}})}function f7(Q,{name:Z,createContext:X,processManager:q}){return Q.command(`${Z} [options]`,"Install the project as a binary",(Y)=>{return Y.option("name",{alias:"n",describe:"Name to use for the installed binary",type:"string"}).option("force",{alias:"f",describe:"Force overwrite if binary already exists",type:"boolean",default:!1}).option("yes",{alias:"y",describe:"Automatically answer yes to all prompts",type:"boolean",default:!1})},async(Y)=>{try{let J=await X(Y),{projectDir:W}=J;console.log(n0.blue("Compiling project..."));let H=r0.join(W,".bin");if(!A8.existsSync(H))A8.mkdirSync(H,{recursive:!0});let V=r0.basename(r0.dirname(W)),K=J.project?.projectFileParsed?.features?.cli?.bin,z=Y.name||K||V;console.log(n0.blue(`Using binary name: ${z}`));let G=r0.join(H,z),{spawn:_}=await import("child_process"),A=_("bun",["build","./dist/cli/esm/index.js","--compile",`--outfile=${G}`],{cwd:W,stdio:"inherit",shell:!0});if(q)q.track(A);if(await new Promise(($,R)=>{A.on("close",(O)=>{if(O===0)$();else R(Error(`Compilation failed with code ${O}`))}),A.on("error",(O)=>{R(O)})}),process.platform!=="win32")A8.chmodSync(G,493);console.log(n0.green(`Binary compiled successfully: ${G}`)),console.log(n0.blue("Installing binary..."));let U=["install",G];if(Y.name)U.push("--name",Y.name);if(Y.force)U.push("--force");if(Y.yes)U.push("--yes");let M=_("fbin",U,{stdio:"inherit",shell:!0});if(q)q.track(M);await new Promise(($,R)=>{M.on("close",(O)=>{if(O===0)$();else R(Error(`Installation failed with code ${O}`))}),M.on("error",(O)=>{R(O)})})}catch(J){console.error(n0.red(`Failed to install binary: ${J.message}`)),process.exit(1)}})}import t from"node:path";import O0 from"node:fs";import R8 from"@fnet/yaml";import wZ from"yaml";async function b(Q){let Z=h7(Q.ftag);try{let X=await SZ({tags:Z,flowsPath:Q.flows});return{buildId:Q.buildId,mode:Q.mode,protocol:Q.protocol||"src:",templateDir:v0("./template/fnet/node"),coreDir:v0("./template/fnet/core"),projectDir:t.resolve(X.projectDir,"./.workspace"),projectSrcDir:t.resolve(X.projectDir,"./src"),projectSrcDirSymlink:t.resolve(X.projectDir,"./.workspace/src-core"),projectAppDir:t.resolve(X.projectDir,"./app"),projectAppDirSymlink:t.resolve(X.projectDir,"./.workspace/app"),projectCliDir:t.resolve(X.projectDir,"./cli"),projectCliDirSymlink:t.resolve(X.projectDir,"./.workspace/cli"),project:X,tags:Z,dev:Q.dev,bpmn:Q.bpmn===!0}}catch(X){return console.warn(`Warning: Could not load project: ${X.message}`),{projectDir:process.cwd(),tags:Z}}}async function SZ({tags:Q,flowsPath:Z}){let X=NZ(process.cwd());if(!O0.existsSync(X))throw Error("fnet.yaml file not found in current directory.");let{raw:q,parsed:Y}=await R8({file:X,tags:Q}),J=t.dirname(X);Y.features=Y.features||{};let W=Y.features;W.runtime=W.runtime||{},W.runtime.type=W.runtime.type||"node";let H;if(Z){let _=t.resolve(J,Z);if(!O0.existsSync(_))throw Error(`Flows file not found: ${_}`);let{parsed:A}=await R8({file:_,tags:Q});H=A}else if(typeof Y.flows==="object")H=Y.flows;else{let _="flow.main.yaml";if(O0.existsSync(t.join(J,"fnet","flows.yaml")))_=t.join("fnet","flows.yaml");let A=Y.main||_,U=t.resolve(J,A);if(!O0.existsSync(U))H={main:{steps:[]}};else{let{parsed:M}=await R8({file:U,tags:Q});H=M}}let K={workflowAtom:{doc:{...Y,content:H}},projectDir:J,projectFilePath:X,projectFileContent:q,projectFileParsed:Y,runtime:W.runtime},z=t.resolve(J,"fnet/targets.yaml");if(O0.existsSync(z)){let{raw:_,parsed:A}=await R8({file:z,tags:Q}),U=wZ.parseDocument(_);K.devops={filePath:z,fileContent:_,yamlDocument:U,doc:{...A},type:"workflow.deploy",save:async()=>{O0.writeFileSync(K.devops.filePath,U.toString())}}}let G=t.resolve(J,"readme.md");if(O0.existsSync(G)){let _=O0.readFileSync(G,"utf8");K.readme={filePath:G,fileContent:_,doc:{content:_,"content-type":"markdown"},type:"wiki"}}return K}function NZ(Q){let Z=t.resolve(Q,"fnet.yaml");if(O0.existsSync(Z))return Z;let X=t.resolve(Q,"fnet.yml");if(O0.existsSync(X))return X;return Z}import PZ from"node:path";import g7 from"node:fs";import kZ from"node:os";import DZ from"@flownet/lib-render-templates-dir";import e8 from"@fnet/shelljs";var bZ={command:"create",describe:"Initialize a new fnet project",builder:(Q)=>{return Q.option("name",{type:"string",describe:"Project name"}).option("vscode",{type:"boolean",default:!0,alias:"vs",describe:"Open in VS Code after creation"}).option("runtime",{type:"string",default:"node",choices:["node"],describe:"Runtime environment"})},handler:async(Q)=>{try{let Z=process.cwd(),X=v0("./template/fnet/project"),q=PZ.resolve(Z,Q.name);if(!g7.existsSync(q))g7.mkdirSync(q);await DZ({dir:X,outDir:q,context:Q,copyUnmatchedAlso:!0,platform:kZ.platform()});let Y=await e8("fnet build",{cwd:q});if(Y.code!==0)throw Error("Failed to build project.");if(M0("git")){if(Y=await e8("git init --initial-branch=main",{cwd:q}),Y.code!==0)throw Error("Failed to initialize git.")}if(M0("code")&&Q.vscode){if(Y=await e8(`cd ${q} && code .`),Y.code!==0)throw Error("Failed to open vscode.")}console.log("Creating project succeeded!"),process.exit(0)}catch(Z){console.error("Initialization failed!",Z.message),process.exit(1)}}},m7=bZ;import vZ from"node:os";import yZ from"@flownet/lib-render-templates-dir";import EZ from"@fnet/shelljs";var xZ={command:"project",describe:"Manage fnet project",builder:(Q)=>{return Q.option("update",{type:"boolean",default:!1,alias:"-u",describe:"Update project files"})},handler:async(Q)=>{try{let Z=v0("./template/fnet/project"),X=process.cwd(),q=await b(Q);if(Q.update){if(await yZ({dir:Z,outDir:X,context:{name:q.project.projectFileParsed.name,runtime:"node"},copyUnmatchedAlso:!0,platform:vZ.platform()}),(await EZ("fnet build",{cwd:X})).code!==0)throw Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(Z){console.error("Project failed.",Z.message),process.exit(1)}}},l7=xZ;import C from"node:fs";import D from"node:path";import sQ from"yaml";import oQ from"@fnet/shelljs";import O8 from"nunjucks";import tQ from"lodash.clonedeep";import r2 from"isobject";import{randomUUID as eQ}from"node:crypto";import Q6 from"winston";var{combine:c7,timestamp:d7,printf:uZ,colorize:fZ}=Q6.format,i7=uZ(({level:Q,message:Z,timestamp:X,category:q,depth:Y,...J})=>{let W=" ".repeat(Y||0),H=q?`[${q}]`:"",V=`${X} ${Q} ${H} ${W}${Z}`;if(Object.keys(J).length>0)V+=`
3
- ${W} ${JSON.stringify(J,null,2)}`;return V}),B8=Q6.createLogger({level:process.env.FNET_LOG_LEVEL||"info",format:c7(d7({format:"HH:mm:ss.SSS"}),i7),transports:[new Q6.transports.Console({format:c7(fZ(),d7({format:"HH:mm:ss.SSS"}),i7)})]}),a7=(Q)=>{return{debug:(Z,X={})=>B8.debug(Z,{category:Q,...X}),info:(Z,X={})=>B8.info(Z,{category:Q,...X}),warn:(Z,X={})=>B8.warn(Z,{category:Q,...X}),error:(Z,X={})=>B8.error(Z,{category:Q,...X})}},f=a7("tree"),x=a7("bpmn"),p7=process.env.FNET_LOG_CATEGORIES?.split(",")||[],j=(Q)=>{if(p7.length===0)return!1;return p7.includes(Q)};import{Api as I8}from"@flownet/lib-atom-api-js";class n7{init({config:Q,accessToken:Z}){return new Promise((X,q)=>{if(I8.set_api_url(Q.data.url),Z){I8.set_req_token(Z),X(Z);return}fetch(`${Q.data.issuer}/protocol/openid-connect/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(Q.data.grant.params)}).then(async(Y)=>{if(!Y.ok)throw Error(await Y.text());return Y.json()}).then((Y)=>{I8.set_req_token(Y.access_token),X(Y.access_token)}).catch((Y)=>{I8.set_req_token(),q(Y)})})}}import f0 from"lodash.merge";import L8 from"node:fs";import z0 from"node:path";import h0 from"@flownet/lib-parse-imports-js";import hZ from"lodash.merge";function E({feature:Q,features:Z,packageDevDependencies:X}){let{name:q,packages:Y,options:J,extraCheck:W,explicit:H}=Q,V=`${q}_enabled`,K=Z.rollup_output||{},z=Object.keys(K),G=J||{},_=Z[q]?.options;if(_)G=hZ(G,_);let A=!Z[q]||Z[q]?.enabled===!1;z.forEach((M)=>{let $=Z.rollup_output[M];if(!$)return;if(Reflect.has($,q)){if(A||!$[q]||$[q]?.enabled===!1){delete $[q];return}if($[q]===!0)$[q]={enabled:!0,options:G}}else if(!A&&!H&&Z[V]!==!1)$[q]={enabled:!0};else return;$[q]=$[q]||{},$[q].options={...G,...$[q].options}});let U=z.some((M)=>Z.rollup_output[M][q]?.enabled===!0);if(W)U=W()&&U;if(Z[V]=U,U)Y.forEach((M)=>X.push({package:M[0],version:M[1]}))}function Z6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({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:q,packageDevDependencies:X})}function X6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:q,packageDevDependencies:X})}function q6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:q,packageDevDependencies:X})}function Y6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:q,packageDevDependencies:X})}function J6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:q,packageDevDependencies:X})}function H6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:q,packageDevDependencies:X})}function W6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:q,packageDevDependencies:X})}function V6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:q,packageDevDependencies:X})}function K6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;if(q.runtime.type==="bun")return;E({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:q,packageDevDependencies:X})}function _6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:q,packageDevDependencies:X})}function z6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:q,packageDevDependencies:X})}function G6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;if(q.runtime.type==="bun")return;let Y={};if(q.app?.enabled===!0){if(Y.targets=Y.targets||[],Y.targets.push({src:"./src/app/index.html",dest:q.app.dir}),!Reflect.has(q.app,"copy")){if(!Reflect.has(q,"copy"))q.copy=!0}}E({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:Y},features:q,packageDevDependencies:X})}function U6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features,Y=q.css&&q.css.enabled!==!1,J=[];if(Y)J.push(["rollup-plugin-postcss","^4"]),J.push(["sass","^1.66"]),(q.css?.options?.plugins||[]).forEach((H)=>{switch(H.name){case"postcss-import":J.push(["postcss-import","^15"]);break;case"postcss-url":J.push(["postcss-url","^10"]);break;case"postcss-preset-env":J.push(["postcss-preset-env","^9"]);break;case"autoprefixer":J.push(["autoprefixer","^10"]);break;case"cssnano":J.push(["cssnano","^6"]);break}});E({feature:{name:"css",packages:J},features:q,packageDevDependencies:X})}function $6({dir:Q,name:Z="index"}){let X=z0.resolve(Q,`./${Z}.tsx`);if(!L8.existsSync(X))X=z0.resolve(Q,`./${Z}.ts`);if(!L8.existsSync(X))X=z0.resolve(Q,`./${Z}.jsx`);if(!L8.existsSync(X))X=z0.resolve(Q,`./${Z}.js`);if(!L8.existsSync(X))return{};let q=X,Y=z0.extname(X);return{file:q,ext:Y,ts:Y===".ts"||Y===".tsx",name:Z}}async function O6(Q){let{atom:Z,context:X,setProgress:q}=Q;q("Initializing features..."),Z.doc.features=Z.doc.features||{};let Y=Z.doc.features;Y.project=Y.project||{},Y.project.format=Y.project.format||Y.project_format||"esm",Y.project_format=Y.project.format,Y.dts_enabled=Y.dts===!0||typeof Y.dts<"u"&&Y.dts!==!1;let J=z0.resolve(X.project.projectDir),W=$6({dir:z0.resolve(J,"./app")});if(W.file){q("Parsing app entry imports...");let M=await h0({file:W.file,recursive:!0}),$=M.all.some((R)=>R.usesJSX===!0&&R.type==="local");Y.app_uses_jsx=$,Y.app_has_entry=!0,M=await h0({file:W.file}),$=M.all.some((R)=>R.usesJSX===!0&&R.type==="local"),Y.app_entry_uses_jsx=$,Y.app_entry_is_ts=W.ts,Y.app_entry_ext=W.ext}let H=$6({dir:z0.resolve(J,"./cli")});if(H.file){q("Parsing cli entry imports...");let M=await h0({file:H.file,recursive:!0}),$=M.all.some((R)=>R.usesJSX===!0&&R.type==="local");Y.cli_uses_jsx=$,Y.cli_has_entry=!0,M=await h0({file:H.file}),$=M.all.some((R)=>R.usesJSX===!0&&R.type==="local"),Y.cli_entry_uses_jsx=$,Y.cli_entry_is_ts=H.ts,Y.cli_entry_ext=H.ext}if(Z.type==="workflow.lib"){let M=$6({dir:z0.resolve(J,"./src")});if(M.file){q("Parsing src entry imports...");let $=await h0({file:M.file,recursive:!0}),R=$.all.some((O)=>O.usesJSX===!0&&O.type==="local");Y.src_uses_jsx=R,Y.src_has_entry=!0,$=await h0({file:M.file}),R=$.all.some((O)=>O.usesJSX===!0&&O.type==="local"),Y.src_entry_uses_jsx=R,Y.src_entry_is_ts=M.ts,Y.src_entry_ext=M.ext}}let V=Reflect.has(Y,"app_entry_uses_jsx")?Y.app_entry_uses_jsx===!0:Y.src_entry_uses_jsx===!0,K=Reflect.has(Y,"cli_entry_uses_jsx")?Y.cli_entry_uses_jsx===!0:Y.src_entry_uses_jsx===!0;if(Y.form_enabled=V||K||Y.form===!0||Y.form?.enabled===!0,Y.multiple_enabled=Y.multiple_enabled||Y.multiple===!0||Y.multiple?.enabled===!0,Y.app===!1)Y.app={enabled:!1};else if(Y.app===!0)Y.app={enabled:!0,extend:Y.app_has_entry===!0,export:!0,react:V};else Y.app={enabled:!0,extend:Y.app_has_entry===!0,export:!0,react:V,...Y.app||{}};if(Y.app.enabled=Y.app.enabled===!0&&(Z.doc.features.form_enabled===!0||Y.app.extend===!0||Y.app.enabled===!0),Y.app.format=Y.app.format||"esm",Y.app.folder=Y.app.folder||Y.app.format||"default",Y.cli===!1)Y.cli={enabled:!1};else if(Y.cli===!0)Y.cli={enabled:!0,extend:Y.cli_has_entry===!0,export:!0,react:K};else Y.cli={enabled:!0,extend:Y.cli_has_entry===!0,export:!0,react:K,...Y.cli||{}};if(Y.cli.enabled=Y.cli.enabled===!0&&(Z.doc.features.form_enabled===!1||Y.cli.extend===!0||Y.cli.enabled===!0),Y.cli.format=Y.cli.format||"esm",Y.cli.folder=Y.cli.folder||Y.cli.folder||"esm",Y.cli.node_options=Y.cli.node?.options||Y.cli.node_options||"",Y.cli.bin=Y.cli.bin||Z.doc.name,Y.cli.installable=Y.cli.installable===!0,Y.cli.enabled)Z.doc["npm::bin"]=Y.cli.bin;Y.json=Y.cli.enabled||Y.json;let z={cjs:{format:"cjs",context:Y.form_enabled?"window":"global",babel:Y.src_uses_jsx===!0||!1,browser:!1,replace:!0,terser:!0,enabled:Y.cjs!==!1,copy:!1},esm:{format:"esm",context:Y.form_enabled?"window":"global",babel:Y.src_uses_jsx===!0||!1,browser:!1,replace:!0,terser:!1,enabled:Y.esm!==!1,copy:!0},iife:{format:"iife",context:Y.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:Y.iife===!0,terser:!0,copy:!1}},G={targets:{browsers:"last 9 versions, not dead",node:"18"}},_={};if(Y.webos===!0)z.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"}}};if(Y.electron===!0)z.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"};if(Y.nextjs===!0)z.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"};if(Y.ios===!0)z.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"};if(Y.macos===!0)z.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"};if(Y.app.enabled===!0)Y.app.dir=`./dist/app/${Y.app.folder}`,Y.app.output={file:`./dist/app/${Y.app.folder}/index.js`,dir:`./dist/app/${Y.app.folder}/`,...Y.app.output||{}},Y.app.input={file:"./src/app/index.js",dir:"./src/app/",...Y.app.input||{}},z.app={format:Y.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:Y.app.input.file,output_dir:Y.app.dir,terser:!0,output_exports:Y.app.export===!1?"none":"auto",browsersync:!0};if(Y.cli.enabled===!0)Y.cli.dir=`./dist/cli/${Y.cli.folder}`,Y.cli.output={file:`./dist/cli/${Y.cli.folder}/index.js`,dir:`./dist/cli/${Y.cli.folder}/`,...Y.cli.output||{}},Y.cli.input={file:"./src/cli/index.js",dir:"./src/cli/",...Y.cli.input||{}},z.cli={format:Y.cli.format,context:"global",babel:Y.src_uses_jsx===!0||Y.cli_uses_jsx===!0||!1,browser:!1,replace:!0,enabled:!0,input:Y.cli.input.file,output_dir:Y.cli.dir,banner:"#!/usr/bin/env bun",terser:!0,output_exports:Y.cli.export===!1?"none":"auto"};let A={server:".",startPath:`${z0.normalize(Y.app.dir||".")}`,files:[z0.normalize("./dist/**/*")],cors:!0,open:!1};if(Y.babel_options=f0(G,Y.babel_options||Y.babel?.options),Y.browsersync_options=f0(A,Y.browsersync_options||Y.browsersync?.options||{}),Y.replace_options=f0(_,Y.replace_options||Y.replace?.options||{}),Reflect.has(Y.browsersync_options,"proxy"))delete Y.browsersync_options.server;Y.rollup=Y.rollup||{},Y.rollup_output=f0(z,Y.rollup_output||Y.rollup?.output||{}),Y.preact_enabled=Y.preact===!0||Y.preact&&Y.preact?.enabled!==!1;let U=Object.keys(z);for(let M of U){let $=z[M];if(!$)continue;if(Y.rollup[M]===!1){delete Y.rollup_output[M];continue}if($.babel_options=$.babel_options||Y.babel_options,$.browsersync_options=f0(Y.browsersync_options,$.browsersync_options),$.replace_options=f0(Y.replace_options,$.replace_options),Y.preact_enabled)$.alias_enabled=!0,$.alias=$.alias||{},$.alias.entries=$.alias.entries||{},$.alias.entries.react="preact/compat",$.alias.entries["react-dom"]="preact/compat";if(Y.form_enabled||Y.babel)$.babel=!0}U=Object.keys(Y.rollup_output),Y.babel_enabled=U.some((M)=>Y.rollup_output[M].babel===!0),Y.browser_enabled=U.some((M)=>Y.rollup_output[M].babel===!0),Y.browsersync_enabled=Y.browsersync!==!1&&U.some((M)=>Y.rollup_output[M].browsersync===!0),Y.browsersync_enabled=Y.browsersync_enabled&&Y.app.enabled,Y.dependency_auto_enabled=Y.dependency_auto!==!1&&Y.dependency_auto?.enabled!==!1,Y.npm_install_flags=Y.npm_install_flags||"",Y.react_version=Y.react_version||Y.react?.version||18,Y.bpmn=Y.bpmn||{},Y.bpmn.enabled=Y.bpmn.enabled!==!1,Y.bpmn.per_flow=Y.bpmn.per_flow===!0,U6(Q),G6(Q),z6(Q),_6(Q),K6(Q),W6(Q),V6(Q),H6(Q),J6(Q),Y6(Q),q6(Q),Z6(Q),X6(Q)}import gZ from"@fnet/npm-list-versions";async function M6({atom:Q,packageDependencies:Z,packageDevDependencies:X,setProgress:q}){q("Initializing dependencies");let Y=Q.doc.dependencies||[];if(Y.filter((J)=>!J.dev).forEach((J)=>Z.push(J)),Y.filter((J)=>J.dev).forEach((J)=>X.push(J)),Q.type==="workflow")Z.push({package:"dot-prop",version:"^10"});if(Q.doc.features.form_enabled){if(Q.doc.features.dependency_auto_enabled){let J="^18.2";if(q("Fetching React versions"),J=`^${(await gZ({name:"react",groupBy:{major:!0}})).find((V)=>V[0]===Q.doc.features.react_version.toString())[0]}`,Z.push({package:"react",version:J}),Z.push({package:"react-dom",version:J}),Q.type==="workflow")Z.push({package:"@fnet/react-app",version:"^0.1"}),Z.push({package:"@fnet/react-app-state",version:"^0.1"})}}if(Q.doc.features.preact_enabled)Z.push({package:"preact",version:"^10"});if(Q.doc.features.cli.enabled===!0){if(Z.push({package:"@fnet/args",version:"^0.1"}),Q.doc.features.cli.fargs&&Q.doc.features.cli.fargs?.enabled!==!1)Z.push({package:"@fnet/config",version:"0.2.21"});if(Q.doc.features.cli.mcp&&Q.doc.features.cli.mcp.enabled===!0)Z.push({package:"@modelcontextprotocol/sdk",version:"^1.10"}),Z.push({package:"express",version:"^4.18"})}if(Q.doc.features.render&&Q.doc.features.render.enabled!==!1)X.push({package:"@flownet/lib-render-templates-dir",version:"0.1.19"});if(X.push({package:"@babel/core",version:"^7"}),X.push({package:"@rollup/plugin-commonjs",version:"^28"}),X.push({package:"@rollup/plugin-node-resolve",version:"^16"}),X.push({package:"@rollup/plugin-replace",version:"^6"}),X.push({package:"rollup",version:"^4"}),Q.doc.features.dts_enabled)X.push({package:"rollup-plugin-dts",version:"^6"});if(X.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),X.push({package:"@rollup/plugin-alias",version:"^5"}),X.push({package:"fs-extra",version:"^11"}),Q.doc.features.babel_enabled)X.push({package:"@rollup/plugin-babel",version:"^6"}),X.push({package:"@babel/preset-env",version:"^7"}),X.push({package:"@babel/preset-react",version:"^7"}),Q.doc.features.babel?.options?.plugins?.forEach((J)=>{switch(J[0]){case"@babel/plugin-proposal-decorators":X.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":X.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":X.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":X.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":X.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"});break}});if(X.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),Q.doc.features.browsersync_enabled)X.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})}import mZ from"@fnet/npm-list-versions";async function A6({atom:Q,packageDependencies:Z,packageDevDependencies:X,setProgress:q}){q("Initializing dependencies for Bun");let Y=Q.doc.dependencies||[];if(Y.filter((J)=>!J.dev).forEach((J)=>Z.push(J)),Y.filter((J)=>J.dev).forEach((J)=>X.push(J)),Q.type==="workflow")Z.push({package:"dot-prop",version:"^10"});if(Q.doc.features.form_enabled){if(Q.doc.features.dependency_auto_enabled){let J="^18.2";if(q("Fetching React versions"),J=`^${(await mZ({name:"react",groupBy:{major:!0}})).find((V)=>V[0]===Q.doc.features.react_version.toString())[0]}`,Z.push({package:"react",version:J}),Z.push({package:"react-dom",version:J}),Q.type==="workflow")Z.push({package:"@fnet/react-app",version:"^0.1"}),Z.push({package:"@fnet/react-app-state",version:"^0.1"})}}if(Q.doc.features.preact_enabled)Z.push({package:"preact",version:"^10"});if(Q.doc.features.cli.enabled===!0){if(Z.push({package:"@fnet/args",version:"^0.1"}),Q.doc.features.cli.fargs&&Q.doc.features.cli.fargs?.enabled!==!1)Z.push({package:"@fnet/config",version:"0.2.21"});if(Q.doc.features.cli.mcp&&Q.doc.features.cli.mcp.enabled===!0)Z.push({package:"@modelcontextprotocol/sdk",version:"^1.10"}),Z.push({package:"express",version:"^4.18"})}if(Q.doc.features.render&&Q.doc.features.render.enabled!==!1)X.push({package:"@flownet/lib-render-templates-dir",version:"0.1.19"})}import r7 from"node:fs";import s7 from"node:path";import lZ from"@flownet/lib-render-templates-dir";async function R6({atom:Q,setProgress:Z,context:X,packageDependencies:q}){if(Q.doc.features.app.enabled!==!0)return;await Z({message:"Creating app folder"});let Y={atom:Q,packageDependencies:q,ts:Date.now()},J=X.templateDir,W=s7.resolve(X.projectDir,"src/app");if(!r7.existsSync(W))r7.mkdirSync(W,{recursive:!0});let H=["index.js.njk"];if(Q.doc.features.app.html!==!1)H.push("index.html.njk");await lZ({pattern:H,dir:s7.resolve(J,"src/app"),outDir:W,context:Y})}import t7 from"nunjucks";import L0 from"node:fs";import S0 from"node:path";import iZ from"@flownet/lib-parse-imports-js";import cZ from"@fnet/npm-pick-versions";import dZ from"object-hash";import F8 from"node:fs";import o7 from"node:path";async function w0({projectDir:Q,name:Z,setProgress:X,count:q=1}){let Y,W=dZ(["npm-pick-versions",Z,q]),H=o7.join(Q,".cache"),V=o7.join(H,W+".json");if(F8.existsSync(V)){if(X)X(`Picking npm version of ${Z} from cache ...`);Y=JSON.parse(F8.readFileSync(V,"utf8"))}else{if(X)X(`Picking npm version of ${Z} ...`);Y=await cZ({name:Z,count:q}),F8.mkdirSync(H,{recursive:!0}),F8.writeFileSync(V,JSON.stringify(Y),"utf8")}return Y}async function B6({atom:Q,context:Z,packageDependencies:X,packageDevDependencies:q,setProgress:Y}){await Y({message:"Creating package.json."}),X.filter(($)=>$.dev===!0).forEach(($)=>{if(!q.find((O)=>O.package===$.package))q.push($);let R=X.findIndex((O)=>O.package===$.package);X.splice(R,1)});let W=X.find(($)=>$.package==="react"),H=X.find(($)=>$.package==="react-dom");if(W&&!H)X.push({package:"react-dom",version:W.version});else if(W&&H)H.version=W.version;if(W&&Q.doc.features.react_version>=17){if(!X.find(($)=>$.package==="@emotion/react"))X.push({package:"@emotion/react",version:"^11"});if(!X.find(($)=>$.package==="@emotion/styled"))X.push({package:"@emotion/styled",version:"^11"})}let V=[];if(Q.doc.features.app.enabled===!0)V.push({file:S0.resolve(Z.projectDir,"src/app/index.js"),dev:Q.doc.features.app.dev===!0});if(Q.doc.features.cli.enabled===!0)V.push({file:S0.resolve(Z.projectDir,"src/cli/index.js"),dev:Q.doc.features.cli.dev===!0});for await(let $ of V){let R=$.file;if(!L0.existsSync(R))throw Error(`App file not found: ${R}`);let B=(await iZ({file:R,recursive:!0,verbose:!1})).all;for await(let T of B){if(T.type!=="npm")continue;if(X.find((v)=>v.package===T.package))continue;if(q.find((v)=>v.package===T.package))continue;let S=await w0({name:T.package,projectDir:Z.projectDir,setProgress:Y});($.dev===!0?q:X).push({package:T.package,subpath:T.subpath,version:S.minorRange,type:"npm"})}}for await(let $ of X){if($.version!==void 0)continue;let R=await w0({name:$.package,projectDir:Z.projectDir,setProgress:Y});$.version=R.minorRange}for await(let $ of q){if($.version!==void 0)continue;let R=await w0({name:$.package,projectDir:Z.projectDir,setProgress:Y});$.version=R.minorRange}let K={atom:Q,packageDependencies:X,packageDevDependencies:q},z=Z.templateDir,_=t7.compile(L0.readFileSync(S0.resolve(z,"package.json.njk"),"utf8"),t7.configure(z)).render(K),A=Z.projectDir,U=S0.resolve(A,"package.json");L0.writeFileSync(U,_,"utf8");let M=S0.resolve(Z.project.projectDir,"fnet");if(L0.existsSync(M)){let $=S0.resolve(Z.projectDir,"fnet");if(!L0.existsSync($))L0.mkdirSync($);let R=L0.readdirSync(M);for(let O of R){let B=S0.resolve(M,O);if(!L0.lstatSync(B).isFile())continue;let T=S0.resolve($,O);L0.copyFileSync(B,T)}}}import e7 from"node:fs";import Q9 from"node:path";import pZ from"@flownet/lib-render-templates-dir";async function I6({atom:Q,setProgress:Z,context:X,packageDependencies:q}){if(Q.doc.features.cli.enabled!==!0)return;await Z({message:"Creating cli."});let Y={atom:Q,packageDependencies:q},J=X.templateDir,W=Q9.resolve(X.projectDir,"src/cli");if(!e7.existsSync(W))e7.mkdirSync(W,{recursive:!0});await pZ({pattern:["index.js.njk"],dir:Q9.resolve(J,"src/cli"),outDir:W,context:Y})}import L6 from"node:fs";import F6 from"node:path";import Z9 from"nunjucks";import aZ from"@flownet/lib-parse-imports-js";async function T6({atom:Q,setProgress:Z,context:X,packageDependencies:q}){await Z({message:"Creating rollup file."});let Y={atom:Q,packageDependencies:q},J=F6.resolve(X.projectDir,"src","default/index.js");if(!L6.existsSync(J))throw Error(`Entry file not found: ${J}`);let H=(await aZ({file:J,recursive:!0})).all.filter((M)=>M.type==="node").map((M)=>M.path),V=Q.doc.features.rollup_output,K=Object.keys(V);for(let M=0;M<K.length;M++){let $=K[M],R=V[$];if(R.browser===!0){if(H.length>0){R.globals_enabled=!0,R.globals=R.globals||[],R.globals=R.globals.concat(H.map((O)=>{return{key:O,value:O}})),R.alias_enabled=!0,R.alias=R.alias||{},R.alias.entries=R.alias.entries||{};for(let O=0;O<H.length;O++){let B=H[O];R.alias.entries[B]=`node:${B}`,R.alias.entries[`node:${B}`]=B}R.external_enabled=!0,R.external=R.external||[],R.external=R.external.concat(H)}}}let z=X.templateDir,_=Z9.compile(L6.readFileSync(F6.resolve(z,"rollup.config.mjs.njk"),"utf8"),Z9.configure(z)).render(Y),A=X.projectDir,U=F6.resolve(A,"rollup.config.mjs");L6.writeFileSync(U,_,"utf8")}import j6 from"node:fs";import X9 from"node:path";import q9 from"nunjucks";async function C6({atom:Q,setProgress:Z,context:X,packageDependencies:q}){await Z({message:"Creating build.js file."});let Y={atom:Q,packageDependencies:q},J=X.templateDir,H=q9.compile(j6.readFileSync(X9.resolve(J,"build.js.njk"),"utf8"),q9.configure(J)).render(Y),V=X.projectDir,K=X9.resolve(V,"build.js");j6.writeFileSync(K,H,"utf8"),j6.chmodSync(K,"755")}import w6 from"node:fs";import S6 from"node:path";import nZ from"nunjucks";import rZ from"ajv/dist/2020.js";import sZ from"ajv/dist/standalone/index.js";import oZ from"ajv-formats";async function N6({atom:Q,setProgress:Z,context:X,njEnv:q}){if(Q.doc.features.cli.enabled!==!0)return;await Z({message:"Creating input args."});let Y={},J=[];if(Q.doc.input)Y=Q.doc.input;else Y={type:"object",properties:{},required:[]};if(Q.doc.features.cli.fargs&&Q.doc.features.cli.fargs?.enabled!==!1){let R=Q.doc.features.cli.fargs,O={type:"string",description:"Config name to load args",hidden:!1},B={type:"array",description:"Tags to filter the config",hidden:!1};if(Reflect.has(R,"default"))O.default=R.default}let H={imports:J,atom:Q},V=X.templateDir,z=nZ.compile(w6.readFileSync(S6.resolve(V,"src/default/input.args.js.njk"),"utf8"),q).render(H),G=X.projectDir,_=S6.resolve(G,"src/default/input.args.js");w6.writeFileSync(_,z,"utf8");let A=new rZ({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});oZ(A);let U=A.compile(Y),$=sZ(A,U)+`
4
- export { schema31 as schema };`;w6.writeFileSync(S6.resolve(G,"src/default/validate_input.js"),$,"utf8")}import Y9 from"node:fs";import J9 from"node:path";import H9 from"nunjucks";async function P6({atom:Q,setProgress:Z,context:X,packageDependencies:q}){await Z({message:"Creating .gitignore"});let Y={atom:Q,packageDependencies:q},J=X.templateDir,H=H9.compile(Y9.readFileSync(J9.resolve(J,".gitignore.njk"),"utf8"),H9.configure(J)).render(Y),V=X.projectDir,K=J9.resolve(V,".gitignore");Y9.writeFileSync(K,H,"utf8")}import W9 from"node:fs";import V9 from"node:path";import K9 from"nunjucks";async function k6({atom:Q,setProgress:Z,context:X,packageDependencies:q}){await Z({message:"Creating tsconfig.json."});let Y={atom:Q,packageDependencies:q},J=X.templateDir,H=K9.compile(W9.readFileSync(V9.resolve(J,"tsconfig.json.njk"),"utf8"),K9.configure(J)).render(Y),V=X.projectDir,K=V9.resolve(V,"tsconfig.json");W9.writeFileSync(K,H,"utf8")}import T8 from"nunjucks";import N0 from"node:fs";import y0 from"node:path";import _9 from"@fnet/yaml";async function D6({atom:Q,context:Z,setProgress:X,Atom:q}){if(await X({message:"Creating readme.md"}),Z.project?.readme){let W=Z.projectDir,H={content:Z.project.readme.doc.content},V=y0.resolve(Z.project.projectDir,"fnet/how-to.md");if(N0.existsSync(V)){let M=N0.readFileSync(V,"utf8");H.howto=M}let K=y0.resolve(Z.project.projectDir,"fnet/input.yaml");if(N0.existsSync(K)){let M=await _9({file:K,tags:Z.tags});H.input=M.content}let z=y0.resolve(Z.project.projectDir,"fnet/output.yaml");if(N0.existsSync(z)){let M=await _9({file:z,tags:Z.tags});H.output=M.content}let G=Z.templateDir,A=T8.compile(N0.readFileSync(y0.resolve(G,"readme.md.njk"),"utf8"),T8.configure(G)).render(H),U=y0.resolve(W,"readme.md");N0.writeFileSync(U,A,"utf8")}else if(Q.id){let W=await q.first({type:"wiki",parent_id:Q.id});if(!W||W.doc?.["content-type"]!=="markdown")return;let{content:H,...V}=W.doc,K={content:H},z=Z.templateDir,_=T8.compile(N0.readFileSync(y0.resolve(z,"readme.md.njk"),"utf8"),T8.configure(z)).render(K),A=Z.projectDir,U=y0.resolve(A,"readme.md");N0.writeFileSync(U,_,"utf8")}}import tZ from"node:path";import z9 from"@fnet/shelljs";async function b6({setProgress:Q,context:Z}){let X=Z.projectDir;await Q({message:"Prettifiying source files."});let q=tZ.join("src","**","*");if(M0("bun")){let Y=await z9(`prettier --write ${q} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:X});if(Y.code!==0)throw Error(Y.stderr)}else{let Y=await z9(`prettier --write ${q} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:X});if(Y.code!==0)throw Error(Y.stderr)}}import eZ from"@fnet/shelljs";async function v6({atom:Q,setProgress:Z,context:X}){if(!Q.doc.features.dts_enabled)return;let q=X.projectDir;if(await Z({message:"Creating .d.ts"}),(await eZ("tsc",{cwd:q})).code!==0)throw Error("Couldnt create .d.ts files.")}import G9 from"@fnet/shelljs";async function y6({setProgress:Q,atom:Z,context:X}){let q=X.projectDir;if(await Q({message:"Installing npm packages."}),M0("bun")){if((await G9(`bun install ${Z.doc.features.npm_install_flags}`,{cwd:q})).code!==0)throw Error("Couldnt install npm packages.")}else if((await G9(`npm install ${Z.doc.features.npm_install_flags}`,{cwd:q})).code!==0)throw Error("Couldnt install npm packages.")}import U9 from"node:fs";import Q5 from"node:path";import{spawn as Z5}from"node:child_process";async function $9(Q){let{projectDir:Z,scriptName:X,args:q=[],env:Y=process.env,shell:J=!0,detached:W=!0,onSpawn:H}=Q;if(!Z||!X)throw Error("projectDir and scriptName are required");let V=Q5.resolve(Z,"package.json");if(!U9.existsSync(V))throw Error(`package.json not found at ${V}`);let K=JSON.parse(U9.readFileSync(V,"utf8")),z=K.scripts?.[X];if(!z){let A=Object.keys(K.scripts||{}).join(", ");throw Error(`Script '${X}' not found. Available: ${A}`)}let G=q.length>0?`${z} ${q.join(" ")}`:z,_=Z5(G,[],{cwd:Z,stdio:"inherit",shell:J,detached:W,env:{...Y}});if(H)H(_);return new Promise((A,U)=>{_.on("error",(M)=>{U(Error(`Failed to start '${X}': ${M.message}`))}),_.on("close",(M)=>{A({subprocess:_,exitCode:M})})})}import X5 from"node:path";async function E6({setProgress:Q,context:Z}){let X=Z.projectDir;await Q({message:"Building main project."});let q=Z.dev?"build:dev":"build",Y={...process.env},J=X5.join(X,"node_modules");Y.NODE_PATH=J,Y.NODE_PRESERVE_SYMLINKS=1,await $9({projectDir:X,scriptName:q,shell:!0,detached:!0,env:Y})}var O9=async(Q)=>{let{atom:Z,packageDependencies:X,context:q,deploymentProjectTarget:Y,setProgress:J,deploymentProject:W,yamlTarget:H}=Q;if(Y.enabled!==!0)return;let V=Y.type;try{if(V==="lib")await(await import("./index.vpc49edd.js")).default({...Q});else if(V==="red")await(await import("./index.ex68wdp1.js")).default({...Q});else if(V==="npm")await(await import("./index.2g93a9kt.js")).default({...Q});else if(V==="gcs")await(await import("./index.pg6fm615.js")).default({...Q});else if(V==="gitlab")await(await import("./index.2ah9pn6n.js")).default({...Q});else if(V==="fnet-package")await(await import("./index.qmrnkssy.js")).default({...Q});else if(V==="fnet-form")await(await import("./index.fe9rrvng.js")).default({...Q});else if(V==="fnet-node")await(await import("./index.qnkv04zn.js")).default({...Q});else if(V==="fnet-flow")await(await import("./index.rkyn71zy.js")).default({...Q});else if(V==="nextjs")await(await import("./index.gywx3fae.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="webos")await(await import("./index.06vbpwcx.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="electron")await(await import("./index.26r88tdp.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="docker")await(await import("./index.80hh5mtp.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="ios")await(await import("./index.r2gf0b3s.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="macos")await(await import("./index.gza1frda.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="rust")await(await import("./index.a2mbqyxe.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="pypi")await(await import("./index.61jdafta.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else{console.warn(`No deployer found for type: ${V}`);return}}catch(K){throw console.error(`Error during deployment for type "${V}":`,K),K}};import{Atom as I0}from"@flownet/lib-atom-api-js";import s2 from"@flownet/lib-parse-node-url";import A9 from"bpmn-moddle";import M9 from"dagre";import f6 from"lodash.clonedeep";var x6={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 R9(Q){let{nodes:Z,nodeIndex:X,root:q}=Q,Y=[],J=new Set,W=(H)=>{if(J.has(H.indexKey))return;if(J.add(H.indexKey),H.hasReturn&&H.type!=="return"){let V=`${H.indexKey}/_inline_end`;if(X[V])return;let K={name:"",type:"return",virtual:!0,parent:H.parent,childs:[],definition:{return:H.definition.return},index:H.parent.childs.length,indexKey:V,pathKey:`${H.pathKey}._inline_end`,codeKey:`${H.codeKey}_inline_end`,context:{next:null},hasReturn:!0,_inlineParent:H};if(Y.push(K),j("bpmn"))x.info(`[INLINE-RETURN] EndEvent: ${K.indexKey} (parent: ${H.indexKey})`)}H.childs.forEach((V)=>W(V))};Z.forEach((H)=>W(H)),Y.forEach((H)=>{H.parent.childs.push(H),X[H.indexKey]=H,Z.push(H)}),Z.forEach((H)=>{let V=[],K=[],z=(U)=>{let M=Y.find(($)=>$._inlineParent===U);if(M)V.push({from:U,to:M,type:"bpmn:SequenceFlow"});else if(U.context.next){if(V.push({from:U,to:U.context.next,type:"bpmn:SequenceFlow"}),U===H)K.push({to:U.context.next,type:"bpmn:SequenceFlow",next:!0})}U.childs.forEach(($)=>{if(U===H){if(H.type==="switch"){if(!($.indexKey&&$.indexKey.endsWith("/_inline_end")))K.push({to:$,type:"bpmn:SequenceFlow"})}}z($)})};z(H);let G=V.filter((U)=>U.to.parent.indexKey===H.parent.indexKey).map((U)=>{return{...U,from:H.indexKey,to:U.to.indexKey}}),_=V.filter((U)=>U.to.parent.indexKey!==H.parent.indexKey&&!U.to.indexKey.startsWith(H.indexKey+"/")).map((U)=>{return{...U,from:H.indexKey,to:U.to.indexKey}}),A=K.map((U)=>{return{...U,to:U.to.indexKey}});if(H.bpmn=H.bpmn||{},H.bpmn.edges=u6(G,"to"),H.bpmn.outside=u6(_,"to"),H.bpmn.starts=u6(A,"to"),H.bpmn.type=Y5(H),H.bpmn.width=120,H.bpmn.height=80,H.type==="return")H.bpmn.width=36,H.bpmn.height=36;if(H.bpmn.type==="bpmn:CallActivity")H.bpmn.fill="#E1F5FE",H.bpmn.stroke="#0277BD"})}function Y5(Q){let Z;if(Q.type==="call"){if(Q.context?.lib?.type==="subworkflow"||Q.context?.lib?.type==="workflow"){if(Z="bpmn:CallActivity",j("bpmn"))x.info(`[CALL] CallActivity (subworkflow): ${Q.indexKey} (${Q.context?.lib?.name||"unknown"})`)}else if(Z="bpmn:ServiceTask",j("bpmn"))x.info(`[CALL] ServiceTask (external): ${Q.indexKey} (${Q.context?.lib?.name||"unknown"})`)}else if(Q.type==="form"){if(Z="bpmn:UserTask",j("bpmn"))x.info(`[FORM] UserTask: ${Q.indexKey}`)}else if(Q.type==="return"){if(Z="bpmn:EndEvent",j("bpmn"))x.info(`[RETURN] EndEvent: ${Q.indexKey}`)}else if(Q.type==="raise"){let X=!1;if(Q.name==="try"&&Q.parent?.type==="tryexcept")X=!0;else{let q=Q.parent;while(q){if(q.name==="try"&&q.parent?.type==="tryexcept"){X=!0;break}q=q.parent}}if(X){if(Z="bpmn:IntermediateThrowEvent",j("bpmn"))x.info(`[RAISE] IntermediateThrowEvent (inside try): ${Q.indexKey}`)}else if(Z="bpmn:EndEvent",j("bpmn"))x.info(`[RAISE] EndEvent (error): ${Q.indexKey}`)}else if(Q.type==="pipeline"){if(Z="bpmn:ServiceTask",j("bpmn"))x.info(`[PIPELINE] ServiceTask (external binary): ${Q.indexKey} (${Q.context?.binaryName||"unknown"})`)}else if(Q.type==="http"){if(Z="bpmn:ServiceTask",j("bpmn"))x.info(`[HTTP] ServiceTask (external API): ${Q.indexKey} (${Q.context?.http?.method||"GET"} ${Q.context?.http?.url||"unknown"})`)}else if(Q.type==="assign"||Q.type==="new"){if(Z="bpmn:ScriptTask",j("bpmn"))x.info(`[${Q.type.toUpperCase()}] ScriptTask: ${Q.indexKey}`)}else if(Z="bpmn:Task",j("bpmn"))x.info(`[${Q.type.toUpperCase()}] Task: ${Q.indexKey}`);return Z}function u6(Q,Z){return Q.filter((X,q,Y)=>{return Y.map((J)=>J[Z]).indexOf(X[Z])===q})}function h6(Q){let{nodes:Z,nodeIndex:X,root:q}=Q,Y=Q.targetNodes||q.childs;Y.forEach((J)=>{let W=J.type==="workflow"||J.type==="subworkflow",H=!W&&J.childs.filter((G)=>!G.virtual).length>0,V=(J.name==="try"||J.name==="except")&&J.parent?.type==="tryexcept",K=J.type==="schedule",z=J.type==="retry";if(H||V||K||z){if(J.bpmn.type="bpmn:SubProcess",J.type==="for"){if(J.bpmn.loopCharacteristics=!0,j("bpmn"))x.info(`[FOR] SubProcess + Loop Marker: ${J.indexKey}`)}if(J.name==="try"&&J.type==="raise"&&J.parent?.type==="tryexcept"){let G=e({location:0,...Q,parent:J,bpmnType:"bpmn:IntermediateThrowEvent",type:"raise",attrs:{},definitions:[{type:"bpmn:ErrorEventDefinition"}]});if(j("bpmn"))x.info(`[VIRTUAL] IntermediateThrowEvent for single-step try block: ${J.indexKey}`)}}if(W||H){let G=J.childs.filter((O)=>O.module!==!0&&!O.indexKey.endsWith("/_inline_end"))[0];J.childs.filter((O)=>O.module===!0).forEach((O)=>{let B=e({...Q,parent:J,bpmnType:"bpmn:IntermediateCatchEvent",type:"inter",definitions:[{type:"bpmn:SignalEventDefinition"}]});B.bpmn.edges=[{from:B.indexKey,to:O.indexKey,type:"bpmn:SequenceFlow"}]});let A=J.childs.find((O)=>O.name==="try"&&J.type==="tryexcept"),U=J.childs.filter((O)=>O.name==="except"&&J.type==="tryexcept");if(A&&U.length)U.forEach((O)=>{let B=e({location:J.childs.indexOf(O),...Q,parent:J,bpmnType:"bpmn:BoundaryEvent",type:"boundary",attrs:{attachedToRef:A},definitions:[{type:"bpmn:ErrorEventDefinition"}]});if(B.bpmn.edges=[{from:B.indexKey,to:O.indexKey,type:"bpmn:SequenceFlow"}],j("bpmn"))x.info(`[TRY-EXCEPT] BoundaryEvent: ${J.indexKey} (try: ${A.indexKey}, except: ${O.indexKey})`)});let M=J.childs.find((O)=>O.type==="raise");if(M){let O=e({...Q,parent:J,bpmnType:"bpmn:EndEvent",type:"end",name:"ERROR",definitions:[{type:"bpmn:ErrorEventDefinition"}]});M.bpmn.edges=[{from:M.indexKey,to:O.indexKey,type:"bpmn:SequenceFlow"}]}if(J.type==="schedule"){let O=J.childs[0];if(O){let B=e({...Q,parent:J,bpmnType:"bpmn:StartEvent",type:"timer-start",definitions:[{type:"bpmn:TimerEventDefinition",timerType:"timeCycle",expression:J.context?.cron||"* * * * *"}]});if(B.bpmn.edges=[{from:B.indexKey,to:O.indexKey,type:"bpmn:SequenceFlow"}],j("bpmn"))x.info(`[SCHEDULE] SubProcess + TimerStartEvent: ${J.indexKey} (cron: ${J.context?.cron})`)}}if(G)if(J.type==="schedule"){if(j("bpmn"))x.info(`[SCHEDULE] Skipping normal StartEvent (using TimerStartEvent): ${J.indexKey}`)}else if(J.type==="retry"){let O=e({...Q,parent:J,bpmnType:"bpmn:StartEvent",type:"start"});if(O.bpmn.edges.push({from:O.indexKey,to:G.indexKey,type:"bpmn:SequenceFlow"}),j("bpmn"))x.info(`[RETRY] SubProcess with loop characteristics: ${J.indexKey} (attempts: ${J.context?.attempts})`)}else if(J.type==="parallel"){let O=e({...Q,parent:J,bpmnType:"bpmn:StartEvent",type:"start"}),B=e({...Q,parent:J,bpmnType:"bpmn:ParallelGateway",type:"fork"}),T=e({...Q,parent:J,bpmnType:"bpmn:ParallelGateway",type:"join"}),S=e({...Q,parent:J,bpmnType:"bpmn:EndEvent",type:"end"});O.bpmn.edges=[{from:O.indexKey,to:B.indexKey,type:"bpmn:SequenceFlow"}];let y=J.childs.filter((v)=>!v.virtual&&!v.module&&!v.indexKey.endsWith("/_inline_end"));if(B.bpmn.edges=y.map((v)=>{return{from:B.indexKey,to:v.indexKey,type:"bpmn:SequenceFlow"}}),y.forEach((v)=>{v.bpmn.edges=[{from:v.indexKey,to:T.indexKey,type:"bpmn:SequenceFlow"}]}),T.bpmn.edges=[{from:T.indexKey,to:S.indexKey,type:"bpmn:SequenceFlow"}],j("bpmn"))x.info(`[PARALLEL] Fork/Join Gateways: ${J.indexKey} (${y.length} children)`)}else if(J.bpmn.starts.length>1){let O=e({...Q,parent:J,bpmnType:"bpmn:StartEvent",type:"start"}),B=e({...Q,parent:J,bpmnType:"bpmn:ExclusiveGateway",type:"switch"});O.bpmn.edges=[{from:O.indexKey,to:B.indexKey,type:"bpmn:SequenceFlow"}],B.bpmn.edges=J.bpmn.starts.map((S)=>{return{...S,from:B.indexKey}});let T=B.bpmn.edges.find((S)=>S.next===!0);if(T){let S=e({...Q,parent:J,bpmnType:"bpmn:EndEvent",type:"end",name:T.to});T.to=S.indexKey}}else{let O=e({...Q,parent:J,bpmnType:"bpmn:StartEvent",type:"start"});O.bpmn.edges.push({from:O.indexKey,to:G.indexKey,type:"bpmn:SequenceFlow"})}else if(j("bpmn"))x.info(`[START-EVENT] skipped (no valid firstNode): ${J.indexKey}`);J.childs.filter((O)=>O.virtual!==!0&&O.bpmn.outside.length&&O.bpmn.type!=="bpmn:EndEvent").forEach((O)=>{O.bpmn.outside.forEach((B)=>{let T=Y.indexOf(J),S=e({...Q,parent:J,bpmnType:"bpmn:EndEvent",type:"end",name:B.to,location:T+1});O.bpmn.edges.push({from:O.indexKey,to:S.indexKey,type:"bpmn:SequenceFlow"})})}),J.childs.filter((O)=>O.virtual!==!0&&O.bpmn.edges.length>1).forEach((O)=>{let B=Y.indexOf(O),T=e({...Q,parent:J,bpmnType:"bpmn:ExclusiveGateway",type:"switch",location:B+1});T.bpmn.edges=O.bpmn.edges.map((S)=>{return{...S,from:T.indexKey}}),O.bpmn.edges=[{from:O.indexKey,to:T.indexKey,type:"bpmn:SequenceFlow"}],O.bpmn.outside=[]})}h6({...Q,targetNodes:J.childs})})}function e(Q){let{parent:Z,nodes:X,nodeIndex:q,bpmnType:Y,type:J,name:W,outside:H,location:V,definitions:K,attrs:z}=Q,G=Z.childs.filter((A)=>A.type===`v${J}`).length;if(j("bpmn"))x.info(`[VIRTUAL] ${J.toUpperCase()} → ${Y}: ${Z.indexKey}/_${J}${G}`);let _={indexKey:`${Z.indexKey}/_${J}${G}`,pathKey:`${Z.pathKey}._${J}${G}`,type:`v${J}`,name:W,bpmn:{edges:[],outside:[],type:Y,width:36,height:36,fill:"#c8e6c9",stroke:"#205022",definitions:K,attrs:z},virtual:!0,childs:[]};return Z.childs.splice(V||0,0,_),X.push(_),q[_.indexKey]=_,_}function g6(Q){let{targetNode:Z,targetFlowElementsContainer:X,targetPlaneElement:q,moddle:Y,elementIndex:J,nodeIndex:W,diagrams:H,nodes:V}=Q;J5(Q),H5(Q),W5(Q),V5(Q)}function J5(Q){let{targetNode:Z,targetFlowElementsContainer:X,targetPlaneElement:q,moddle:Y,elementIndex:J,nodeIndex:W,nodes:H}=Q,V=X.get("flowElements");if(X.$nodes=X.$nodes||[],j("bpmn"))x.info(`[BPMN] Creating elements for: ${Z.indexKey} (${Z.childs.length} children)`);Z.childs.forEach((K)=>{let z=Y.create(K.bpmn.type,{id:`node.${K.pathKey}`,name:K.definition?.title||K.name});if(J[z.id]=z,z.$isNode=!0,z.$node=K,K.$flow=z,X.$nodes.push(z),V.push(z),K.bpmn.type==="bpmn:CallActivity"&&K.context?.lib){if(z.calledElement=K.context.lib.name,j("bpmn"))x.info(`[CREATED] ${K.bpmn.type} (chip!): ${z.id} → ${z.calledElement}`)}else if(j("bpmn"))x.info(`[CREATED] ${K.bpmn.type}: ${z.id}${K.virtual?" (virtual)":""}`);if(K.bpmn.attrs)Object.keys(K.bpmn.attrs).forEach((_)=>{if(_==="attachedToRef")z.set(_,K.bpmn.attrs[_].$flow)});if(K.bpmn.definitions){let G=K.bpmn.definitions.map((_)=>{let A=Y.create(_.type);return Object.keys(_.attrs||{}).forEach((M)=>{A.set(M,_.attrs[M])}),A});z.eventDefinitions=G}if(K.bpmn.loopCharacteristics&&K.bpmn.type==="bpmn:SubProcess"){if(z.loopCharacteristics=Y.create("bpmn:StandardLoopCharacteristics"),j("bpmn"))x.info(`[LOOP] Added loop marker to: ${z.id} (${K.type})`)}})}function H5(Q){let{targetNode:Z,targetFlowElementsContainer:X,targetPlaneElement:q,moddle:Y,elementIndex:J,nodeIndex:W}=Q,H=X.get("flowElements");X.$edges=X.$edges||[],Z.childs.forEach((V)=>{V.bpmn.edges.forEach((z)=>{let G=V,_=W[z.to],A=`edge.${G.pathKey}_${_.pathKey}`;if(J[A])return;let U=J[`node.${G.pathKey}`],M=J[`node.${_.pathKey}`],$=Y.create(z.type,{id:A,sourceRef:U,targetRef:M});J[$.id]=$,$.$is_edge=!0,U.get("outgoing").push($),M.get("incoming").push($),X.$edges.push({from:U,to:M,flow:$}),H.push($)})})}function W5(Q){let{targetNode:Z,targetFlowElementsContainer:X,targetPlaneElement:q,moddle:Y,elementIndex:J,nodeIndex:W}=Q,H=120,V=80,K=160,z=160,G=new M9.graphlib.Graph;G.setDefaultEdgeLabel(()=>({})),G.setGraph({rankdir:"TB",nodesep:120,ranksep:80,xranker:"longest-path"}),X.$nodes.forEach((_)=>{G.setNode(_.id,{width:_.$node?.bpmn.width||120,height:_.$node?.bpmn.height||80,label:_.id})}),X.$edges.forEach((_)=>{G.setEdge(_.from.id,_.to.id)}),M9.layout(G),X.$nodes.forEach((_)=>{let A=G.node(_.id),U=A.width,M=A.height,$=Y.create("bpmndi:BPMNShape",{id:`shape.${_.id}`,bpmnElement:_,bounds:Y.create("dc:Bounds",{x:160+A.x-A.width/2,y:160+A.y-A.height/2,width:U,height:M}),label:Y.create("bpmndi:BPMNLabel")});if(_.$node.bpmn.fill)$.set("bioc:fill",_.$node.bpmn.fill);if(_.$node.bpmn.stroke)$.set("bioc:stroke",_.$node.bpmn.stroke);q.get("planeElement").push($)}),X.$edges.forEach((_)=>{let A=G.edge(_.from.id,_.to.id),U=Y.create("bpmndi:BPMNEdge",{id:`edge.${_.from.id}_${_.to.id}`,bpmnElement:_.flow,label:Y.create("bpmndi:BPMNLabel")});A.points.forEach(($)=>{let R=Y.create("dc:Point",{x:160+$.x,y:160+$.y});U.get("waypoint").push(R)}),q.get("planeElement").push(U)})}function V5(Q){let{targetNode:Z,targetFlowElementsContainer:X,targetPlaneElement:q,moddle:Y,elementIndex:J,nodeIndex:W,diagrams:H}=Q;Z.childs.filter((K)=>K.bpmn.type==="bpmn:SubProcess").forEach((K)=>{let z=J[`node.${K.pathKey}`],G=Y.create("bpmndi:BPMNDiagram",{id:`diagram_${K.pathKey}`});J[G.id]=G,H.push(G);let _=Y.create("bpmndi:BPMNPlane",{id:`plane_${K.pathKey}`});J[_.id]=_,G.plane=_,_.bpmnElement=z,g6({...Q,targetNode:K,targetFlowElementsContainer:z,targetPlaneElement:_})})}async function K5(Q){let Z=Q.root,X=Z.context.index,q=Object.keys(X).map((K)=>X[K]);R9({nodes:q,nodeIndex:X,root:Z}),h6({nodes:q,nodeIndex:X,root:Z});let Y=void 0,J=new A9({atom:x6}),W={},H=J.create("bpmn:Definitions",{id:"definitions_0"});W[H.id]=H;for await(let K of Z.childs){let z=H.get("rootElements"),G=H.get("diagrams"),_=J.create("bpmn:Process",{id:`process_${K.pathKey}`,name:K.name,documentation:[J.create("bpmn:Documentation",{text:`Workflow - ${K.name}`})]});W[_.id]=_,_.isExecutable=!0,z.push(_);let A=J.create("bpmndi:BPMNDiagram",{id:`diagram_${K.pathKey}`});W[A.id]=A,G.push(A);let U=J.create("bpmndi:BPMNPlane",{id:`plane_${K.pathKey}`});W[U.id]=U,A.plane=U,U.bpmnElement=_,g6({targetNode:K,targetFlowElementsContainer:_,targetPlaneElement:U,moddle:J,elementIndex:W,nodeIndex:X,nodes:q,diagrams:G})}let V=await J.toXML(H,{format:!0});return{diagramXML:Y||V.xml}}async function _5(Q){let{root:Z,flowName:X}=Q,q=f6(Z),Y=q.childs.find((T)=>T.name===X);if(!Y)throw Error(`Flow "${X}" not found`);let J={...q,childs:[Y]},W=J.context.index,H=Object.keys(W).map((T)=>W[T]);R9({nodes:H,nodeIndex:W,root:J}),h6({nodes:H,nodeIndex:W,root:J});let V=new A9({atom:x6}),K={},z=V.create("bpmn:Definitions",{id:`definitions_${X}`});K[z.id]=z;let G=z.get("rootElements"),_=z.get("diagrams"),A=V.create("bpmn:Process",{id:`process_${Y.pathKey}`,name:Y.name,documentation:[V.create("bpmn:Documentation",{text:`Workflow - ${Y.name}`})]});K[A.id]=A,A.isExecutable=!0,G.push(A);let U=V.create("bpmndi:BPMNDiagram",{id:`diagram_${Y.pathKey}`});K[U.id]=U,_.push(U);let M=V.create("bpmndi:BPMNPlane",{id:`plane_${Y.pathKey}`});return K[M.id]=M,U.plane=M,M.bpmnElement=A,g6({targetNode:Y,targetFlowElementsContainer:A,targetPlaneElement:M,moddle:V,elementIndex:K,nodeIndex:W,nodes:H,diagrams:_}),{diagramXML:(await V.toXML(z,{format:!0})).xml,flowName:Y.name}}async function j8(Q={}){return await K5(f6(Q))}async function B9(Q={}){let Z=f6(Q),{root:X}=Z,q=[];for(let Y of X.childs){let J=await _5({root:X,flowName:Y.name});q.push(J)}return q}import o2 from"@fnet/config";import t2 from"@flownet/lib-parse-imports-js";class C8 extends SyntaxError{constructor(Q,Z,X,q){super(Q);this.expected=Z,this.found=X,this.location=q,this.name="SyntaxError"}format(Q){let Z="Error: "+this.message;if(this.location){let X=null,q=Q.find((H)=>H.source===this.location.source);if(q)X=q.text.split(/\r\n|\n|\r/g);let Y=this.location.start,J=this.location.source&&typeof this.location.source.offset==="function"?this.location.source.offset(Y):Y,W=this.location.source+":"+J.line+":"+J.column;if(X){let H=this.location.end,V="".padEnd(J.line.toString().length," "),K=X[Y.line-1],G=(Y.line===H.line?H.column:K.length+1)-Y.column||1;Z+=`
2
+ import{a as h7}from"./index.pbtmt70j.js";import{b as z0}from"./index.pj3wr582.js";import{c as v0}from"./index.kanz1359.js";import{d as S5,e as S9,f as h}from"./index.drbq51nw.js";var D9=S9((Sq,k9)=>{k9.exports=N9;function N9(Q,Z,X){if(Q instanceof RegExp)Q=w9(Q,X);if(Z instanceof RegExp)Z=w9(Z,X);var q=P9(Q,Z,X);return q&&{start:q[0],end:q[1],pre:X.slice(0,q[0]),body:X.slice(q[0]+Q.length,q[1]),post:X.slice(q[1]+Z.length)}}function w9(Q,Z){var X=Z.match(Q);return X?X[0]:null}N9.range=P9;function P9(Q,Z,X){var q,Y,J,W,H,V=X.indexOf(Q),K=X.indexOf(Z,V+1),z=V;if(V>=0&&K>0){if(Q===Z)return[V,K];q=[],J=X.length;while(z>=0&&!H){if(z==V)q.push(z),V=X.indexOf(Q,z+1);else if(q.length==1)H=[q.pop(),K];else{if(Y=q.pop(),Y<J)J=Y,W=K;K=X.indexOf(Z,z+1)}z=V<K&&V>=0?V:K}if(q.length)H=[J,W]}return H}});var h9=S9((Nq,f9)=>{var b9=D9();f9.exports=$5;var v9="\x00SLASH"+Math.random()+"\x00",y9="\x00OPEN"+Math.random()+"\x00",c6="\x00CLOSE"+Math.random()+"\x00",E9="\x00COMMA"+Math.random()+"\x00",x9="\x00PERIOD"+Math.random()+"\x00";function l6(Q){return parseInt(Q,10)==Q?parseInt(Q,10):Q.charCodeAt(0)}function G5(Q){return Q.split("\\\\").join(v9).split("\\{").join(y9).split("\\}").join(c6).split("\\,").join(E9).split("\\.").join(x9)}function U5(Q){return Q.split(v9).join("\\").split(y9).join("{").split(c6).join("}").split(E9).join(",").split(x9).join(".")}function u9(Q){if(!Q)return[""];var Z=[],X=b9("{","}",Q);if(!X)return Q.split(",");var{pre:q,body:Y,post:J}=X,W=q.split(",");W[W.length-1]+="{"+Y+"}";var H=u9(J);if(J.length)W[W.length-1]+=H.shift(),W.push.apply(W,H);return Z.push.apply(Z,W),Z}function $5(Q){if(!Q)return[];if(Q.substr(0,2)==="{}")Q="\\{\\}"+Q.substr(2);return s0(G5(Q),!0).map(U5)}function O5(Q){return"{"+Q+"}"}function M5(Q){return/^-?0\d/.test(Q)}function A5(Q,Z){return Q<=Z}function R5(Q,Z){return Q>=Z}function s0(Q,Z){var X=[],q=b9("{","}",Q);if(!q)return[Q];var Y=q.pre,J=q.post.length?s0(q.post,!1):[""];if(/\$$/.test(q.pre))for(var W=0;W<J.length;W++){var H=Y+"{"+q.body+"}"+J[W];X.push(H)}else{var V=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(q.body),K=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(q.body),z=V||K,G=q.body.indexOf(",")>=0;if(!z&&!G){if(q.post.match(/,.*\}/))return Q=q.pre+"{"+q.body+c6+q.post,s0(Q);return[Q]}var _;if(z)_=q.body.split(/\.\./);else if(_=u9(q.body),_.length===1){if(_=s0(_[0],!1).map(O5),_.length===1)return J.map(function(P7){return q.pre+_[0]+P7})}var A;if(z){var U=l6(_[0]),M=l6(_[1]),$=Math.max(_[0].length,_[1].length),R=_.length==3?Math.abs(l6(_[2])):1,O=A5,B=M<U;if(B)R*=-1,O=R5;var T=_.some(M5);A=[];for(var S=U;O(S,M);S+=R){var y;if(K){if(y=String.fromCharCode(S),y==="\\")y=""}else if(y=String(S),T){var v=$-y.length;if(v>0){var J0=Array(v+1).join("0");if(S<0)y="-"+J0+y.slice(1);else y=J0+y}}A.push(y)}}else{A=[];for(var H0=0;H0<_.length;H0++)A.push.apply(A,s0(_[H0],!1))}for(var H0=0;H0<A.length;H0++)for(var W=0;W<J.length;W++){var H=Y+A[H0]+J[W];if(!Z||z||H)X.push(H)}}return X}});import T1 from"yargs";import MZ from"chalk";import{ProcessManager as j1}from"@fnet/shell-flow";import r0 from"node:path";import{spawn as E7}from"node:child_process";import A8 from"node:fs";import n0 from"chalk";import SZ from"@fnet/config";function o(Q,{name:Z,bin:X,preArgs:q=[],createContext:Y,processManager:J}){if(typeof X==="function")X=X();return Q.command(`${Z||X} [commands..]`,`${X} ${q.join(" ")}`,(W)=>{return W.help(!1).version(!1)},async(W)=>{try{let H=await Y(W),{projectDir:V}=H,K=(U)=>{if(!U.includes(" "))return U;if(process.platform==="win32")return`"${U.replace(/(["^])/g,"^$1")}"`;else return`"${U.replace(/(["\\$`])/g,"\\$1")}"`},z=process.argv.slice(3).map(K),G={...process.env},_=r0.join(V,"node_modules");G.NODE_PATH=_,G.NODE_PRESERVE_SYMLINKS=1;let A=E7(X,[...q,...z],{cwd:V,stdio:"inherit",shell:!0,env:G});if(J)J.track(A);await new Promise((U)=>{A.on("close",(M)=>{U(M)})})}catch(H){console.error(H.message),process.exit(1)}})}function x7(Q,{name:Z,preArgs:X=[],createContext:q,processManager:Y}){return Q.command(`${Z} <config> <command> [options..]`,"Run a command with a config context",(J)=>{return J.positional("config",{type:"string"}).positional("command",{type:"string"}).help(!1).version(!1)},async(J)=>{try{let W=await q(J),{projectDir:H}=W,V=J.config,z=(await SZ({name:V,dir:H,transferEnv:!1,optional:!0,tags:W.tags}))?.data?.env||void 0,G=J.command,_=process.argv.slice(5),A=E7(G,[...X,..._],{cwd:A8.existsSync(H)?H:process.cwd(),stdio:"inherit",shell:!0,env:{...process.env,...z}});if(Y)Y.track(A);await new Promise((U)=>{A.on("close",(M)=>{U(M)})})}catch(W){console.error(W.message),process.exit(1)}})}function u7(Q,{name:Z,projectType:X="auto",processManager:q}){return Q.command(`${Z} group [options..]`,"Run a command group.",(Y)=>{return Y.positional("group",{type:"string"}).option("ftag",{type:"array"}).help(!1).version(!1)},async(Y)=>{try{let{runCommandGroup:J}=await import("./index.6nhq5ca9.js");await J({projectType:X,group:Y.group,tags:Y.ftag,args:Y,argv:process.argv,processManager:q})}catch(J){console.error(J.message),process.exit(1)}})}function f7(Q,{name:Z,createContext:X,processManager:q}){return Q.command(`${Z} [options]`,"Install the project as a binary",(Y)=>{return Y.option("name",{alias:"n",describe:"Name to use for the installed binary",type:"string"}).option("force",{alias:"f",describe:"Force overwrite if binary already exists",type:"boolean",default:!1}).option("yes",{alias:"y",describe:"Automatically answer yes to all prompts",type:"boolean",default:!1})},async(Y)=>{try{let J=await X(Y),{projectDir:W}=J;console.log(n0.blue("Compiling project..."));let H=r0.join(W,".bin");if(!A8.existsSync(H))A8.mkdirSync(H,{recursive:!0});let V=r0.basename(r0.dirname(W)),K=J.project?.projectFileParsed?.features?.cli?.bin,z=Y.name||K||V;console.log(n0.blue(`Using binary name: ${z}`));let G=r0.join(H,z),{spawn:_}=await import("child_process"),A=_("bun",["build","./dist/cli/esm/index.js","--compile",`--outfile=${G}`],{cwd:W,stdio:"inherit",shell:!0});if(q)q.track(A);if(await new Promise(($,R)=>{A.on("close",(O)=>{if(O===0)$();else R(Error(`Compilation failed with code ${O}`))}),A.on("error",(O)=>{R(O)})}),process.platform!=="win32")A8.chmodSync(G,493);console.log(n0.green(`Binary compiled successfully: ${G}`)),console.log(n0.blue("Installing binary..."));let U=["install",G];if(Y.name)U.push("--name",Y.name);if(Y.force)U.push("--force");if(Y.yes)U.push("--yes");let M=_("fbin",U,{stdio:"inherit",shell:!0});if(q)q.track(M);await new Promise(($,R)=>{M.on("close",(O)=>{if(O===0)$();else R(Error(`Installation failed with code ${O}`))}),M.on("error",(O)=>{R(O)})})}catch(J){console.error(n0.red(`Failed to install binary: ${J.message}`)),process.exit(1)}})}import t from"node:path";import M0 from"node:fs";import R8 from"@fnet/yaml";import NZ from"yaml";async function b(Q){let Z=h7(Q.ftag);try{let X=await PZ({tags:Z,flowsPath:Q.flows});return{buildId:Q.buildId,mode:Q.mode,protocol:Q.protocol||"src:",templateDir:v0("./template/fnet/node"),coreDir:v0("./template/fnet/core"),projectDir:t.resolve(X.projectDir,"./.workspace"),projectSrcDir:t.resolve(X.projectDir,"./src"),projectSrcDirSymlink:t.resolve(X.projectDir,"./.workspace/src-core"),projectAppDir:t.resolve(X.projectDir,"./app"),projectAppDirSymlink:t.resolve(X.projectDir,"./.workspace/app"),projectCliDir:t.resolve(X.projectDir,"./cli"),projectCliDirSymlink:t.resolve(X.projectDir,"./.workspace/cli"),project:X,tags:Z,dev:Q.dev,bpmn:Q.bpmn===!0}}catch(X){return console.warn(`Warning: Could not load project: ${X.message}`),{projectDir:process.cwd(),tags:Z}}}async function PZ({tags:Q,flowsPath:Z}){let X=kZ(process.cwd());if(!M0.existsSync(X))throw Error("fnet.yaml file not found in current directory.");let{raw:q,parsed:Y}=await R8({file:X,tags:Q}),J=t.dirname(X);Y.features=Y.features||{};let W=Y.features;W.runtime=W.runtime||{},W.runtime.type=W.runtime.type||"node";let H;if(Z){let _=t.resolve(J,Z);if(!M0.existsSync(_))throw Error(`Flows file not found: ${_}`);let{parsed:A}=await R8({file:_,tags:Q});H=A}else if(typeof Y.flows==="object")H=Y.flows;else{let _="flow.main.yaml";if(M0.existsSync(t.join(J,"fnet","flows.yaml")))_=t.join("fnet","flows.yaml");let A=Y.main||_,U=t.resolve(J,A);if(!M0.existsSync(U))H={main:{steps:[]}};else{let{parsed:M}=await R8({file:U,tags:Q});H=M}}let K={workflowAtom:{doc:{...Y,content:H}},projectDir:J,projectFilePath:X,projectFileContent:q,projectFileParsed:Y,runtime:W.runtime},z=t.resolve(J,"fnet/targets.yaml");if(M0.existsSync(z)){let{raw:_,parsed:A}=await R8({file:z,tags:Q}),U=NZ.parseDocument(_);K.devops={filePath:z,fileContent:_,yamlDocument:U,doc:{...A},type:"workflow.deploy",save:async()=>{M0.writeFileSync(K.devops.filePath,U.toString())}}}let G=t.resolve(J,"readme.md");if(M0.existsSync(G)){let _=M0.readFileSync(G,"utf8");K.readme={filePath:G,fileContent:_,doc:{content:_,"content-type":"markdown"},type:"wiki"}}return K}function kZ(Q){let Z=t.resolve(Q,"fnet.yaml");if(M0.existsSync(Z))return Z;let X=t.resolve(Q,"fnet.yml");if(M0.existsSync(X))return X;return Z}import DZ from"node:path";import g7 from"node:fs";import bZ from"node:os";import vZ from"@flownet/lib-render-templates-dir";import e8 from"@fnet/shelljs";var yZ={command:"create",describe:"Initialize a new fnet project",builder:(Q)=>{return Q.option("name",{type:"string",describe:"Project name"}).option("vscode",{type:"boolean",default:!0,alias:"vs",describe:"Open in VS Code after creation"}).option("runtime",{type:"string",default:"node",choices:["node"],describe:"Runtime environment"})},handler:async(Q)=>{try{let Z=process.cwd(),X=v0("./template/fnet/project"),q=DZ.resolve(Z,Q.name);if(!g7.existsSync(q))g7.mkdirSync(q);await vZ({dir:X,outDir:q,context:Q,copyUnmatchedAlso:!0,platform:bZ.platform()});let Y=await e8("fnet build",{cwd:q});if(Y.code!==0)throw Error("Failed to build project.");if(z0("git")){if(Y=await e8("git init --initial-branch=main",{cwd:q}),Y.code!==0)throw Error("Failed to initialize git.")}if(z0("code")&&Q.vscode){if(Y=await e8(`cd ${q} && code .`),Y.code!==0)throw Error("Failed to open vscode.")}console.log("Creating project succeeded!"),process.exit(0)}catch(Z){console.error("Initialization failed!",Z.message),process.exit(1)}}},m7=yZ;import EZ from"node:os";import xZ from"@flownet/lib-render-templates-dir";import uZ from"@fnet/shelljs";var fZ={command:"project",describe:"Manage fnet project",builder:(Q)=>{return Q.option("update",{type:"boolean",default:!1,alias:"-u",describe:"Update project files"})},handler:async(Q)=>{try{let Z=v0("./template/fnet/project"),X=process.cwd(),q=await b(Q);if(Q.update){if(await xZ({dir:Z,outDir:X,context:{name:q.project.projectFileParsed.name,runtime:"node"},copyUnmatchedAlso:!0,platform:EZ.platform()}),(await uZ("fnet build",{cwd:X})).code!==0)throw Error("Failed to build project.");console.log("Updating project succeeded!")}process.exit(0)}catch(Z){console.error("Project failed.",Z.message),process.exit(1)}}},l7=fZ;import C from"node:fs";import D from"node:path";import tQ from"yaml";import eQ from"@fnet/shelljs";import O8 from"nunjucks";import QZ from"lodash.clonedeep";import r2 from"isobject";import{randomUUID as ZZ}from"node:crypto";import Q6 from"winston";var{combine:c7,timestamp:d7,printf:hZ,colorize:gZ}=Q6.format,i7=hZ(({level:Q,message:Z,timestamp:X,category:q,depth:Y,...J})=>{let W=" ".repeat(Y||0),H=q?`[${q}]`:"",V=`${X} ${Q} ${H} ${W}${Z}`;if(Object.keys(J).length>0)V+=`
3
+ ${W} ${JSON.stringify(J,null,2)}`;return V}),B8=Q6.createLogger({level:process.env.FNET_LOG_LEVEL||"info",format:c7(d7({format:"HH:mm:ss.SSS"}),i7),transports:[new Q6.transports.Console({format:c7(gZ(),d7({format:"HH:mm:ss.SSS"}),i7)})]}),a7=(Q)=>{return{debug:(Z,X={})=>B8.debug(Z,{category:Q,...X}),info:(Z,X={})=>B8.info(Z,{category:Q,...X}),warn:(Z,X={})=>B8.warn(Z,{category:Q,...X}),error:(Z,X={})=>B8.error(Z,{category:Q,...X})}},f=a7("tree"),x=a7("bpmn"),p7=process.env.FNET_LOG_CATEGORIES?.split(",")||[],j=(Q)=>{if(p7.length===0)return!1;return p7.includes(Q)};import{Api as I8}from"@flownet/lib-atom-api-js";class n7{init({config:Q,accessToken:Z}){return new Promise((X,q)=>{if(I8.set_api_url(Q.data.url),Z){I8.set_req_token(Z),X(Z);return}fetch(`${Q.data.issuer}/protocol/openid-connect/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams(Q.data.grant.params)}).then(async(Y)=>{if(!Y.ok)throw Error(await Y.text());return Y.json()}).then((Y)=>{I8.set_req_token(Y.access_token),X(Y.access_token)}).catch((Y)=>{I8.set_req_token(),q(Y)})})}}import f0 from"lodash.merge";import L8 from"node:fs";import G0 from"node:path";import h0 from"@flownet/lib-parse-imports-js";import mZ from"lodash.merge";function E({feature:Q,features:Z,packageDevDependencies:X}){let{name:q,packages:Y,options:J,extraCheck:W,explicit:H}=Q,V=`${q}_enabled`,K=Z.rollup_output||{},z=Object.keys(K),G=J||{},_=Z[q]?.options;if(_)G=mZ(G,_);let A=!Z[q]||Z[q]?.enabled===!1;z.forEach((M)=>{let $=Z.rollup_output[M];if(!$)return;if(Reflect.has($,q)){if(A||!$[q]||$[q]?.enabled===!1){delete $[q];return}if($[q]===!0)$[q]={enabled:!0,options:G}}else if(!A&&!H&&Z[V]!==!1)$[q]={enabled:!0};else return;$[q]=$[q]||{},$[q].options={...G,...$[q].options}});let U=z.some((M)=>Z.rollup_output[M][q]?.enabled===!0);if(W)U=W()&&U;if(Z[V]=U,U)Y.forEach((M)=>X.push({package:M[0],version:M[1]}))}function Z6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({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:q,packageDevDependencies:X})}function X6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"gzip",packages:[["rollup-plugin-gzip","^4"]],explicit:!0},features:q,packageDevDependencies:X})}function q6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"nunjucks",packages:[["@fnet/rollup-plugin-nunjucks","0.1.8"]]},features:q,packageDevDependencies:X})}function Y6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"polyfill",packages:[["rollup-plugin-node-polyfills","^0.2"]]},features:q,packageDevDependencies:X})}function J6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"visualizer",packages:[["rollup-plugin-visualizer","^5"]],expilicit:!0},features:q,packageDevDependencies:X})}function H6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"analyzer",packages:[["rollup-plugin-analyzer","^3"]],options:{summaryOnly:!0,limit:12},explicit:!0},features:q,packageDevDependencies:X})}function W6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"string",packages:[["rollup-plugin-string","^3"]]},features:q,packageDevDependencies:X})}function V6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"image",packages:[["@rollup/plugin-image","^3"]]},features:q,packageDevDependencies:X})}function K6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;if(q.runtime.type==="bun")return;E({feature:{name:"json",packages:[["@rollup/plugin-json","^6"]]},features:q,packageDevDependencies:X})}function _6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"terser",packages:[["@rollup/plugin-terser","^0.4"]]},features:q,packageDevDependencies:X})}function z6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;E({feature:{name:"wasm",packages:[["@rollup/plugin-wasm","^6"]]},features:q,packageDevDependencies:X})}function G6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features;if(q.runtime.type==="bun")return;let Y={};if(q.app?.enabled===!0){if(Y.targets=Y.targets||[],Y.targets.push({src:"./src/app/index.html",dest:q.app.dir}),!Reflect.has(q.app,"copy")){if(!Reflect.has(q,"copy"))q.copy=!0}}E({feature:{name:"copy",packages:[["rollup-plugin-copy","^3"],["chokidar","^3"]],options:Y},features:q,packageDevDependencies:X})}function U6(Q){let{atom:Z,packageDevDependencies:X}=Q,q=Z.doc.features,Y=q.css&&q.css.enabled!==!1,J=[];if(Y)J.push(["rollup-plugin-postcss","^4"]),J.push(["sass","^1.66"]),(q.css?.options?.plugins||[]).forEach((H)=>{switch(H.name){case"postcss-import":J.push(["postcss-import","^15"]);break;case"postcss-url":J.push(["postcss-url","^10"]);break;case"postcss-preset-env":J.push(["postcss-preset-env","^9"]);break;case"autoprefixer":J.push(["autoprefixer","^10"]);break;case"cssnano":J.push(["cssnano","^6"]);break}});E({feature:{name:"css",packages:J},features:q,packageDevDependencies:X})}function $6({dir:Q,name:Z="index"}){let X=G0.resolve(Q,`./${Z}.tsx`);if(!L8.existsSync(X))X=G0.resolve(Q,`./${Z}.ts`);if(!L8.existsSync(X))X=G0.resolve(Q,`./${Z}.jsx`);if(!L8.existsSync(X))X=G0.resolve(Q,`./${Z}.js`);if(!L8.existsSync(X))return{};let q=X,Y=G0.extname(X);return{file:q,ext:Y,ts:Y===".ts"||Y===".tsx",name:Z}}async function O6(Q){let{atom:Z,context:X,setProgress:q}=Q;q("Initializing features..."),Z.doc.features=Z.doc.features||{};let Y=Z.doc.features;Y.project=Y.project||{},Y.project.format=Y.project.format||Y.project_format||"esm",Y.project_format=Y.project.format,Y.dts_enabled=Y.dts===!0||typeof Y.dts<"u"&&Y.dts!==!1;let J=G0.resolve(X.project.projectDir),W=$6({dir:G0.resolve(J,"./app")});if(W.file){q("Parsing app entry imports...");let M=await h0({file:W.file,recursive:!0}),$=M.all.some((R)=>R.usesJSX===!0&&R.type==="local");Y.app_uses_jsx=$,Y.app_has_entry=!0,M=await h0({file:W.file}),$=M.all.some((R)=>R.usesJSX===!0&&R.type==="local"),Y.app_entry_uses_jsx=$,Y.app_entry_is_ts=W.ts,Y.app_entry_ext=W.ext}let H=$6({dir:G0.resolve(J,"./cli")});if(H.file){q("Parsing cli entry imports...");let M=await h0({file:H.file,recursive:!0}),$=M.all.some((R)=>R.usesJSX===!0&&R.type==="local");Y.cli_uses_jsx=$,Y.cli_has_entry=!0,M=await h0({file:H.file}),$=M.all.some((R)=>R.usesJSX===!0&&R.type==="local"),Y.cli_entry_uses_jsx=$,Y.cli_entry_is_ts=H.ts,Y.cli_entry_ext=H.ext}if(Z.type==="workflow.lib"){let M=$6({dir:G0.resolve(J,"./src")});if(M.file){q("Parsing src entry imports...");let $=await h0({file:M.file,recursive:!0}),R=$.all.some((O)=>O.usesJSX===!0&&O.type==="local");Y.src_uses_jsx=R,Y.src_has_entry=!0,$=await h0({file:M.file}),R=$.all.some((O)=>O.usesJSX===!0&&O.type==="local"),Y.src_entry_uses_jsx=R,Y.src_entry_is_ts=M.ts,Y.src_entry_ext=M.ext}}let V=Reflect.has(Y,"app_entry_uses_jsx")?Y.app_entry_uses_jsx===!0:Y.src_entry_uses_jsx===!0,K=Reflect.has(Y,"cli_entry_uses_jsx")?Y.cli_entry_uses_jsx===!0:Y.src_entry_uses_jsx===!0;if(Y.form_enabled=V||K||Y.form===!0||Y.form?.enabled===!0,Y.multiple_enabled=Y.multiple_enabled||Y.multiple===!0||Y.multiple?.enabled===!0,Y.app===!1)Y.app={enabled:!1};else if(Y.app===!0)Y.app={enabled:!0,extend:Y.app_has_entry===!0,export:!0,react:V};else Y.app={enabled:!0,extend:Y.app_has_entry===!0,export:!0,react:V,...Y.app||{}};if(Y.app.enabled=Y.app.enabled===!0&&(Z.doc.features.form_enabled===!0||Y.app.extend===!0||Y.app.enabled===!0),Y.app.format=Y.app.format||"esm",Y.app.folder=Y.app.folder||Y.app.format||"default",Y.cli===!1)Y.cli={enabled:!1};else if(Y.cli===!0)Y.cli={enabled:!0,extend:Y.cli_has_entry===!0,export:!0,react:K};else Y.cli={enabled:!0,extend:Y.cli_has_entry===!0,export:!0,react:K,...Y.cli||{}};if(Y.cli.enabled=Y.cli.enabled===!0&&(Z.doc.features.form_enabled===!1||Y.cli.extend===!0||Y.cli.enabled===!0),Y.cli.format=Y.cli.format||"esm",Y.cli.folder=Y.cli.folder||Y.cli.folder||"esm",Y.cli.node_options=Y.cli.node?.options||Y.cli.node_options||"",Y.cli.bin=Y.cli.bin||Z.doc.name,Y.cli.installable=Y.cli.installable===!0,Y.cli.enabled)Z.doc["npm::bin"]=Y.cli.bin;Y.json=Y.cli.enabled||Y.json;let z={cjs:{format:"cjs",context:Y.form_enabled?"window":"global",babel:Y.src_uses_jsx===!0||!1,browser:!1,replace:!0,terser:!0,enabled:Y.cjs!==!1,copy:!1},esm:{format:"esm",context:Y.form_enabled?"window":"global",babel:Y.src_uses_jsx===!0||!1,browser:!1,replace:!0,terser:!1,enabled:Y.esm!==!1,copy:!0},iife:{format:"iife",context:Y.form_enabled?"window":"global",babel:!0,browser:!0,replace:!0,enabled:Y.iife===!0,terser:!0,copy:!1}},G={targets:{browsers:"last 9 versions, not dead",node:"18"}},_={};if(Y.webos===!0)z.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"}}};if(Y.electron===!0)z.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"};if(Y.nextjs===!0)z.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"};if(Y.ios===!0)z.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"};if(Y.macos===!0)z.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"};if(Y.app.enabled===!0)Y.app.dir=`./dist/app/${Y.app.folder}`,Y.app.output={file:`./dist/app/${Y.app.folder}/index.js`,dir:`./dist/app/${Y.app.folder}/`,...Y.app.output||{}},Y.app.input={file:"./src/app/index.js",dir:"./src/app/",...Y.app.input||{}},z.app={format:Y.app.format,browser:!0,babel:!0,context:"window",replace:!0,input:Y.app.input.file,output_dir:Y.app.dir,terser:!0,output_exports:Y.app.export===!1?"none":"auto",browsersync:!0};if(Y.cli.enabled===!0)Y.cli.dir=`./dist/cli/${Y.cli.folder}`,Y.cli.output={file:`./dist/cli/${Y.cli.folder}/index.js`,dir:`./dist/cli/${Y.cli.folder}/`,...Y.cli.output||{}},Y.cli.input={file:"./src/cli/index.js",dir:"./src/cli/",...Y.cli.input||{}},z.cli={format:Y.cli.format,context:"global",babel:Y.src_uses_jsx===!0||Y.cli_uses_jsx===!0||!1,browser:!1,replace:!0,enabled:!0,input:Y.cli.input.file,output_dir:Y.cli.dir,banner:"#!/usr/bin/env bun",terser:!0,output_exports:Y.cli.export===!1?"none":"auto"};let A={server:".",startPath:`${G0.normalize(Y.app.dir||".")}`,files:[G0.normalize("./dist/**/*")],cors:!0,open:!1};if(Y.babel_options=f0(G,Y.babel_options||Y.babel?.options),Y.browsersync_options=f0(A,Y.browsersync_options||Y.browsersync?.options||{}),Y.replace_options=f0(_,Y.replace_options||Y.replace?.options||{}),Reflect.has(Y.browsersync_options,"proxy"))delete Y.browsersync_options.server;Y.rollup=Y.rollup||{},Y.rollup_output=f0(z,Y.rollup_output||Y.rollup?.output||{}),Y.preact_enabled=Y.preact===!0||Y.preact&&Y.preact?.enabled!==!1;let U=Object.keys(z);for(let M of U){let $=z[M];if(!$)continue;if(Y.rollup[M]===!1){delete Y.rollup_output[M];continue}if($.babel_options=$.babel_options||Y.babel_options,$.browsersync_options=f0(Y.browsersync_options,$.browsersync_options),$.replace_options=f0(Y.replace_options,$.replace_options),Y.preact_enabled)$.alias_enabled=!0,$.alias=$.alias||{},$.alias.entries=$.alias.entries||{},$.alias.entries.react="preact/compat",$.alias.entries["react-dom"]="preact/compat";if(Y.form_enabled||Y.babel)$.babel=!0}U=Object.keys(Y.rollup_output),Y.babel_enabled=U.some((M)=>Y.rollup_output[M].babel===!0),Y.browser_enabled=U.some((M)=>Y.rollup_output[M].babel===!0),Y.browsersync_enabled=Y.browsersync!==!1&&U.some((M)=>Y.rollup_output[M].browsersync===!0),Y.browsersync_enabled=Y.browsersync_enabled&&Y.app.enabled,Y.dependency_auto_enabled=Y.dependency_auto!==!1&&Y.dependency_auto?.enabled!==!1,Y.npm_install_flags=Y.npm_install_flags||"",Y.react_version=Y.react_version||Y.react?.version||18,Y.bpmn=Y.bpmn||{},Y.bpmn.enabled=Y.bpmn.enabled!==!1,Y.bpmn.per_flow=Y.bpmn.per_flow===!0,U6(Q),G6(Q),z6(Q),_6(Q),K6(Q),W6(Q),V6(Q),H6(Q),J6(Q),Y6(Q),q6(Q),Z6(Q),X6(Q)}import lZ from"@fnet/npm-list-versions";async function M6({atom:Q,packageDependencies:Z,packageDevDependencies:X,setProgress:q}){q("Initializing dependencies");let Y=Q.doc.dependencies||[];if(Y.filter((J)=>!J.dev).forEach((J)=>Z.push(J)),Y.filter((J)=>J.dev).forEach((J)=>X.push(J)),Q.type==="workflow")Z.push({package:"dot-prop",version:"^10"});if(Q.doc.features.form_enabled){if(Q.doc.features.dependency_auto_enabled){let J="^18.2";if(q("Fetching React versions"),J=`^${(await lZ({name:"react",groupBy:{major:!0}})).find((V)=>V[0]===Q.doc.features.react_version.toString())[0]}`,Z.push({package:"react",version:J}),Z.push({package:"react-dom",version:J}),Q.type==="workflow")Z.push({package:"@fnet/react-app",version:"^0.1"}),Z.push({package:"@fnet/react-app-state",version:"^0.1"})}}if(Q.doc.features.preact_enabled)Z.push({package:"preact",version:"^10"});if(Q.doc.features.cli.enabled===!0){if(Z.push({package:"@fnet/args",version:"^0.1"}),Q.doc.features.cli.fargs&&Q.doc.features.cli.fargs?.enabled!==!1)Z.push({package:"@fnet/config",version:"0.2.21"});if(Q.doc.features.cli.mcp&&Q.doc.features.cli.mcp.enabled===!0)Z.push({package:"@modelcontextprotocol/sdk",version:"^1.10"}),Z.push({package:"express",version:"^4.18"})}if(Q.doc.features.render&&Q.doc.features.render.enabled!==!1)X.push({package:"@flownet/lib-render-templates-dir",version:"0.1.19"});if(X.push({package:"@babel/core",version:"^7"}),X.push({package:"@rollup/plugin-commonjs",version:"^28"}),X.push({package:"@rollup/plugin-node-resolve",version:"^16"}),X.push({package:"@rollup/plugin-replace",version:"^6"}),X.push({package:"rollup",version:"^4"}),Q.doc.features.dts_enabled)X.push({package:"rollup-plugin-dts",version:"^6"});if(X.push({package:"rollup-plugin-peer-deps-external",version:"^2"}),X.push({package:"@rollup/plugin-alias",version:"^5"}),X.push({package:"fs-extra",version:"^11"}),Q.doc.features.babel_enabled)X.push({package:"@rollup/plugin-babel",version:"^6"}),X.push({package:"@babel/preset-env",version:"^7"}),X.push({package:"@babel/preset-react",version:"^7"}),Q.doc.features.babel?.options?.plugins?.forEach((J)=>{switch(J[0]){case"@babel/plugin-proposal-decorators":X.push({package:"@babel/plugin-proposal-decorators",version:"^7"});break;case"@babel/plugin-proposal-class-properties":X.push({package:"@babel/plugin-proposal-class-properties",version:"^7"});break;case"@babel/plugin-proposal-private-methods":X.push({package:"@babel/plugin-proposal-private-methods",version:"^7"});break;case"@babel/plugin-proposal-private-property-in-object":X.push({package:"@babel/plugin-proposal-private-property-in-object",version:"^7"});break;case"@babel/plugin-proposal-optional-chaining":X.push({package:"@babel/plugin-proposal-optional-chaining",version:"^7"});break}});if(X.push({package:"@fnet/rollup-plugin-delete",version:"0.1.10"}),Q.doc.features.browsersync_enabled)X.push({package:"@fnet/rollup-plugin-browsersync",version:"0.1.11"})}import cZ from"@fnet/npm-list-versions";async function A6({atom:Q,packageDependencies:Z,packageDevDependencies:X,setProgress:q}){q("Initializing dependencies for Bun");let Y=Q.doc.dependencies||[];if(Y.filter((J)=>!J.dev).forEach((J)=>Z.push(J)),Y.filter((J)=>J.dev).forEach((J)=>X.push(J)),Q.type==="workflow")Z.push({package:"dot-prop",version:"^10"});if(Q.doc.features.form_enabled){if(Q.doc.features.dependency_auto_enabled){let J="^18.2";if(q("Fetching React versions"),J=`^${(await cZ({name:"react",groupBy:{major:!0}})).find((V)=>V[0]===Q.doc.features.react_version.toString())[0]}`,Z.push({package:"react",version:J}),Z.push({package:"react-dom",version:J}),Q.type==="workflow")Z.push({package:"@fnet/react-app",version:"^0.1"}),Z.push({package:"@fnet/react-app-state",version:"^0.1"})}}if(Q.doc.features.preact_enabled)Z.push({package:"preact",version:"^10"});if(Q.doc.features.cli.enabled===!0){if(Z.push({package:"@fnet/args",version:"^0.1"}),Q.doc.features.cli.fargs&&Q.doc.features.cli.fargs?.enabled!==!1)Z.push({package:"@fnet/config",version:"0.2.21"});if(Q.doc.features.cli.mcp&&Q.doc.features.cli.mcp.enabled===!0)Z.push({package:"@modelcontextprotocol/sdk",version:"^1.10"}),Z.push({package:"express",version:"^4.18"})}if(Q.doc.features.render&&Q.doc.features.render.enabled!==!1)X.push({package:"@flownet/lib-render-templates-dir",version:"0.1.19"})}import r7 from"node:fs";import s7 from"node:path";import dZ from"@flownet/lib-render-templates-dir";async function R6({atom:Q,setProgress:Z,context:X,packageDependencies:q}){if(Q.doc.features.app.enabled!==!0)return;await Z({message:"Creating app folder"});let Y={atom:Q,packageDependencies:q,ts:Date.now()},J=X.templateDir,W=s7.resolve(X.projectDir,"src/app");if(!r7.existsSync(W))r7.mkdirSync(W,{recursive:!0});let H=["index.js.njk"];if(Q.doc.features.app.html!==!1)H.push("index.html.njk");await dZ({pattern:H,dir:s7.resolve(J,"src/app"),outDir:W,context:Y})}import t7 from"nunjucks";import L0 from"node:fs";import S0 from"node:path";import aZ from"@flownet/lib-parse-imports-js";import iZ from"@fnet/npm-pick-versions";import pZ from"object-hash";import F8 from"node:fs";import o7 from"node:path";async function w0({projectDir:Q,name:Z,setProgress:X,count:q=1}){let Y,W=pZ(["npm-pick-versions",Z,q]),H=o7.join(Q,".cache"),V=o7.join(H,W+".json");if(F8.existsSync(V)){if(X)X(`Picking npm version of ${Z} from cache ...`);Y=JSON.parse(F8.readFileSync(V,"utf8"))}else{if(X)X(`Picking npm version of ${Z} ...`);Y=await iZ({name:Z,count:q}),F8.mkdirSync(H,{recursive:!0}),F8.writeFileSync(V,JSON.stringify(Y),"utf8")}return Y}async function B6({atom:Q,context:Z,packageDependencies:X,packageDevDependencies:q,setProgress:Y}){await Y({message:"Creating package.json."}),X.filter(($)=>$.dev===!0).forEach(($)=>{if(!q.find((O)=>O.package===$.package))q.push($);let R=X.findIndex((O)=>O.package===$.package);X.splice(R,1)});let W=X.find(($)=>$.package==="react"),H=X.find(($)=>$.package==="react-dom");if(W&&!H)X.push({package:"react-dom",version:W.version});else if(W&&H)H.version=W.version;if(W&&Q.doc.features.react_version>=17){if(!X.find(($)=>$.package==="@emotion/react"))X.push({package:"@emotion/react",version:"^11"});if(!X.find(($)=>$.package==="@emotion/styled"))X.push({package:"@emotion/styled",version:"^11"})}let V=[];if(Q.doc.features.app.enabled===!0)V.push({file:S0.resolve(Z.projectDir,"src/app/index.js"),dev:Q.doc.features.app.dev===!0});if(Q.doc.features.cli.enabled===!0)V.push({file:S0.resolve(Z.projectDir,"src/cli/index.js"),dev:Q.doc.features.cli.dev===!0});for await(let $ of V){let R=$.file;if(!L0.existsSync(R))throw Error(`App file not found: ${R}`);let B=(await aZ({file:R,recursive:!0,verbose:!1})).all;for await(let T of B){if(T.type!=="npm")continue;if(X.find((v)=>v.package===T.package))continue;if(q.find((v)=>v.package===T.package))continue;let S=await w0({name:T.package,projectDir:Z.projectDir,setProgress:Y});($.dev===!0?q:X).push({package:T.package,subpath:T.subpath,version:S.minorRange,type:"npm"})}}for await(let $ of X){if($.version!==void 0)continue;let R=await w0({name:$.package,projectDir:Z.projectDir,setProgress:Y});$.version=R.minorRange}for await(let $ of q){if($.version!==void 0)continue;let R=await w0({name:$.package,projectDir:Z.projectDir,setProgress:Y});$.version=R.minorRange}let K={atom:Q,packageDependencies:X,packageDevDependencies:q},z=Z.templateDir,_=t7.compile(L0.readFileSync(S0.resolve(z,"package.json.njk"),"utf8"),t7.configure(z)).render(K),A=Z.projectDir,U=S0.resolve(A,"package.json");L0.writeFileSync(U,_,"utf8");let M=S0.resolve(Z.project.projectDir,"fnet");if(L0.existsSync(M)){let $=S0.resolve(Z.projectDir,"fnet");if(!L0.existsSync($))L0.mkdirSync($);let R=L0.readdirSync(M);for(let O of R){let B=S0.resolve(M,O);if(!L0.lstatSync(B).isFile())continue;let T=S0.resolve($,O);L0.copyFileSync(B,T)}}}import e7 from"node:fs";import Q9 from"node:path";import nZ from"@flownet/lib-render-templates-dir";async function I6({atom:Q,setProgress:Z,context:X,packageDependencies:q}){if(Q.doc.features.cli.enabled!==!0)return;await Z({message:"Creating cli."});let Y={atom:Q,packageDependencies:q},J=X.templateDir,W=Q9.resolve(X.projectDir,"src/cli");if(!e7.existsSync(W))e7.mkdirSync(W,{recursive:!0});await nZ({pattern:["index.js.njk"],dir:Q9.resolve(J,"src/cli"),outDir:W,context:Y})}import L6 from"node:fs";import F6 from"node:path";import Z9 from"nunjucks";import rZ from"@flownet/lib-parse-imports-js";async function T6({atom:Q,setProgress:Z,context:X,packageDependencies:q}){await Z({message:"Creating rollup file."});let Y={atom:Q,packageDependencies:q},J=F6.resolve(X.projectDir,"src","default/index.js");if(!L6.existsSync(J))throw Error(`Entry file not found: ${J}`);let H=(await rZ({file:J,recursive:!0})).all.filter((M)=>M.type==="node").map((M)=>M.path),V=Q.doc.features.rollup_output,K=Object.keys(V);for(let M=0;M<K.length;M++){let $=K[M],R=V[$];if(R.browser===!0){if(H.length>0){R.globals_enabled=!0,R.globals=R.globals||[],R.globals=R.globals.concat(H.map((O)=>{return{key:O,value:O}})),R.alias_enabled=!0,R.alias=R.alias||{},R.alias.entries=R.alias.entries||{};for(let O=0;O<H.length;O++){let B=H[O];R.alias.entries[B]=`node:${B}`,R.alias.entries[`node:${B}`]=B}R.external_enabled=!0,R.external=R.external||[],R.external=R.external.concat(H)}}}let z=X.templateDir,_=Z9.compile(L6.readFileSync(F6.resolve(z,"rollup.config.mjs.njk"),"utf8"),Z9.configure(z)).render(Y),A=X.projectDir,U=F6.resolve(A,"rollup.config.mjs");L6.writeFileSync(U,_,"utf8")}import j6 from"node:fs";import X9 from"node:path";import q9 from"nunjucks";async function C6({atom:Q,setProgress:Z,context:X,packageDependencies:q}){await Z({message:"Creating build.js file."});let Y={atom:Q,packageDependencies:q},J=X.templateDir,H=q9.compile(j6.readFileSync(X9.resolve(J,"build.js.njk"),"utf8"),q9.configure(J)).render(Y),V=X.projectDir,K=X9.resolve(V,"build.js");j6.writeFileSync(K,H,"utf8"),j6.chmodSync(K,"755")}import w6 from"node:fs";import S6 from"node:path";import sZ from"nunjucks";import oZ from"ajv/dist/2020.js";import tZ from"ajv/dist/standalone/index.js";import eZ from"ajv-formats";async function N6({atom:Q,setProgress:Z,context:X,njEnv:q}){if(Q.doc.features.cli.enabled!==!0)return;await Z({message:"Creating input args."});let Y={},J=[];if(Q.doc.input)Y=Q.doc.input;else Y={type:"object",properties:{},required:[]};if(Q.doc.features.cli.fargs&&Q.doc.features.cli.fargs?.enabled!==!1){let R=Q.doc.features.cli.fargs,O={type:"string",description:"Config name to load args",hidden:!1},B={type:"array",description:"Tags to filter the config",hidden:!1};if(Reflect.has(R,"default"))O.default=R.default}let H={imports:J,atom:Q},V=X.templateDir,z=sZ.compile(w6.readFileSync(S6.resolve(V,"src/default/input.args.js.njk"),"utf8"),q).render(H),G=X.projectDir,_=S6.resolve(G,"src/default/input.args.js");w6.writeFileSync(_,z,"utf8");let A=new oZ({allErrors:!0,useDefaults:!0,formats:{},strict:!1,code:{esm:!0,lines:!0,optimize:!1,source:!0}});eZ(A);let U=A.compile(Y),$=tZ(A,U)+`
4
+ export { schema31 as schema };`;w6.writeFileSync(S6.resolve(G,"src/default/validate_input.js"),$,"utf8")}import Y9 from"node:fs";import J9 from"node:path";import H9 from"nunjucks";async function P6({atom:Q,setProgress:Z,context:X,packageDependencies:q}){await Z({message:"Creating .gitignore"});let Y={atom:Q,packageDependencies:q},J=X.templateDir,H=H9.compile(Y9.readFileSync(J9.resolve(J,".gitignore.njk"),"utf8"),H9.configure(J)).render(Y),V=X.projectDir,K=J9.resolve(V,".gitignore");Y9.writeFileSync(K,H,"utf8")}import W9 from"node:fs";import V9 from"node:path";import K9 from"nunjucks";async function k6({atom:Q,setProgress:Z,context:X,packageDependencies:q}){await Z({message:"Creating tsconfig.json."});let Y={atom:Q,packageDependencies:q},J=X.templateDir,H=K9.compile(W9.readFileSync(V9.resolve(J,"tsconfig.json.njk"),"utf8"),K9.configure(J)).render(Y),V=X.projectDir,K=V9.resolve(V,"tsconfig.json");W9.writeFileSync(K,H,"utf8")}import T8 from"nunjucks";import N0 from"node:fs";import y0 from"node:path";import _9 from"@fnet/yaml";async function D6({atom:Q,context:Z,setProgress:X,Atom:q}){if(await X({message:"Creating readme.md"}),Z.project?.readme){let W=Z.projectDir,H={content:Z.project.readme.doc.content},V=y0.resolve(Z.project.projectDir,"fnet/how-to.md");if(N0.existsSync(V)){let M=N0.readFileSync(V,"utf8");H.howto=M}let K=y0.resolve(Z.project.projectDir,"fnet/input.yaml");if(N0.existsSync(K)){let M=await _9({file:K,tags:Z.tags});H.input=M.content}let z=y0.resolve(Z.project.projectDir,"fnet/output.yaml");if(N0.existsSync(z)){let M=await _9({file:z,tags:Z.tags});H.output=M.content}let G=Z.templateDir,A=T8.compile(N0.readFileSync(y0.resolve(G,"readme.md.njk"),"utf8"),T8.configure(G)).render(H),U=y0.resolve(W,"readme.md");N0.writeFileSync(U,A,"utf8")}else if(Q.id){let W=await q.first({type:"wiki",parent_id:Q.id});if(!W||W.doc?.["content-type"]!=="markdown")return;let{content:H,...V}=W.doc,K={content:H},z=Z.templateDir,_=T8.compile(N0.readFileSync(y0.resolve(z,"readme.md.njk"),"utf8"),T8.configure(z)).render(K),A=Z.projectDir,U=y0.resolve(A,"readme.md");N0.writeFileSync(U,_,"utf8")}}import Q5 from"node:path";import z9 from"@fnet/shelljs";async function b6({setProgress:Q,context:Z}){let X=Z.projectDir;await Q({message:"Prettifiying source files."});let q=Q5.join("src","**","*");if(z0("bun")){let Y=await z9(`bunx prettier --write ${q} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:X});if(Y.code!==0)throw Error(Y.stderr)}else{let Y=await z9(`npx prettier --write ${q} *.{js,cjs,mjs,json,yaml,html} --no-error-on-unmatched-pattern`,{cwd:X});if(Y.code!==0)throw Error(Y.stderr)}}import G9 from"@fnet/shelljs";async function v6({atom:Q,setProgress:Z,context:X}){if(!Q.doc.features.dts_enabled)return;let q=X.projectDir;if(await Z({message:"Creating .d.ts"}),z0("bun")){if((await G9("bunx tsc",{cwd:q})).code!==0)throw Error("Couldnt create .d.ts files.")}else if((await G9("npx tsc",{cwd:q})).code!==0)throw Error("Couldnt create .d.ts files.")}import U9 from"@fnet/shelljs";async function y6({setProgress:Q,atom:Z,context:X}){let q=X.projectDir;if(await Q({message:"Installing npm packages."}),z0("bun")){if((await U9(`bun install ${Z.doc.features.npm_install_flags}`,{cwd:q})).code!==0)throw Error("Couldnt install npm packages.")}else if((await U9(`npm install ${Z.doc.features.npm_install_flags}`,{cwd:q})).code!==0)throw Error("Couldnt install npm packages.")}import $9 from"node:fs";import Z5 from"node:path";import{spawn as X5}from"node:child_process";async function O9(Q){let{projectDir:Z,scriptName:X,args:q=[],env:Y=process.env,shell:J=!0,detached:W=!0,onSpawn:H}=Q;if(!Z||!X)throw Error("projectDir and scriptName are required");let V=Z5.resolve(Z,"package.json");if(!$9.existsSync(V))throw Error(`package.json not found at ${V}`);let K=JSON.parse($9.readFileSync(V,"utf8")),z=K.scripts?.[X];if(!z){let A=Object.keys(K.scripts||{}).join(", ");throw Error(`Script '${X}' not found. Available: ${A}`)}let G=q.length>0?`${z} ${q.join(" ")}`:z,_=X5(G,[],{cwd:Z,stdio:"inherit",shell:J,detached:W,env:{...Y}});if(H)H(_);return new Promise((A,U)=>{_.on("error",(M)=>{U(Error(`Failed to start '${X}': ${M.message}`))}),_.on("close",(M)=>{A({subprocess:_,exitCode:M})})})}import M9 from"node:path";async function E6({setProgress:Q,context:Z}){let X=Z.projectDir;await Q({message:"Building main project."});let q=Z.dev?"build:dev":"build",Y={...process.env},J=M9.join(X,"node_modules");Y.NODE_PATH=J,Y.PATH=`${M9.join(J,".bin")}:${Y.PATH||""}`,Y.NODE_PRESERVE_SYMLINKS=1,await O9({projectDir:X,scriptName:q,shell:!0,detached:!0,env:Y})}var A9=async(Q)=>{let{atom:Z,packageDependencies:X,context:q,deploymentProjectTarget:Y,setProgress:J,deploymentProject:W,yamlTarget:H}=Q;if(Y.enabled!==!0)return;let V=Y.type;try{if(V==="lib")await(await import("./index.vpc49edd.js")).default({...Q});else if(V==="red")await(await import("./index.ex68wdp1.js")).default({...Q});else if(V==="npm")await(await import("./index.wmeh7jrw.js")).default({...Q});else if(V==="gcs")await(await import("./index.pg6fm615.js")).default({...Q});else if(V==="gitlab")await(await import("./index.2ah9pn6n.js")).default({...Q});else if(V==="fnet-package")await(await import("./index.qmrnkssy.js")).default({...Q});else if(V==="fnet-form")await(await import("./index.fe9rrvng.js")).default({...Q});else if(V==="fnet-node")await(await import("./index.qnkv04zn.js")).default({...Q});else if(V==="fnet-flow")await(await import("./index.rkyn71zy.js")).default({...Q});else if(V==="nextjs")await(await import("./index.ydv6st7k.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="webos")await(await import("./index.4gymwzqb.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="electron")await(await import("./index.kjw4nv5z.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="docker")await(await import("./index.n7q2w82x.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="ios")await(await import("./index.5r21wfyc.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="macos")await(await import("./index.r3cben5x.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="rust")await(await import("./index.xym49mp3.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else if(V==="pypi")await(await import("./index.sbphkm7x.js")).default({atom:Z,target:Y,onProgress:J,projectDir:q.projectDir,dependencies:X,context:q,yamlTarget:H}),W.isDirty=!0;else{console.warn(`No deployer found for type: ${V}`);return}}catch(K){throw console.error(`Error during deployment for type "${V}":`,K),K}};import{Atom as I0}from"@flownet/lib-atom-api-js";import s2 from"@flownet/lib-parse-node-url";import B9 from"bpmn-moddle";import R9 from"dagre";import f6 from"lodash.clonedeep";var x6={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 I9(Q){let{nodes:Z,nodeIndex:X,root:q}=Q,Y=[],J=new Set,W=(H)=>{if(J.has(H.indexKey))return;if(J.add(H.indexKey),H.hasReturn&&H.type!=="return"){let V=`${H.indexKey}/_inline_end`;if(X[V])return;let K={name:"",type:"return",virtual:!0,parent:H.parent,childs:[],definition:{return:H.definition.return},index:H.parent.childs.length,indexKey:V,pathKey:`${H.pathKey}._inline_end`,codeKey:`${H.codeKey}_inline_end`,context:{next:null},hasReturn:!0,_inlineParent:H};if(Y.push(K),j("bpmn"))x.info(`[INLINE-RETURN] EndEvent: ${K.indexKey} (parent: ${H.indexKey})`)}H.childs.forEach((V)=>W(V))};Z.forEach((H)=>W(H)),Y.forEach((H)=>{H.parent.childs.push(H),X[H.indexKey]=H,Z.push(H)}),Z.forEach((H)=>{let V=[],K=[],z=(U)=>{let M=Y.find(($)=>$._inlineParent===U);if(M)V.push({from:U,to:M,type:"bpmn:SequenceFlow"});else if(U.context.next){if(V.push({from:U,to:U.context.next,type:"bpmn:SequenceFlow"}),U===H)K.push({to:U.context.next,type:"bpmn:SequenceFlow",next:!0})}U.childs.forEach(($)=>{if(U===H){if(H.type==="switch"){if(!($.indexKey&&$.indexKey.endsWith("/_inline_end")))K.push({to:$,type:"bpmn:SequenceFlow"})}}z($)})};z(H);let G=V.filter((U)=>U.to.parent.indexKey===H.parent.indexKey).map((U)=>{return{...U,from:H.indexKey,to:U.to.indexKey}}),_=V.filter((U)=>U.to.parent.indexKey!==H.parent.indexKey&&!U.to.indexKey.startsWith(H.indexKey+"/")).map((U)=>{return{...U,from:H.indexKey,to:U.to.indexKey}}),A=K.map((U)=>{return{...U,to:U.to.indexKey}});if(H.bpmn=H.bpmn||{},H.bpmn.edges=u6(G,"to"),H.bpmn.outside=u6(_,"to"),H.bpmn.starts=u6(A,"to"),H.bpmn.type=Y5(H),H.bpmn.width=120,H.bpmn.height=80,H.type==="return")H.bpmn.width=36,H.bpmn.height=36;if(H.bpmn.type==="bpmn:CallActivity")H.bpmn.fill="#E1F5FE",H.bpmn.stroke="#0277BD"})}function Y5(Q){let Z;if(Q.type==="call"){if(Q.context?.lib?.type==="subworkflow"||Q.context?.lib?.type==="workflow"){if(Z="bpmn:CallActivity",j("bpmn"))x.info(`[CALL] CallActivity (subworkflow): ${Q.indexKey} (${Q.context?.lib?.name||"unknown"})`)}else if(Z="bpmn:ServiceTask",j("bpmn"))x.info(`[CALL] ServiceTask (external): ${Q.indexKey} (${Q.context?.lib?.name||"unknown"})`)}else if(Q.type==="form"){if(Z="bpmn:UserTask",j("bpmn"))x.info(`[FORM] UserTask: ${Q.indexKey}`)}else if(Q.type==="return"){if(Z="bpmn:EndEvent",j("bpmn"))x.info(`[RETURN] EndEvent: ${Q.indexKey}`)}else if(Q.type==="raise"){let X=!1;if(Q.name==="try"&&Q.parent?.type==="tryexcept")X=!0;else{let q=Q.parent;while(q){if(q.name==="try"&&q.parent?.type==="tryexcept"){X=!0;break}q=q.parent}}if(X){if(Z="bpmn:IntermediateThrowEvent",j("bpmn"))x.info(`[RAISE] IntermediateThrowEvent (inside try): ${Q.indexKey}`)}else if(Z="bpmn:EndEvent",j("bpmn"))x.info(`[RAISE] EndEvent (error): ${Q.indexKey}`)}else if(Q.type==="pipeline"){if(Z="bpmn:ServiceTask",j("bpmn"))x.info(`[PIPELINE] ServiceTask (external binary): ${Q.indexKey} (${Q.context?.binaryName||"unknown"})`)}else if(Q.type==="http"){if(Z="bpmn:ServiceTask",j("bpmn"))x.info(`[HTTP] ServiceTask (external API): ${Q.indexKey} (${Q.context?.http?.method||"GET"} ${Q.context?.http?.url||"unknown"})`)}else if(Q.type==="assign"||Q.type==="new"){if(Z="bpmn:ScriptTask",j("bpmn"))x.info(`[${Q.type.toUpperCase()}] ScriptTask: ${Q.indexKey}`)}else if(Z="bpmn:Task",j("bpmn"))x.info(`[${Q.type.toUpperCase()}] Task: ${Q.indexKey}`);return Z}function u6(Q,Z){return Q.filter((X,q,Y)=>{return Y.map((J)=>J[Z]).indexOf(X[Z])===q})}function h6(Q){let{nodes:Z,nodeIndex:X,root:q}=Q,Y=Q.targetNodes||q.childs;Y.forEach((J)=>{let W=J.type==="workflow"||J.type==="subworkflow",H=!W&&J.childs.filter((G)=>!G.virtual).length>0,V=(J.name==="try"||J.name==="except")&&J.parent?.type==="tryexcept",K=J.type==="schedule",z=J.type==="retry";if(H||V||K||z){if(J.bpmn.type="bpmn:SubProcess",J.type==="for"){if(J.bpmn.loopCharacteristics=!0,j("bpmn"))x.info(`[FOR] SubProcess + Loop Marker: ${J.indexKey}`)}if(J.name==="try"&&J.type==="raise"&&J.parent?.type==="tryexcept"){let G=e({location:0,...Q,parent:J,bpmnType:"bpmn:IntermediateThrowEvent",type:"raise",attrs:{},definitions:[{type:"bpmn:ErrorEventDefinition"}]});if(j("bpmn"))x.info(`[VIRTUAL] IntermediateThrowEvent for single-step try block: ${J.indexKey}`)}}if(W||H){let G=J.childs.filter((O)=>O.module!==!0&&!O.indexKey.endsWith("/_inline_end"))[0];J.childs.filter((O)=>O.module===!0).forEach((O)=>{let B=e({...Q,parent:J,bpmnType:"bpmn:IntermediateCatchEvent",type:"inter",definitions:[{type:"bpmn:SignalEventDefinition"}]});B.bpmn.edges=[{from:B.indexKey,to:O.indexKey,type:"bpmn:SequenceFlow"}]});let A=J.childs.find((O)=>O.name==="try"&&J.type==="tryexcept"),U=J.childs.filter((O)=>O.name==="except"&&J.type==="tryexcept");if(A&&U.length)U.forEach((O)=>{let B=e({location:J.childs.indexOf(O),...Q,parent:J,bpmnType:"bpmn:BoundaryEvent",type:"boundary",attrs:{attachedToRef:A},definitions:[{type:"bpmn:ErrorEventDefinition"}]});if(B.bpmn.edges=[{from:B.indexKey,to:O.indexKey,type:"bpmn:SequenceFlow"}],j("bpmn"))x.info(`[TRY-EXCEPT] BoundaryEvent: ${J.indexKey} (try: ${A.indexKey}, except: ${O.indexKey})`)});let M=J.childs.find((O)=>O.type==="raise");if(M){let O=e({...Q,parent:J,bpmnType:"bpmn:EndEvent",type:"end",name:"ERROR",definitions:[{type:"bpmn:ErrorEventDefinition"}]});M.bpmn.edges=[{from:M.indexKey,to:O.indexKey,type:"bpmn:SequenceFlow"}]}if(J.type==="schedule"){let O=J.childs[0];if(O){let B=e({...Q,parent:J,bpmnType:"bpmn:StartEvent",type:"timer-start",definitions:[{type:"bpmn:TimerEventDefinition",timerType:"timeCycle",expression:J.context?.cron||"* * * * *"}]});if(B.bpmn.edges=[{from:B.indexKey,to:O.indexKey,type:"bpmn:SequenceFlow"}],j("bpmn"))x.info(`[SCHEDULE] SubProcess + TimerStartEvent: ${J.indexKey} (cron: ${J.context?.cron})`)}}if(G)if(J.type==="schedule"){if(j("bpmn"))x.info(`[SCHEDULE] Skipping normal StartEvent (using TimerStartEvent): ${J.indexKey}`)}else if(J.type==="retry"){let O=e({...Q,parent:J,bpmnType:"bpmn:StartEvent",type:"start"});if(O.bpmn.edges.push({from:O.indexKey,to:G.indexKey,type:"bpmn:SequenceFlow"}),j("bpmn"))x.info(`[RETRY] SubProcess with loop characteristics: ${J.indexKey} (attempts: ${J.context?.attempts})`)}else if(J.type==="parallel"){let O=e({...Q,parent:J,bpmnType:"bpmn:StartEvent",type:"start"}),B=e({...Q,parent:J,bpmnType:"bpmn:ParallelGateway",type:"fork"}),T=e({...Q,parent:J,bpmnType:"bpmn:ParallelGateway",type:"join"}),S=e({...Q,parent:J,bpmnType:"bpmn:EndEvent",type:"end"});O.bpmn.edges=[{from:O.indexKey,to:B.indexKey,type:"bpmn:SequenceFlow"}];let y=J.childs.filter((v)=>!v.virtual&&!v.module&&!v.indexKey.endsWith("/_inline_end"));if(B.bpmn.edges=y.map((v)=>{return{from:B.indexKey,to:v.indexKey,type:"bpmn:SequenceFlow"}}),y.forEach((v)=>{v.bpmn.edges=[{from:v.indexKey,to:T.indexKey,type:"bpmn:SequenceFlow"}]}),T.bpmn.edges=[{from:T.indexKey,to:S.indexKey,type:"bpmn:SequenceFlow"}],j("bpmn"))x.info(`[PARALLEL] Fork/Join Gateways: ${J.indexKey} (${y.length} children)`)}else if(J.bpmn.starts.length>1){let O=e({...Q,parent:J,bpmnType:"bpmn:StartEvent",type:"start"}),B=e({...Q,parent:J,bpmnType:"bpmn:ExclusiveGateway",type:"switch"});O.bpmn.edges=[{from:O.indexKey,to:B.indexKey,type:"bpmn:SequenceFlow"}],B.bpmn.edges=J.bpmn.starts.map((S)=>{return{...S,from:B.indexKey}});let T=B.bpmn.edges.find((S)=>S.next===!0);if(T){let S=e({...Q,parent:J,bpmnType:"bpmn:EndEvent",type:"end",name:T.to});T.to=S.indexKey}}else{let O=e({...Q,parent:J,bpmnType:"bpmn:StartEvent",type:"start"});O.bpmn.edges.push({from:O.indexKey,to:G.indexKey,type:"bpmn:SequenceFlow"})}else if(j("bpmn"))x.info(`[START-EVENT] skipped (no valid firstNode): ${J.indexKey}`);J.childs.filter((O)=>O.virtual!==!0&&O.bpmn.outside.length&&O.bpmn.type!=="bpmn:EndEvent").forEach((O)=>{O.bpmn.outside.forEach((B)=>{let T=Y.indexOf(J),S=e({...Q,parent:J,bpmnType:"bpmn:EndEvent",type:"end",name:B.to,location:T+1});O.bpmn.edges.push({from:O.indexKey,to:S.indexKey,type:"bpmn:SequenceFlow"})})}),J.childs.filter((O)=>O.virtual!==!0&&O.bpmn.edges.length>1).forEach((O)=>{let B=Y.indexOf(O),T=e({...Q,parent:J,bpmnType:"bpmn:ExclusiveGateway",type:"switch",location:B+1});T.bpmn.edges=O.bpmn.edges.map((S)=>{return{...S,from:T.indexKey}}),O.bpmn.edges=[{from:O.indexKey,to:T.indexKey,type:"bpmn:SequenceFlow"}],O.bpmn.outside=[]})}h6({...Q,targetNodes:J.childs})})}function e(Q){let{parent:Z,nodes:X,nodeIndex:q,bpmnType:Y,type:J,name:W,outside:H,location:V,definitions:K,attrs:z}=Q,G=Z.childs.filter((A)=>A.type===`v${J}`).length;if(j("bpmn"))x.info(`[VIRTUAL] ${J.toUpperCase()} → ${Y}: ${Z.indexKey}/_${J}${G}`);let _={indexKey:`${Z.indexKey}/_${J}${G}`,pathKey:`${Z.pathKey}._${J}${G}`,type:`v${J}`,name:W,bpmn:{edges:[],outside:[],type:Y,width:36,height:36,fill:"#c8e6c9",stroke:"#205022",definitions:K,attrs:z},virtual:!0,childs:[]};return Z.childs.splice(V||0,0,_),X.push(_),q[_.indexKey]=_,_}function g6(Q){let{targetNode:Z,targetFlowElementsContainer:X,targetPlaneElement:q,moddle:Y,elementIndex:J,nodeIndex:W,diagrams:H,nodes:V}=Q;J5(Q),H5(Q),W5(Q),V5(Q)}function J5(Q){let{targetNode:Z,targetFlowElementsContainer:X,targetPlaneElement:q,moddle:Y,elementIndex:J,nodeIndex:W,nodes:H}=Q,V=X.get("flowElements");if(X.$nodes=X.$nodes||[],j("bpmn"))x.info(`[BPMN] Creating elements for: ${Z.indexKey} (${Z.childs.length} children)`);Z.childs.forEach((K)=>{let z=Y.create(K.bpmn.type,{id:`node.${K.pathKey}`,name:K.definition?.title||K.name});if(J[z.id]=z,z.$isNode=!0,z.$node=K,K.$flow=z,X.$nodes.push(z),V.push(z),K.bpmn.type==="bpmn:CallActivity"&&K.context?.lib){if(z.calledElement=K.context.lib.name,j("bpmn"))x.info(`[CREATED] ${K.bpmn.type} (chip!): ${z.id} → ${z.calledElement}`)}else if(j("bpmn"))x.info(`[CREATED] ${K.bpmn.type}: ${z.id}${K.virtual?" (virtual)":""}`);if(K.bpmn.attrs)Object.keys(K.bpmn.attrs).forEach((_)=>{if(_==="attachedToRef")z.set(_,K.bpmn.attrs[_].$flow)});if(K.bpmn.definitions){let G=K.bpmn.definitions.map((_)=>{let A=Y.create(_.type);return Object.keys(_.attrs||{}).forEach((M)=>{A.set(M,_.attrs[M])}),A});z.eventDefinitions=G}if(K.bpmn.loopCharacteristics&&K.bpmn.type==="bpmn:SubProcess"){if(z.loopCharacteristics=Y.create("bpmn:StandardLoopCharacteristics"),j("bpmn"))x.info(`[LOOP] Added loop marker to: ${z.id} (${K.type})`)}})}function H5(Q){let{targetNode:Z,targetFlowElementsContainer:X,targetPlaneElement:q,moddle:Y,elementIndex:J,nodeIndex:W}=Q,H=X.get("flowElements");X.$edges=X.$edges||[],Z.childs.forEach((V)=>{V.bpmn.edges.forEach((z)=>{let G=V,_=W[z.to],A=`edge.${G.pathKey}_${_.pathKey}`;if(J[A])return;let U=J[`node.${G.pathKey}`],M=J[`node.${_.pathKey}`],$=Y.create(z.type,{id:A,sourceRef:U,targetRef:M});J[$.id]=$,$.$is_edge=!0,U.get("outgoing").push($),M.get("incoming").push($),X.$edges.push({from:U,to:M,flow:$}),H.push($)})})}function W5(Q){let{targetNode:Z,targetFlowElementsContainer:X,targetPlaneElement:q,moddle:Y,elementIndex:J,nodeIndex:W}=Q,H=120,V=80,K=160,z=160,G=new R9.graphlib.Graph;G.setDefaultEdgeLabel(()=>({})),G.setGraph({rankdir:"TB",nodesep:120,ranksep:80,xranker:"longest-path"}),X.$nodes.forEach((_)=>{G.setNode(_.id,{width:_.$node?.bpmn.width||120,height:_.$node?.bpmn.height||80,label:_.id})}),X.$edges.forEach((_)=>{G.setEdge(_.from.id,_.to.id)}),R9.layout(G),X.$nodes.forEach((_)=>{let A=G.node(_.id),U=A.width,M=A.height,$=Y.create("bpmndi:BPMNShape",{id:`shape.${_.id}`,bpmnElement:_,bounds:Y.create("dc:Bounds",{x:160+A.x-A.width/2,y:160+A.y-A.height/2,width:U,height:M}),label:Y.create("bpmndi:BPMNLabel")});if(_.$node.bpmn.fill)$.set("bioc:fill",_.$node.bpmn.fill);if(_.$node.bpmn.stroke)$.set("bioc:stroke",_.$node.bpmn.stroke);q.get("planeElement").push($)}),X.$edges.forEach((_)=>{let A=G.edge(_.from.id,_.to.id),U=Y.create("bpmndi:BPMNEdge",{id:`edge.${_.from.id}_${_.to.id}`,bpmnElement:_.flow,label:Y.create("bpmndi:BPMNLabel")});A.points.forEach(($)=>{let R=Y.create("dc:Point",{x:160+$.x,y:160+$.y});U.get("waypoint").push(R)}),q.get("planeElement").push(U)})}function V5(Q){let{targetNode:Z,targetFlowElementsContainer:X,targetPlaneElement:q,moddle:Y,elementIndex:J,nodeIndex:W,diagrams:H}=Q;Z.childs.filter((K)=>K.bpmn.type==="bpmn:SubProcess").forEach((K)=>{let z=J[`node.${K.pathKey}`],G=Y.create("bpmndi:BPMNDiagram",{id:`diagram_${K.pathKey}`});J[G.id]=G,H.push(G);let _=Y.create("bpmndi:BPMNPlane",{id:`plane_${K.pathKey}`});J[_.id]=_,G.plane=_,_.bpmnElement=z,g6({...Q,targetNode:K,targetFlowElementsContainer:z,targetPlaneElement:_})})}async function K5(Q){let Z=Q.root,X=Z.context.index,q=Object.keys(X).map((K)=>X[K]);I9({nodes:q,nodeIndex:X,root:Z}),h6({nodes:q,nodeIndex:X,root:Z});let Y=void 0,J=new B9({atom:x6}),W={},H=J.create("bpmn:Definitions",{id:"definitions_0"});W[H.id]=H;for await(let K of Z.childs){let z=H.get("rootElements"),G=H.get("diagrams"),_=J.create("bpmn:Process",{id:`process_${K.pathKey}`,name:K.name,documentation:[J.create("bpmn:Documentation",{text:`Workflow - ${K.name}`})]});W[_.id]=_,_.isExecutable=!0,z.push(_);let A=J.create("bpmndi:BPMNDiagram",{id:`diagram_${K.pathKey}`});W[A.id]=A,G.push(A);let U=J.create("bpmndi:BPMNPlane",{id:`plane_${K.pathKey}`});W[U.id]=U,A.plane=U,U.bpmnElement=_,g6({targetNode:K,targetFlowElementsContainer:_,targetPlaneElement:U,moddle:J,elementIndex:W,nodeIndex:X,nodes:q,diagrams:G})}let V=await J.toXML(H,{format:!0});return{diagramXML:Y||V.xml}}async function _5(Q){let{root:Z,flowName:X}=Q,q=f6(Z),Y=q.childs.find((T)=>T.name===X);if(!Y)throw Error(`Flow "${X}" not found`);let J={...q,childs:[Y]},W=J.context.index,H=Object.keys(W).map((T)=>W[T]);I9({nodes:H,nodeIndex:W,root:J}),h6({nodes:H,nodeIndex:W,root:J});let V=new B9({atom:x6}),K={},z=V.create("bpmn:Definitions",{id:`definitions_${X}`});K[z.id]=z;let G=z.get("rootElements"),_=z.get("diagrams"),A=V.create("bpmn:Process",{id:`process_${Y.pathKey}`,name:Y.name,documentation:[V.create("bpmn:Documentation",{text:`Workflow - ${Y.name}`})]});K[A.id]=A,A.isExecutable=!0,G.push(A);let U=V.create("bpmndi:BPMNDiagram",{id:`diagram_${Y.pathKey}`});K[U.id]=U,_.push(U);let M=V.create("bpmndi:BPMNPlane",{id:`plane_${Y.pathKey}`});return K[M.id]=M,U.plane=M,M.bpmnElement=A,g6({targetNode:Y,targetFlowElementsContainer:A,targetPlaneElement:M,moddle:V,elementIndex:K,nodeIndex:W,nodes:H,diagrams:_}),{diagramXML:(await V.toXML(z,{format:!0})).xml,flowName:Y.name}}async function j8(Q={}){return await K5(f6(Q))}async function L9(Q={}){let Z=f6(Q),{root:X}=Z,q=[];for(let Y of X.childs){let J=await _5({root:X,flowName:Y.name});q.push(J)}return q}import o2 from"@fnet/config";import t2 from"@flownet/lib-parse-imports-js";class C8 extends SyntaxError{constructor(Q,Z,X,q){super(Q);this.expected=Z,this.found=X,this.location=q,this.name="SyntaxError"}format(Q){let Z="Error: "+this.message;if(this.location){let X=null,q=Q.find((H)=>H.source===this.location.source);if(q)X=q.text.split(/\r\n|\n|\r/g);let Y=this.location.start,J=this.location.source&&typeof this.location.source.offset==="function"?this.location.source.offset(Y):Y,W=this.location.source+":"+J.line+":"+J.column;if(X){let H=this.location.end,V="".padEnd(J.line.toString().length," "),K=X[Y.line-1],G=(Y.line===H.line?H.column:K.length+1)-Y.column||1;Z+=`
5
5
  --> `+W+`
6
6
  `+V+` |
7
7
  `+J.line+" | "+K+`
8
8
  `+V+" | "+"".padEnd(Y.column-1," ")+"".padEnd(G,"^")}else Z+=`
9
- at `+W}return Z}static buildMessage(Q,Z){function X(G){return G.codePointAt(0).toString(16).toUpperCase()}let q=Object.prototype.hasOwnProperty.call(RegExp.prototype,"unicode")?new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]","gu"):null;function Y(G){if(q)return G.replace(q,(_)=>"\\u{"+X(_)+"}");return G}function J(G){return Y(G.replace(/\\/g,"\\\\").replace(/"/g,"\\\"").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(_)=>"\\x0"+X(_)).replace(/[\x10-\x1F\x7F-\x9F]/g,(_)=>"\\x"+X(_)))}function W(G){return Y(G.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(_)=>"\\x0"+X(_)).replace(/[\x10-\x1F\x7F-\x9F]/g,(_)=>"\\x"+X(_)))}let H={literal(G){return'"'+J(G.text)+'"'},class(G){let _=G.parts.map((A)=>Array.isArray(A)?W(A[0])+"-"+W(A[1]):W(A));return"["+(G.inverted?"^":"")+_.join("")+"]"+(G.unicode?"u":"")},any(){return"any character"},end(){return"end of input"},other(G){return G.description}};function V(G){return H[G.type](G)}function K(G){let _=G.map(V);if(_.sort(),_.length>0){let A=1;for(let U=1;U<_.length;U++)if(_[U-1]!==_[U])_[A]=_[U],A++;_.length=A}switch(_.length){case 1:return _[0];case 2:return _[0]+" or "+_[1];default:return _.slice(0,-1).join(", ")+", or "+_[_.length-1]}}function z(G){return G?'"'+J(G)+'"':"end of input"}return"Expected "+K(Q)+" but "+z(Z)+" found."}}function I9(Q,Z){Z=Z!==void 0?Z:{};let X={},q=Z.grammarSource,Y={Start:b7},J=b7,W="::",H=/^[a-z]/,V=/^[a-z0-9_\-]/,K=/^[^s]/,z=/^[sS]/,G=MZ("::",!1),_=M8([["a","z"]],!1,!1,!1),A=M8([["a","z"],["0","9"],"_","-"],!1,!1,!1),U=M8(["s"],!0,!1,!1),M=M8(["s","S"],!1,!1,!1);function $(I){return jZ(I)}function R(I,L){let w=I+"::"+L,d=TZ(I,L,w);try{let u=parse(L);if(u)d.next=u}catch(u){}return d}let O=Z.peg$currPos|0,B=O,T=[{line:1,column:1}],S=O,y=Z.peg$maxFailExpected||[],v=Z.peg$silentFails|0,J0;if(Z.startRule){if(!(Z.startRule in Y))throw Error(`Can't start parsing from rule "`+Z.startRule+'".');J=Y[Z.startRule]}function H0(){return Q.substring(B,O)}function P7(){return B}function w1(){return{source:q,start:B,end:O}}function S1(){return p0(B,O)}function N1(I,L){throw L=L!==void 0?L:p0(B,O),D7([RZ(I)],Q.substring(B,O),L)}function P1(I,L){throw L=L!==void 0?L:p0(B,O),BZ(I,L)}function OZ(I=O){let L=Q.codePointAt(I);if(L===void 0)return"";return String.fromCodePoint(L)}function MZ(I,L){return{type:"literal",text:I,ignoreCase:L}}function M8(I,L,w,d){return{type:"class",parts:I,inverted:L,ignoreCase:w,unicode:d}}function k1(){return{type:"any"}}function AZ(){return{type:"end"}}function RZ(I){return{type:"other",description:I}}function k7(I){let L=T[I],w;if(L)return L;else{if(I>=T.length)w=T.length-1;else{w=I;while(!T[--w]);}L=T[w],L={line:L.line,column:L.column};while(w<I){if(Q.charCodeAt(w)===10)L.line++,L.column=1;else L.column++;w++}return T[I]=L,L}}function p0(I,L,w){let d=k7(I),u=k7(L),a0={source:q,start:{offset:I,line:d.line,column:d.column},end:{offset:L,line:u.line,column:u.column}};if(w&&q&&typeof q.offset==="function")a0.start=q.offset(a0.start),a0.end=q.offset(a0.end);return a0}function C0(I){if(O<S)return;if(O>S)S=O,y=[];y.push(I)}function BZ(I,L){return new C8(I,null,null,L)}function D7(I,L,w){return new C8(C8.buildMessage(I,L),I,L,w)}function b7(){let I,L;if(I=O,L=IZ(),L!==X)B=I,L=$(L);return I=L,I}function IZ(){let I,L,w,d;if(I=O,L=LZ(),L!==X){if(Q.substr(O,2)===W)w=W,O+=2;else if(w=X,v===0)C0(G);if(w!==X)if(d=FZ(),d!==X)B=I,I=R(L,d);else O=I,I=X;else O=I,I=X}else O=I,I=X;return I}function LZ(){let I,L,w,d,u;if(I=O,L=O,w=Q.charAt(O),H.test(w))O++;else if(w=X,v===0)C0(_);if(w!==X){if(d=[],u=Q.charAt(O),V.test(u))O++;else if(u=X,v===0)C0(A);while(u!==X)if(d.push(u),u=Q.charAt(O),V.test(u))O++;else if(u=X,v===0)C0(A);w=[w,d],L=w}else O=L,L=X;if(L!==X)I=Q.substring(I,O);else I=L;return I}function FZ(){let I,L,w,d,u;if(I=O,L=O,w=Q.charAt(O),K.test(w))O++;else if(w=X,v===0)C0(U);if(w!==X){if(d=[],u=Q.charAt(O),z.test(u))O++;else if(u=X,v===0)C0(M);while(u!==X)if(d.push(u),u=Q.charAt(O),z.test(u))O++;else if(u=X,v===0)C0(M);w=[w,d],L=w}else O=L,L=X;if(L!==X)I=Q.substring(I,O);else I=L;return I}function TZ(I,L,w){return{processor:I,statement:L,expression:w}}function v7(I){if(!I)return[];let L=I.next?v7(I.next):[];return L.push(I.processor),L}function jZ(I){if(!I)return null;let L=I;while(L&&L.next)L=L.next;let w={processor:I.processor,statement:I.statement,expression:I.expression,process:{statement:L.statement,order:v7(I)}};if(I.next)w.next=I.next;return w}J0=J();let t8=J0!==X&&O===Q.length;function y7(){if(J0!==X&&O<Q.length)C0(AZ());throw D7(y,S<Q.length?OZ(S):null,S<Q.length?p0(S,S+1):p0(S,S))}if(Z.peg$library)return{peg$result:J0,peg$currPos:O,peg$FAILED:X,peg$maxFailExpected:y,peg$maxFailPos:S,peg$success:t8,peg$throw:t8?void 0:y7};if(t8)return J0;else y7()}function P0(Q,Z=!1){if(typeof Q!=="string")return null;let X=Q.match(/^([a-z][a-z0-9_-]*)::/);if(!X)return null;let q=X[1];if(!Z)return q;let Y=Q.slice(Q.indexOf("::")+2);return{processor:q,statement:Y}}function F9({expression:Q,depth:Z=5}){if(Z<=0)return null;let X=/^([a-z][a-z0-9_-]*)::([^\s][\s\S]*)$/,q;if(X.test(Q))q=Q.match(X);else return null;let Y=q[1],J=q[2],W=F9({expression:J,depth:Z-1}),H={processor:Y,statement:J,expression:Q};if(W)H.next=W;return H}function T9(Q){if(!Q)return[];let Z=T9(Q.next);return Z.push(Q.processor),Z}function L9({expression:Q}){let Z=F9({expression:Q});if(!Z)return null;let X=Z;while(X&&X.next)X=X.next;let q={processor:Z.processor,statement:Z.statement,expression:Z.expression,process:{statement:X.statement,order:T9(Z)}};if(Z.next)q.next=Z.next;return q}function z5(Q,Z){let X=Q.statement,q=/([a-z][a-z0-9_-]*)::([a-zA-Z_$][a-zA-Z0-9_$]*)/g;return X=X.replace(q,(Y,J,W)=>{if(Z[J]){let H=Z[J];if(typeof H==="function")return H(W);if(typeof H==="string")return H.replace(/\{stmt\}/g,W)}return Y}),X}function m6({expression:Q,useGrammar:Z=!0,multiline:X=!0,transform:q}){if(typeof Q!=="string")Q=String(Q);if(X)Q=Q.replace(/\n+$/,"");let Y;if(Z)try{Y=I9(Q)}catch(J){Y=L9({expression:Q})}else Y=L9({expression:Q});if(!Y)return null;if(q){if(q[Y.processor]&&!Y.next){let J=q[Y.processor];if(typeof J==="function")Y.transformed=J(Y.statement);else if(typeof J==="string")Y.transformed=J.replace(/\{stmt\}/g,Y.statement)}else if(Y.statement)Y.transformed=z5(Y,q)}return Y}import e2 from"@fnet/yaml";import Q1 from"chalk";var i9=S5(u9(),1);var o0=(Q)=>{if(typeof Q!=="string")throw TypeError("invalid pattern");if(Q.length>65536)throw TypeError("pattern is too long")};var B5={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},t0=(Q)=>Q.replace(/[[\]\\-]/g,"\\$&"),I5=(Q)=>Q.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),f9=(Q)=>Q.join(""),h9=(Q,Z)=>{let X=Z;if(Q.charAt(X)!=="[")throw Error("not in a brace expression");let q=[],Y=[],J=X+1,W=!1,H=!1,V=!1,K=!1,z=X,G="";Q:while(J<Q.length){let M=Q.charAt(J);if((M==="!"||M==="^")&&J===X+1){K=!0,J++;continue}if(M==="]"&&W&&!V){z=J+1;break}if(W=!0,M==="\\"){if(!V){V=!0,J++;continue}}if(M==="["&&!V){for(let[$,[R,O,B]]of Object.entries(B5))if(Q.startsWith($,J)){if(G)return["$.",!1,Q.length-X,!0];if(J+=$.length,B)Y.push(R);else q.push(R);H=H||O;continue Q}}if(V=!1,G){if(M>G)q.push(t0(G)+"-"+t0(M));else if(M===G)q.push(t0(M));G="",J++;continue}if(Q.startsWith("-]",J+1)){q.push(t0(M+"-")),J+=2;continue}if(Q.startsWith("-",J+1)){G=M,J+=2;continue}q.push(t0(M)),J++}if(z<J)return["",!1,0,!1];if(!q.length&&!Y.length)return["$.",!1,Q.length-X,!0];if(Y.length===0&&q.length===1&&/^\\?.$/.test(q[0])&&!K){let M=q[0].length===2?q[0].slice(-1):q[0];return[I5(M),!1,z-X,!1]}let _="["+(K?"^":"")+f9(q)+"]",A="["+(K?"":"^")+f9(Y)+"]";return[q.length&&Y.length?"("+_+"|"+A+")":q.length?_:A,H,z-X,!0]};var G0=(Q,{windowsPathsNoEscape:Z=!1}={})=>{return Z?Q.replace(/\[([^\/\\])\]/g,"$1"):Q.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")};var L5=new Set(["!","?","+","*","@"]),g9=(Q)=>L5.has(Q),F5="(?!(?:^|/)\\.\\.?(?:$|/))",w8="(?!\\.)",T5=new Set(["[","."]),j5=new Set(["..","."]),C5=new Set("().*{}+?[]^$\\!"),w5=(Q)=>Q.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),d6="[^/]",m9=d6+"*?",l9=d6+"+?";class n{type;#Z;#Q;#X=!1;#q=[];#J;#L;#I;#K=!1;#G;#V;#z=!1;constructor(Q,Z,X={}){if(this.type=Q,Q)this.#Q=!0;if(this.#J=Z,this.#Z=this.#J?this.#J.#Z:this,this.#G=this.#Z===this?X:this.#Z.#G,this.#I=this.#Z===this?[]:this.#Z.#I,Q==="!"&&!this.#Z.#K)this.#I.push(this);this.#L=this.#J?this.#J.#q.length:0}get hasMagic(){if(this.#Q!==void 0)return this.#Q;for(let Q of this.#q){if(typeof Q==="string")continue;if(Q.type||Q.hasMagic)return this.#Q=!0}return this.#Q}toString(){if(this.#V!==void 0)return this.#V;if(!this.type)return this.#V=this.#q.map((Q)=>String(Q)).join("");else return this.#V=this.type+"("+this.#q.map((Q)=>String(Q)).join("|")+")"}#Y(){if(this!==this.#Z)throw Error("should only call on root");if(this.#K)return this;this.toString(),this.#K=!0;let Q;while(Q=this.#I.pop()){if(Q.type!=="!")continue;let Z=Q,X=Z.#J;while(X){for(let q=Z.#L+1;!X.type&&q<X.#q.length;q++)for(let Y of Q.#q){if(typeof Y==="string")throw Error("string part in extglob AST??");Y.copyIn(X.#q[q])}Z=X,X=Z.#J}}return this}push(...Q){for(let Z of Q){if(Z==="")continue;if(typeof Z!=="string"&&!(Z instanceof n&&Z.#J===this))throw Error("invalid part: "+Z);this.#q.push(Z)}}toJSON(){let Q=this.type===null?this.#q.slice().map((Z)=>typeof Z==="string"?Z:Z.toJSON()):[this.type,...this.#q.map((Z)=>Z.toJSON())];if(this.isStart()&&!this.type)Q.unshift([]);if(this.isEnd()&&(this===this.#Z||this.#Z.#K&&this.#J?.type==="!"))Q.push({});return Q}isStart(){if(this.#Z===this)return!0;if(!this.#J?.isStart())return!1;if(this.#L===0)return!0;let Q=this.#J;for(let Z=0;Z<this.#L;Z++){let X=Q.#q[Z];if(!(X instanceof n&&X.type==="!"))return!1}return!0}isEnd(){if(this.#Z===this)return!0;if(this.#J?.type==="!")return!0;if(!this.#J?.isEnd())return!1;if(!this.type)return this.#J?.isEnd();let Q=this.#J?this.#J.#q.length:0;return this.#L===Q-1}copyIn(Q){if(typeof Q==="string")this.push(Q);else this.push(Q.clone(this))}clone(Q){let Z=new n(this.type,Q);for(let X of this.#q)Z.copyIn(X);return Z}static#M(Q,Z,X,q){let Y=!1,J=!1,W=-1,H=!1;if(Z.type===null){let _=X,A="";while(_<Q.length){let U=Q.charAt(_++);if(Y||U==="\\"){Y=!Y,A+=U;continue}if(J){if(_===W+1){if(U==="^"||U==="!")H=!0}else if(U==="]"&&!(_===W+2&&H))J=!1;A+=U;continue}else if(U==="["){J=!0,W=_,H=!1,A+=U;continue}if(!q.noext&&g9(U)&&Q.charAt(_)==="("){Z.push(A),A="";let M=new n(U,Z);_=n.#M(Q,M,_,q),Z.push(M);continue}A+=U}return Z.push(A),_}let V=X+1,K=new n(null,Z),z=[],G="";while(V<Q.length){let _=Q.charAt(V++);if(Y||_==="\\"){Y=!Y,G+=_;continue}if(J){if(V===W+1){if(_==="^"||_==="!")H=!0}else if(_==="]"&&!(V===W+2&&H))J=!1;G+=_;continue}else if(_==="["){J=!0,W=V,H=!1,G+=_;continue}if(g9(_)&&Q.charAt(V)==="("){K.push(G),G="";let A=new n(_,K);K.push(A),V=n.#M(Q,A,V,q);continue}if(_==="|"){K.push(G),G="",z.push(K),K=new n(null,Z);continue}if(_===")"){if(G===""&&Z.#q.length===0)Z.#z=!0;return K.push(G),G="",Z.push(...z,K),V}G+=_}return Z.type=null,Z.#Q=void 0,Z.#q=[Q.substring(X-1)],V}static fromGlob(Q,Z={}){let X=new n(null,void 0,Z);return n.#M(Q,X,0,Z),X}toMMPattern(){if(this!==this.#Z)return this.#Z.toMMPattern();let Q=this.toString(),[Z,X,q,Y]=this.toRegExpSource();if(!(q||this.#Q||this.#G.nocase&&!this.#G.nocaseMagicOnly&&Q.toUpperCase()!==Q.toLowerCase()))return X;let W=(this.#G.nocase?"i":"")+(Y?"u":"");return Object.assign(new RegExp(`^${Z}$`,W),{_src:Z,_glob:Q})}get options(){return this.#G}toRegExpSource(Q){let Z=Q??!!this.#G.dot;if(this.#Z===this)this.#Y();if(!this.type){let H=this.isStart()&&this.isEnd(),V=this.#q.map((_)=>{let[A,U,M,$]=typeof _==="string"?n.#$(_,this.#Q,H):_.toRegExpSource(Q);return this.#Q=this.#Q||M,this.#X=this.#X||$,A}).join(""),K="";if(this.isStart()){if(typeof this.#q[0]==="string"){if(!(this.#q.length===1&&j5.has(this.#q[0]))){let A=T5,U=Z&&A.has(V.charAt(0))||V.startsWith("\\.")&&A.has(V.charAt(2))||V.startsWith("\\.\\.")&&A.has(V.charAt(4)),M=!Z&&!Q&&A.has(V.charAt(0));K=U?F5:M?w8:""}}}let z="";if(this.isEnd()&&this.#Z.#K&&this.#J?.type==="!")z="(?:$|\\/)";return[K+V+z,G0(V),this.#Q=!!this.#Q,this.#X]}let X=this.type==="*"||this.type==="+",q=this.type==="!"?"(?:(?!(?:":"(?:",Y=this.#O(Z);if(this.isStart()&&this.isEnd()&&!Y&&this.type!=="!"){let H=this.toString();return this.#q=[H],this.type=null,this.#Q=void 0,[H,G0(this.toString()),!1,!1]}let J=!X||Q||Z||!w8?"":this.#O(!0);if(J===Y)J="";if(J)Y=`(?:${Y})(?:${J})*?`;let W="";if(this.type==="!"&&this.#z)W=(this.isStart()&&!Z?w8:"")+l9;else{let H=this.type==="!"?"))"+(this.isStart()&&!Z&&!Q?w8:"")+m9+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&J?")":this.type==="*"&&J?")?":`)${this.type}`;W=q+Y+H}return[W,G0(Y),this.#Q=!!this.#Q,this.#X]}#O(Q){return this.#q.map((Z)=>{if(typeof Z==="string")throw Error("string type in extglob ast??");let[X,q,Y,J]=Z.toRegExpSource(Q);return this.#X=this.#X||J,X}).filter((Z)=>!(this.isStart()&&this.isEnd())||!!Z).join("|")}static#$(Q,Z,X=!1){let q=!1,Y="",J=!1;for(let W=0;W<Q.length;W++){let H=Q.charAt(W);if(q){q=!1,Y+=(C5.has(H)?"\\":"")+H;continue}if(H==="\\"){if(W===Q.length-1)Y+="\\\\";else q=!0;continue}if(H==="["){let[V,K,z,G]=h9(Q,W);if(z){Y+=V,J=J||K,W+=z-1,Z=Z||G;continue}}if(H==="*"){if(X&&Q==="*")Y+=l9;else Y+=m9;Z=!0;continue}if(H==="?"){Y+=d6,Z=!0;continue}Y+=w5(H)}return[Y,G0(Q),!!Z,J]}}var g0=(Q,{windowsPathsNoEscape:Z=!1}={})=>{return Z?Q.replace(/[?*()[\]]/g,"[$&]"):Q.replace(/[?*()[\]\\]/g,"\\$&")};var Z0=(Q,Z,X={})=>{if(o0(Z),!X.nocomment&&Z.charAt(0)==="#")return!1;return new V0(Z,X).match(Q)},N5=/^\*+([^+@!?\*\[\(]*)$/,P5=(Q)=>(Z)=>!Z.startsWith(".")&&Z.endsWith(Q),k5=(Q)=>(Z)=>Z.endsWith(Q),D5=(Q)=>{return Q=Q.toLowerCase(),(Z)=>!Z.startsWith(".")&&Z.toLowerCase().endsWith(Q)},b5=(Q)=>{return Q=Q.toLowerCase(),(Z)=>Z.toLowerCase().endsWith(Q)},v5=/^\*+\.\*+$/,y5=(Q)=>!Q.startsWith(".")&&Q.includes("."),E5=(Q)=>Q!=="."&&Q!==".."&&Q.includes("."),x5=/^\.\*+$/,u5=(Q)=>Q!=="."&&Q!==".."&&Q.startsWith("."),f5=/^\*+$/,h5=(Q)=>Q.length!==0&&!Q.startsWith("."),g5=(Q)=>Q.length!==0&&Q!=="."&&Q!=="..",m5=/^\?+([^+@!?\*\[\(]*)?$/,l5=([Q,Z=""])=>{let X=p9([Q]);if(!Z)return X;return Z=Z.toLowerCase(),(q)=>X(q)&&q.toLowerCase().endsWith(Z)},c5=([Q,Z=""])=>{let X=a9([Q]);if(!Z)return X;return Z=Z.toLowerCase(),(q)=>X(q)&&q.toLowerCase().endsWith(Z)},d5=([Q,Z=""])=>{let X=a9([Q]);return!Z?X:(q)=>X(q)&&q.endsWith(Z)},i5=([Q,Z=""])=>{let X=p9([Q]);return!Z?X:(q)=>X(q)&&q.endsWith(Z)},p9=([Q])=>{let Z=Q.length;return(X)=>X.length===Z&&!X.startsWith(".")},a9=([Q])=>{let Z=Q.length;return(X)=>X.length===Z&&X!=="."&&X!==".."},n9=typeof process==="object"&&process?typeof process.env==="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",c9={win32:{sep:"\\"},posix:{sep:"/"}},p5=n9==="win32"?c9.win32.sep:c9.posix.sep;Z0.sep=p5;var r=Symbol("globstar **");Z0.GLOBSTAR=r;var a5="[^/]",n5=a5+"*?",r5="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",s5="(?:(?!(?:\\/|^)\\.).)*?",o5=(Q,Z={})=>(X)=>Z0(X,Q,Z);Z0.filter=o5;var W0=(Q,Z={})=>Object.assign({},Q,Z),t5=(Q)=>{if(!Q||typeof Q!=="object"||!Object.keys(Q).length)return Z0;let Z=Z0;return Object.assign((q,Y,J={})=>Z(q,Y,W0(Q,J)),{Minimatch:class extends Z.Minimatch{constructor(Y,J={}){super(Y,W0(Q,J))}static defaults(Y){return Z.defaults(W0(Q,Y)).Minimatch}},AST:class extends Z.AST{constructor(Y,J,W={}){super(Y,J,W0(Q,W))}static fromGlob(Y,J={}){return Z.AST.fromGlob(Y,W0(Q,J))}},unescape:(q,Y={})=>Z.unescape(q,W0(Q,Y)),escape:(q,Y={})=>Z.escape(q,W0(Q,Y)),filter:(q,Y={})=>Z.filter(q,W0(Q,Y)),defaults:(q)=>Z.defaults(W0(Q,q)),makeRe:(q,Y={})=>Z.makeRe(q,W0(Q,Y)),braceExpand:(q,Y={})=>Z.braceExpand(q,W0(Q,Y)),match:(q,Y,J={})=>Z.match(q,Y,W0(Q,J)),sep:Z.sep,GLOBSTAR:r})};Z0.defaults=t5;var r9=(Q,Z={})=>{if(o0(Q),Z.nobrace||!/\{(?:(?!\{).)*\}/.test(Q))return[Q];return i9.default(Q)};Z0.braceExpand=r9;var e5=(Q,Z={})=>new V0(Q,Z).makeRe();Z0.makeRe=e5;var Q4=(Q,Z,X={})=>{let q=new V0(Z,X);if(Q=Q.filter((Y)=>q.match(Y)),q.options.nonull&&!Q.length)Q.push(Z);return Q};Z0.match=Q4;var d9=/[?*]|[+@!]\(.*?\)|\[|\]/,Z4=(Q)=>Q.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");class V0{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(Q,Z={}){if(o0(Q),Z=Z||{},this.options=Z,this.pattern=Q,this.platform=Z.platform||n9,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!Z.windowsPathsNoEscape||Z.allowWindowsEscape===!1,this.windowsPathsNoEscape)this.pattern=this.pattern.replace(/\\/g,"/");this.preserveMultipleSlashes=!!Z.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!Z.nonegate,this.comment=!1,this.empty=!1,this.partial=!!Z.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=Z.windowsNoMagicRoot!==void 0?Z.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let Q of this.set)for(let Z of Q)if(typeof Z!=="string")return!0;return!1}debug(...Q){}make(){let Q=this.pattern,Z=this.options;if(!Z.nocomment&&Q.charAt(0)==="#"){this.comment=!0;return}if(!Q){this.empty=!0;return}if(this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],Z.debug)this.debug=(...Y)=>console.error(...Y);this.debug(this.pattern,this.globSet);let X=this.globSet.map((Y)=>this.slashSplit(Y));this.globParts=this.preprocess(X),this.debug(this.pattern,this.globParts);let q=this.globParts.map((Y,J,W)=>{if(this.isWindows&&this.windowsNoMagicRoot){let H=Y[0]===""&&Y[1]===""&&(Y[2]==="?"||!d9.test(Y[2]))&&!d9.test(Y[3]),V=/^[a-z]:/i.test(Y[0]);if(H)return[...Y.slice(0,4),...Y.slice(4).map((K)=>this.parse(K))];else if(V)return[Y[0],...Y.slice(1).map((K)=>this.parse(K))]}return Y.map((H)=>this.parse(H))});if(this.debug(this.pattern,q),this.set=q.filter((Y)=>Y.indexOf(!1)===-1),this.isWindows)for(let Y=0;Y<this.set.length;Y++){let J=this.set[Y];if(J[0]===""&&J[1]===""&&this.globParts[Y][2]==="?"&&typeof J[3]==="string"&&/^[a-z]:$/i.test(J[3]))J[2]="?"}this.debug(this.pattern,this.set)}preprocess(Q){if(this.options.noglobstar){for(let X=0;X<Q.length;X++)for(let q=0;q<Q[X].length;q++)if(Q[X][q]==="**")Q[X][q]="*"}let{optimizationLevel:Z=1}=this.options;if(Z>=2)Q=this.firstPhasePreProcess(Q),Q=this.secondPhasePreProcess(Q);else if(Z>=1)Q=this.levelOneOptimize(Q);else Q=this.adjascentGlobstarOptimize(Q);return Q}adjascentGlobstarOptimize(Q){return Q.map((Z)=>{let X=-1;while((X=Z.indexOf("**",X+1))!==-1){let q=X;while(Z[q+1]==="**")q++;if(q!==X)Z.splice(X,q-X)}return Z})}levelOneOptimize(Q){return Q.map((Z)=>{return Z=Z.reduce((X,q)=>{let Y=X[X.length-1];if(q==="**"&&Y==="**")return X;if(q===".."){if(Y&&Y!==".."&&Y!=="."&&Y!=="**")return X.pop(),X}return X.push(q),X},[]),Z.length===0?[""]:Z})}levelTwoFileOptimize(Q){if(!Array.isArray(Q))Q=this.slashSplit(Q);let Z=!1;do{if(Z=!1,!this.preserveMultipleSlashes){for(let q=1;q<Q.length-1;q++){let Y=Q[q];if(q===1&&Y===""&&Q[0]==="")continue;if(Y==="."||Y==="")Z=!0,Q.splice(q,1),q--}if(Q[0]==="."&&Q.length===2&&(Q[1]==="."||Q[1]===""))Z=!0,Q.pop()}let X=0;while((X=Q.indexOf("..",X+1))!==-1){let q=Q[X-1];if(q&&q!=="."&&q!==".."&&q!=="**")Z=!0,Q.splice(X-1,2),X-=2}}while(Z);return Q.length===0?[""]:Q}firstPhasePreProcess(Q){let Z=!1;do{Z=!1;for(let X of Q){let q=-1;while((q=X.indexOf("**",q+1))!==-1){let J=q;while(X[J+1]==="**")J++;if(J>q)X.splice(q+1,J-q);let W=X[q+1],H=X[q+2],V=X[q+3];if(W!=="..")continue;if(!H||H==="."||H===".."||!V||V==="."||V==="..")continue;Z=!0,X.splice(q,1);let K=X.slice(0);K[q]="**",Q.push(K),q--}if(!this.preserveMultipleSlashes){for(let J=1;J<X.length-1;J++){let W=X[J];if(J===1&&W===""&&X[0]==="")continue;if(W==="."||W==="")Z=!0,X.splice(J,1),J--}if(X[0]==="."&&X.length===2&&(X[1]==="."||X[1]===""))Z=!0,X.pop()}let Y=0;while((Y=X.indexOf("..",Y+1))!==-1){let J=X[Y-1];if(J&&J!=="."&&J!==".."&&J!=="**"){Z=!0;let H=Y===1&&X[Y+1]==="**"?["."]:[];if(X.splice(Y-1,2,...H),X.length===0)X.push("");Y-=2}}}}while(Z);return Q}secondPhasePreProcess(Q){for(let Z=0;Z<Q.length-1;Z++)for(let X=Z+1;X<Q.length;X++){let q=this.partsMatch(Q[Z],Q[X],!this.preserveMultipleSlashes);if(q){Q[Z]=[],Q[X]=q;break}}return Q.filter((Z)=>Z.length)}partsMatch(Q,Z,X=!1){let q=0,Y=0,J=[],W="";while(q<Q.length&&Y<Z.length)if(Q[q]===Z[Y])J.push(W==="b"?Z[Y]:Q[q]),q++,Y++;else if(X&&Q[q]==="**"&&Z[Y]===Q[q+1])J.push(Q[q]),q++;else if(X&&Z[Y]==="**"&&Q[q]===Z[Y+1])J.push(Z[Y]),Y++;else if(Q[q]==="*"&&Z[Y]&&(this.options.dot||!Z[Y].startsWith("."))&&Z[Y]!=="**"){if(W==="b")return!1;W="a",J.push(Q[q]),q++,Y++}else if(Z[Y]==="*"&&Q[q]&&(this.options.dot||!Q[q].startsWith("."))&&Q[q]!=="**"){if(W==="a")return!1;W="b",J.push(Z[Y]),q++,Y++}else return!1;return Q.length===Z.length&&J}parseNegate(){if(this.nonegate)return;let Q=this.pattern,Z=!1,X=0;for(let q=0;q<Q.length&&Q.charAt(q)==="!";q++)Z=!Z,X++;if(X)this.pattern=Q.slice(X);this.negate=Z}matchOne(Q,Z,X=!1){let q=this.options;if(this.isWindows){let U=typeof Q[0]==="string"&&/^[a-z]:$/i.test(Q[0]),M=!U&&Q[0]===""&&Q[1]===""&&Q[2]==="?"&&/^[a-z]:$/i.test(Q[3]),$=typeof Z[0]==="string"&&/^[a-z]:$/i.test(Z[0]),R=!$&&Z[0]===""&&Z[1]===""&&Z[2]==="?"&&typeof Z[3]==="string"&&/^[a-z]:$/i.test(Z[3]),O=M?3:U?0:void 0,B=R?3:$?0:void 0;if(typeof O==="number"&&typeof B==="number"){let[T,S]=[Q[O],Z[B]];if(T.toLowerCase()===S.toLowerCase()){if(Z[B]=T,B>O)Z=Z.slice(B);else if(O>B)Q=Q.slice(O)}}}let{optimizationLevel:Y=1}=this.options;if(Y>=2)Q=this.levelTwoFileOptimize(Q);this.debug("matchOne",this,{file:Q,pattern:Z}),this.debug("matchOne",Q.length,Z.length);for(var J=0,W=0,H=Q.length,V=Z.length;J<H&&W<V;J++,W++){this.debug("matchOne loop");var K=Z[W],z=Q[J];if(this.debug(Z,K,z),K===!1)return!1;if(K===r){this.debug("GLOBSTAR",[Z,K,z]);var G=J,_=W+1;if(_===V){this.debug("** at the end");for(;J<H;J++)if(Q[J]==="."||Q[J]===".."||!q.dot&&Q[J].charAt(0)===".")return!1;return!0}while(G<H){var A=Q[G];if(this.debug(`
9
+ at `+W}return Z}static buildMessage(Q,Z){function X(G){return G.codePointAt(0).toString(16).toUpperCase()}let q=Object.prototype.hasOwnProperty.call(RegExp.prototype,"unicode")?new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]","gu"):null;function Y(G){if(q)return G.replace(q,(_)=>"\\u{"+X(_)+"}");return G}function J(G){return Y(G.replace(/\\/g,"\\\\").replace(/"/g,"\\\"").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(_)=>"\\x0"+X(_)).replace(/[\x10-\x1F\x7F-\x9F]/g,(_)=>"\\x"+X(_)))}function W(G){return Y(G.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(_)=>"\\x0"+X(_)).replace(/[\x10-\x1F\x7F-\x9F]/g,(_)=>"\\x"+X(_)))}let H={literal(G){return'"'+J(G.text)+'"'},class(G){let _=G.parts.map((A)=>Array.isArray(A)?W(A[0])+"-"+W(A[1]):W(A));return"["+(G.inverted?"^":"")+_.join("")+"]"+(G.unicode?"u":"")},any(){return"any character"},end(){return"end of input"},other(G){return G.description}};function V(G){return H[G.type](G)}function K(G){let _=G.map(V);if(_.sort(),_.length>0){let A=1;for(let U=1;U<_.length;U++)if(_[U-1]!==_[U])_[A]=_[U],A++;_.length=A}switch(_.length){case 1:return _[0];case 2:return _[0]+" or "+_[1];default:return _.slice(0,-1).join(", ")+", or "+_[_.length-1]}}function z(G){return G?'"'+J(G)+'"':"end of input"}return"Expected "+K(Q)+" but "+z(Z)+" found."}}function F9(Q,Z){Z=Z!==void 0?Z:{};let X={},q=Z.grammarSource,Y={Start:b7},J=b7,W="::",H=/^[a-z]/,V=/^[a-z0-9_\-]/,K=/^[^s]/,z=/^[sS]/,G=RZ("::",!1),_=M8([["a","z"]],!1,!1,!1),A=M8([["a","z"],["0","9"],"_","-"],!1,!1,!1),U=M8(["s"],!0,!1,!1),M=M8(["s","S"],!1,!1,!1);function $(I){return wZ(I)}function R(I,L){let w=I+"::"+L,d=CZ(I,L,w);try{let u=parse(L);if(u)d.next=u}catch(u){}return d}let O=Z.peg$currPos|0,B=O,T=[{line:1,column:1}],S=O,y=Z.peg$maxFailExpected||[],v=Z.peg$silentFails|0,J0;if(Z.startRule){if(!(Z.startRule in Y))throw Error(`Can't start parsing from rule "`+Z.startRule+'".');J=Y[Z.startRule]}function H0(){return Q.substring(B,O)}function P7(){return B}function w1(){return{source:q,start:B,end:O}}function S1(){return p0(B,O)}function N1(I,L){throw L=L!==void 0?L:p0(B,O),D7([IZ(I)],Q.substring(B,O),L)}function P1(I,L){throw L=L!==void 0?L:p0(B,O),LZ(I,L)}function AZ(I=O){let L=Q.codePointAt(I);if(L===void 0)return"";return String.fromCodePoint(L)}function RZ(I,L){return{type:"literal",text:I,ignoreCase:L}}function M8(I,L,w,d){return{type:"class",parts:I,inverted:L,ignoreCase:w,unicode:d}}function k1(){return{type:"any"}}function BZ(){return{type:"end"}}function IZ(I){return{type:"other",description:I}}function k7(I){let L=T[I],w;if(L)return L;else{if(I>=T.length)w=T.length-1;else{w=I;while(!T[--w]);}L=T[w],L={line:L.line,column:L.column};while(w<I){if(Q.charCodeAt(w)===10)L.line++,L.column=1;else L.column++;w++}return T[I]=L,L}}function p0(I,L,w){let d=k7(I),u=k7(L),a0={source:q,start:{offset:I,line:d.line,column:d.column},end:{offset:L,line:u.line,column:u.column}};if(w&&q&&typeof q.offset==="function")a0.start=q.offset(a0.start),a0.end=q.offset(a0.end);return a0}function C0(I){if(O<S)return;if(O>S)S=O,y=[];y.push(I)}function LZ(I,L){return new C8(I,null,null,L)}function D7(I,L,w){return new C8(C8.buildMessage(I,L),I,L,w)}function b7(){let I,L;if(I=O,L=FZ(),L!==X)B=I,L=$(L);return I=L,I}function FZ(){let I,L,w,d;if(I=O,L=TZ(),L!==X){if(Q.substr(O,2)===W)w=W,O+=2;else if(w=X,v===0)C0(G);if(w!==X)if(d=jZ(),d!==X)B=I,I=R(L,d);else O=I,I=X;else O=I,I=X}else O=I,I=X;return I}function TZ(){let I,L,w,d,u;if(I=O,L=O,w=Q.charAt(O),H.test(w))O++;else if(w=X,v===0)C0(_);if(w!==X){if(d=[],u=Q.charAt(O),V.test(u))O++;else if(u=X,v===0)C0(A);while(u!==X)if(d.push(u),u=Q.charAt(O),V.test(u))O++;else if(u=X,v===0)C0(A);w=[w,d],L=w}else O=L,L=X;if(L!==X)I=Q.substring(I,O);else I=L;return I}function jZ(){let I,L,w,d,u;if(I=O,L=O,w=Q.charAt(O),K.test(w))O++;else if(w=X,v===0)C0(U);if(w!==X){if(d=[],u=Q.charAt(O),z.test(u))O++;else if(u=X,v===0)C0(M);while(u!==X)if(d.push(u),u=Q.charAt(O),z.test(u))O++;else if(u=X,v===0)C0(M);w=[w,d],L=w}else O=L,L=X;if(L!==X)I=Q.substring(I,O);else I=L;return I}function CZ(I,L,w){return{processor:I,statement:L,expression:w}}function v7(I){if(!I)return[];let L=I.next?v7(I.next):[];return L.push(I.processor),L}function wZ(I){if(!I)return null;let L=I;while(L&&L.next)L=L.next;let w={processor:I.processor,statement:I.statement,expression:I.expression,process:{statement:L.statement,order:v7(I)}};if(I.next)w.next=I.next;return w}J0=J();let t8=J0!==X&&O===Q.length;function y7(){if(J0!==X&&O<Q.length)C0(BZ());throw D7(y,S<Q.length?AZ(S):null,S<Q.length?p0(S,S+1):p0(S,S))}if(Z.peg$library)return{peg$result:J0,peg$currPos:O,peg$FAILED:X,peg$maxFailExpected:y,peg$maxFailPos:S,peg$success:t8,peg$throw:t8?void 0:y7};if(t8)return J0;else y7()}function P0(Q,Z=!1){if(typeof Q!=="string")return null;let X=Q.match(/^([a-z][a-z0-9_-]*)::/);if(!X)return null;let q=X[1];if(!Z)return q;let Y=Q.slice(Q.indexOf("::")+2);return{processor:q,statement:Y}}function j9({expression:Q,depth:Z=5}){if(Z<=0)return null;let X=/^([a-z][a-z0-9_-]*)::([^\s][\s\S]*)$/,q;if(X.test(Q))q=Q.match(X);else return null;let Y=q[1],J=q[2],W=j9({expression:J,depth:Z-1}),H={processor:Y,statement:J,expression:Q};if(W)H.next=W;return H}function C9(Q){if(!Q)return[];let Z=C9(Q.next);return Z.push(Q.processor),Z}function T9({expression:Q}){let Z=j9({expression:Q});if(!Z)return null;let X=Z;while(X&&X.next)X=X.next;let q={processor:Z.processor,statement:Z.statement,expression:Z.expression,process:{statement:X.statement,order:C9(Z)}};if(Z.next)q.next=Z.next;return q}function z5(Q,Z){let X=Q.statement,q=/([a-z][a-z0-9_-]*)::([a-zA-Z_$][a-zA-Z0-9_$]*)/g;return X=X.replace(q,(Y,J,W)=>{if(Z[J]){let H=Z[J];if(typeof H==="function")return H(W);if(typeof H==="string")return H.replace(/\{stmt\}/g,W)}return Y}),X}function m6({expression:Q,useGrammar:Z=!0,multiline:X=!0,transform:q}){if(typeof Q!=="string")Q=String(Q);if(X)Q=Q.replace(/\n+$/,"");let Y;if(Z)try{Y=F9(Q)}catch(J){Y=T9({expression:Q})}else Y=T9({expression:Q});if(!Y)return null;if(q){if(q[Y.processor]&&!Y.next){let J=q[Y.processor];if(typeof J==="function")Y.transformed=J(Y.statement);else if(typeof J==="string")Y.transformed=J.replace(/\{stmt\}/g,Y.statement)}else if(Y.statement)Y.transformed=z5(Y,q)}return Y}import e2 from"@fnet/yaml";import Q1 from"chalk";var a9=S5(h9(),1);var o0=(Q)=>{if(typeof Q!=="string")throw TypeError("invalid pattern");if(Q.length>65536)throw TypeError("pattern is too long")};var B5={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},t0=(Q)=>Q.replace(/[[\]\\-]/g,"\\$&"),I5=(Q)=>Q.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),g9=(Q)=>Q.join(""),m9=(Q,Z)=>{let X=Z;if(Q.charAt(X)!=="[")throw Error("not in a brace expression");let q=[],Y=[],J=X+1,W=!1,H=!1,V=!1,K=!1,z=X,G="";Q:while(J<Q.length){let M=Q.charAt(J);if((M==="!"||M==="^")&&J===X+1){K=!0,J++;continue}if(M==="]"&&W&&!V){z=J+1;break}if(W=!0,M==="\\"){if(!V){V=!0,J++;continue}}if(M==="["&&!V){for(let[$,[R,O,B]]of Object.entries(B5))if(Q.startsWith($,J)){if(G)return["$.",!1,Q.length-X,!0];if(J+=$.length,B)Y.push(R);else q.push(R);H=H||O;continue Q}}if(V=!1,G){if(M>G)q.push(t0(G)+"-"+t0(M));else if(M===G)q.push(t0(M));G="",J++;continue}if(Q.startsWith("-]",J+1)){q.push(t0(M+"-")),J+=2;continue}if(Q.startsWith("-",J+1)){G=M,J+=2;continue}q.push(t0(M)),J++}if(z<J)return["",!1,0,!1];if(!q.length&&!Y.length)return["$.",!1,Q.length-X,!0];if(Y.length===0&&q.length===1&&/^\\?.$/.test(q[0])&&!K){let M=q[0].length===2?q[0].slice(-1):q[0];return[I5(M),!1,z-X,!1]}let _="["+(K?"^":"")+g9(q)+"]",A="["+(K?"":"^")+g9(Y)+"]";return[q.length&&Y.length?"("+_+"|"+A+")":q.length?_:A,H,z-X,!0]};var U0=(Q,{windowsPathsNoEscape:Z=!1}={})=>{return Z?Q.replace(/\[([^\/\\])\]/g,"$1"):Q.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")};var L5=new Set(["!","?","+","*","@"]),l9=(Q)=>L5.has(Q),F5="(?!(?:^|/)\\.\\.?(?:$|/))",w8="(?!\\.)",T5=new Set(["[","."]),j5=new Set(["..","."]),C5=new Set("().*{}+?[]^$\\!"),w5=(Q)=>Q.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),d6="[^/]",c9=d6+"*?",d9=d6+"+?";class n{type;#Z;#Q;#X=!1;#q=[];#J;#L;#I;#K=!1;#G;#V;#z=!1;constructor(Q,Z,X={}){if(this.type=Q,Q)this.#Q=!0;if(this.#J=Z,this.#Z=this.#J?this.#J.#Z:this,this.#G=this.#Z===this?X:this.#Z.#G,this.#I=this.#Z===this?[]:this.#Z.#I,Q==="!"&&!this.#Z.#K)this.#I.push(this);this.#L=this.#J?this.#J.#q.length:0}get hasMagic(){if(this.#Q!==void 0)return this.#Q;for(let Q of this.#q){if(typeof Q==="string")continue;if(Q.type||Q.hasMagic)return this.#Q=!0}return this.#Q}toString(){if(this.#V!==void 0)return this.#V;if(!this.type)return this.#V=this.#q.map((Q)=>String(Q)).join("");else return this.#V=this.type+"("+this.#q.map((Q)=>String(Q)).join("|")+")"}#Y(){if(this!==this.#Z)throw Error("should only call on root");if(this.#K)return this;this.toString(),this.#K=!0;let Q;while(Q=this.#I.pop()){if(Q.type!=="!")continue;let Z=Q,X=Z.#J;while(X){for(let q=Z.#L+1;!X.type&&q<X.#q.length;q++)for(let Y of Q.#q){if(typeof Y==="string")throw Error("string part in extglob AST??");Y.copyIn(X.#q[q])}Z=X,X=Z.#J}}return this}push(...Q){for(let Z of Q){if(Z==="")continue;if(typeof Z!=="string"&&!(Z instanceof n&&Z.#J===this))throw Error("invalid part: "+Z);this.#q.push(Z)}}toJSON(){let Q=this.type===null?this.#q.slice().map((Z)=>typeof Z==="string"?Z:Z.toJSON()):[this.type,...this.#q.map((Z)=>Z.toJSON())];if(this.isStart()&&!this.type)Q.unshift([]);if(this.isEnd()&&(this===this.#Z||this.#Z.#K&&this.#J?.type==="!"))Q.push({});return Q}isStart(){if(this.#Z===this)return!0;if(!this.#J?.isStart())return!1;if(this.#L===0)return!0;let Q=this.#J;for(let Z=0;Z<this.#L;Z++){let X=Q.#q[Z];if(!(X instanceof n&&X.type==="!"))return!1}return!0}isEnd(){if(this.#Z===this)return!0;if(this.#J?.type==="!")return!0;if(!this.#J?.isEnd())return!1;if(!this.type)return this.#J?.isEnd();let Q=this.#J?this.#J.#q.length:0;return this.#L===Q-1}copyIn(Q){if(typeof Q==="string")this.push(Q);else this.push(Q.clone(this))}clone(Q){let Z=new n(this.type,Q);for(let X of this.#q)Z.copyIn(X);return Z}static#M(Q,Z,X,q){let Y=!1,J=!1,W=-1,H=!1;if(Z.type===null){let _=X,A="";while(_<Q.length){let U=Q.charAt(_++);if(Y||U==="\\"){Y=!Y,A+=U;continue}if(J){if(_===W+1){if(U==="^"||U==="!")H=!0}else if(U==="]"&&!(_===W+2&&H))J=!1;A+=U;continue}else if(U==="["){J=!0,W=_,H=!1,A+=U;continue}if(!q.noext&&l9(U)&&Q.charAt(_)==="("){Z.push(A),A="";let M=new n(U,Z);_=n.#M(Q,M,_,q),Z.push(M);continue}A+=U}return Z.push(A),_}let V=X+1,K=new n(null,Z),z=[],G="";while(V<Q.length){let _=Q.charAt(V++);if(Y||_==="\\"){Y=!Y,G+=_;continue}if(J){if(V===W+1){if(_==="^"||_==="!")H=!0}else if(_==="]"&&!(V===W+2&&H))J=!1;G+=_;continue}else if(_==="["){J=!0,W=V,H=!1,G+=_;continue}if(l9(_)&&Q.charAt(V)==="("){K.push(G),G="";let A=new n(_,K);K.push(A),V=n.#M(Q,A,V,q);continue}if(_==="|"){K.push(G),G="",z.push(K),K=new n(null,Z);continue}if(_===")"){if(G===""&&Z.#q.length===0)Z.#z=!0;return K.push(G),G="",Z.push(...z,K),V}G+=_}return Z.type=null,Z.#Q=void 0,Z.#q=[Q.substring(X-1)],V}static fromGlob(Q,Z={}){let X=new n(null,void 0,Z);return n.#M(Q,X,0,Z),X}toMMPattern(){if(this!==this.#Z)return this.#Z.toMMPattern();let Q=this.toString(),[Z,X,q,Y]=this.toRegExpSource();if(!(q||this.#Q||this.#G.nocase&&!this.#G.nocaseMagicOnly&&Q.toUpperCase()!==Q.toLowerCase()))return X;let W=(this.#G.nocase?"i":"")+(Y?"u":"");return Object.assign(new RegExp(`^${Z}$`,W),{_src:Z,_glob:Q})}get options(){return this.#G}toRegExpSource(Q){let Z=Q??!!this.#G.dot;if(this.#Z===this)this.#Y();if(!this.type){let H=this.isStart()&&this.isEnd(),V=this.#q.map((_)=>{let[A,U,M,$]=typeof _==="string"?n.#$(_,this.#Q,H):_.toRegExpSource(Q);return this.#Q=this.#Q||M,this.#X=this.#X||$,A}).join(""),K="";if(this.isStart()){if(typeof this.#q[0]==="string"){if(!(this.#q.length===1&&j5.has(this.#q[0]))){let A=T5,U=Z&&A.has(V.charAt(0))||V.startsWith("\\.")&&A.has(V.charAt(2))||V.startsWith("\\.\\.")&&A.has(V.charAt(4)),M=!Z&&!Q&&A.has(V.charAt(0));K=U?F5:M?w8:""}}}let z="";if(this.isEnd()&&this.#Z.#K&&this.#J?.type==="!")z="(?:$|\\/)";return[K+V+z,U0(V),this.#Q=!!this.#Q,this.#X]}let X=this.type==="*"||this.type==="+",q=this.type==="!"?"(?:(?!(?:":"(?:",Y=this.#O(Z);if(this.isStart()&&this.isEnd()&&!Y&&this.type!=="!"){let H=this.toString();return this.#q=[H],this.type=null,this.#Q=void 0,[H,U0(this.toString()),!1,!1]}let J=!X||Q||Z||!w8?"":this.#O(!0);if(J===Y)J="";if(J)Y=`(?:${Y})(?:${J})*?`;let W="";if(this.type==="!"&&this.#z)W=(this.isStart()&&!Z?w8:"")+d9;else{let H=this.type==="!"?"))"+(this.isStart()&&!Z&&!Q?w8:"")+c9+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&J?")":this.type==="*"&&J?")?":`)${this.type}`;W=q+Y+H}return[W,U0(Y),this.#Q=!!this.#Q,this.#X]}#O(Q){return this.#q.map((Z)=>{if(typeof Z==="string")throw Error("string type in extglob ast??");let[X,q,Y,J]=Z.toRegExpSource(Q);return this.#X=this.#X||J,X}).filter((Z)=>!(this.isStart()&&this.isEnd())||!!Z).join("|")}static#$(Q,Z,X=!1){let q=!1,Y="",J=!1;for(let W=0;W<Q.length;W++){let H=Q.charAt(W);if(q){q=!1,Y+=(C5.has(H)?"\\":"")+H;continue}if(H==="\\"){if(W===Q.length-1)Y+="\\\\";else q=!0;continue}if(H==="["){let[V,K,z,G]=m9(Q,W);if(z){Y+=V,J=J||K,W+=z-1,Z=Z||G;continue}}if(H==="*"){if(X&&Q==="*")Y+=d9;else Y+=c9;Z=!0;continue}if(H==="?"){Y+=d6,Z=!0;continue}Y+=w5(H)}return[Y,U0(Q),!!Z,J]}}var g0=(Q,{windowsPathsNoEscape:Z=!1}={})=>{return Z?Q.replace(/[?*()[\]]/g,"[$&]"):Q.replace(/[?*()[\]\\]/g,"\\$&")};var Z0=(Q,Z,X={})=>{if(o0(Z),!X.nocomment&&Z.charAt(0)==="#")return!1;return new V0(Z,X).match(Q)},N5=/^\*+([^+@!?\*\[\(]*)$/,P5=(Q)=>(Z)=>!Z.startsWith(".")&&Z.endsWith(Q),k5=(Q)=>(Z)=>Z.endsWith(Q),D5=(Q)=>{return Q=Q.toLowerCase(),(Z)=>!Z.startsWith(".")&&Z.toLowerCase().endsWith(Q)},b5=(Q)=>{return Q=Q.toLowerCase(),(Z)=>Z.toLowerCase().endsWith(Q)},v5=/^\*+\.\*+$/,y5=(Q)=>!Q.startsWith(".")&&Q.includes("."),E5=(Q)=>Q!=="."&&Q!==".."&&Q.includes("."),x5=/^\.\*+$/,u5=(Q)=>Q!=="."&&Q!==".."&&Q.startsWith("."),f5=/^\*+$/,h5=(Q)=>Q.length!==0&&!Q.startsWith("."),g5=(Q)=>Q.length!==0&&Q!=="."&&Q!=="..",m5=/^\?+([^+@!?\*\[\(]*)?$/,l5=([Q,Z=""])=>{let X=n9([Q]);if(!Z)return X;return Z=Z.toLowerCase(),(q)=>X(q)&&q.toLowerCase().endsWith(Z)},c5=([Q,Z=""])=>{let X=r9([Q]);if(!Z)return X;return Z=Z.toLowerCase(),(q)=>X(q)&&q.toLowerCase().endsWith(Z)},d5=([Q,Z=""])=>{let X=r9([Q]);return!Z?X:(q)=>X(q)&&q.endsWith(Z)},i5=([Q,Z=""])=>{let X=n9([Q]);return!Z?X:(q)=>X(q)&&q.endsWith(Z)},n9=([Q])=>{let Z=Q.length;return(X)=>X.length===Z&&!X.startsWith(".")},r9=([Q])=>{let Z=Q.length;return(X)=>X.length===Z&&X!=="."&&X!==".."},s9=typeof process==="object"&&process?typeof process.env==="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",i9={win32:{sep:"\\"},posix:{sep:"/"}},p5=s9==="win32"?i9.win32.sep:i9.posix.sep;Z0.sep=p5;var r=Symbol("globstar **");Z0.GLOBSTAR=r;var a5="[^/]",n5=a5+"*?",r5="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",s5="(?:(?!(?:\\/|^)\\.).)*?",o5=(Q,Z={})=>(X)=>Z0(X,Q,Z);Z0.filter=o5;var W0=(Q,Z={})=>Object.assign({},Q,Z),t5=(Q)=>{if(!Q||typeof Q!=="object"||!Object.keys(Q).length)return Z0;let Z=Z0;return Object.assign((q,Y,J={})=>Z(q,Y,W0(Q,J)),{Minimatch:class extends Z.Minimatch{constructor(Y,J={}){super(Y,W0(Q,J))}static defaults(Y){return Z.defaults(W0(Q,Y)).Minimatch}},AST:class extends Z.AST{constructor(Y,J,W={}){super(Y,J,W0(Q,W))}static fromGlob(Y,J={}){return Z.AST.fromGlob(Y,W0(Q,J))}},unescape:(q,Y={})=>Z.unescape(q,W0(Q,Y)),escape:(q,Y={})=>Z.escape(q,W0(Q,Y)),filter:(q,Y={})=>Z.filter(q,W0(Q,Y)),defaults:(q)=>Z.defaults(W0(Q,q)),makeRe:(q,Y={})=>Z.makeRe(q,W0(Q,Y)),braceExpand:(q,Y={})=>Z.braceExpand(q,W0(Q,Y)),match:(q,Y,J={})=>Z.match(q,Y,W0(Q,J)),sep:Z.sep,GLOBSTAR:r})};Z0.defaults=t5;var o9=(Q,Z={})=>{if(o0(Q),Z.nobrace||!/\{(?:(?!\{).)*\}/.test(Q))return[Q];return a9.default(Q)};Z0.braceExpand=o9;var e5=(Q,Z={})=>new V0(Q,Z).makeRe();Z0.makeRe=e5;var Q4=(Q,Z,X={})=>{let q=new V0(Z,X);if(Q=Q.filter((Y)=>q.match(Y)),q.options.nonull&&!Q.length)Q.push(Z);return Q};Z0.match=Q4;var p9=/[?*]|[+@!]\(.*?\)|\[|\]/,Z4=(Q)=>Q.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");class V0{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(Q,Z={}){if(o0(Q),Z=Z||{},this.options=Z,this.pattern=Q,this.platform=Z.platform||s9,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!Z.windowsPathsNoEscape||Z.allowWindowsEscape===!1,this.windowsPathsNoEscape)this.pattern=this.pattern.replace(/\\/g,"/");this.preserveMultipleSlashes=!!Z.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!Z.nonegate,this.comment=!1,this.empty=!1,this.partial=!!Z.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=Z.windowsNoMagicRoot!==void 0?Z.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let Q of this.set)for(let Z of Q)if(typeof Z!=="string")return!0;return!1}debug(...Q){}make(){let Q=this.pattern,Z=this.options;if(!Z.nocomment&&Q.charAt(0)==="#"){this.comment=!0;return}if(!Q){this.empty=!0;return}if(this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],Z.debug)this.debug=(...Y)=>console.error(...Y);this.debug(this.pattern,this.globSet);let X=this.globSet.map((Y)=>this.slashSplit(Y));this.globParts=this.preprocess(X),this.debug(this.pattern,this.globParts);let q=this.globParts.map((Y,J,W)=>{if(this.isWindows&&this.windowsNoMagicRoot){let H=Y[0]===""&&Y[1]===""&&(Y[2]==="?"||!p9.test(Y[2]))&&!p9.test(Y[3]),V=/^[a-z]:/i.test(Y[0]);if(H)return[...Y.slice(0,4),...Y.slice(4).map((K)=>this.parse(K))];else if(V)return[Y[0],...Y.slice(1).map((K)=>this.parse(K))]}return Y.map((H)=>this.parse(H))});if(this.debug(this.pattern,q),this.set=q.filter((Y)=>Y.indexOf(!1)===-1),this.isWindows)for(let Y=0;Y<this.set.length;Y++){let J=this.set[Y];if(J[0]===""&&J[1]===""&&this.globParts[Y][2]==="?"&&typeof J[3]==="string"&&/^[a-z]:$/i.test(J[3]))J[2]="?"}this.debug(this.pattern,this.set)}preprocess(Q){if(this.options.noglobstar){for(let X=0;X<Q.length;X++)for(let q=0;q<Q[X].length;q++)if(Q[X][q]==="**")Q[X][q]="*"}let{optimizationLevel:Z=1}=this.options;if(Z>=2)Q=this.firstPhasePreProcess(Q),Q=this.secondPhasePreProcess(Q);else if(Z>=1)Q=this.levelOneOptimize(Q);else Q=this.adjascentGlobstarOptimize(Q);return Q}adjascentGlobstarOptimize(Q){return Q.map((Z)=>{let X=-1;while((X=Z.indexOf("**",X+1))!==-1){let q=X;while(Z[q+1]==="**")q++;if(q!==X)Z.splice(X,q-X)}return Z})}levelOneOptimize(Q){return Q.map((Z)=>{return Z=Z.reduce((X,q)=>{let Y=X[X.length-1];if(q==="**"&&Y==="**")return X;if(q===".."){if(Y&&Y!==".."&&Y!=="."&&Y!=="**")return X.pop(),X}return X.push(q),X},[]),Z.length===0?[""]:Z})}levelTwoFileOptimize(Q){if(!Array.isArray(Q))Q=this.slashSplit(Q);let Z=!1;do{if(Z=!1,!this.preserveMultipleSlashes){for(let q=1;q<Q.length-1;q++){let Y=Q[q];if(q===1&&Y===""&&Q[0]==="")continue;if(Y==="."||Y==="")Z=!0,Q.splice(q,1),q--}if(Q[0]==="."&&Q.length===2&&(Q[1]==="."||Q[1]===""))Z=!0,Q.pop()}let X=0;while((X=Q.indexOf("..",X+1))!==-1){let q=Q[X-1];if(q&&q!=="."&&q!==".."&&q!=="**")Z=!0,Q.splice(X-1,2),X-=2}}while(Z);return Q.length===0?[""]:Q}firstPhasePreProcess(Q){let Z=!1;do{Z=!1;for(let X of Q){let q=-1;while((q=X.indexOf("**",q+1))!==-1){let J=q;while(X[J+1]==="**")J++;if(J>q)X.splice(q+1,J-q);let W=X[q+1],H=X[q+2],V=X[q+3];if(W!=="..")continue;if(!H||H==="."||H===".."||!V||V==="."||V==="..")continue;Z=!0,X.splice(q,1);let K=X.slice(0);K[q]="**",Q.push(K),q--}if(!this.preserveMultipleSlashes){for(let J=1;J<X.length-1;J++){let W=X[J];if(J===1&&W===""&&X[0]==="")continue;if(W==="."||W==="")Z=!0,X.splice(J,1),J--}if(X[0]==="."&&X.length===2&&(X[1]==="."||X[1]===""))Z=!0,X.pop()}let Y=0;while((Y=X.indexOf("..",Y+1))!==-1){let J=X[Y-1];if(J&&J!=="."&&J!==".."&&J!=="**"){Z=!0;let H=Y===1&&X[Y+1]==="**"?["."]:[];if(X.splice(Y-1,2,...H),X.length===0)X.push("");Y-=2}}}}while(Z);return Q}secondPhasePreProcess(Q){for(let Z=0;Z<Q.length-1;Z++)for(let X=Z+1;X<Q.length;X++){let q=this.partsMatch(Q[Z],Q[X],!this.preserveMultipleSlashes);if(q){Q[Z]=[],Q[X]=q;break}}return Q.filter((Z)=>Z.length)}partsMatch(Q,Z,X=!1){let q=0,Y=0,J=[],W="";while(q<Q.length&&Y<Z.length)if(Q[q]===Z[Y])J.push(W==="b"?Z[Y]:Q[q]),q++,Y++;else if(X&&Q[q]==="**"&&Z[Y]===Q[q+1])J.push(Q[q]),q++;else if(X&&Z[Y]==="**"&&Q[q]===Z[Y+1])J.push(Z[Y]),Y++;else if(Q[q]==="*"&&Z[Y]&&(this.options.dot||!Z[Y].startsWith("."))&&Z[Y]!=="**"){if(W==="b")return!1;W="a",J.push(Q[q]),q++,Y++}else if(Z[Y]==="*"&&Q[q]&&(this.options.dot||!Q[q].startsWith("."))&&Q[q]!=="**"){if(W==="a")return!1;W="b",J.push(Z[Y]),q++,Y++}else return!1;return Q.length===Z.length&&J}parseNegate(){if(this.nonegate)return;let Q=this.pattern,Z=!1,X=0;for(let q=0;q<Q.length&&Q.charAt(q)==="!";q++)Z=!Z,X++;if(X)this.pattern=Q.slice(X);this.negate=Z}matchOne(Q,Z,X=!1){let q=this.options;if(this.isWindows){let U=typeof Q[0]==="string"&&/^[a-z]:$/i.test(Q[0]),M=!U&&Q[0]===""&&Q[1]===""&&Q[2]==="?"&&/^[a-z]:$/i.test(Q[3]),$=typeof Z[0]==="string"&&/^[a-z]:$/i.test(Z[0]),R=!$&&Z[0]===""&&Z[1]===""&&Z[2]==="?"&&typeof Z[3]==="string"&&/^[a-z]:$/i.test(Z[3]),O=M?3:U?0:void 0,B=R?3:$?0:void 0;if(typeof O==="number"&&typeof B==="number"){let[T,S]=[Q[O],Z[B]];if(T.toLowerCase()===S.toLowerCase()){if(Z[B]=T,B>O)Z=Z.slice(B);else if(O>B)Q=Q.slice(O)}}}let{optimizationLevel:Y=1}=this.options;if(Y>=2)Q=this.levelTwoFileOptimize(Q);this.debug("matchOne",this,{file:Q,pattern:Z}),this.debug("matchOne",Q.length,Z.length);for(var J=0,W=0,H=Q.length,V=Z.length;J<H&&W<V;J++,W++){this.debug("matchOne loop");var K=Z[W],z=Q[J];if(this.debug(Z,K,z),K===!1)return!1;if(K===r){this.debug("GLOBSTAR",[Z,K,z]);var G=J,_=W+1;if(_===V){this.debug("** at the end");for(;J<H;J++)if(Q[J]==="."||Q[J]===".."||!q.dot&&Q[J].charAt(0)===".")return!1;return!0}while(G<H){var A=Q[G];if(this.debug(`
10
10
  globstar while`,Q,G,Z,_,A),this.matchOne(Q.slice(G),Z.slice(_),X))return this.debug("globstar found match!",G,H,A),!0;else{if(A==="."||A===".."||!q.dot&&A.charAt(0)==="."){this.debug("dot detected!",Q,G,Z,_);break}this.debug("globstar swallow a segment, and continue"),G++}}if(X){if(this.debug(`
11
- >>> no match, partial?`,Q,G,Z,_),G===H)return!0}return!1}let U;if(typeof K==="string")U=z===K,this.debug("string match",K,z,U);else U=K.test(z),this.debug("pattern match",K,z,U);if(!U)return!1}if(J===H&&W===V)return!0;else if(J===H)return X;else if(W===V)return J===H-1&&Q[J]==="";else throw Error("wtf?")}braceExpand(){return r9(this.pattern,this.options)}parse(Q){o0(Q);let Z=this.options;if(Q==="**")return r;if(Q==="")return"";let X,q=null;if(X=Q.match(f5))q=Z.dot?g5:h5;else if(X=Q.match(N5))q=(Z.nocase?Z.dot?b5:D5:Z.dot?k5:P5)(X[1]);else if(X=Q.match(m5))q=(Z.nocase?Z.dot?c5:l5:Z.dot?d5:i5)(X);else if(X=Q.match(v5))q=Z.dot?E5:y5;else if(X=Q.match(x5))q=u5;let Y=n.fromGlob(Q,this.options).toMMPattern();if(q&&typeof Y==="object")Reflect.defineProperty(Y,"test",{value:q});return Y}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let Q=this.set;if(!Q.length)return this.regexp=!1,this.regexp;let Z=this.options,X=Z.noglobstar?n5:Z.dot?r5:s5,q=new Set(Z.nocase?["i"]:[]),Y=Q.map((H)=>{let V=H.map((K)=>{if(K instanceof RegExp)for(let z of K.flags.split(""))q.add(z);return typeof K==="string"?Z4(K):K===r?r:K._src});return V.forEach((K,z)=>{let G=V[z+1],_=V[z-1];if(K!==r||_===r)return;if(_===void 0)if(G!==void 0&&G!==r)V[z+1]="(?:\\/|"+X+"\\/)?"+G;else V[z]=X;else if(G===void 0)V[z-1]=_+"(?:\\/|"+X+")?";else if(G!==r)V[z-1]=_+"(?:\\/|\\/"+X+"\\/)"+G,V[z+1]=r}),V.filter((K)=>K!==r).join("/")}).join("|"),[J,W]=Q.length>1?["(?:",")"]:["",""];if(Y="^"+J+Y+W+"$",this.negate)Y="^(?!"+Y+").+$";try{this.regexp=new RegExp(Y,[...q].join(""))}catch(H){this.regexp=!1}return this.regexp}slashSplit(Q){if(this.preserveMultipleSlashes)return Q.split("/");else if(this.isWindows&&/^\/\/[^\/]+/.test(Q))return["",...Q.split(/\/+/)];else return Q.split(/\/+/)}match(Q,Z=this.partial){if(this.debug("match",Q,this.pattern),this.comment)return!1;if(this.empty)return Q==="";if(Q==="/"&&Z)return!0;let X=this.options;if(this.isWindows)Q=Q.split("\\").join("/");let q=this.slashSplit(Q);this.debug(this.pattern,"split",q);let Y=this.set;this.debug(this.pattern,"set",Y);let J=q[q.length-1];if(!J)for(let W=q.length-2;!J&&W>=0;W--)J=q[W];for(let W=0;W<Y.length;W++){let H=Y[W],V=q;if(X.matchBase&&H.length===1)V=[J];if(this.matchOne(V,H,Z)){if(X.flipNegate)return!0;return!this.negate}}if(X.flipNegate)return!1;return this.negate}static defaults(Q){return Z0.defaults(Q).Minimatch}}Z0.AST=n;Z0.Minimatch=V0;Z0.escape=g0;Z0.unescape=G0;import{fileURLToPath as v4}from"node:url";var m0=typeof performance==="object"&&performance&&typeof performance.now==="function"?performance:Date,o9=new Set,i6=typeof process==="object"&&!!process?process:{},t9=(Q,Z,X,q)=>{typeof i6.emitWarning==="function"?i6.emitWarning(Q,Z,X,q):console.error(`[${X}] ${Z}: ${Q}`)},S8=globalThis.AbortController,s9=globalThis.AbortSignal;if(typeof S8>"u"){s9=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(q,Y){this._onabort.push(Y)}},S8=class{constructor(){Z()}signal=new s9;abort(q){if(this.signal.aborted)return;this.signal.reason=q,this.signal.aborted=!0;for(let Y of this.signal._onabort)Y(q);this.signal.onabort?.(q)}};let Q=i6.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",Z=()=>{if(!Q)return;Q=!1,t9("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",Z)}}var X4=(Q)=>!o9.has(Q),dq=Symbol("type"),k0=(Q)=>Q&&Q===Math.floor(Q)&&Q>0&&isFinite(Q),e9=(Q)=>!k0(Q)?null:Q<=Math.pow(2,8)?Uint8Array:Q<=Math.pow(2,16)?Uint16Array:Q<=Math.pow(2,32)?Uint32Array:Q<=Number.MAX_SAFE_INTEGER?e0:null;class e0 extends Array{constructor(Q){super(Q);this.fill(0)}}class l0{heap;length;static#Z=!1;static create(Q){let Z=e9(Q);if(!Z)return[];l0.#Z=!0;let X=new l0(Q,Z);return l0.#Z=!1,X}constructor(Q,Z){if(!l0.#Z)throw TypeError("instantiate Stack using Stack.create(n)");this.heap=new Z(Q),this.length=0}push(Q){this.heap[this.length++]=Q}pop(){return this.heap[--this.length]}}class Q8{#Z;#Q;#X;#q;#J;#L;#I;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#K;#G;#V;#z;#Y;#M;#O;#$;#A;#j;#B;#T;#W;#F;#_;#C;#R;#k;static unsafeExposeInternals(Q){return{starts:Q.#W,ttls:Q.#F,sizes:Q.#T,keyMap:Q.#V,keyList:Q.#z,valList:Q.#Y,next:Q.#M,prev:Q.#O,get head(){return Q.#$},get tail(){return Q.#A},free:Q.#j,isBackgroundFetch:(Z)=>Q.#U(Z),backgroundFetch:(Z,X,q,Y)=>Q.#E(Z,X,q,Y),moveToTail:(Z)=>Q.#f(Z),indexes:(Z)=>Q.#N(Z),rindexes:(Z)=>Q.#P(Z),isStale:(Z)=>Q.#S(Z)}}get max(){return this.#Z}get maxSize(){return this.#Q}get calculatedSize(){return this.#G}get size(){return this.#K}get fetchMethod(){return this.#L}get memoMethod(){return this.#I}get dispose(){return this.#X}get onInsert(){return this.#q}get disposeAfter(){return this.#J}constructor(Q){let{max:Z=0,ttl:X,ttlResolution:q=1,ttlAutopurge:Y,updateAgeOnGet:J,updateAgeOnHas:W,allowStale:H,dispose:V,onInsert:K,disposeAfter:z,noDisposeOnSet:G,noUpdateTTL:_,maxSize:A=0,maxEntrySize:U=0,sizeCalculation:M,fetchMethod:$,memoMethod:R,noDeleteOnFetchRejection:O,noDeleteOnStaleGet:B,allowStaleOnFetchRejection:T,allowStaleOnFetchAbort:S,ignoreFetchAbort:y}=Q;if(Z!==0&&!k0(Z))throw TypeError("max option must be a nonnegative integer");let v=Z?e9(Z):Array;if(!v)throw Error("invalid max value: "+Z);if(this.#Z=Z,this.#Q=A,this.maxEntrySize=U||this.#Q,this.sizeCalculation=M,this.sizeCalculation){if(!this.#Q&&!this.maxEntrySize)throw TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!=="function")throw TypeError("sizeCalculation set to non-function")}if(R!==void 0&&typeof R!=="function")throw TypeError("memoMethod must be a function if defined");if(this.#I=R,$!==void 0&&typeof $!=="function")throw TypeError("fetchMethod must be a function if specified");if(this.#L=$,this.#C=!!$,this.#V=new Map,this.#z=Array(Z).fill(void 0),this.#Y=Array(Z).fill(void 0),this.#M=new v(Z),this.#O=new v(Z),this.#$=0,this.#A=0,this.#j=l0.create(Z),this.#K=0,this.#G=0,typeof V==="function")this.#X=V;if(typeof K==="function")this.#q=K;if(typeof z==="function")this.#J=z,this.#B=[];else this.#J=void 0,this.#B=void 0;if(this.#_=!!this.#X,this.#k=!!this.#q,this.#R=!!this.#J,this.noDisposeOnSet=!!G,this.noUpdateTTL=!!_,this.noDeleteOnFetchRejection=!!O,this.allowStaleOnFetchRejection=!!T,this.allowStaleOnFetchAbort=!!S,this.ignoreFetchAbort=!!y,this.maxEntrySize!==0){if(this.#Q!==0){if(!k0(this.#Q))throw TypeError("maxSize must be a positive integer if specified")}if(!k0(this.maxEntrySize))throw TypeError("maxEntrySize must be a positive integer if specified");this.#g()}if(this.allowStale=!!H,this.noDeleteOnStaleGet=!!B,this.updateAgeOnGet=!!J,this.updateAgeOnHas=!!W,this.ttlResolution=k0(q)||q===0?q:1,this.ttlAutopurge=!!Y,this.ttl=X||0,this.ttl){if(!k0(this.ttl))throw TypeError("ttl must be a positive integer if specified");this.#H()}if(this.#Z===0&&this.ttl===0&&this.#Q===0)throw TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#Z&&!this.#Q){if(X4("LRU_CACHE_UNBOUNDED"))o9.add("LRU_CACHE_UNBOUNDED"),t9("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning","LRU_CACHE_UNBOUNDED",Q8)}}getRemainingTTL(Q){return this.#V.has(Q)?1/0:0}#H(){let Q=new e0(this.#Z),Z=new e0(this.#Z);this.#F=Q,this.#W=Z,this.#D=(Y,J,W=m0.now())=>{if(Z[Y]=J!==0?W:0,Q[Y]=J,J!==0&&this.ttlAutopurge){let H=setTimeout(()=>{if(this.#S(Y))this.#b(this.#z[Y],"expire")},J+1);if(H.unref)H.unref()}},this.#v=(Y)=>{Z[Y]=Q[Y]!==0?m0.now():0},this.#w=(Y,J)=>{if(Q[J]){let W=Q[J],H=Z[J];if(!W||!H)return;Y.ttl=W,Y.start=H,Y.now=X||q();let V=Y.now-H;Y.remainingTTL=W-V}};let X=0,q=()=>{let Y=m0.now();if(this.ttlResolution>0){X=Y;let J=setTimeout(()=>X=0,this.ttlResolution);if(J.unref)J.unref()}return Y};this.getRemainingTTL=(Y)=>{let J=this.#V.get(Y);if(J===void 0)return 0;let W=Q[J],H=Z[J];if(!W||!H)return 1/0;let V=(X||q())-H;return W-V},this.#S=(Y)=>{let J=Z[Y],W=Q[Y];return!!W&&!!J&&(X||q())-J>W}}#v=()=>{};#w=()=>{};#D=()=>{};#S=()=>!1;#g(){let Q=new e0(this.#Z);this.#G=0,this.#T=Q,this.#y=(Z)=>{this.#G-=Q[Z],Q[Z]=0},this.#m=(Z,X,q,Y)=>{if(this.#U(X))return 0;if(!k0(q))if(Y){if(typeof Y!=="function")throw TypeError("sizeCalculation must be a function");if(q=Y(X,Z),!k0(q))throw TypeError("sizeCalculation return invalid (expect positive integer)")}else throw TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return q},this.#x=(Z,X,q)=>{if(Q[Z]=X,this.#Q){let Y=this.#Q-Q[Z];while(this.#G>Y)this.#u(!0)}if(this.#G+=Q[Z],q)q.entrySize=X,q.totalCalculatedSize=this.#G}}#y=(Q)=>{};#x=(Q,Z,X)=>{};#m=(Q,Z,X,q)=>{if(X||q)throw TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#N({allowStale:Q=this.allowStale}={}){if(this.#K)for(let Z=this.#A;;){if(!this.#l(Z))break;if(Q||!this.#S(Z))yield Z;if(Z===this.#$)break;else Z=this.#O[Z]}}*#P({allowStale:Q=this.allowStale}={}){if(this.#K)for(let Z=this.#$;;){if(!this.#l(Z))break;if(Q||!this.#S(Z))yield Z;if(Z===this.#A)break;else Z=this.#M[Z]}}#l(Q){return Q!==void 0&&this.#V.get(this.#z[Q])===Q}*entries(){for(let Q of this.#N())if(this.#Y[Q]!==void 0&&this.#z[Q]!==void 0&&!this.#U(this.#Y[Q]))yield[this.#z[Q],this.#Y[Q]]}*rentries(){for(let Q of this.#P())if(this.#Y[Q]!==void 0&&this.#z[Q]!==void 0&&!this.#U(this.#Y[Q]))yield[this.#z[Q],this.#Y[Q]]}*keys(){for(let Q of this.#N()){let Z=this.#z[Q];if(Z!==void 0&&!this.#U(this.#Y[Q]))yield Z}}*rkeys(){for(let Q of this.#P()){let Z=this.#z[Q];if(Z!==void 0&&!this.#U(this.#Y[Q]))yield Z}}*values(){for(let Q of this.#N())if(this.#Y[Q]!==void 0&&!this.#U(this.#Y[Q]))yield this.#Y[Q]}*rvalues(){for(let Q of this.#P())if(this.#Y[Q]!==void 0&&!this.#U(this.#Y[Q]))yield this.#Y[Q]}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(Q,Z={}){for(let X of this.#N()){let q=this.#Y[X],Y=this.#U(q)?q.__staleWhileFetching:q;if(Y===void 0)continue;if(Q(Y,this.#z[X],this))return this.get(this.#z[X],Z)}}forEach(Q,Z=this){for(let X of this.#N()){let q=this.#Y[X],Y=this.#U(q)?q.__staleWhileFetching:q;if(Y===void 0)continue;Q.call(Z,Y,this.#z[X],this)}}rforEach(Q,Z=this){for(let X of this.#P()){let q=this.#Y[X],Y=this.#U(q)?q.__staleWhileFetching:q;if(Y===void 0)continue;Q.call(Z,Y,this.#z[X],this)}}purgeStale(){let Q=!1;for(let Z of this.#P({allowStale:!0}))if(this.#S(Z))this.#b(this.#z[Z],"expire"),Q=!0;return Q}info(Q){let Z=this.#V.get(Q);if(Z===void 0)return;let X=this.#Y[Z],q=this.#U(X)?X.__staleWhileFetching:X;if(q===void 0)return;let Y={value:q};if(this.#F&&this.#W){let J=this.#F[Z],W=this.#W[Z];if(J&&W){let H=J-(m0.now()-W);Y.ttl=H,Y.start=Date.now()}}if(this.#T)Y.size=this.#T[Z];return Y}dump(){let Q=[];for(let Z of this.#N({allowStale:!0})){let X=this.#z[Z],q=this.#Y[Z],Y=this.#U(q)?q.__staleWhileFetching:q;if(Y===void 0||X===void 0)continue;let J={value:Y};if(this.#F&&this.#W){J.ttl=this.#F[Z];let W=m0.now()-this.#W[Z];J.start=Math.floor(Date.now()-W)}if(this.#T)J.size=this.#T[Z];Q.unshift([X,J])}return Q}load(Q){this.clear();for(let[Z,X]of Q){if(X.start){let q=Date.now()-X.start;X.start=m0.now()-q}this.set(Z,X.value,X)}}set(Q,Z,X={}){if(Z===void 0)return this.delete(Q),this;let{ttl:q=this.ttl,start:Y,noDisposeOnSet:J=this.noDisposeOnSet,sizeCalculation:W=this.sizeCalculation,status:H}=X,{noUpdateTTL:V=this.noUpdateTTL}=X,K=this.#m(Q,Z,X.size||0,W);if(this.maxEntrySize&&K>this.maxEntrySize){if(H)H.set="miss",H.maxEntrySizeExceeded=!0;return this.#b(Q,"set"),this}let z=this.#K===0?void 0:this.#V.get(Q);if(z===void 0){if(z=this.#K===0?this.#A:this.#j.length!==0?this.#j.pop():this.#K===this.#Z?this.#u(!1):this.#K,this.#z[z]=Q,this.#Y[z]=Z,this.#V.set(Q,z),this.#M[this.#A]=z,this.#O[z]=this.#A,this.#A=z,this.#K++,this.#x(z,K,H),H)H.set="add";if(V=!1,this.#k)this.#q?.(Z,Q,"add")}else{this.#f(z);let G=this.#Y[z];if(Z!==G){if(this.#C&&this.#U(G)){G.__abortController.abort(Error("replaced"));let{__staleWhileFetching:_}=G;if(_!==void 0&&!J){if(this.#_)this.#X?.(_,Q,"set");if(this.#R)this.#B?.push([_,Q,"set"])}}else if(!J){if(this.#_)this.#X?.(G,Q,"set");if(this.#R)this.#B?.push([G,Q,"set"])}if(this.#y(z),this.#x(z,K,H),this.#Y[z]=Z,H){H.set="replace";let _=G&&this.#U(G)?G.__staleWhileFetching:G;if(_!==void 0)H.oldValue=_}}else if(H)H.set="update";if(this.#k)this.onInsert?.(Z,Q,Z===G?"update":"replace")}if(q!==0&&!this.#F)this.#H();if(this.#F){if(!V)this.#D(z,q,Y);if(H)this.#w(H,z)}if(!J&&this.#R&&this.#B){let G=this.#B,_;while(_=G?.shift())this.#J?.(..._)}return this}pop(){try{while(this.#K){let Q=this.#Y[this.#$];if(this.#u(!0),this.#U(Q)){if(Q.__staleWhileFetching)return Q.__staleWhileFetching}else if(Q!==void 0)return Q}}finally{if(this.#R&&this.#B){let Q=this.#B,Z;while(Z=Q?.shift())this.#J?.(...Z)}}}#u(Q){let Z=this.#$,X=this.#z[Z],q=this.#Y[Z];if(this.#C&&this.#U(q))q.__abortController.abort(Error("evicted"));else if(this.#_||this.#R){if(this.#_)this.#X?.(q,X,"evict");if(this.#R)this.#B?.push([q,X,"evict"])}if(this.#y(Z),Q)this.#z[Z]=void 0,this.#Y[Z]=void 0,this.#j.push(Z);if(this.#K===1)this.#$=this.#A=0,this.#j.length=0;else this.#$=this.#M[Z];return this.#V.delete(X),this.#K--,Z}has(Q,Z={}){let{updateAgeOnHas:X=this.updateAgeOnHas,status:q}=Z,Y=this.#V.get(Q);if(Y!==void 0){let J=this.#Y[Y];if(this.#U(J)&&J.__staleWhileFetching===void 0)return!1;if(!this.#S(Y)){if(X)this.#v(Y);if(q)q.has="hit",this.#w(q,Y);return!0}else if(q)q.has="stale",this.#w(q,Y)}else if(q)q.has="miss";return!1}peek(Q,Z={}){let{allowStale:X=this.allowStale}=Z,q=this.#V.get(Q);if(q===void 0||!X&&this.#S(q))return;let Y=this.#Y[q];return this.#U(Y)?Y.__staleWhileFetching:Y}#E(Q,Z,X,q){let Y=Z===void 0?void 0:this.#Y[Z];if(this.#U(Y))return Y;let J=new S8,{signal:W}=X;W?.addEventListener("abort",()=>J.abort(W.reason),{signal:J.signal});let H={signal:J.signal,options:X,context:q},V=(U,M=!1)=>{let{aborted:$}=J.signal,R=X.ignoreFetchAbort&&U!==void 0;if(X.status)if($&&!M){if(X.status.fetchAborted=!0,X.status.fetchError=J.signal.reason,R)X.status.fetchAbortIgnored=!0}else X.status.fetchResolved=!0;if($&&!R&&!M)return z(J.signal.reason);let O=_;if(this.#Y[Z]===_)if(U===void 0)if(O.__staleWhileFetching)this.#Y[Z]=O.__staleWhileFetching;else this.#b(Q,"fetch");else{if(X.status)X.status.fetchUpdated=!0;this.set(Q,U,H.options)}return U},K=(U)=>{if(X.status)X.status.fetchRejected=!0,X.status.fetchError=U;return z(U)},z=(U)=>{let{aborted:M}=J.signal,$=M&&X.allowStaleOnFetchAbort,R=$||X.allowStaleOnFetchRejection,O=R||X.noDeleteOnFetchRejection,B=_;if(this.#Y[Z]===_){if(!O||B.__staleWhileFetching===void 0)this.#b(Q,"fetch");else if(!$)this.#Y[Z]=B.__staleWhileFetching}if(R){if(X.status&&B.__staleWhileFetching!==void 0)X.status.returnedStale=!0;return B.__staleWhileFetching}else if(B.__returned===B)throw U},G=(U,M)=>{let $=this.#L?.(Q,Y,H);if($&&$ instanceof Promise)$.then((R)=>U(R===void 0?void 0:R),M);J.signal.addEventListener("abort",()=>{if(!X.ignoreFetchAbort||X.allowStaleOnFetchAbort){if(U(void 0),X.allowStaleOnFetchAbort)U=(R)=>V(R,!0)}})};if(X.status)X.status.fetchDispatched=!0;let _=new Promise(G).then(V,K),A=Object.assign(_,{__abortController:J,__staleWhileFetching:Y,__returned:void 0});if(Z===void 0)this.set(Q,A,{...H.options,status:void 0}),Z=this.#V.get(Q);else this.#Y[Z]=A;return A}#U(Q){if(!this.#C)return!1;let Z=Q;return!!Z&&Z instanceof Promise&&Z.hasOwnProperty("__staleWhileFetching")&&Z.__abortController instanceof S8}async fetch(Q,Z={}){let{allowStale:X=this.allowStale,updateAgeOnGet:q=this.updateAgeOnGet,noDeleteOnStaleGet:Y=this.noDeleteOnStaleGet,ttl:J=this.ttl,noDisposeOnSet:W=this.noDisposeOnSet,size:H=0,sizeCalculation:V=this.sizeCalculation,noUpdateTTL:K=this.noUpdateTTL,noDeleteOnFetchRejection:z=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:G=this.allowStaleOnFetchRejection,ignoreFetchAbort:_=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:U,forceRefresh:M=!1,status:$,signal:R}=Z;if(!this.#C){if($)$.fetch="get";return this.get(Q,{allowStale:X,updateAgeOnGet:q,noDeleteOnStaleGet:Y,status:$})}let O={allowStale:X,updateAgeOnGet:q,noDeleteOnStaleGet:Y,ttl:J,noDisposeOnSet:W,size:H,sizeCalculation:V,noUpdateTTL:K,noDeleteOnFetchRejection:z,allowStaleOnFetchRejection:G,allowStaleOnFetchAbort:A,ignoreFetchAbort:_,status:$,signal:R},B=this.#V.get(Q);if(B===void 0){if($)$.fetch="miss";let T=this.#E(Q,B,O,U);return T.__returned=T}else{let T=this.#Y[B];if(this.#U(T)){let H0=X&&T.__staleWhileFetching!==void 0;if($){if($.fetch="inflight",H0)$.returnedStale=!0}return H0?T.__staleWhileFetching:T.__returned=T}let S=this.#S(B);if(!M&&!S){if($)$.fetch="hit";if(this.#f(B),q)this.#v(B);if($)this.#w($,B);return T}let y=this.#E(Q,B,O,U),J0=y.__staleWhileFetching!==void 0&&X;if($){if($.fetch=S?"stale":"refresh",J0&&S)$.returnedStale=!0}return J0?y.__staleWhileFetching:y.__returned=y}}async forceFetch(Q,Z={}){let X=await this.fetch(Q,Z);if(X===void 0)throw Error("fetch() returned undefined");return X}memo(Q,Z={}){let X=this.#I;if(!X)throw Error("no memoMethod provided to constructor");let{context:q,forceRefresh:Y,...J}=Z,W=this.get(Q,J);if(!Y&&W!==void 0)return W;let H=X(Q,W,{options:J,context:q});return this.set(Q,H,J),H}get(Q,Z={}){let{allowStale:X=this.allowStale,updateAgeOnGet:q=this.updateAgeOnGet,noDeleteOnStaleGet:Y=this.noDeleteOnStaleGet,status:J}=Z,W=this.#V.get(Q);if(W!==void 0){let H=this.#Y[W],V=this.#U(H);if(J)this.#w(J,W);if(this.#S(W)){if(J)J.get="stale";if(!V){if(!Y)this.#b(Q,"expire");if(J&&X)J.returnedStale=!0;return X?H:void 0}else{if(J&&X&&H.__staleWhileFetching!==void 0)J.returnedStale=!0;return X?H.__staleWhileFetching:void 0}}else{if(J)J.get="hit";if(V)return H.__staleWhileFetching;if(this.#f(W),q)this.#v(W);return H}}else if(J)J.get="miss"}#c(Q,Z){this.#O[Z]=Q,this.#M[Q]=Z}#f(Q){if(Q!==this.#A){if(Q===this.#$)this.#$=this.#M[Q];else this.#c(this.#O[Q],this.#M[Q]);this.#c(this.#A,Q),this.#A=Q}}delete(Q){return this.#b(Q,"delete")}#b(Q,Z){let X=!1;if(this.#K!==0){let q=this.#V.get(Q);if(q!==void 0)if(X=!0,this.#K===1)this.#h(Z);else{this.#y(q);let Y=this.#Y[q];if(this.#U(Y))Y.__abortController.abort(Error("deleted"));else if(this.#_||this.#R){if(this.#_)this.#X?.(Y,Q,Z);if(this.#R)this.#B?.push([Y,Q,Z])}if(this.#V.delete(Q),this.#z[q]=void 0,this.#Y[q]=void 0,q===this.#A)this.#A=this.#O[q];else if(q===this.#$)this.#$=this.#M[q];else{let J=this.#O[q];this.#M[J]=this.#M[q];let W=this.#M[q];this.#O[W]=this.#O[q]}this.#K--,this.#j.push(q)}}if(this.#R&&this.#B?.length){let q=this.#B,Y;while(Y=q?.shift())this.#J?.(...Y)}return X}clear(){return this.#h("delete")}#h(Q){for(let Z of this.#P({allowStale:!0})){let X=this.#Y[Z];if(this.#U(X))X.__abortController.abort(Error("deleted"));else{let q=this.#z[Z];if(this.#_)this.#X?.(X,q,Q);if(this.#R)this.#B?.push([X,q,Q])}}if(this.#V.clear(),this.#Y.fill(void 0),this.#z.fill(void 0),this.#F&&this.#W)this.#F.fill(0),this.#W.fill(0);if(this.#T)this.#T.fill(0);if(this.#$=0,this.#A=0,this.#j.length=0,this.#G=0,this.#K=0,this.#R&&this.#B){let Z=this.#B,X;while(X=Z?.shift())this.#J?.(...X)}}}import{posix as U4,win32 as Z7}from"node:path";import{fileURLToPath as $4}from"node:url";import{lstatSync as O4,readdir as M4,readdirSync as A4,readlinkSync as R4,realpathSync as B4}from"fs";import*as I4 from"node:fs";import{lstat as F4,readdir as T4,readlink as j4,realpath as C4}from"node:fs/promises";import{EventEmitter as o6}from"node:events";import YQ from"node:stream";import{StringDecoder as q4}from"node:string_decoder";var QQ=typeof process==="object"&&process?process:{stdout:null,stderr:null},Y4=(Q)=>!!Q&&typeof Q==="object"&&(Q instanceof x0||Q instanceof YQ||J4(Q)||H4(Q)),J4=(Q)=>!!Q&&typeof Q==="object"&&Q instanceof o6&&typeof Q.pipe==="function"&&Q.pipe!==YQ.Writable.prototype.pipe,H4=(Q)=>!!Q&&typeof Q==="object"&&Q instanceof o6&&typeof Q.write==="function"&&typeof Q.end==="function",F0=Symbol("EOF"),T0=Symbol("maybeEmitEnd"),D0=Symbol("emittedEnd"),N8=Symbol("emittingEnd"),Z8=Symbol("emittedError"),P8=Symbol("closed"),ZQ=Symbol("read"),k8=Symbol("flush"),XQ=Symbol("flushChunk"),U0=Symbol("encoding"),c0=Symbol("decoder"),i=Symbol("flowing"),X8=Symbol("paused"),d0=Symbol("resume"),p=Symbol("buffer"),X0=Symbol("pipes"),a=Symbol("bufferLength"),p6=Symbol("bufferPush"),D8=Symbol("bufferShift"),Q0=Symbol("objectMode"),g=Symbol("destroyed"),a6=Symbol("error"),n6=Symbol("emitData"),qQ=Symbol("emitEnd"),r6=Symbol("emitEnd2"),A0=Symbol("async"),s6=Symbol("abort"),b8=Symbol("aborted"),q8=Symbol("signal"),E0=Symbol("dataListeners"),Y0=Symbol("discarded"),Y8=(Q)=>Promise.resolve().then(Q),W4=(Q)=>Q(),V4=(Q)=>Q==="end"||Q==="finish"||Q==="prefinish",K4=(Q)=>Q instanceof ArrayBuffer||!!Q&&typeof Q==="object"&&Q.constructor&&Q.constructor.name==="ArrayBuffer"&&Q.byteLength>=0,_4=(Q)=>!Buffer.isBuffer(Q)&&ArrayBuffer.isView(Q);class t6{src;dest;opts;ondrain;constructor(Q,Z,X){this.src=Q,this.dest=Z,this.opts=X,this.ondrain=()=>Q[d0](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(Q){}end(){if(this.unpipe(),this.opts.end)this.dest.end()}}class JQ extends t6{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(Q,Z,X){super(Q,Z,X);this.proxyErrors=(q)=>Z.emit("error",q),Q.on("error",this.proxyErrors)}}var z4=(Q)=>!!Q.objectMode,G4=(Q)=>!Q.objectMode&&!!Q.encoding&&Q.encoding!=="buffer";class x0 extends o6{[i]=!1;[X8]=!1;[X0]=[];[p]=[];[Q0];[U0];[A0];[c0];[F0]=!1;[D0]=!1;[N8]=!1;[P8]=!1;[Z8]=null;[a]=0;[g]=!1;[q8];[b8]=!1;[E0]=0;[Y0]=!1;writable=!0;readable=!0;constructor(...Q){let Z=Q[0]||{};super();if(Z.objectMode&&typeof Z.encoding==="string")throw TypeError("Encoding and objectMode may not be used together");if(z4(Z))this[Q0]=!0,this[U0]=null;else if(G4(Z))this[U0]=Z.encoding,this[Q0]=!1;else this[Q0]=!1,this[U0]=null;if(this[A0]=!!Z.async,this[c0]=this[U0]?new q4(this[U0]):null,Z&&Z.debugExposeBuffer===!0)Object.defineProperty(this,"buffer",{get:()=>this[p]});if(Z&&Z.debugExposePipes===!0)Object.defineProperty(this,"pipes",{get:()=>this[X0]});let{signal:X}=Z;if(X)if(this[q8]=X,X.aborted)this[s6]();else X.addEventListener("abort",()=>this[s6]())}get bufferLength(){return this[a]}get encoding(){return this[U0]}set encoding(Q){throw Error("Encoding must be set at instantiation time")}setEncoding(Q){throw Error("Encoding must be set at instantiation time")}get objectMode(){return this[Q0]}set objectMode(Q){throw Error("objectMode must be set at instantiation time")}get["async"](){return this[A0]}set["async"](Q){this[A0]=this[A0]||!!Q}[s6](){this[b8]=!0,this.emit("abort",this[q8]?.reason),this.destroy(this[q8]?.reason)}get aborted(){return this[b8]}set aborted(Q){}write(Q,Z,X){if(this[b8])return!1;if(this[F0])throw Error("write after end");if(this[g])return this.emit("error",Object.assign(Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;if(typeof Z==="function")X=Z,Z="utf8";if(!Z)Z="utf8";let q=this[A0]?Y8:W4;if(!this[Q0]&&!Buffer.isBuffer(Q)){if(_4(Q))Q=Buffer.from(Q.buffer,Q.byteOffset,Q.byteLength);else if(K4(Q))Q=Buffer.from(Q);else if(typeof Q!=="string")throw Error("Non-contiguous data written to non-objectMode stream")}if(this[Q0]){if(this[i]&&this[a]!==0)this[k8](!0);if(this[i])this.emit("data",Q);else this[p6](Q);if(this[a]!==0)this.emit("readable");if(X)q(X);return this[i]}if(!Q.length){if(this[a]!==0)this.emit("readable");if(X)q(X);return this[i]}if(typeof Q==="string"&&!(Z===this[U0]&&!this[c0]?.lastNeed))Q=Buffer.from(Q,Z);if(Buffer.isBuffer(Q)&&this[U0])Q=this[c0].write(Q);if(this[i]&&this[a]!==0)this[k8](!0);if(this[i])this.emit("data",Q);else this[p6](Q);if(this[a]!==0)this.emit("readable");if(X)q(X);return this[i]}read(Q){if(this[g])return null;if(this[Y0]=!1,this[a]===0||Q===0||Q&&Q>this[a])return this[T0](),null;if(this[Q0])Q=null;if(this[p].length>1&&!this[Q0])this[p]=[this[U0]?this[p].join(""):Buffer.concat(this[p],this[a])];let Z=this[ZQ](Q||null,this[p][0]);return this[T0](),Z}[ZQ](Q,Z){if(this[Q0])this[D8]();else{let X=Z;if(Q===X.length||Q===null)this[D8]();else if(typeof X==="string")this[p][0]=X.slice(Q),Z=X.slice(0,Q),this[a]-=Q;else this[p][0]=X.subarray(Q),Z=X.subarray(0,Q),this[a]-=Q}if(this.emit("data",Z),!this[p].length&&!this[F0])this.emit("drain");return Z}end(Q,Z,X){if(typeof Q==="function")X=Q,Q=void 0;if(typeof Z==="function")X=Z,Z="utf8";if(Q!==void 0)this.write(Q,Z);if(X)this.once("end",X);if(this[F0]=!0,this.writable=!1,this[i]||!this[X8])this[T0]();return this}[d0](){if(this[g])return;if(!this[E0]&&!this[X0].length)this[Y0]=!0;if(this[X8]=!1,this[i]=!0,this.emit("resume"),this[p].length)this[k8]();else if(this[F0])this[T0]();else this.emit("drain")}resume(){return this[d0]()}pause(){this[i]=!1,this[X8]=!0,this[Y0]=!1}get destroyed(){return this[g]}get flowing(){return this[i]}get paused(){return this[X8]}[p6](Q){if(this[Q0])this[a]+=1;else this[a]+=Q.length;this[p].push(Q)}[D8](){if(this[Q0])this[a]-=1;else this[a]-=this[p][0].length;return this[p].shift()}[k8](Q=!1){do;while(this[XQ](this[D8]())&&this[p].length);if(!Q&&!this[p].length&&!this[F0])this.emit("drain")}[XQ](Q){return this.emit("data",Q),this[i]}pipe(Q,Z){if(this[g])return Q;this[Y0]=!1;let X=this[D0];if(Z=Z||{},Q===QQ.stdout||Q===QQ.stderr)Z.end=!1;else Z.end=Z.end!==!1;if(Z.proxyErrors=!!Z.proxyErrors,X){if(Z.end)Q.end()}else if(this[X0].push(!Z.proxyErrors?new t6(this,Q,Z):new JQ(this,Q,Z)),this[A0])Y8(()=>this[d0]());else this[d0]();return Q}unpipe(Q){let Z=this[X0].find((X)=>X.dest===Q);if(Z){if(this[X0].length===1){if(this[i]&&this[E0]===0)this[i]=!1;this[X0]=[]}else this[X0].splice(this[X0].indexOf(Z),1);Z.unpipe()}}addListener(Q,Z){return this.on(Q,Z)}on(Q,Z){let X=super.on(Q,Z);if(Q==="data"){if(this[Y0]=!1,this[E0]++,!this[X0].length&&!this[i])this[d0]()}else if(Q==="readable"&&this[a]!==0)super.emit("readable");else if(V4(Q)&&this[D0])super.emit(Q),this.removeAllListeners(Q);else if(Q==="error"&&this[Z8]){let q=Z;if(this[A0])Y8(()=>q.call(this,this[Z8]));else q.call(this,this[Z8])}return X}removeListener(Q,Z){return this.off(Q,Z)}off(Q,Z){let X=super.off(Q,Z);if(Q==="data"){if(this[E0]=this.listeners("data").length,this[E0]===0&&!this[Y0]&&!this[X0].length)this[i]=!1}return X}removeAllListeners(Q){let Z=super.removeAllListeners(Q);if(Q==="data"||Q===void 0){if(this[E0]=0,!this[Y0]&&!this[X0].length)this[i]=!1}return Z}get emittedEnd(){return this[D0]}[T0](){if(!this[N8]&&!this[D0]&&!this[g]&&this[p].length===0&&this[F0]){if(this[N8]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[P8])this.emit("close");this[N8]=!1}}emit(Q,...Z){let X=Z[0];if(Q!=="error"&&Q!=="close"&&Q!==g&&this[g])return!1;else if(Q==="data")return!this[Q0]&&!X?!1:this[A0]?(Y8(()=>this[n6](X)),!0):this[n6](X);else if(Q==="end")return this[qQ]();else if(Q==="close"){if(this[P8]=!0,!this[D0]&&!this[g])return!1;let Y=super.emit("close");return this.removeAllListeners("close"),Y}else if(Q==="error"){this[Z8]=X,super.emit(a6,X);let Y=!this[q8]||this.listeners("error").length?super.emit("error",X):!1;return this[T0](),Y}else if(Q==="resume"){let Y=super.emit("resume");return this[T0](),Y}else if(Q==="finish"||Q==="prefinish"){let Y=super.emit(Q);return this.removeAllListeners(Q),Y}let q=super.emit(Q,...Z);return this[T0](),q}[n6](Q){for(let X of this[X0])if(X.dest.write(Q)===!1)this.pause();let Z=this[Y0]?!1:super.emit("data",Q);return this[T0](),Z}[qQ](){if(this[D0])return!1;return this[D0]=!0,this.readable=!1,this[A0]?(Y8(()=>this[r6]()),!0):this[r6]()}[r6](){if(this[c0]){let Z=this[c0].end();if(Z){for(let X of this[X0])X.dest.write(Z);if(!this[Y0])super.emit("data",Z)}}for(let Z of this[X0])Z.end();let Q=super.emit("end");return this.removeAllListeners("end"),Q}async collect(){let Q=Object.assign([],{dataLength:0});if(!this[Q0])Q.dataLength=0;let Z=this.promise();return this.on("data",(X)=>{if(Q.push(X),!this[Q0])Q.dataLength+=X.length}),await Z,Q}async concat(){if(this[Q0])throw Error("cannot concat in objectMode");let Q=await this.collect();return this[U0]?Q.join(""):Buffer.concat(Q,Q.dataLength)}async promise(){return new Promise((Q,Z)=>{this.on(g,()=>Z(Error("stream destroyed"))),this.on("error",(X)=>Z(X)),this.on("end",()=>Q())})}[Symbol.asyncIterator](){this[Y0]=!1;let Q=!1,Z=async()=>{return this.pause(),Q=!0,{value:void 0,done:!0}};return{next:()=>{if(Q)return Z();let q=this.read();if(q!==null)return Promise.resolve({done:!1,value:q});if(this[F0])return Z();let Y,J,W=(z)=>{this.off("data",H),this.off("end",V),this.off(g,K),Z(),J(z)},H=(z)=>{this.off("error",W),this.off("end",V),this.off(g,K),this.pause(),Y({value:z,done:!!this[F0]})},V=()=>{this.off("error",W),this.off("data",H),this.off(g,K),Z(),Y({done:!0,value:void 0})},K=()=>W(Error("stream destroyed"));return new Promise((z,G)=>{J=G,Y=z,this.once(g,K),this.once("error",W),this.once("end",V),this.once("data",H)})},throw:Z,return:Z,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[Y0]=!1;let Q=!1,Z=()=>{return this.pause(),this.off(a6,Z),this.off(g,Z),this.off("end",Z),Q=!0,{done:!0,value:void 0}},X=()=>{if(Q)return Z();let q=this.read();return q===null?Z():{done:!1,value:q}};return this.once("end",Z),this.once(a6,Z),this.once(g,Z),{next:X,throw:Z,return:Z,[Symbol.iterator](){return this}}}destroy(Q){if(this[g]){if(Q)this.emit("error",Q);else this.emit(g);return this}this[g]=!0,this[Y0]=!0,this[p].length=0,this[a]=0;let Z=this;if(typeof Z.close==="function"&&!this[P8])Z.close();if(Q)this.emit("error",Q);else this.emit(g);return this}static get isStream(){return Y4}}var L4=B4.native,H8={lstatSync:O4,readdir:M4,readdirSync:A4,readlinkSync:R4,realpathSync:L4,promises:{lstat:F4,readdir:T4,readlink:j4,realpath:C4}},_Q=(Q)=>!Q||Q===H8||Q===I4?H8:{...H8,...Q,promises:{...H8.promises,...Q.promises||{}}},zQ=/^\\\\\?\\([a-z]:)\\?$/i,w4=(Q)=>Q.replace(/\//g,"\\").replace(zQ,"$1\\"),S4=/[\\\/]/,_0=0,GQ=1,UQ=2,R0=4,$Q=6,OQ=8,u0=10,MQ=12,K0=15,J8=~K0,e6=16,HQ=32,W8=64,$0=128,v8=256,E8=512,WQ=W8|$0|E8,N4=1023,Q7=(Q)=>Q.isFile()?OQ:Q.isDirectory()?R0:Q.isSymbolicLink()?u0:Q.isCharacterDevice()?UQ:Q.isBlockDevice()?$Q:Q.isSocket()?MQ:Q.isFIFO()?GQ:_0,VQ=new Map,V8=(Q)=>{let Z=VQ.get(Q);if(Z)return Z;let X=Q.normalize("NFKD");return VQ.set(Q,X),X},KQ=new Map,y8=(Q)=>{let Z=KQ.get(Q);if(Z)return Z;let X=V8(Q.toLowerCase());return KQ.set(Q,X),X};class X7 extends Q8{constructor(){super({max:256})}}class AQ extends Q8{constructor(Q=16384){super({maxSize:Q,sizeCalculation:(Z)=>Z.length+1})}}var RQ=Symbol("PathScurry setAsCwd");class q0{name;root;roots;parent;nocase;isCWD=!1;#Z;#Q;get dev(){return this.#Q}#X;get mode(){return this.#X}#q;get nlink(){return this.#q}#J;get uid(){return this.#J}#L;get gid(){return this.#L}#I;get rdev(){return this.#I}#K;get blksize(){return this.#K}#G;get ino(){return this.#G}#V;get size(){return this.#V}#z;get blocks(){return this.#z}#Y;get atimeMs(){return this.#Y}#M;get mtimeMs(){return this.#M}#O;get ctimeMs(){return this.#O}#$;get birthtimeMs(){return this.#$}#A;get atime(){return this.#A}#j;get mtime(){return this.#j}#B;get ctime(){return this.#B}#T;get birthtime(){return this.#T}#W;#F;#_;#C;#R;#k;#H;#v;#w;#D;get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}constructor(Q,Z=_0,X,q,Y,J,W){if(this.name=Q,this.#W=Y?y8(Q):V8(Q),this.#H=Z&N4,this.nocase=Y,this.roots=q,this.root=X||this,this.#v=J,this.#_=W.fullpath,this.#R=W.relative,this.#k=W.relativePosix,this.parent=W.parent,this.parent)this.#Z=this.parent.#Z;else this.#Z=_Q(W.fs)}depth(){if(this.#F!==void 0)return this.#F;if(!this.parent)return this.#F=0;return this.#F=this.parent.depth()+1}childrenCache(){return this.#v}resolve(Q){if(!Q)return this;let Z=this.getRootString(Q),q=Q.substring(Z.length).split(this.splitSep);return Z?this.getRoot(Z).#S(q):this.#S(q)}#S(Q){let Z=this;for(let X of Q)Z=Z.child(X);return Z}children(){let Q=this.#v.get(this);if(Q)return Q;let Z=Object.assign([],{provisional:0});return this.#v.set(this,Z),this.#H&=~e6,Z}child(Q,Z){if(Q===""||Q===".")return this;if(Q==="..")return this.parent||this;let X=this.children(),q=this.nocase?y8(Q):V8(Q);for(let H of X)if(H.#W===q)return H;let Y=this.parent?this.sep:"",J=this.#_?this.#_+Y+Q:void 0,W=this.newChild(Q,_0,{...Z,parent:this,fullpath:J});if(!this.canReaddir())W.#H|=$0;return X.push(W),W}relative(){if(this.isCWD)return"";if(this.#R!==void 0)return this.#R;let Q=this.name,Z=this.parent;if(!Z)return this.#R=this.name;let X=Z.relative();return X+(!X||!Z.parent?"":this.sep)+Q}relativePosix(){if(this.sep==="/")return this.relative();if(this.isCWD)return"";if(this.#k!==void 0)return this.#k;let Q=this.name,Z=this.parent;if(!Z)return this.#k=this.fullpathPosix();let X=Z.relativePosix();return X+(!X||!Z.parent?"":"/")+Q}fullpath(){if(this.#_!==void 0)return this.#_;let Q=this.name,Z=this.parent;if(!Z)return this.#_=this.name;let q=Z.fullpath()+(!Z.parent?"":this.sep)+Q;return this.#_=q}fullpathPosix(){if(this.#C!==void 0)return this.#C;if(this.sep==="/")return this.#C=this.fullpath();if(!this.parent){let q=this.fullpath().replace(/\\/g,"/");if(/^[a-z]:\//i.test(q))return this.#C=`//?/${q}`;else return this.#C=q}let Q=this.parent,Z=Q.fullpathPosix(),X=Z+(!Z||!Q.parent?"":"/")+this.name;return this.#C=X}isUnknown(){return(this.#H&K0)===_0}isType(Q){return this[`is${Q}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return(this.#H&K0)===OQ}isDirectory(){return(this.#H&K0)===R0}isCharacterDevice(){return(this.#H&K0)===UQ}isBlockDevice(){return(this.#H&K0)===$Q}isFIFO(){return(this.#H&K0)===GQ}isSocket(){return(this.#H&K0)===MQ}isSymbolicLink(){return(this.#H&u0)===u0}lstatCached(){return this.#H&HQ?this:void 0}readlinkCached(){return this.#w}realpathCached(){return this.#D}readdirCached(){let Q=this.children();return Q.slice(0,Q.provisional)}canReadlink(){if(this.#w)return!0;if(!this.parent)return!1;let Q=this.#H&K0;return!(Q!==_0&&Q!==u0||this.#H&v8||this.#H&$0)}calledReaddir(){return!!(this.#H&e6)}isENOENT(){return!!(this.#H&$0)}isNamed(Q){return!this.nocase?this.#W===V8(Q):this.#W===y8(Q)}async readlink(){let Q=this.#w;if(Q)return Q;if(!this.canReadlink())return;if(!this.parent)return;try{let Z=await this.#Z.promises.readlink(this.fullpath()),X=(await this.parent.realpath())?.resolve(Z);if(X)return this.#w=X}catch(Z){this.#u(Z.code);return}}readlinkSync(){let Q=this.#w;if(Q)return Q;if(!this.canReadlink())return;if(!this.parent)return;try{let Z=this.#Z.readlinkSync(this.fullpath()),X=this.parent.realpathSync()?.resolve(Z);if(X)return this.#w=X}catch(Z){this.#u(Z.code);return}}#g(Q){this.#H|=e6;for(let Z=Q.provisional;Z<Q.length;Z++){let X=Q[Z];if(X)X.#y()}}#y(){if(this.#H&$0)return;this.#H=(this.#H|$0)&J8,this.#x()}#x(){let Q=this.children();Q.provisional=0;for(let Z of Q)Z.#y()}#m(){this.#H|=E8,this.#N()}#N(){if(this.#H&W8)return;let Q=this.#H;if((Q&K0)===R0)Q&=J8;this.#H=Q|W8,this.#x()}#P(Q=""){if(Q==="ENOTDIR"||Q==="EPERM")this.#N();else if(Q==="ENOENT")this.#y();else this.children().provisional=0}#l(Q=""){if(Q==="ENOTDIR")this.parent.#N();else if(Q==="ENOENT")this.#y()}#u(Q=""){let Z=this.#H;if(Z|=v8,Q==="ENOENT")Z|=$0;if(Q==="EINVAL"||Q==="UNKNOWN")Z&=J8;if(this.#H=Z,Q==="ENOTDIR"&&this.parent)this.parent.#N()}#E(Q,Z){return this.#c(Q,Z)||this.#U(Q,Z)}#U(Q,Z){let X=Q7(Q),q=this.newChild(Q.name,X,{parent:this}),Y=q.#H&K0;if(Y!==R0&&Y!==u0&&Y!==_0)q.#H|=W8;return Z.unshift(q),Z.provisional++,q}#c(Q,Z){for(let X=Z.provisional;X<Z.length;X++){let q=Z[X];if((this.nocase?y8(Q.name):V8(Q.name))!==q.#W)continue;return this.#f(Q,q,X,Z)}}#f(Q,Z,X,q){let Y=Z.name;if(Z.#H=Z.#H&J8|Q7(Q),Y!==Q.name)Z.name=Q.name;if(X!==q.provisional){if(X===q.length-1)q.pop();else q.splice(X,1);q.unshift(Z)}return q.provisional++,Z}async lstat(){if((this.#H&$0)===0)try{return this.#b(await this.#Z.promises.lstat(this.fullpath())),this}catch(Q){this.#l(Q.code)}}lstatSync(){if((this.#H&$0)===0)try{return this.#b(this.#Z.lstatSync(this.fullpath())),this}catch(Q){this.#l(Q.code)}}#b(Q){let{atime:Z,atimeMs:X,birthtime:q,birthtimeMs:Y,blksize:J,blocks:W,ctime:H,ctimeMs:V,dev:K,gid:z,ino:G,mode:_,mtime:A,mtimeMs:U,nlink:M,rdev:$,size:R,uid:O}=Q;this.#A=Z,this.#Y=X,this.#T=q,this.#$=Y,this.#K=J,this.#z=W,this.#B=H,this.#O=V,this.#Q=K,this.#L=z,this.#G=G,this.#X=_,this.#j=A,this.#M=U,this.#q=M,this.#I=$,this.#V=R,this.#J=O;let B=Q7(Q);if(this.#H=this.#H&J8|B|HQ,B!==_0&&B!==R0&&B!==u0)this.#H|=W8}#h=[];#i=!1;#p(Q){this.#i=!1;let Z=this.#h.slice();this.#h.length=0,Z.forEach((X)=>X(null,Q))}readdirCB(Q,Z=!1){if(!this.canReaddir()){if(Z)Q(null,[]);else queueMicrotask(()=>Q(null,[]));return}let X=this.children();if(this.calledReaddir()){let Y=X.slice(0,X.provisional);if(Z)Q(null,Y);else queueMicrotask(()=>Q(null,Y));return}if(this.#h.push(Q),this.#i)return;this.#i=!0;let q=this.fullpath();this.#Z.readdir(q,{withFileTypes:!0},(Y,J)=>{if(Y)this.#P(Y.code),X.provisional=0;else{for(let W of J)this.#E(W,X);this.#g(X)}this.#p(X.slice(0,X.provisional));return})}#d;async readdir(){if(!this.canReaddir())return[];let Q=this.children();if(this.calledReaddir())return Q.slice(0,Q.provisional);let Z=this.fullpath();if(this.#d)await this.#d;else{let X=()=>{};this.#d=new Promise((q)=>X=q);try{for(let q of await this.#Z.promises.readdir(Z,{withFileTypes:!0}))this.#E(q,Q);this.#g(Q)}catch(q){this.#P(q.code),Q.provisional=0}this.#d=void 0,X()}return Q.slice(0,Q.provisional)}readdirSync(){if(!this.canReaddir())return[];let Q=this.children();if(this.calledReaddir())return Q.slice(0,Q.provisional);let Z=this.fullpath();try{for(let X of this.#Z.readdirSync(Z,{withFileTypes:!0}))this.#E(X,Q);this.#g(Q)}catch(X){this.#P(X.code),Q.provisional=0}return Q.slice(0,Q.provisional)}canReaddir(){if(this.#H&WQ)return!1;let Q=K0&this.#H;if(!(Q===_0||Q===R0||Q===u0))return!1;return!0}shouldWalk(Q,Z){return(this.#H&R0)===R0&&!(this.#H&WQ)&&!Q.has(this)&&(!Z||Z(this))}async realpath(){if(this.#D)return this.#D;if((E8|v8|$0)&this.#H)return;try{let Q=await this.#Z.promises.realpath(this.fullpath());return this.#D=this.resolve(Q)}catch(Q){this.#m()}}realpathSync(){if(this.#D)return this.#D;if((E8|v8|$0)&this.#H)return;try{let Q=this.#Z.realpathSync(this.fullpath());return this.#D=this.resolve(Q)}catch(Q){this.#m()}}[RQ](Q){if(Q===this)return;Q.isCWD=!1,this.isCWD=!0;let Z=new Set([]),X=[],q=this;while(q&&q.parent)Z.add(q),q.#R=X.join(this.sep),q.#k=X.join("/"),q=q.parent,X.push("..");q=Q;while(q&&q.parent&&!Z.has(q))q.#R=void 0,q.#k=void 0,q=q.parent}}class x8 extends q0{sep="\\";splitSep=S4;constructor(Q,Z=_0,X,q,Y,J,W){super(Q,Z,X,q,Y,J,W)}newChild(Q,Z=_0,X={}){return new x8(Q,Z,this.root,this.roots,this.nocase,this.childrenCache(),X)}getRootString(Q){return Z7.parse(Q).root}getRoot(Q){if(Q=w4(Q.toUpperCase()),Q===this.root.name)return this.root;for(let[Z,X]of Object.entries(this.roots))if(this.sameRoot(Q,Z))return this.roots[Q]=X;return this.roots[Q]=new K8(Q,this).root}sameRoot(Q,Z=this.root.name){return Q=Q.toUpperCase().replace(/\//g,"\\").replace(zQ,"$1\\"),Q===Z}}class u8 extends q0{splitSep="/";sep="/";constructor(Q,Z=_0,X,q,Y,J,W){super(Q,Z,X,q,Y,J,W)}getRootString(Q){return Q.startsWith("/")?"/":""}getRoot(Q){return this.root}newChild(Q,Z=_0,X={}){return new u8(Q,Z,this.root,this.roots,this.nocase,this.childrenCache(),X)}}class q7{root;rootPath;roots;cwd;#Z;#Q;#X;nocase;#q;constructor(Q=process.cwd(),Z,X,{nocase:q,childrenCacheSize:Y=16384,fs:J=H8}={}){if(this.#q=_Q(J),Q instanceof URL||Q.startsWith("file://"))Q=$4(Q);let W=Z.resolve(Q);this.roots=Object.create(null),this.rootPath=this.parseRootPath(W),this.#Z=new X7,this.#Q=new X7,this.#X=new AQ(Y);let H=W.substring(this.rootPath.length).split(X);if(H.length===1&&!H[0])H.pop();if(q===void 0)throw TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=q,this.root=this.newRoot(this.#q),this.roots[this.rootPath]=this.root;let V=this.root,K=H.length-1,z=Z.sep,G=this.rootPath,_=!1;for(let A of H){let U=K--;V=V.child(A,{relative:Array(U).fill("..").join(z),relativePosix:Array(U).fill("..").join("/"),fullpath:G+=(_?"":z)+A}),_=!0}this.cwd=V}depth(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.depth()}childrenCache(){return this.#X}resolve(...Q){let Z="";for(let Y=Q.length-1;Y>=0;Y--){let J=Q[Y];if(!J||J===".")continue;if(Z=Z?`${J}/${Z}`:J,this.isAbsolute(J))break}let X=this.#Z.get(Z);if(X!==void 0)return X;let q=this.cwd.resolve(Z).fullpath();return this.#Z.set(Z,q),q}resolvePosix(...Q){let Z="";for(let Y=Q.length-1;Y>=0;Y--){let J=Q[Y];if(!J||J===".")continue;if(Z=Z?`${J}/${Z}`:J,this.isAbsolute(J))break}let X=this.#Q.get(Z);if(X!==void 0)return X;let q=this.cwd.resolve(Z).fullpathPosix();return this.#Q.set(Z,q),q}relative(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.relative()}relativePosix(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.relativePosix()}basename(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.name}dirname(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return(Q.parent||Q).fullpath()}async readdir(Q=this.cwd,Z={withFileTypes:!0}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X}=Z;if(!Q.canReaddir())return[];else{let q=await Q.readdir();return X?q:q.map((Y)=>Y.name)}}readdirSync(Q=this.cwd,Z={withFileTypes:!0}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X=!0}=Z;if(!Q.canReaddir())return[];else if(X)return Q.readdirSync();else return Q.readdirSync().map((q)=>q.name)}async lstat(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.lstat()}lstatSync(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.lstatSync()}async readlink(Q=this.cwd,{withFileTypes:Z}={withFileTypes:!1}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q.withFileTypes,Q=this.cwd;let X=await Q.readlink();return Z?X:X?.fullpath()}readlinkSync(Q=this.cwd,{withFileTypes:Z}={withFileTypes:!1}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q.withFileTypes,Q=this.cwd;let X=Q.readlinkSync();return Z?X:X?.fullpath()}async realpath(Q=this.cwd,{withFileTypes:Z}={withFileTypes:!1}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q.withFileTypes,Q=this.cwd;let X=await Q.realpath();return Z?X:X?.fullpath()}realpathSync(Q=this.cwd,{withFileTypes:Z}={withFileTypes:!1}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q.withFileTypes,Q=this.cwd;let X=Q.realpathSync();return Z?X:X?.fullpath()}async walk(Q=this.cwd,Z={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X=!0,follow:q=!1,filter:Y,walkFilter:J}=Z,W=[];if(!Y||Y(Q))W.push(X?Q:Q.fullpath());let H=new Set,V=(z,G)=>{H.add(z),z.readdirCB((_,A)=>{if(_)return G(_);let U=A.length;if(!U)return G();let M=()=>{if(--U===0)G()};for(let $ of A){if(!Y||Y($))W.push(X?$:$.fullpath());if(q&&$.isSymbolicLink())$.realpath().then((R)=>R?.isUnknown()?R.lstat():R).then((R)=>R?.shouldWalk(H,J)?V(R,M):M());else if($.shouldWalk(H,J))V($,M);else M()}},!0)},K=Q;return new Promise((z,G)=>{V(K,(_)=>{if(_)return G(_);z(W)})})}walkSync(Q=this.cwd,Z={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X=!0,follow:q=!1,filter:Y,walkFilter:J}=Z,W=[];if(!Y||Y(Q))W.push(X?Q:Q.fullpath());let H=new Set([Q]);for(let V of H){let K=V.readdirSync();for(let z of K){if(!Y||Y(z))W.push(X?z:z.fullpath());let G=z;if(z.isSymbolicLink()){if(!(q&&(G=z.realpathSync())))continue;if(G.isUnknown())G.lstatSync()}if(G.shouldWalk(H,J))H.add(G)}}return W}[Symbol.asyncIterator](){return this.iterate()}iterate(Q=this.cwd,Z={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;return this.stream(Q,Z)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(Q=this.cwd,Z={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X=!0,follow:q=!1,filter:Y,walkFilter:J}=Z;if(!Y||Y(Q))yield X?Q:Q.fullpath();let W=new Set([Q]);for(let H of W){let V=H.readdirSync();for(let K of V){if(!Y||Y(K))yield X?K:K.fullpath();let z=K;if(K.isSymbolicLink()){if(!(q&&(z=K.realpathSync())))continue;if(z.isUnknown())z.lstatSync()}if(z.shouldWalk(W,J))W.add(z)}}}stream(Q=this.cwd,Z={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X=!0,follow:q=!1,filter:Y,walkFilter:J}=Z,W=new x0({objectMode:!0});if(!Y||Y(Q))W.write(X?Q:Q.fullpath());let H=new Set,V=[Q],K=0,z=()=>{let G=!1;while(!G){let _=V.shift();if(!_){if(K===0)W.end();return}K++,H.add(_);let A=(M,$,R=!1)=>{if(M)return W.emit("error",M);if(q&&!R){let O=[];for(let B of $)if(B.isSymbolicLink())O.push(B.realpath().then((T)=>T?.isUnknown()?T.lstat():T));if(O.length){Promise.all(O).then(()=>A(null,$,!0));return}}for(let O of $)if(O&&(!Y||Y(O))){if(!W.write(X?O:O.fullpath()))G=!0}K--;for(let O of $){let B=O.realpathCached()||O;if(B.shouldWalk(H,J))V.push(B)}if(G&&!W.flowing)W.once("drain",z);else if(!U)z()},U=!0;_.readdirCB(A,!0),U=!1}};return z(),W}streamSync(Q=this.cwd,Z={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X=!0,follow:q=!1,filter:Y,walkFilter:J}=Z,W=new x0({objectMode:!0}),H=new Set;if(!Y||Y(Q))W.write(X?Q:Q.fullpath());let V=[Q],K=0,z=()=>{let G=!1;while(!G){let _=V.shift();if(!_){if(K===0)W.end();return}K++,H.add(_);let A=_.readdirSync();for(let U of A)if(!Y||Y(U)){if(!W.write(X?U:U.fullpath()))G=!0}K--;for(let U of A){let M=U;if(U.isSymbolicLink()){if(!(q&&(M=U.realpathSync())))continue;if(M.isUnknown())M.lstatSync()}if(M.shouldWalk(H,J))V.push(M)}}if(G&&!W.flowing)W.once("drain",z)};return z(),W}chdir(Q=this.cwd){let Z=this.cwd;this.cwd=typeof Q==="string"?this.cwd.resolve(Q):Q,this.cwd[RQ](Z)}}class K8 extends q7{sep="\\";constructor(Q=process.cwd(),Z={}){let{nocase:X=!0}=Z;super(Q,Z7,"\\",{...Z,nocase:X});this.nocase=X;for(let q=this.cwd;q;q=q.parent)q.nocase=this.nocase}parseRootPath(Q){return Z7.parse(Q).root.toUpperCase()}newRoot(Q){return new x8(this.rootPath,R0,void 0,this.roots,this.nocase,this.childrenCache(),{fs:Q})}isAbsolute(Q){return Q.startsWith("/")||Q.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(Q)}}class _8 extends q7{sep="/";constructor(Q=process.cwd(),Z={}){let{nocase:X=!1}=Z;super(Q,U4,"/",{...Z,nocase:X});this.nocase=X}parseRootPath(Q){return"/"}newRoot(Q){return new u8(this.rootPath,R0,void 0,this.roots,this.nocase,this.childrenCache(),{fs:Q})}isAbsolute(Q){return Q.startsWith("/")}}class f8 extends _8{constructor(Q=process.cwd(),Z={}){let{nocase:X=!0}=Z;super(Q,{...Z,nocase:X})}}var XY=process.platform==="win32"?x8:u8,BQ=process.platform==="win32"?K8:process.platform==="darwin"?f8:_8;var P4=(Q)=>Q.length>=1,k4=(Q)=>Q.length>=1;class i0{#Z;#Q;#X;length;#q;#J;#L;#I;#K;#G;#V=!0;constructor(Q,Z,X,q){if(!P4(Q))throw TypeError("empty pattern list");if(!k4(Z))throw TypeError("empty glob list");if(Z.length!==Q.length)throw TypeError("mismatched pattern list and glob list lengths");if(this.length=Q.length,X<0||X>=this.length)throw TypeError("index out of range");if(this.#Z=Q,this.#Q=Z,this.#X=X,this.#q=q,this.#X===0){if(this.isUNC()){let[Y,J,W,H,...V]=this.#Z,[K,z,G,_,...A]=this.#Q;if(V[0]==="")V.shift(),A.shift();let U=[Y,J,W,H,""].join("/"),M=[K,z,G,_,""].join("/");this.#Z=[U,...V],this.#Q=[M,...A],this.length=this.#Z.length}else if(this.isDrive()||this.isAbsolute()){let[Y,...J]=this.#Z,[W,...H]=this.#Q;if(J[0]==="")J.shift(),H.shift();let V=Y+"/",K=W+"/";this.#Z=[V,...J],this.#Q=[K,...H],this.length=this.#Z.length}}}pattern(){return this.#Z[this.#X]}isString(){return typeof this.#Z[this.#X]==="string"}isGlobstar(){return this.#Z[this.#X]===r}isRegExp(){return this.#Z[this.#X]instanceof RegExp}globString(){return this.#L=this.#L||(this.#X===0?this.isAbsolute()?this.#Q[0]+this.#Q.slice(1).join("/"):this.#Q.join("/"):this.#Q.slice(this.#X).join("/"))}hasMore(){return this.length>this.#X+1}rest(){if(this.#J!==void 0)return this.#J;if(!this.hasMore())return this.#J=null;return this.#J=new i0(this.#Z,this.#Q,this.#X+1,this.#q),this.#J.#G=this.#G,this.#J.#K=this.#K,this.#J.#I=this.#I,this.#J}isUNC(){let Q=this.#Z;return this.#K!==void 0?this.#K:this.#K=this.#q==="win32"&&this.#X===0&&Q[0]===""&&Q[1]===""&&typeof Q[2]==="string"&&!!Q[2]&&typeof Q[3]==="string"&&!!Q[3]}isDrive(){let Q=this.#Z;return this.#I!==void 0?this.#I:this.#I=this.#q==="win32"&&this.#X===0&&this.length>1&&typeof Q[0]==="string"&&/^[a-z]:$/i.test(Q[0])}isAbsolute(){let Q=this.#Z;return this.#G!==void 0?this.#G:this.#G=Q[0]===""&&Q.length>1||this.isDrive()||this.isUNC()}root(){let Q=this.#Z[0];return typeof Q==="string"&&this.isAbsolute()&&this.#X===0?Q:""}checkFollowGlobstar(){return!(this.#X===0||!this.isGlobstar()||!this.#V)}markFollowGlobstar(){if(this.#X===0||!this.isGlobstar()||!this.#V)return!1;return this.#V=!1,!0}}var D4=typeof process==="object"&&process&&typeof process.platform==="string"?process.platform:"linux";class z8{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(Q,{nobrace:Z,nocase:X,noext:q,noglobstar:Y,platform:J=D4}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[],this.platform=J,this.mmopts={dot:!0,nobrace:Z,nocase:X,noext:q,noglobstar:Y,optimizationLevel:2,platform:J,nocomment:!0,nonegate:!0};for(let W of Q)this.add(W)}add(Q){let Z=new V0(Q,this.mmopts);for(let X=0;X<Z.set.length;X++){let q=Z.set[X],Y=Z.globParts[X];if(!q||!Y)throw Error("invalid pattern object");while(q[0]==="."&&Y[0]===".")q.shift(),Y.shift();let J=new i0(q,Y,0,this.platform),W=new V0(J.globString(),this.mmopts),H=Y[Y.length-1]==="**",V=J.isAbsolute();if(V)this.absolute.push(W);else this.relative.push(W);if(H)if(V)this.absoluteChildren.push(W);else this.relativeChildren.push(W)}}ignored(Q){let Z=Q.fullpath(),X=`${Z}/`,q=Q.relative()||".",Y=`${q}/`;for(let J of this.relative)if(J.match(q)||J.match(Y))return!0;for(let J of this.absolute)if(J.match(Z)||J.match(X))return!0;return!1}childrenIgnored(Q){let Z=Q.fullpath()+"/",X=(Q.relative()||".")+"/";for(let q of this.relativeChildren)if(q.match(X))return!0;for(let q of this.absoluteChildren)if(q.match(Z))return!0;return!1}}class Y7{store;constructor(Q=new Map){this.store=Q}copy(){return new Y7(new Map(this.store))}hasWalked(Q,Z){return this.store.get(Q.fullpath())?.has(Z.globString())}storeWalked(Q,Z){let X=Q.fullpath(),q=this.store.get(X);if(q)q.add(Z.globString());else this.store.set(X,new Set([Z.globString()]))}}class IQ{store=new Map;add(Q,Z,X){let q=(Z?2:0)|(X?1:0),Y=this.store.get(Q);this.store.set(Q,Y===void 0?q:q&Y)}entries(){return[...this.store.entries()].map(([Q,Z])=>[Q,!!(Z&2),!!(Z&1)])}}class LQ{store=new Map;add(Q,Z){if(!Q.canReaddir())return;let X=this.store.get(Q);if(X){if(!X.find((q)=>q.globString()===Z.globString()))X.push(Z)}else this.store.set(Q,[Z])}get(Q){let Z=this.store.get(Q);if(!Z)throw Error("attempting to walk unknown path");return Z}entries(){return this.keys().map((Q)=>[Q,this.store.get(Q)])}keys(){return[...this.store.keys()].filter((Q)=>Q.canReaddir())}}class G8{hasWalkedCache;matches=new IQ;subwalks=new LQ;patterns;follow;dot;opts;constructor(Q,Z){this.opts=Q,this.follow=!!Q.follow,this.dot=!!Q.dot,this.hasWalkedCache=Z?Z.copy():new Y7}processPatterns(Q,Z){this.patterns=Z;let X=Z.map((q)=>[Q,q]);for(let[q,Y]of X){this.hasWalkedCache.storeWalked(q,Y);let J=Y.root(),W=Y.isAbsolute()&&this.opts.absolute!==!1;if(J){q=q.resolve(J==="/"&&this.opts.root!==void 0?this.opts.root:J);let z=Y.rest();if(!z){this.matches.add(q,!0,!1);continue}else Y=z}if(q.isENOENT())continue;let H,V,K=!1;while(typeof(H=Y.pattern())==="string"&&(V=Y.rest()))q=q.resolve(H),Y=V,K=!0;if(H=Y.pattern(),V=Y.rest(),K){if(this.hasWalkedCache.hasWalked(q,Y))continue;this.hasWalkedCache.storeWalked(q,Y)}if(typeof H==="string"){let z=H===".."||H===""||H===".";this.matches.add(q.resolve(H),W,z);continue}else if(H===r){if(!q.isSymbolicLink()||this.follow||Y.checkFollowGlobstar())this.subwalks.add(q,Y);let z=V?.pattern(),G=V?.rest();if(!V||(z===""||z===".")&&!G)this.matches.add(q,W,z===""||z===".");else if(z===".."){let _=q.parent||q;if(!G)this.matches.add(_,W,!0);else if(!this.hasWalkedCache.hasWalked(_,G))this.subwalks.add(_,G)}}else if(H instanceof RegExp)this.subwalks.add(q,Y)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new G8(this.opts,this.hasWalkedCache)}filterEntries(Q,Z){let X=this.subwalks.get(Q),q=this.child();for(let Y of Z)for(let J of X){let W=J.isAbsolute(),H=J.pattern(),V=J.rest();if(H===r)q.testGlobstar(Y,J,V,W);else if(H instanceof RegExp)q.testRegExp(Y,H,V,W);else q.testString(Y,H,V,W)}return q}testGlobstar(Q,Z,X,q){if(this.dot||!Q.name.startsWith(".")){if(!Z.hasMore())this.matches.add(Q,q,!1);if(Q.canReaddir()){if(this.follow||!Q.isSymbolicLink())this.subwalks.add(Q,Z);else if(Q.isSymbolicLink()){if(X&&Z.checkFollowGlobstar())this.subwalks.add(Q,X);else if(Z.markFollowGlobstar())this.subwalks.add(Q,Z)}}}if(X){let Y=X.pattern();if(typeof Y==="string"&&Y!==".."&&Y!==""&&Y!==".")this.testString(Q,Y,X.rest(),q);else if(Y===".."){let J=Q.parent||Q;this.subwalks.add(J,X)}else if(Y instanceof RegExp)this.testRegExp(Q,Y,X.rest(),q)}}testRegExp(Q,Z,X,q){if(!Z.test(Q.name))return;if(!X)this.matches.add(Q,q,!1);else this.subwalks.add(Q,X)}testString(Q,Z,X,q){if(!Q.isNamed(Z))return;if(!X)this.matches.add(Q,q,!1);else this.subwalks.add(Q,X)}}var b4=(Q,Z)=>typeof Q==="string"?new z8([Q],Z):Array.isArray(Q)?new z8(Q,Z):Q;class J7{path;patterns;opts;seen=new Set;paused=!1;aborted=!1;#Z=[];#Q;#X;signal;maxDepth;includeChildMatches;constructor(Q,Z,X){if(this.patterns=Q,this.path=Z,this.opts=X,this.#X=!X.posix&&X.platform==="win32"?"\\":"/",this.includeChildMatches=X.includeChildMatches!==!1,X.ignore||!this.includeChildMatches){if(this.#Q=b4(X.ignore??[],X),!this.includeChildMatches&&typeof this.#Q.add!=="function")throw Error("cannot ignore child matches, ignore lacks add() method.")}if(this.maxDepth=X.maxDepth||1/0,X.signal)this.signal=X.signal,this.signal.addEventListener("abort",()=>{this.#Z.length=0})}#q(Q){return this.seen.has(Q)||!!this.#Q?.ignored?.(Q)}#J(Q){return!!this.#Q?.childrenIgnored?.(Q)}pause(){this.paused=!0}resume(){if(this.signal?.aborted)return;this.paused=!1;let Q=void 0;while(!this.paused&&(Q=this.#Z.shift()))Q()}onResume(Q){if(this.signal?.aborted)return;if(!this.paused)Q();else this.#Z.push(Q)}async matchCheck(Q,Z){if(Z&&this.opts.nodir)return;let X;if(this.opts.realpath){if(X=Q.realpathCached()||await Q.realpath(),!X)return;Q=X}let Y=Q.isUnknown()||this.opts.stat?await Q.lstat():Q;if(this.opts.follow&&this.opts.nodir&&Y?.isSymbolicLink()){let J=await Y.realpath();if(J&&(J.isUnknown()||this.opts.stat))await J.lstat()}return this.matchCheckTest(Y,Z)}matchCheckTest(Q,Z){return Q&&(this.maxDepth===1/0||Q.depth()<=this.maxDepth)&&(!Z||Q.canReaddir())&&(!this.opts.nodir||!Q.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!Q.isSymbolicLink()||!Q.realpathCached()?.isDirectory())&&!this.#q(Q)?Q:void 0}matchCheckSync(Q,Z){if(Z&&this.opts.nodir)return;let X;if(this.opts.realpath){if(X=Q.realpathCached()||Q.realpathSync(),!X)return;Q=X}let Y=Q.isUnknown()||this.opts.stat?Q.lstatSync():Q;if(this.opts.follow&&this.opts.nodir&&Y?.isSymbolicLink()){let J=Y.realpathSync();if(J&&(J?.isUnknown()||this.opts.stat))J.lstatSync()}return this.matchCheckTest(Y,Z)}matchFinish(Q,Z){if(this.#q(Q))return;if(!this.includeChildMatches&&this.#Q?.add){let Y=`${Q.relativePosix()}/**`;this.#Q.add(Y)}let X=this.opts.absolute===void 0?Z:this.opts.absolute;this.seen.add(Q);let q=this.opts.mark&&Q.isDirectory()?this.#X:"";if(this.opts.withFileTypes)this.matchEmit(Q);else if(X){let Y=this.opts.posix?Q.fullpathPosix():Q.fullpath();this.matchEmit(Y+q)}else{let Y=this.opts.posix?Q.relativePosix():Q.relative(),J=this.opts.dotRelative&&!Y.startsWith(".."+this.#X)?"."+this.#X:"";this.matchEmit(!Y?"."+q:J+Y+q)}}async match(Q,Z,X){let q=await this.matchCheck(Q,X);if(q)this.matchFinish(q,Z)}matchSync(Q,Z,X){let q=this.matchCheckSync(Q,X);if(q)this.matchFinish(q,Z)}walkCB(Q,Z,X){if(this.signal?.aborted)X();this.walkCB2(Q,Z,new G8(this.opts),X)}walkCB2(Q,Z,X,q){if(this.#J(Q))return q();if(this.signal?.aborted)q();if(this.paused){this.onResume(()=>this.walkCB2(Q,Z,X,q));return}X.processPatterns(Q,Z);let Y=1,J=()=>{if(--Y===0)q()};for(let[W,H,V]of X.matches.entries()){if(this.#q(W))continue;Y++,this.match(W,H,V).then(()=>J())}for(let W of X.subwalkTargets()){if(this.maxDepth!==1/0&&W.depth()>=this.maxDepth)continue;Y++;let H=W.readdirCached();if(W.calledReaddir())this.walkCB3(W,H,X,J);else W.readdirCB((V,K)=>this.walkCB3(W,K,X,J),!0)}J()}walkCB3(Q,Z,X,q){X=X.filterEntries(Q,Z);let Y=1,J=()=>{if(--Y===0)q()};for(let[W,H,V]of X.matches.entries()){if(this.#q(W))continue;Y++,this.match(W,H,V).then(()=>J())}for(let[W,H]of X.subwalks.entries())Y++,this.walkCB2(W,H,X.child(),J);J()}walkCBSync(Q,Z,X){if(this.signal?.aborted)X();this.walkCB2Sync(Q,Z,new G8(this.opts),X)}walkCB2Sync(Q,Z,X,q){if(this.#J(Q))return q();if(this.signal?.aborted)q();if(this.paused){this.onResume(()=>this.walkCB2Sync(Q,Z,X,q));return}X.processPatterns(Q,Z);let Y=1,J=()=>{if(--Y===0)q()};for(let[W,H,V]of X.matches.entries()){if(this.#q(W))continue;this.matchSync(W,H,V)}for(let W of X.subwalkTargets()){if(this.maxDepth!==1/0&&W.depth()>=this.maxDepth)continue;Y++;let H=W.readdirSync();this.walkCB3Sync(W,H,X,J)}J()}walkCB3Sync(Q,Z,X,q){X=X.filterEntries(Q,Z);let Y=1,J=()=>{if(--Y===0)q()};for(let[W,H,V]of X.matches.entries()){if(this.#q(W))continue;this.matchSync(W,H,V)}for(let[W,H]of X.subwalks.entries())Y++,this.walkCB2Sync(W,H,X.child(),J);J()}}class h8 extends J7{matches=new Set;constructor(Q,Z,X){super(Q,Z,X)}matchEmit(Q){this.matches.add(Q)}async walk(){if(this.signal?.aborted)throw this.signal.reason;if(this.path.isUnknown())await this.path.lstat();return await new Promise((Q,Z)=>{this.walkCB(this.path,this.patterns,()=>{if(this.signal?.aborted)Z(this.signal.reason);else Q(this.matches)})}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;if(this.path.isUnknown())this.path.lstatSync();return this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}}class g8 extends J7{results;constructor(Q,Z,X){super(Q,Z,X);this.results=new x0({signal:this.signal,objectMode:!0}),this.results.on("drain",()=>this.resume()),this.results.on("resume",()=>this.resume())}matchEmit(Q){if(this.results.write(Q),!this.results.flowing)this.pause()}stream(){let Q=this.path;if(Q.isUnknown())Q.lstat().then(()=>{this.walkCB(Q,this.patterns,()=>this.results.end())});else this.walkCB(Q,this.patterns,()=>this.results.end());return this.results}streamSync(){if(this.path.isUnknown())this.path.lstatSync();return this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}}var y4=typeof process==="object"&&process&&typeof process.platform==="string"?process.platform:"linux";class B0{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;includeChildMatches;opts;patterns;constructor(Q,Z){if(!Z)throw TypeError("glob options required");if(this.withFileTypes=!!Z.withFileTypes,this.signal=Z.signal,this.follow=!!Z.follow,this.dot=!!Z.dot,this.dotRelative=!!Z.dotRelative,this.nodir=!!Z.nodir,this.mark=!!Z.mark,!Z.cwd)this.cwd="";else if(Z.cwd instanceof URL||Z.cwd.startsWith("file://"))Z.cwd=v4(Z.cwd);if(this.cwd=Z.cwd||"",this.root=Z.root,this.magicalBraces=!!Z.magicalBraces,this.nobrace=!!Z.nobrace,this.noext=!!Z.noext,this.realpath=!!Z.realpath,this.absolute=Z.absolute,this.includeChildMatches=Z.includeChildMatches!==!1,this.noglobstar=!!Z.noglobstar,this.matchBase=!!Z.matchBase,this.maxDepth=typeof Z.maxDepth==="number"?Z.maxDepth:1/0,this.stat=!!Z.stat,this.ignore=Z.ignore,this.withFileTypes&&this.absolute!==void 0)throw Error("cannot set absolute and withFileTypes:true");if(typeof Q==="string")Q=[Q];if(this.windowsPathsNoEscape=!!Z.windowsPathsNoEscape||Z.allowWindowsEscape===!1,this.windowsPathsNoEscape)Q=Q.map((H)=>H.replace(/\\/g,"/"));if(this.matchBase){if(Z.noglobstar)throw TypeError("base matching requires globstar");Q=Q.map((H)=>H.includes("/")?H:`./**/${H}`)}if(this.pattern=Q,this.platform=Z.platform||y4,this.opts={...Z,platform:this.platform},Z.scurry){if(this.scurry=Z.scurry,Z.nocase!==void 0&&Z.nocase!==Z.scurry.nocase)throw Error("nocase option contradicts provided scurry option")}else{let H=Z.platform==="win32"?K8:Z.platform==="darwin"?f8:Z.platform?_8:BQ;this.scurry=new H(this.cwd,{nocase:Z.nocase,fs:Z.fs})}this.nocase=this.scurry.nocase;let X=this.platform==="darwin"||this.platform==="win32",q={...Z,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:X,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},Y=this.pattern.map((H)=>new V0(H,q)),[J,W]=Y.reduce((H,V)=>{return H[0].push(...V.set),H[1].push(...V.globParts),H},[[],[]]);this.patterns=J.map((H,V)=>{let K=W[V];if(!K)throw Error("invalid pattern object");return new i0(H,K,0,this.platform)})}async walk(){return[...await new h8(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return[...new h8(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new g8(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new g8(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}}var H7=(Q,Z={})=>{if(!Array.isArray(Q))Q=[Q];for(let X of Q)if(new V0(X,Z).hasMagic())return!0;return!1};function m8(Q,Z={}){return new B0(Q,Z).streamSync()}function jQ(Q,Z={}){return new B0(Q,Z).stream()}function l8(Q,Z={}){return new B0(Q,Z).walkSync()}async function FQ(Q,Z={}){return new B0(Q,Z).walk()}function c8(Q,Z={}){return new B0(Q,Z).iterateSync()}function CQ(Q,Z={}){return new B0(Q,Z).iterate()}var E4=m8,x4=Object.assign(jQ,{sync:m8}),u4=c8,f4=Object.assign(CQ,{sync:c8}),h4=Object.assign(l8,{stream:m8,iterate:c8}),TQ=Object.assign(FQ,{glob:FQ,globSync:l8,sync:h4,globStream:jQ,stream:x4,globStreamSync:m8,streamSync:E4,globIterate:CQ,iterate:f4,globIterateSync:c8,iterateSync:u4,Glob:B0,hasMagic:H7,escape:g0,unescape:G0});TQ.glob=TQ;import g4 from"node:path";var wQ=({dir:Q,pattern:Z="*",nodir:X=!1,dot:q=!0,ignore:Y=[],absolute:J=!1,matchBase:W=!1,follow:H=!1})=>{if(Q=Q||process.cwd(),Q=g4.resolve(Q),Z&&!Array.isArray(Z))Z=[Z];else Z=Z||["*"];if(Y&&!Array.isArray(Y))Y=[Y];else Y=Y||[];return l8(Z,{cwd:Q,nodir:X,dot:q,ignore:Y,absolute:J,matchBase:W,follow:H})};import SQ from"lodash.clonedeep";import m4 from"@fnet/key-value-transformer";async function m({node:Q,initNode:Z,extra:X=!0}){if(Reflect.has(Q.definition,"modules")&&!Array.isArray(Q.definition.modules)){let q=Q.definition.modules;Q.definition.modules=[],Object.keys(q).forEach((Y)=>{let J={...q[Y]};if(typeof J.export==="boolean")J.export=J.export===!0?Y:!1;else if(typeof J.export==="string")J.export=J.export;else delete J.export;Q.definition.modules.push({[Y]:J})})}if(X){let q=[],Y=await m4({data:Q.definition,callback:(J,W,H)=>{let V=P0(J,!0);if(V?.processor==="m"){let K=H.slice(0,-1);K.push(V.statement);let z=K.join("_");return q.push({[z]:W}),[V.statement,`m::${z}`]}return[J,W]}});if(q.length>0)Q.definition=Y,Q.definition.modules=Q.definition.modules||[],Q.definition.modules=Q.definition.modules.concat(q)}Q.hasModules=Q.definition.modules?.length>0;for(let q=0;q<Q.definition.modules?.length;q++){let Y=Q.definition.modules[q],J=Object.keys(Y)[0],W={name:J,childs:[],parent:Q,definition:Y[J],module:!0,block_child_auto_jump_to_parent:!0,index:Q.childs.length,context:{}};Q.childs.push(W),await Z({node:W})}}async function k({node:Q,transformExpression:Z}){let X=Q.context.transform;if(Reflect.has(X,"export"))X.export=await Z(X.export);if(Reflect.has(X,"return"))Q.hasReturn=!0,X.return=await Z(X.return);if(Reflect.has(X,"output"))X.output=await Z(X.output);if(Reflect.has(X,"assign"))for(let q=0;q<X.assign?.length;q++){let Y=X.assign[q];if(Object.keys(Y).length===0){X.assign.splice(q,1),q--;continue}let J=Object.keys(Y)[0],W=Y[J],H={key:await Z(J),value:await Z(W)};X.assign[q]=H}if(Reflect.has(X,"result")){if(typeof X.result==="string")X.result=[{[X.result]:"e::result"}];for(let q=0;q<X.result?.length;q++){let Y=X.result[q],J=Object.keys(Y)[0],W=Y[J],H={key:await Z(J),value:await Z(W)};X.result[q]=H}}}async function l4({node:Q}){if(!Q.definition.hasOwnProperty("switch"))return!1;return!0}async function c4({node:Q,initNode:Z}){Q.type="switch";let X=Q.definition.switch||[];if(!X.every((W)=>W.hasOwnProperty("condition")||W.hasOwnProperty("default")))throw Error("Switch must have condition or default");if(X.filter((W)=>W.hasOwnProperty("condition")).length===0)throw Error("Switch must have at least one condition");let J=X.filter((W)=>W.hasOwnProperty("default"));if(J.length>1)throw Error("Switch must have only one default");if(J.length===1&&!X[X.length-1].hasOwnProperty("default"))throw Error("Switch default must be the last child");Q.hasDefaultCondition=J.length===1,await m({node:Q,initNode:Z,extra:!1}),Q.block_child_auto_jump_to_sibling=!0;for(let W=0;W<Q.definition.switch.length;W++){let H=Q.definition.switch[W],V=`${W}`;if(H.hasOwnProperty("default"))V="default",H=H.default;let K={name:H.condition||V,childs:[],parent:Q,definition:H,index:Q.childs.length,context:{}};Q.childs.push(K),await Z({node:K})}Q.resolve=NQ}async function NQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||SQ(Q.definition);let Y=Q.context.transform;for(let J of Q.childs)if(J.context.transform=J.context.transform||SQ(J.definition),J.definition.hasOwnProperty("condition"))J.context.transform.condition=await q(J.definition.condition);if(await k({node:Q,transformExpression:q}),await Z({node:Q}),!Q.hasDefaultCondition)X({node:Q})}var U8={hits:l4,init:c4,resolve:NQ};async function d4({node:Q}){if(Object.keys(Q.definition).filter((q)=>P0(q)==="if").length===1)return!0;if(Q.definition.if&&typeof Q.definition.if==="object")return!0;return!1}async function i4(Q){let{node:Z}=Q,X=Object.keys(Z.definition),q=[],Y=X.find((H)=>P0(H)==="if");if(Y){let H=Z.definition[Y],V=P0(Y,!0);q.push({name:`${Z.name}_if`,definition:H,processor:{expression:Y,statement:V.statement,processor:V.processor}}),delete Z.definition[Y]}else if(Z.definition.if){let{condition:H,...V}=Z.definition.if;q.push({name:`${Z.name}_if`,definition:V,processor:{expression:`if::${H}`,statement:H}}),delete Z.definition.if}let J=X.filter((H)=>P0(H)==="elseif"),W=0;for(let H of J){let V=Z.definition[H],K=P0(H,!0);q.push({name:`${Z.name}_elseif_${W++}`,definition:V,processor:{expression:H,statement:K.statement,processor:K.processor}}),delete Z.definition[H]}if(Z.definition.elseif){let{condition:H,...V}=Z.definition.elseif;q.push({name:`${Z.name}_elseif_${W++}`,definition:V,processor:{expression:`elseif::${H}`,statement:H}}),delete Z.definition.elseif}Z.definition.switch=[];for(let H of q)Z.definition.switch.push({condition:H.processor.statement,...H.definition});if(Z.definition?.else){let H=Z.definition.else;Z.definition.switch.push({default:H}),delete Z.definition.else}await U8.init(Q)}var W7={hits:d4,init:i4};import PQ from"lodash.clonedeep";async function p4({node:Q}){return Q.definition.hasOwnProperty("try")&&Q.definition.hasOwnProperty("except")}async function a4({node:Q,initNode:Z}){if(Q.type="tryexcept",await m({node:Q,initNode:Z,extra:!1}),Q.block_child_auto_jump_to_sibling=!0,Q.definition.try){let q={name:"try",childs:[],parent:Q,definition:Q.definition.try,index:Q.childs.length,context:{}};Q.childs.push(q),await Z({node:q})}if(Q.definition.except){let q={name:"except",childs:[],parent:Q,definition:Q.definition.except,index:Q.childs.length,context:{}};Q.childs.push(q),await Z({node:q})}Q.resolve=kQ}async function kQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||PQ(Q.definition);let Y=Q.context.transform;if(Q.context.try=Q.childs.find((J)=>J.name==="try"),Q.context.except=Q.childs.find((J)=>J.name==="except"),Q.context.except){let J=Q.context.except;if(J.context.transform=J.context.transform||PQ(J.definition),!J.context.transform.hasOwnProperty("as"))J.context.transform.as="error"}await k({node:Q,transformExpression:q}),await Z({node:Q})}var V7={hits:p4,init:a4,resolve:kQ};import n4 from"lodash.clonedeep";async function r4({node:Q}){return Q.definition.hasOwnProperty("assign")}async function s4({node:Q,initNode:Z}){Q.type="assign",await m({node:Q,initNode:Z}),Q.resolve=DQ}async function DQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||n4(Q.definition);let Y=Q.context.transform;await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var K7={hits:r4,init:s4,resolve:DQ};import o4 from"lodash.clonedeep";async function t4({node:Q}){return Q.definition.hasOwnProperty("for")}async function e4({node:Q,initNode:Z}){if(Q.type="for",await m({node:Q,initNode:Z,extra:!1}),Q.block_child_auto_jump_to_parent=!0,Q.block_child_auto_jump_to_sibling=!1,!Q.definition.for.hasOwnProperty("steps")){let{as:X,in:q,...Y}=Q.definition.for,J={};if(X!==void 0)J.as=X;if(q!==void 0)J.in=q;Q.definition.for=J,Q.definition.for.steps=[{[`${Q.name}_step`]:Y}]}if(!Array.isArray(Q.definition.for.steps))Q.definition.for.steps=[{[`${Q.name}_step`]:Q.definition.for.steps}];for(let X=0;X<Q.definition.for.steps.length;X++){let q=Q.definition.for.steps[X],Y=Object.keys(q)[0],J={name:Y,childs:[],parent:Q,definition:q[Y],index:Q.childs.length,context:{}};Q.childs.push(J),await Z({node:J})}Q.resolve=bQ}async function bQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||o4(Q.definition);let Y=Q.context.transform;Y.for.in=await q(Q.definition.for.in),await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var _7={hits:t4,init:e4,resolve:bQ};import Q2 from"lodash.clonedeep";async function Z2({node:Q}){return Q.definition.hasOwnProperty("parallel")}async function X2({node:Q,initNode:Z}){Q.type="parallel",Q.block_child_auto_jump_to_parent=!0,Q.block_child_auto_jump_to_sibling=!0;let X=Q.definition.parallel||[];for await(let q of X){let Y=Object.keys(q)[0],J={name:Y,childs:[],parent:Q,definition:q[Y],index:Q.childs.length,context:{}};Q.childs.push(J),await Z({node:J})}Q.resolve=vQ}async function vQ({node:Q,transformExpression:Z,resolveNextBlock:X}){Q.context.transform=Q.context.transform||Q2(Q.definition),await k({node:Q,transformExpression:Z}),X({node:Q})}var z7={hits:Z2,init:X2,resolve:vQ};import q2 from"lodash.clonedeep";async function Y2({node:Q}){return Q.definition.hasOwnProperty("raise")}async function J2({node:Q,initNode:Z}){Q.type="raise",Q.resolve=yQ}async function yQ({node:Q,resolveTypeCommon:Z,transformExpression:X}){Q.context.transform=Q.context.transform||q2(Q.definition);let q=Q.context.transform;q.raise=await X(q.raise),await Z({node:Q})}var G7={hits:Y2,init:J2,resolve:yQ};import H2 from"lodash.clonedeep";async function W2({node:Q}){return Q.definition.hasOwnProperty("return")}async function V2({node:Q,initNode:Z}){Q.type="return",Q.resolve=EQ}async function EQ({node:Q,resolveTypeCommon:Z,transformExpression:X}){Q.context.transform=Q.context.transform||H2(Q.definition);let q=Q.context.transform;Q.hasReturn=!0,q.return=await X(q.return),await Z({node:Q})}var U7={hits:W2,init:V2,resolve:EQ};import K2 from"lodash.clonedeep";async function _2({node:Q}){return Q.definition.hasOwnProperty("call")}async function z2({node:Q,initNode:Z}){Q.type="call",await m({node:Q,initNode:Z}),Q.resolve=xQ}async function xQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||K2(Q.definition);let Y=Q.context.transform,J=Y.from||Y.import||Y.call;if(Q.target?.atom?.doc?.type==="function"){if(Reflect.has(Y,"from"))J=Y.from,Y.from=await q(Q.target.atom.name);else if(Reflect.has(Y,"import"))J=Y.import,Y.import=await q(Q.target.atom.name);else if(Reflect.has(Y,"call"))Y.call=await q(Q.target.atom.name),J=Y.call}else if(Reflect.has(Y,"from")||Reflect.has(Y,"import")){if(Y.call.startsWith("use:e::")){let H=Y.call.substring(7);Y.libExp=await q(`e::LIBRARY.${H}`)}}if(Y.args)Y.args=await q(Y.args);if(Y.new)Y.new=await q(Y.new);if(Y.context)Y.context=await q(Y.context);let W=Q.workflow.parent;Q.context.lib=W.context.libs.find((H)=>H.name===J),await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var $8={hits:_2,init:z2,resolve:xQ};import G2 from"lodash.clonedeep";async function U2({node:Q}){return Q.definition.hasOwnProperty("steps")}async function $2({node:Q,initNode:Z}){if(!Q.type)Q.type="steps";let X=Q.definition.steps||[];for await(let q of X){let Y=Object.keys(q)[0];if(q[Y].enabled===!1)continue;let J={name:Y,childs:[],parent:Q,definition:q[Y],index:Q.childs.length,context:{}};Q.childs.push(J),await Z({node:J})}Q.resolve=uQ}async function uQ({node:Q,transformExpression:Z}){Q.context.next=Q.childs[0],Q.context.transform=Q.context.transform||G2(Q.definition),await k({node:Q,transformExpression:Z})}var $7={hits:U2,init:$2,resolve:uQ};import O2 from"lodash.clonedeep";async function M2({node:Q}){return Q.definition.hasOwnProperty("form")}async function A2({node:Q,initNode:Z}){Q.type="form",await m({node:Q,initNode:Z}),Q.resolve=fQ}async function fQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||O2(Q.definition);let Y=Q.context.transform;if(Y.props)Y.props=await q(Y.props);let J=Q.workflow.parent;Q.context.lib=J.context.libs.find((W)=>W.name===Y.form),await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var O7={hits:M2,init:A2,resolve:fQ};import R2 from"lodash.clonedeep";async function B2({node:Q}){return Q.definition.hasOwnProperty("signal")}async function I2({node:Q,initNode:Z}){Q.type="signal",Q.resolve=hQ}async function hQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q,transformValue:Y}){Q.context.transform=Q.context.transform||R2(Q.definition),await Z({node:Q}),X({node:Q})}var M7={hits:B2,init:I2,resolve:hQ};import L2 from"lodash.clonedeep";async function F2({node:Q}){return Q.definition.hasOwnProperty("wait")}async function T2({node:Q,initNode:Z}){Q.type="wait",Q.resolve=gQ}async function gQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q,transformValue:Y}){Q.context.transform=Q.context.transform||L2(Q.definition),await Z({node:Q}),X({node:Q})}var A7={hits:F2,init:T2,resolve:gQ};import j2 from"lodash.clonedeep";async function C2({node:Q}){return Q.definition.hasOwnProperty("next")}async function w2({node:Q,initNode:Z}){Q.type="next",Q.resolve=mQ}async function mQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||j2(Q.definition);let Y=Q.context.transform;Y.next=await q(Y.next),await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var R7={hits:C2,init:w2,resolve:mQ};import S2 from"lodash.clonedeep";async function N2({node:Q}){return Q.definition.hasOwnProperty("modules")}async function P2({node:Q,initNode:Z}){Q.type="modules",await m({node:Q,initNode:Z}),Q.resolve=lQ}async function lQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||S2(Q.definition);let Y=Q.context.transform;await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var B7={hits:N2,init:P2,resolve:lQ};function I7({node:Q}){let Z=Q.definition;if(Q.hasReturn){if(j("tree"))f.info(`[RETURN] no next: ${Q.indexKey}`);return}if(Z.next==="end"){if(j("tree"))f.info(`[EXPLICIT-END] ${Q.indexKey}`)}else if(Z.next==="stop"){if(j("tree"))f.info(`[EXPLICIT-STOP] ${Q.indexKey}`)}else if(Z.next==="none"){if(j("tree"))f.info(`[EXPLICIT-NONE] ${Q.indexKey}`)}else if(Z.next){if(j("tree"))f.info(`[EXPLICIT-NEXT] "${Z.next}" from ${Q.indexKey}`);let X=Q.parent;while(X.parent){let q=X.childs.find((Y)=>Y.name===Z.next);if(q){if(Q.context.next=q,j("tree"))f.info(`[FOUND] ${q.indexKey}`);break}X=X.parent}if(!Q.context.next&&j("tree"))f.warn(` [NOT-FOUND] "${Z.next}"`)}else{if(Q.module===!0){if(j("tree"))f.info(`[MODULE-ROOT] no auto next: ${Q.indexKey}`);return}if(j("tree"))f.info(`[AUTO-NEXT] from ${Q.indexKey}`);let X=Q.parent,q=Q.index+1,Y=0;while(X.parent)if(Y++,X.block_child_auto_jump_to_parent&&X.block_child_auto_jump_to_sibling){if(j("tree"))f.info(`${Y}. [BLOCKED] both jumps disabled at ${X.indexKey}`);break}else if(!Reflect.has(X,"block_child_auto_jump_to_parent")&&!Reflect.has(X,"block_child_auto_jump_to_sibling")){let J=X.childs.find((W)=>W.index===q);if(J){if(Q.context.next=J,j("tree"))f.info(`${Y}. [SIBLING-FOUND] ${J.indexKey}`);break}else{if(j("tree"))f.info(`${Y}. [CLIMB] no sibling, climbing to parent: ${X.parent?.indexKey}`);q=X.index+1,X=X.parent;continue}}else if(X.block_child_auto_jump_to_parent){let J=X.childs.find((W)=>W.index===q);if(J){if(Q.context.next=J,j("tree"))f.info(`${Y}. [SIBLING-FOUND] parent jump disabled: ${J.indexKey}`)}else if(j("tree"))f.info(`${Y}. [BLOCKED] no sibling, parent jump disabled`);break}else if(!X.block_child_auto_jump_to_parent){if(j("tree"))f.info(`${Y}. [CLIMB] sibling disabled, climbing to parent: ${X.parent?.indexKey}`);q=X.index+1,X=X.parent;continue}if(Q.context.next&&j("tree"))f.info(`[RESOLVED] auto next: ${Q.context.next.indexKey} (${Y} steps)`);else if(j("tree"))f.info(`[NO-NEXT] end of flow (${Y} steps)`)}}class cQ{#Z;#Q;#X;#q;constructor({key:Q,npm:Z,master:X,extras:q}){this.#Z=Q,this.#Q=Z,this.#X=X,this.#q=q}hits({node:Q}){return Q.definition.hasOwnProperty(this.#Z)}async init(Q){let{node:Z}=Q,X=this.#Z,q=Z.definition,Y=typeof q[X];if(q.call=`npm:${this.#Q}`,Y!=="object")q.args={...q.args,[`${this.#X}`]:q[X]};else q.args=q[X];if(delete q[X],this.#q)for(let J in this.#q)q[J]=this.#q[J];console.log(`[npm-block] ${this.#Z} --> ${this.#Q}`),await $8.init(Q)}}function s(Q){return new cQ(Q)}import k2 from"lodash.clonedeep";async function D2({node:Q}){return Q.definition.hasOwnProperty("new")}async function b2({node:Q,initNode:Z}){Q.type="new",await m({node:Q,initNode:Z}),Q.resolve=dQ}async function dQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||k2(Q.definition);let Y=Q.context.transform,J=Y.from||Y.import;if(Q.target?.atom?.doc?.type==="function"){if(Reflect.has(Y,"from"))J=Y.from,Y.from=await q(Q.target.atom.name);else if(Reflect.has(Y,"import"))J=Y.import,Y.import=await q(Q.target.atom.name)}if(Y.args)Y.args=await q(Y.args);if(Y.new)Y.new=await q(Y.new);let W=Q.workflow.parent;Q.context.lib=W.context.libs.find((H)=>H.name===J),await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var L7={hits:D2,init:b2,resolve:dQ};import v2 from"lodash.clonedeep";async function y2({node:Q}){return Q.definition.hasOwnProperty("output")}async function E2({node:Q,initNode:Z}){Q.type="output",await m({node:Q,initNode:Z}),Q.resolve=iQ}async function iQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||v2(Q.definition),await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var F7={hits:y2,init:E2,resolve:iQ};import x2 from"lodash.clonedeep";async function u2({node:Q}){return Q.definition.hasOwnProperty("pipeline")}async function f2({node:Q}){Q.type="pipeline";let Z=Q.definition.pipeline;if(!Z||typeof Z!=="string")throw Error(`Pipeline step '${Q.indexKey}' requires a binary name`);Q.definition.binaryName=Z,Q.resolve=pQ}async function pQ({node:Q,transformExpression:Z,resolveNextBlock:X}){Q.context.transform=Q.context.transform||x2(Q.definition);let q=Q.context.transform;if(q.input)q.input=await Z(q.input);if(q.args)q.args=await Z(q.args);if(q.env)q.env=await Z(q.env);if(q.cwd)q.cwd=await Z(q.cwd);await k({node:Q,transformExpression:Z}),X({node:Q})}var T7={hits:u2,init:f2,resolve:pQ};import h2 from"lodash.clonedeep";async function g2({node:Q}){return Q.definition.hasOwnProperty("retry")}async function m2({node:Q,initNode:Z}){Q.type="retry";let X=Q.definition.retry,q;if(typeof X==="number")q={attempts:X,delay:1000,backoff:"exponential",maxDelay:null};else if(typeof X==="object")q={attempts:X.attempts||3,delay:X.delay||1000,backoff:X.backoff||"exponential",maxDelay:X.maxDelay||null,on:X.on,onRetry:X.onRetry};else throw Error(`Retry step '${Q.name}' requires a number or object configuration`);if(!q.attempts||q.attempts<1)throw Error(`Retry step '${Q.name}' requires attempts >= 1`);let Y=["exponential","linear","fixed"];if(!Y.includes(q.backoff))throw Error(`Retry step '${Q.name}' has invalid backoff strategy '${q.backoff}'. Valid options: ${Y.join(", ")}`);Q.definition.retry=q;let{retry:J,...W}=Q.definition,H={name:`${Q.name}_retryable`,childs:[],parent:Q,definition:W,index:0,context:{}};Q.childs.push(H),await Z({node:H}),Q.resolve=aQ}async function aQ({node:Q,transformExpression:Z,resolveNextBlock:X}){Q.context.transform=Q.context.transform||h2(Q.definition);let q=Q.context.transform;if(q.retry.attempts&&typeof q.retry.attempts==="string")q.retry.attempts=await Z(q.retry.attempts);if(q.retry.delay&&typeof q.retry.delay==="string")q.retry.delay=await Z(q.retry.delay);if(q.retry.maxDelay&&typeof q.retry.maxDelay==="string")q.retry.maxDelay=await Z(q.retry.maxDelay);if(q.retry.onRetry)q.retry.onRetry=await Z(q.retry.onRetry);await k({node:Q,transformExpression:Z}),X({node:Q})}var j7={hits:g2,init:m2,resolve:aQ};import l2 from"lodash.clonedeep";async function c2({node:Q}){return Q.definition.hasOwnProperty("schedule")}async function d2({node:Q,initNode:Z}){Q.type="schedule";let X=Q.definition.schedule,q;if(typeof X==="string")q={cron:X,timezone:null,enabled:!0};else if(typeof X==="object")q={cron:X.cron,timezone:X.timezone||null,enabled:X.enabled!==!1};else throw Error(`Schedule step '${Q.name}' requires a cron expression string or object`);if(!q.cron||typeof q.cron!=="string")throw Error(`Schedule step '${Q.name}' requires a valid cron expression`);Q.definition.schedule=q;let{schedule:Y,...J}=Q.definition,W={name:`${Q.name}_scheduled`,childs:[],parent:Q,definition:J,index:0,context:{}};Q.childs.push(W),await Z({node:W}),Q.resolve=nQ}async function nQ({node:Q,transformExpression:Z,resolveNextBlock:X}){Q.context.transform=Q.context.transform||l2(Q.definition);let q=Q.context.transform;if(q.schedule){if(q.schedule.cron&&typeof q.schedule.cron==="string")q.schedule.cron=await Z(q.schedule.cron);if(q.schedule.timezone&&typeof q.schedule.timezone==="string")q.schedule.timezone=await Z(q.schedule.timezone)}await k({node:Q,transformExpression:Z}),X({node:Q})}var C7={hits:c2,init:d2,resolve:nQ};import i2 from"lodash.clonedeep";async function p2({node:Q}){return Q.definition.hasOwnProperty("http")}async function a2({node:Q,initNode:Z}){Q.type="http",await m({node:Q,initNode:Z});let X=Q.definition.http,q;if(typeof X==="string")q={url:X,method:"GET",headers:{},timeout:30000};else if(typeof X==="object"){if(q={url:X.url,method:X.method||"GET",headers:X.headers||{},body:X.body,params:X.params,timeout:X.timeout||30000},!q.url)throw Error(`HTTP step '${Q.name}' requires a url property`)}else throw Error(`HTTP step '${Q.name}' requires a string URL or object configuration`);let Y=["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS"],J=q.method.toUpperCase();if(!Y.includes(J))throw Error(`HTTP step '${Q.name}' has invalid method '${q.method}'. Valid options: ${Y.join(", ")}`);if(q.method=J,q.timeout&&(typeof q.timeout!=="number"||q.timeout<=0))throw Error(`HTTP step '${Q.name}' timeout must be a positive number`);Q.definition.http=q,Q.resolve=n2}async function n2({node:Q,transformExpression:Z,resolveNextBlock:X}){Q.context.transform=Q.context.transform||i2(Q.definition);let q=Q.context.transform;if(q.http.url)q.http.url=await Z(q.http.url);if(q.http.headers)q.http.headers=await Z(q.http.headers);if(q.http.body)q.http.body=await Z(q.http.body);if(q.http.params)q.http.params=await Z(q.http.params);if(q.http.timeout)q.http.timeout=await Z(q.http.timeout);await k({node:Q,transformExpression:Z}),X({node:Q})}var w7={hits:p2,init:a2};var rQ=({path:Q})=>{if(!Q)throw Error("Path is required");let Z=/^@([^\/]+\/[^\/]+)(?:\/(.+))?$/,X=/^([^\/]+)(?:\/(.+))?$/,q;if(q=Q.match(Z))return{path:Q,package:"@"+q[1],subpath:q[2]||null};else if(q=Q.match(X))return{path:Q,package:q[1],subpath:q[2]||null};return null};import Z1 from"node:os";class QZ{#Z;#Q;#X;#q;#J;#L;#I;#K;#G;#V;#z;#Y;#M;#O;#$;#A;#j;#B;#T;#W;#F;#_=[];constructor(Q){this.#Z=new n7,this.#Q=Q,this.#L=[],this.#I=[],this.#K={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#_.push(s({key:"config",npm:"@fnet/config",master:"name"})),this.#_.push(s({key:"yaml",npm:"@fnet/yaml",master:"file"})),this.#_.push(s({key:"prompt",npm:"@fnet/prompt",master:"message"})),this.#_.push(s({key:"html-link",npm:"@flownet/lib-load-browser-link-url",master:"src"})),this.#_.push(s({key:"html-script",npm:"@flownet/lib-load-browser-script-url",master:"src"})),this.#_.push(s({key:"http-server",npm:"@fnet/node-express",master:"server_port"})),this.#_.push(s({key:"shell",npm:"@fnet/shell-flow",master:"commands"})),this.#_.push(s({key:"list-files",npm:"@fnet/list-files",master:"pattern"})),this.#_.push(s({key:"up-list-files",npm:"@fnet/up-list-files",master:"pattern"})),this.#_.push(s({key:"auto-conda-env",npm:"@fnet/auto-conda-env",master:"envDir"})),this.#_.push(s({key:"ollama-chat",npm:"@fnet/ollama-chat",master:"model"})),this.#_.push(s({key:"ai",npm:"@fnet/ai",master:"prompt",extras:{subtype:"flow"}})),this.#_.push(s({key:"invoke",npm:"@fnet/invoke",master:"method",extras:{}})),this.#_.push(s({key:"fetch",npm:"@fnet/fetch",master:"url",extras:{}})),this.#_.push(s({key:"filemap",npm:"@fnet/filemap",master:"target",extras:{}})),this.#W={packageDependencies:this.#L,packageDevDependencies:this.#I,setProgress:this.setProgress.bind(this),context:this.#Q,Atom:I0,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#F={initNode:this.initNode.bind(this),cloneDeep:tQ,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:I7,transformExpression:this.transformExpression.bind(this),transformValue:this.transformValue.bind(this)}}async _cache_set(Q,Z,X){}async init(){this.#z=this.#Q.buildId||eQ(),this.#W.buildId=this.#z,this.#$=this.#Q.mode,this.#A=["all","deploy","build","file"].includes(this.#$),this.#j=["all","deploy","build"].includes(this.#$),this.#B=["all","deploy"].includes(this.#$),this.#T=this.#$==="bpmn"||this.#Q.bpmn===!0,this.#M=this.#Q.protocol,this.#Y="BUILD:"+this.#z,this.#O=(await o2({optional:!0,name:"atom",dir:this.#Q.projectDir,tags:this.#Q.tags}))?.data;try{await this.setProgress({message:"Initialization started."});let Q=this.#W.context.project;await this.initAuth(),await this.initWorkflow(),this.transformWorkflow({workflow:this.#q});let Z=await this.initNodeTree({workflow:this.#q});if(await this.initNodeTreeIndex({root:Z}),await this.initNodeCalls({root:Z}),await this.initNodeCallLibs({root:Z}),await this.initNodeForms({root:Z}),await this.initNodeFormLibs({root:Z}),await this.initEntryFiles({root:Z,features:this.#X.doc.features}),await this.initFeaturesFromNodes({childs:Z.childs,features:this.#X.doc.features}),await O6(this.#W),Q.runtime.type==="bun")await A6(this.#W);else await M6(this.#W);await this.initAtomLibsAndDeps({libs:Z.context.libs,packageDependencies:this.#L}),await this.resolveNodeTree({root:Z}),this.#V=Z}catch(Q){throw await this._cache_set(this.#Y,{status:"FAILED",message:Q?.message||Q}),Q}}async initAuth(){if(!this.#Q.id)return;this.#G=await this.#Z.init({config:this.#O}),this.#W.atomAccessToken=this.#G}async initWorkflow(){let Q=this.#Q.id;this.#X=this.#Q.project?.workflowAtom||await I0.get({id:Q}),this.#q=typeof this.#X.doc.content==="string"?(await e2({content:this.#X.doc.content,tags:this.#Q.tags})).parsed:this.#X.doc.content;let Z=this.#X.doc.bundleName;Z=Z||(this.#X.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#X.doc.bundleName=Z,this.#X.type=this.#X.type||"workflow",this.#W.atom=this.#X,this.#X.doc.features=this.#X.doc.features||{}}#C(Q){if(console.log("filePath",Q),C.statSync(Q).isDirectory())C.readdirSync(Q).forEach((Z)=>{let X=D.join(Q,Z);this.#C(X)}),C.rmSync(Q);else C.unlinkSync(Q)}#R(Q,Z){let X=C.existsSync(Q),q=X&&C.statSync(Q);if(X&&q.isDirectory())C.mkdirSync(Z,{recursive:!0}),C.readdirSync(Q).forEach((J)=>{this.#R(D.join(Q,J),D.join(Z,J))});else C.copyFileSync(Q,Z)}async initWorkflowDir(){this.setProgress({message:"Initializing library directory."});let Q=this.#Q.projectDir,Z=this.#Q.projectSrcDir,X=this.#Q.coreDir;this.setProgress({message:"Cleaning project directory."});let q=wQ({dir:Q,ignore:[".cache","node_modules",".conda",".bin",".dev"],absolute:!0});for(let V of q)C.rmSync(V,{recursive:!0,force:!0});if(this.setProgress({message:"Creating project directory."}),!C.existsSync(Q))C.mkdirSync(Q,{recursive:!0});let Y=D.join(Q,"src");if(!C.existsSync(Y))C.mkdirSync(Y,{recursive:!0});let J=D.join(Y,"core");this.#R(X,J);let W=D.join(Y,"default","blocks");if(!C.existsSync(W))C.mkdirSync(W,{recursive:!0});let H=D.join(Q,".dev");if(!C.existsSync(H))C.mkdirSync(H,{recursive:!0});if(this.#X.doc.features?.symlinks===!0){if(H=this.#Q.projectSrcDirSymlink,!C.existsSync(H))try{if(Z1.platform()==="win32")C.symlinkSync(Z,H,"junction");else C.symlinkSync(Z,H,"dir")}catch(V){throw Error(`Couldn't create symlink. Error: ${V.message}`)}}}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});let Q=this.#Q.templateDir;this.#J=O8.configure(Q,{watch:!1,dev:!0}),this.#W.njEnv=this.#J}transformWorkflow({workflow:Q}){for(let Z of Object.values(Q))Z.steps=Z.steps||[],Z.steps=Z.steps.filter((X)=>Object.keys(X).length>0),Z.steps=Z.steps.map((X)=>this.transformStep({step:X}))}transformStep({step:Q}){if(Array.isArray(Q))throw Error("Step must be an object.");let[Z,X]=Object.entries(Q)[0];if(X.hasOwnProperty("onerror")){let{onerror:q,...Y}=X;Q[Z]={try:Y,except:q}}if(Q[Z].hasOwnProperty("steps")){let q=Q[Z].steps;if(!Array.isArray(q))throw Error("Steps must be an array.");Q[Z].steps=q.map((Y)=>this.transformStep({step:Y}))}return Q}async initNodeTree({workflow:Q}){let Z=["$meta","$project","$features","$input","$output","$commands"],X=Object.keys(Q).filter((Y)=>!Z.includes(Y));if(j("tree"))f.info("[TREE] Creating root node");let q={definition:Q,name:void 0,type:"root",parent:void 0,childs:[],block_child_auto_jump_to_parent:!0,block_child_auto_jump_to_sibling:!0,index:0,depth:0,context:{libs:[],atom:this.#X}};X.forEach((Y)=>{if(j("tree"))f.info(`[TREE] Creating ${Y==="main"?"workflow":"subworkflow"}: ${Y}`);let J={name:Y,type:Y==="main"?"workflow":"subworkflow",enabled:Q[Y].enabled!==!1,childs:[],parent:q,definition:Q[Y],index:q.childs.length,depth:q.depth+1,context:{},block_child_auto_jump_to_parent:!0};q.childs.push(J)});for(let Y=0;Y<q.childs.length;Y++){let J=q.childs[Y];if(j("tree"))f.info(`[INIT] node: ${J.name}`);if(J.definition.enabled===!1){q.childs.splice(Y,1),Y--;continue}else await this.initNode({node:J})}if(j("tree"))f.info(`[TREE] Root node tree created (${q.childs.length} flows)`);return q}async initNode({node:Q}){let Z={...this.#F,node:Q};Q.workflow=Q.parent.workflow||Q,Q.depth=Q.parent.depth+1;let X="unknown";if(await V7.hits(Z))X="tryexcept",await V7.init(Z);else if(await U8.hits(Z))X="switch",await U8.init(Z);else if(await W7.hits(Z))X="if",await W7.init(Z);else if(await _7.hits(Z))X="for",await _7.init(Z);else if(await j7.hits(Z))X="retry",await j7.init(Z);else if(await C7.hits(Z))X="schedule",await C7.init(Z);else if(await z7.hits(Z))X="parallel",await z7.init(Z);else if(await T7.hits(Z))X="pipeline",await T7.init(Z);else if(await w7.hits(Z))X="http",await w7.init(Z);else if(await $8.hits(Z))X="call",await $8.init(Z);else if(await L7.hits(Z))X="new",await L7.init(Z);else if(await G7.hits(Z))X="raise",await G7.init(Z);else if(await O7.hits(Z))X="form",await O7.init(Z);else if(await M7.hits(Z))X="signal",await M7.init(Z);else if(await A7.hits(Z))X="wait",await A7.init(Z);else if(await $7.hits(Z))X="steps",await $7.init(Z);else if(await R7.hits(Z))X="next",await R7.init(Z);else if(await B7.hits(Z))X="modules",await B7.init(Z);else if(this.#_.find((q)=>q.hits(Z)))X="npm-block",await this.#_.find((q)=>q.hits(Z)).init(Z);else if(await K7.hits(Z))X="assign",await K7.init(Z);else if(await F7.hits(Z))X="output",await F7.init(Z);else if(await U7.hits(Z))X="return",await U7.init(Z);else throw Error("Undefined step type.");if(j("tree")){let q=Q.childs?.length>0?` (${Q.childs.length} childs)`:"";f.info(`[NODE] ${X}: ${Q.name}${q}`)}return!0}async initNodeTreeIndex({root:Q}){let Z={};Q.indexKey="/";for await(let X of Q.childs)await this.initNodeIndex({node:X,index:Z});return Q.context.index=Z,Z}async initNodeIndex({node:Q,index:Z}){let X=D.join(Q.parent.indexKey,Q.name);Q.indexKey=X,Z[X]=Q;let q=[],Y=Q;while(Y?.parent)q.push(Y.index),Y=Y.parent;q.reverse(),Q.codeKey=`B_${q.join("_")}_${Q.type}`,Q.pathKey=`${q.join(".")}`,Q.typeId=eQ();for await(let J of Q.childs)await this.initNodeIndex({node:J,index:Z})}async initNodeCalls({root:Q}){let Z=Q.context.index,X=[];for await(let q of Object.keys(Z)){let Y=Z[q];if(Y.type!=="call"&&Y.type!=="new")continue;X.push(Y)}return Q.context.calls=X,X}async initNodeCallLibs({root:Q}){let Z=[],X=Q.context.calls;for await(let q of X){let Y=q.definition.from||q.definition.import||q.definition.call,J=await this.findNodeCallTarget({refNode:q,curNode:q.parent})||{name:Y,type:"atom",definition:q.definition},W=Z.find((H)=>H.name===J.name&&H.type===J.type);if(!W)Z.push(J);q.target=W||J}return Q.context.callLibs=Z,Q.context.libs=[...Q.context.libs,...Z],Z}async findNodeCallTarget({refNode:Q,curNode:Z}){if(!Z)return;let X=Q.definition.call,q=Z.childs.find((Y)=>Y.name===X&&Y.type==="subworkflow");if(q)return q;else return await this.findNodeCallTarget({refNode:Q,curNode:Z.parent})}async initNodeForms({root:Q}){let Z=Q.context.index,X=[];for await(let q of Object.keys(Z)){let Y=Z[q];if(Y.type!=="form")continue;X.push(Y)}return Q.context.forms=X,X}async initNodeFormLibs({root:Q}){let Z=[],X=Q.context.forms;for await(let q of X){let Y=q.definition.from||q.definition.import||q.definition.form,J=await this.findNodeCallTarget({refNode:q,curNode:q.parent})||{name:Y,type:"atom"},W=Z.find((H)=>H.name===J.name&&H.type===J.type);if(!W)Z.push(J);q.target=W||J}return Q.context.formLibs=Z,Q.context.libs=[...Q.context.libs,...Z],Z}async initFeaturesFromNodes({childs:Q,features:Z}){for await(let X of Q){if(X.type==="form"&&!Reflect.has(Z,"form"))Z.form=!0;await this.initFeaturesFromNodes({childs:X.childs,features:Z})}}async initEntryFiles({root:Q,features:Z}){for await(let X of Q.childs){let q;if(X.name==="main")q="index.js";else if(X.name==="cli")q="cli.js";else if(X.name==="app")q="app.js";else if(X.name==="api")q="api.js";else continue;Z[`${X.name}_default_entry_file`]=q,X.entryFile=q}}async findNodeFormTarget({refNode:Q,curNode:Z}){if(!Z)return;let X=Q.definition.form,q=Z.childs.find((Y)=>Y.name===X&&Y.type==="subworkflow");if(q)return q;else return await this.findNodeFormTarget({refNode:Q,curNode:Z.parent})}async initAtomLibsAndDeps({libs:Q,packageDependencies:Z}){let X=Q.filter((q)=>q.type==="atom");for(let q=0;q<X.length;q++){let Y=X[q],J=await this.findAtomLibrary({url:Y.name,libRef:Y});Y.atom=J,J.doc.dependencies?.filter((H)=>typeof H.repo>"u"||H.repo==="npm")?.forEach((H)=>{let V=Z.find((K)=>K.package===H.package);if(V){if(typeof H.path==="string"){if(!(V.path||[]).some((K)=>K===H.path))V.path=V.path||[],V.path.push(H.path)}else if(Array.isArray(H.path))H.path.forEach((K)=>{if(!(V.path||[]).some((z)=>z===K))V.path=V.path||[],V.path.push(K)})}else Z.push(H)})}Z.sort((q,Y)=>q.package?.localeCompare(Y.package))}async findAtomLibrary({url:Q,libRef:Z}){let X=s2({url:Q});if(!X)throw Error(`Invalid package name: ${Q}`);if(!X.protocol)X.protocol=this.#M;if(X.protocol==="src:"){let q=D.resolve(this.#Q.projectSrcDir,`${X.pathname}.js`),Y=[],W=(await t2({file:q,recursive:!0})).all;for await(let V of W){if(V.type!=="npm")continue;if(Y.find((z)=>z.package===V.package))continue;let K=await w0({name:V.package,projectDir:this.#Q.projectDir,setProgress:this.#W.setProgress});Y.push({package:V.package,subpath:V.subpath,version:K.minorRange,type:"npm"})}return{name:X.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:Y},protocol:X.protocol}}else if(X.protocol==="npm:"){let q=rQ({path:X.pathname}),Y=await w0({name:q.package,subpath:q.subpath,projectDir:this.#Q.projectDir,setProgress:this.#W.setProgress});return{name:X.pathname,doc:{type:"workflow.lib",subtype:Z?.definition?.subtype==="flow"?"workflow":null,"content-type":"javascript",language:"js",dependencies:[{package:q.package,version:Y.minorRange,type:"npm"}]},protocol:X.protocol}}else if(X.protocol==="use:")return{name:X.pathname,doc:{type:"function",dependencies:[]},protocol:X.protocol};else if(X.protocol==="node:")return{name:X.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:[]},protocol:X.protocol};else if(X.protocol==="ac:"){let q=X.pathname.split("/");if(q.length===1)return await I0.first({where:{name:Q,parent_id:this.#O.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(q.length===2){let Y=await I0.first({where:{name:q[0],parent_id:this.#O.env.ATOM_LIBRARIES_ID,type:"folder"}});return await I0.first({where:{name:q[1],parent_id:Y.id,type:"workflow.lib"}})}}}async resolveNodeTree({root:Q}){for await(let Z of Q.childs)await this.resolveTypeWorkflow({node:Z})}async resolveTypeWorkflow({node:Q}){Q.context.transform=Q.context.transform||tQ(Q.definition);let Z=Q.context.transform;for(let X=0;X<Z.params?.length;X++){let q=Z.params[X];if(typeof q==="string")Z.params[X]={key:q,hasDefault:!1};else{if(Object.keys(q).length===0){Z.params.splice(X,1),X--;continue}let Y=Object.keys(q)[0];Z.params[X]={key:Y,hasDefault:!0,default:q[Y],type:typeof q[Y]}}}Q.context.next=Q.childs[0];for await(let X of Q.childs)await this.resolveType({node:X})}async resolveType({node:Q}){let Z={...this.#F,node:Q};if(typeof Q.resolve==="function")await Q.resolve(Z);for await(let X of Q.childs)await this.resolveType({node:X})}async resolveTypeCommon({node:Q}){let Z=Q.context.transform;if(Z.hasOwnProperty("page"))Z.page=await this.transformExpression(Z.page);if(Z.hasOwnProperty("print"))Z.print=await this.transformExpression(Z.print);if(Z.hasOwnProperty("sleep"))Z.sleep=await this.transformExpression(Z.sleep);if(Z.hasOwnProperty("assert"))Z.assert=await this.transformExpression(Z.assert)}async createAtomLibFiles({root:Q}){await this.setProgress({message:"Creating external lib files."}),this.#X.typesDir="./types";let X=Q.context.libs.filter((q)=>q.type==="atom");for(let q=0;q<X.length;q++){let J=X[q].atom,W=this.#Q.projectDir;if(J.protocol==="src:"){let H=this.#X.doc.features?.symlinks===!0?this.#Q.projectSrcDirSymlink:this.#Q.projectSrcDir;H=D.resolve(H,`${J.fileName||J.name}.js`);let V=D.relative(`${this.#Q.projectDir}/src/default/blocks`,H);if(!C.existsSync(H)){C.mkdirSync(D.dirname(H),{recursive:!0});let K=`export default async (input)=>{
12
- `;K+="}",C.writeFileSync(H,K,"utf8")}J.relativePath=V.split(D.sep).join("/"),this.#X.typesDir=`./types/${D.basename(W)}/src`}else if(J.protocol==="npm:")J.relativePath=J.name;else if(J.protocol==="node:")J.relativePath=J.name;else if(J.protocol==="use:");else{let H=`${W}/src/libs/${J.id}.js`,V=J.doc.contents?.find((K)=>K.format==="esm")||J.doc;C.writeFileSync(D.normalize(H),V.content,"utf8")}}}async createEngine({root:Q}){await this.setProgress({message:"Creating engine file."});let Z=this.#Q.templateDir,X=O8.compile(C.readFileSync(D.resolve(Z,"src/default/engine.js.njk"),"utf8"),this.#J);for(let q=0;q<Q.childs.length;q++){let Y=Q.childs[q];if(!Y.entryFile)continue;let J=X.render({flow:Y,ui:{package:"@fnet/react-app"}}),W=this.#Q.projectDir,H=D.resolve(W,`src/default/${Y.entryFile}`);C.writeFileSync(H,J,"utf8")}}async createNodeTree({root:Q}){await this.setProgress({message:"Creating block files."});for await(let Z of Q.childs)await this.createTypeWorkflow({node:Z})}async createTypeWorkflow({node:Q}){let Z=this.#Q.templateDir,q=O8.compile(C.readFileSync(D.resolve(Z,"src/default/workflow.js.njk"),"utf8"),this.#J).render(Q),Y=this.#Q.projectDir,J=D.resolve(Y,`src/default/${Q.codeKey}.js`);C.writeFileSync(J,q,"utf8");for await(let W of Q.childs)await this.createType({node:W})}async createType({node:Q}){switch(Q.type){case"assign":case"steps":case"return":case"call":case"new":case"form":case"raise":case"switch":case"next":case"tryexcept":case"for":case"parallel":case"signal":case"wait":case"modules":case"output":case"pipeline":case"retry":case"schedule":case"http":this.createBlockFromTemplate({node:Q});break;default:break}for await(let Z of Q.childs)await this.createType({node:Z})}createBlockFromTemplate({node:Q}){let Z=this.getBlockTemplate({node:Q});Q.context.render=Z.render(Q),this.createStepFile({node:Q})}getBlockTemplate({node:Q}){let Z=this.#K[Q.type];if(Z)return Z;let X=this.#Q.templateDir;return Z=O8.compile(C.readFileSync(D.resolve(X,`src/default/blocks/${Q.type}.js.njk`),"utf8"),this.#J),this.#K[Q.type]=Z,Z}createStepFile({node:Q}){let Z=this.#Q.projectDir,X=`${Q.codeKey}.js`,q=D.resolve(Z,`src/default/blocks/${X}`);C.writeFileSync(q,Q.context.render,"utf8"),Q.context.fileName=X,Q.context.filePath=q}async transformExpression(Q){try{let Z=await this.transformValue(Q);return Z=JSON.stringify(Z),Z=this.replaceSpecialPattern(Z),Z}catch(Z){throw console.error("❌ transformExpression error:",Z.message),console.error(" Input value:",Q),console.error(" Stack:",Z.stack),Z}}async transformValue(Q){if(Array.isArray(Q))for(let Z=0;Z<Q.length;Z++)Q[Z]=await this.transformValue(Q[Z]);else if(r2(Q)){let Z=Object.keys(Q);for(let X=0;X<Z.length;X++){let q=Z[X],Y=m6({expression:q});if(Y)if(Y.processor==="e"){let J=typeof Q[q]==="string"?Q[q]:Q[q];Q[Y.statement]=`$::${J}::`,delete Q[q]}else Q[q]=await this.transformValue(Q[q]);else Q[q]=await this.transformValue(Q[q])}}else if(typeof Q==="string"){let Z=m6({expression:Q,transform:{v:"v.{stmt}",for:"c.for.{stmt}",m:"c.module?.{stmt}||flow.module?.{stmt}",f:"c.form.{stmt}"}});if(Z){let{processor:X,transformed:q}=Z;switch(X){case"v":case"for":case"m":case"f":case"e":Q=`$::${q||Z.statement}::`;break}}}return Q}replaceSpecialPattern(Q){if(typeof Q!=="string")return console.error("❌ replaceSpecialPattern received non-string:",typeof Q,Q),Q;let Z=/"\$::(.*?)::"/g;return Q.replace(Z,"$1")}replaceExpressionLegacy(Q){let Z=/(?<outer>"\${(?<inner>[^{]*)}")/g;return Q.replaceAll(Z,"$2")}async createProjectYaml(){await this.setProgress({message:"Creating fnet.yaml"});let{content:X,...q}=this.#X.doc,Y=this.#Q.projectDir,J=D.resolve(Y,"fnet.yaml");C.writeFileSync(J,sQ.stringify(q),"utf8")}async createProjectMainYaml(){await this.setProgress({message:"Creating flow.main.yaml"});let X={content:sQ.stringify(this.#q)},q=this.#Q.templateDir,J=O8.compile(C.readFileSync(D.resolve(q,"flow.main.yaml.njk"),"utf8"),this.#J).render(X),W=this.#Q.projectDir,H=D.resolve(W,"flow.main.yaml");C.writeFileSync(H,J,"utf8")}async runPrettifier(){let Q=this.#Q.projectDir;if(M0("bun")){let Z=await oQ("prettier --write .",{cwd:D.resolve(Q,"src")});if(Z.code!==0)throw Error(Z.stderr)}else{let Z=await oQ("prettier --write .",{cwd:D.resolve(Q,"src")});if(Z.code!==0)throw Error(Z.stderr)}}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#Q.project?.devops){let Q=[this.#Q.project?.devops];for(let Z=0;Z<Q.length;Z++){let X=Q[Z];if(await this.deployProject({deploymentProject:X}),X.isDirty===!0)await X.save()}}else if(this.#X.id){let Q=await I0.list({type:"workflow.deploy",parent_id:this.#X.id});for(let Z=0;Z<Q.length;Z++){let X=Q[Z];if(await this.deployProject({deploymentProject:X}),X.isDirty===!0)X=await I0.update(X,{id:X.id})}}}async deployProject(Q){let{deploymentProject:Z}=Q,{yamlDocument:X}=Z;if(Z.doc.targets&&Array.isArray(Z.doc.targets))throw Error("Deployment project targets are deprecated. Please update targets in the yaml file.");let q=Object.keys(Z.doc||{}),Y=X||{};for(let J=0;J<q.length;J++){let W=Z.doc[q[J]];W.name=q[J];let H=Y.get(q[J]);await O9({...this.#W,deploymentProject:Z,deploymentProjectTarget:W,yamlTarget:H})}}async registerToPackageManager(Q){let{target:Z,packageJSON:X}=Q;if(!this.#Q.id)return;let q=await I0.first({name:Z.params.name,parent_id:this.#O.env.ATOM_PACKAGES_ID});if(!q)q=await I0.create({parent_id:this.#O.env.ATOM_PACKAGES_ID,doc:{name:Z.params.name,type:"pm",versions:[{v:X.version}]}});else q.doc.versions.splice(0,0,{v:X.version}),await I0.update(q,{id:q.id})}async setProgress(Q){let Z=typeof Q==="string"?Q:Q?.message;console.log(Q1.blue(Z)),await this._cache_set(this.#Y,{status:"IN_PROGRESS",message:Z})}async build(){if(this.#T&&!this.#A)return await this.createNetwork();try{let Q=this.#T?await j8({root:this.#V}):void 0;if(this.#A){let Z=this.#W.context.project;if(await this.initWorkflowDir(),await this.initNunjucks(),this.#T){let X=this.#Q.project?.projectDir||this.#Q.projectDir;if(X=D.resolve(X,"fnet"),C.existsSync(X)){if(C.existsSync(D.resolve(X,"flow.bpmn")))C.unlinkSync(D.resolve(X,"flow.bpmn"));if(C.writeFileSync(D.resolve(X,"flows.bpmn"),Q.diagramXML,"utf8"),((this.#X.doc.features||{}).bpmn||{}).per_flow===!0){let W=D.resolve(X,"bpmn");if(!C.existsSync(W))C.mkdirSync(W,{recursive:!0});let H=await B9({root:this.#V});for(let V of H){let K=`${V.flowName}.bpmn`,z=D.resolve(W,K);C.writeFileSync(z,V.diagramXML,"utf8")}}}}if(await this.createAtomLibFiles({root:this.#V}),await this.createEngine({root:this.#V}),await this.createNodeTree({root:this.#V}),await this.createProjectYaml(),await D6(this.#W),await k6(this.#W),await P6(this.#W),await N6(this.#W),await I6(this.#W),await R6(this.#W),Z.runtime.type==="bun")await C6(this.#W);else await T6(this.#W);if(await B6(this.#W),await b6(this.#W),await v6(this.#W),this.#j){if(await y6(this.#W),await E6(this.#W),this.#B)await this.deploy()}}await this._cache_set(this.#Y,{status:"COMPLETED",data:{network:Q}})}catch(Q){throw await this._cache_set(this.#Y,{status:"FAILED",message:Q.message||Q}),Q}}async createNetwork(){try{let Q=await j8({root:this.#V});await this._cache_set(this.#Y,{status:"COMPLETED",data:{...Q}})}catch(Q){throw await this._cache_set(this.#Y,{status:"FAILED",message:Q.message||Q}),Q}}}var b0=QZ;var X1={command:"build",describe:"Build flownet project",builder:(Q)=>{return Q.option("id",{type:"string",describe:"Project ID"}).option("buildId",{type:"string",alias:"bid",describe:"Build ID"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"],describe:"Build mode"}).option("ftag",{type:"array",describe:"Tags for conditional configuration"}).option("dev",{type:"boolean",default:!1,describe:"Development mode"}).option("flows",{type:"string",alias:"flow",describe:"Path to flows file"}).option("bpmn",{type:"boolean",default:!1,describe:"Generate BPMN diagram"})},handler:async(Q)=>{try{let Z=await b(Q),X=new b0(Z);await X.init(),await X.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(Z){console.error("Building workflow failed!",Z.message),process.exit(1)}}},ZZ=X1;var q1={command:"build:dev",describe:"Build flownet project",builder:(Q)=>{return Q.option("id",{type:"string",describe:"Project ID"}).option("buildId",{type:"string",alias:"bid",describe:"Build ID"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"],describe:"Build mode"}).option("ftag",{type:"array",describe:"Tags for conditional configuration"}).option("dev",{type:"boolean",default:!1,describe:"Development mode"}).option("flows",{type:"string",describe:"Path to flows file"})},handler:async(Q)=>{try{Q.dev=!0;let Z=await b(Q),X=new b0(Z);await X.init(),await X.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(Z){console.error("Building workflow failed!",Z.message),process.exit(1)}}},XZ=q1;var Y1={command:"deploy",describe:"Build and deploy flownet project",builder:(Q)=>{return Q.option("id",{type:"string",describe:"Project ID"}).option("buildId",{type:"string",alias:"bid",describe:"Build ID"}).option("ftag",{type:"array",describe:"Tags for conditional configuration"}).option("flows",{type:"string",describe:"Path to flows file"})},handler:async(Q)=>{try{let Z=await b({...Q,mode:"all"}),X=new b0(Z);await X.init(),await X.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(Z){console.error("Building workflow failed!",Z.message),process.exit(1)}}},qZ=Y1;var J1={command:"file",describe:"Just create files",builder:(Q)=>{return Q.option("id",{type:"string",describe:"Project ID"}).option("buildId",{type:"string",alias:"bid",describe:"Build ID"}).option("ftag",{type:"array",describe:"Tags for conditional configuration"}).option("flows",{type:"string",describe:"Path to flows file"})},handler:async(Q)=>{try{let Z=await b({...Q,mode:"file"}),X=new b0(Z);await X.init(),await X.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(Z){console.error("Building workflow failed!",Z.message),process.exit(1)}}},YZ=J1;import JZ from"node:path";import d8 from"node:fs";import H1 from"@fnet/prompt";var W1={command:"input [name]",describe:"Create or modify an input config file",builder:(Q)=>{return Q.positional("name",{type:"string",demandOption:!1,describe:"Input name"})},handler:async(Q)=>{try{let Z=await b(Q),{project:X}=Z,{projectDir:q,projectFileParsed:Y}=X,J=Y.input;if(!J)throw Error("Config schema not found in project file.");if(!Reflect.has(Q,"name")){let{inputName:G}=await H1({type:"input",name:"inputName",message:"Input name:",initial:"dev"});Q.name=G}let W=JZ.resolve(q,".fnet");if(!d8.existsSync(W))d8.mkdirSync(W);let H=JZ.resolve(W,`${Q.name}.fnet`),V=d8.existsSync(H),K=(await import("@fnet/object-from-schema")).default,z=await K({schema:J,format:"yaml",ref:V?H:void 0});d8.writeFileSync(H,z)}catch(Z){console.error(Z.message),process.exit(1)}}},HZ=W1;import P from"node:path";import N from"node:fs";import p8 from"node:os";import{spawn as a8}from"node:child_process";import F from"chalk";import j0 from"@fnet/prompt";import i8 from"chalk";import WZ from"@fnet/prompt";async function V1(Q){let{items:Z,message:X,nameField:q="name",valueField:Y="name",initialValue:J=null,allowAbort:W=!0}=Q;if(!Z||Z.length===0)return console.log(i8.yellow("No items available for selection.")),null;if(Z.length===1&&!W){let G=Z[0],_=typeof G==="string"?G:G[Y];return console.log(i8.blue(`Only one option available: ${typeof G==="string"?G:G[q]}`)),_}let H=Z.map((G)=>{if(typeof G==="string")return{name:G,value:G,message:G};else return{name:G[Y],value:G[Y],message:G[q]||G[Y]}});if(W)H.push({name:"cancel",value:null,message:i8.yellow("Cancel")});let V=null;if(J){let G=H.findIndex((_)=>_.name===J);if(G!==-1)V=G}let K="selectedItem",{[K]:z}=await WZ({type:"select",name:K,message:X,choices:H,initial:V});if(z==="cancel")return null;return z}async function K1(Q){let{items:Z,message:X,nameField:q="name",valueField:Y="name",initialValues:J=[],allowAbort:W=!0}=Q;if(!Z||Z.length===0)return console.log(i8.yellow("No items available for selection.")),null;let H=Z.map((G)=>{if(typeof G==="string")return{name:G,value:G,message:G};else return{name:G[Y],value:G[Y],message:G[q]||G[Y]}}),V=[];if(J&&J.length>0)V=H.map((G,_)=>J.includes(G.name)?_:-1).filter((G)=>G!==-1);let K="selectedItems",z=await WZ({type:"multiselect",name:K,message:X,choices:H,initial:V,hint:"(Use space to select, enter to confirm)",validate:(G)=>{if(G.length===0&&!W)return"Please select at least one item";return!0}});if(W&&z[K].length===0)return null;return z[K]}var S7={promptForSelection:V1,promptForMultipleSelection:K1};var l=P.join(p8.homedir(),".fnet","express");async function KZ(Q){Q.command(["$0 [project-name]","create [project-name]"],"Create a new express project",(Z)=>{return Z.positional("project-name",{describe:"Name of the project",type:"string"}).option("yes",{alias:"y",describe:"Skip all prompts and use defaults",type:"boolean",default:!1}).option("runtime",{describe:"Runtime to use (node)",type:"string",choices:["node"],default:"node"})},async(Z)=>{await _1(Z)}).command("list","List express projects",(Z)=>{return Z.option("today",{describe:"Show only projects created today",type:"boolean",default:!1}).option("type",{describe:"Filter by project type (fnode or fnet)",type:"string",choices:["fnode","fnet"]}).option("all",{describe:"Show all projects regardless of type",type:"boolean",default:!1,alias:"a"}).option("name",{describe:"Filter by project name",type:"string"})},async(Z)=>{await z1(Z)}).command("open [project-name]","Open an express project",(Z)=>{return Z.positional("project-name",{describe:"Name of the project to open",type:"string"}).option("latest",{describe:"Open the most recent project",type:"boolean",default:!1})},async(Z)=>{await G1(Z)}).command("move [project-name] [destination]","Move an express project to a real project location",(Z)=>{return Z.positional("project-name",{describe:"Name of the project to move",type:"string"}).positional("destination",{describe:"Destination directory",type:"string"}).option("latest",{describe:"Move the most recent project",type:"boolean",default:!1})},async(Z)=>{await U1(Z)}).command("remove [project-name]","Remove an express project",(Z)=>{return Z.positional("project-name",{describe:"Name of the project to remove",type:"string"}).option("latest",{describe:"Remove the most recent project",type:"boolean",default:!1}).option("yes",{alias:"y",describe:"Skip confirmation prompt",type:"boolean",default:!1})},async(Z)=>{await O1(Z)}).command("enter [project-name]","Enter the directory of an express project in the active terminal",(Z)=>{return Z.positional("project-name",{describe:"Name of the project to enter",type:"string"}).option("latest",{describe:"Enter the most recent project directory",type:"boolean",default:!1})},async(Z)=>{await M1(Z)}).demandCommand(1,"You need to specify a command").help()}async function _1(Q){try{if(!N.existsSync(l))N.mkdirSync(l,{recursive:!0});let Z=new Date().toISOString().slice(0,10).replace(/-/g,""),X=P.join(l,Z);if(!N.existsSync(X))N.mkdirSync(X,{recursive:!0});let q=Q.projectName,Y,J=Q.runtime;if(!Q.yes){if(!q){let _=N.readdirSync(X).filter(($)=>$.startsWith("fnet-")).map(($)=>parseInt($.replace("fnet-",""),10)).filter(($)=>!isNaN($)),U=`fnet-${_.length>0?Math.max(..._)+1:1}`;q=(await j0([{type:"input",name:"projectName",message:"Enter project name:",default:U}])).projectName}J=(await j0({type:"select",name:"runtime",message:"Select runtime:",choices:["node"],initial:J||"node"})).runtime}else{if(!q){let z=N.readdirSync(X).filter((_)=>_.startsWith("fnet-")).map((_)=>parseInt(_.replace("fnet-",""),10)).filter((_)=>!isNaN(_));q=`fnet-${z.length>0?Math.max(...z)+1:1}`}if(!J)J="node"}if(Y=P.join(X,q),N.existsSync(Y)){let z=1;while(N.existsSync(P.join(X,`${q}-${z}`)))z++;q=`${q}-${z}`,Y=P.join(X,q)}if(!Q.yes){if(!(await j0([{type:"confirm",name:"proceed",message:`Create express project "${q}" in ${Y}?`,default:!0}])).proceed){console.log(F.yellow("Project creation cancelled."));return}}console.log(F.blue(`Creating express project "${q}" in ${Y}...`));let W=P.dirname(Y),V=["create","--name",P.basename(Y)];if(V.push("--runtime",J),Q.yes)V.push("--yes");if(!N.existsSync(W))N.mkdirSync(W,{recursive:!0});let K=a8("fnet",V,{stdio:"inherit",shell:!0,cwd:W});return new Promise((z,G)=>{K.on("close",(_)=>{if(_===0)if(console.log(F.green(`
11
+ >>> no match, partial?`,Q,G,Z,_),G===H)return!0}return!1}let U;if(typeof K==="string")U=z===K,this.debug("string match",K,z,U);else U=K.test(z),this.debug("pattern match",K,z,U);if(!U)return!1}if(J===H&&W===V)return!0;else if(J===H)return X;else if(W===V)return J===H-1&&Q[J]==="";else throw Error("wtf?")}braceExpand(){return o9(this.pattern,this.options)}parse(Q){o0(Q);let Z=this.options;if(Q==="**")return r;if(Q==="")return"";let X,q=null;if(X=Q.match(f5))q=Z.dot?g5:h5;else if(X=Q.match(N5))q=(Z.nocase?Z.dot?b5:D5:Z.dot?k5:P5)(X[1]);else if(X=Q.match(m5))q=(Z.nocase?Z.dot?c5:l5:Z.dot?d5:i5)(X);else if(X=Q.match(v5))q=Z.dot?E5:y5;else if(X=Q.match(x5))q=u5;let Y=n.fromGlob(Q,this.options).toMMPattern();if(q&&typeof Y==="object")Reflect.defineProperty(Y,"test",{value:q});return Y}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let Q=this.set;if(!Q.length)return this.regexp=!1,this.regexp;let Z=this.options,X=Z.noglobstar?n5:Z.dot?r5:s5,q=new Set(Z.nocase?["i"]:[]),Y=Q.map((H)=>{let V=H.map((K)=>{if(K instanceof RegExp)for(let z of K.flags.split(""))q.add(z);return typeof K==="string"?Z4(K):K===r?r:K._src});return V.forEach((K,z)=>{let G=V[z+1],_=V[z-1];if(K!==r||_===r)return;if(_===void 0)if(G!==void 0&&G!==r)V[z+1]="(?:\\/|"+X+"\\/)?"+G;else V[z]=X;else if(G===void 0)V[z-1]=_+"(?:\\/|"+X+")?";else if(G!==r)V[z-1]=_+"(?:\\/|\\/"+X+"\\/)"+G,V[z+1]=r}),V.filter((K)=>K!==r).join("/")}).join("|"),[J,W]=Q.length>1?["(?:",")"]:["",""];if(Y="^"+J+Y+W+"$",this.negate)Y="^(?!"+Y+").+$";try{this.regexp=new RegExp(Y,[...q].join(""))}catch(H){this.regexp=!1}return this.regexp}slashSplit(Q){if(this.preserveMultipleSlashes)return Q.split("/");else if(this.isWindows&&/^\/\/[^\/]+/.test(Q))return["",...Q.split(/\/+/)];else return Q.split(/\/+/)}match(Q,Z=this.partial){if(this.debug("match",Q,this.pattern),this.comment)return!1;if(this.empty)return Q==="";if(Q==="/"&&Z)return!0;let X=this.options;if(this.isWindows)Q=Q.split("\\").join("/");let q=this.slashSplit(Q);this.debug(this.pattern,"split",q);let Y=this.set;this.debug(this.pattern,"set",Y);let J=q[q.length-1];if(!J)for(let W=q.length-2;!J&&W>=0;W--)J=q[W];for(let W=0;W<Y.length;W++){let H=Y[W],V=q;if(X.matchBase&&H.length===1)V=[J];if(this.matchOne(V,H,Z)){if(X.flipNegate)return!0;return!this.negate}}if(X.flipNegate)return!1;return this.negate}static defaults(Q){return Z0.defaults(Q).Minimatch}}Z0.AST=n;Z0.Minimatch=V0;Z0.escape=g0;Z0.unescape=U0;import{fileURLToPath as v4}from"node:url";var m0=typeof performance==="object"&&performance&&typeof performance.now==="function"?performance:Date,e9=new Set,i6=typeof process==="object"&&!!process?process:{},QQ=(Q,Z,X,q)=>{typeof i6.emitWarning==="function"?i6.emitWarning(Q,Z,X,q):console.error(`[${X}] ${Z}: ${Q}`)},S8=globalThis.AbortController,t9=globalThis.AbortSignal;if(typeof S8>"u"){t9=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(q,Y){this._onabort.push(Y)}},S8=class{constructor(){Z()}signal=new t9;abort(q){if(this.signal.aborted)return;this.signal.reason=q,this.signal.aborted=!0;for(let Y of this.signal._onabort)Y(q);this.signal.onabort?.(q)}};let Q=i6.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",Z=()=>{if(!Q)return;Q=!1,QQ("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",Z)}}var X4=(Q)=>!e9.has(Q),dq=Symbol("type"),k0=(Q)=>Q&&Q===Math.floor(Q)&&Q>0&&isFinite(Q),ZQ=(Q)=>!k0(Q)?null:Q<=Math.pow(2,8)?Uint8Array:Q<=Math.pow(2,16)?Uint16Array:Q<=Math.pow(2,32)?Uint32Array:Q<=Number.MAX_SAFE_INTEGER?e0:null;class e0 extends Array{constructor(Q){super(Q);this.fill(0)}}class l0{heap;length;static#Z=!1;static create(Q){let Z=ZQ(Q);if(!Z)return[];l0.#Z=!0;let X=new l0(Q,Z);return l0.#Z=!1,X}constructor(Q,Z){if(!l0.#Z)throw TypeError("instantiate Stack using Stack.create(n)");this.heap=new Z(Q),this.length=0}push(Q){this.heap[this.length++]=Q}pop(){return this.heap[--this.length]}}class Q8{#Z;#Q;#X;#q;#J;#L;#I;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#K;#G;#V;#z;#Y;#M;#O;#$;#A;#j;#B;#T;#W;#F;#_;#C;#R;#k;static unsafeExposeInternals(Q){return{starts:Q.#W,ttls:Q.#F,sizes:Q.#T,keyMap:Q.#V,keyList:Q.#z,valList:Q.#Y,next:Q.#M,prev:Q.#O,get head(){return Q.#$},get tail(){return Q.#A},free:Q.#j,isBackgroundFetch:(Z)=>Q.#U(Z),backgroundFetch:(Z,X,q,Y)=>Q.#E(Z,X,q,Y),moveToTail:(Z)=>Q.#f(Z),indexes:(Z)=>Q.#N(Z),rindexes:(Z)=>Q.#P(Z),isStale:(Z)=>Q.#S(Z)}}get max(){return this.#Z}get maxSize(){return this.#Q}get calculatedSize(){return this.#G}get size(){return this.#K}get fetchMethod(){return this.#L}get memoMethod(){return this.#I}get dispose(){return this.#X}get onInsert(){return this.#q}get disposeAfter(){return this.#J}constructor(Q){let{max:Z=0,ttl:X,ttlResolution:q=1,ttlAutopurge:Y,updateAgeOnGet:J,updateAgeOnHas:W,allowStale:H,dispose:V,onInsert:K,disposeAfter:z,noDisposeOnSet:G,noUpdateTTL:_,maxSize:A=0,maxEntrySize:U=0,sizeCalculation:M,fetchMethod:$,memoMethod:R,noDeleteOnFetchRejection:O,noDeleteOnStaleGet:B,allowStaleOnFetchRejection:T,allowStaleOnFetchAbort:S,ignoreFetchAbort:y}=Q;if(Z!==0&&!k0(Z))throw TypeError("max option must be a nonnegative integer");let v=Z?ZQ(Z):Array;if(!v)throw Error("invalid max value: "+Z);if(this.#Z=Z,this.#Q=A,this.maxEntrySize=U||this.#Q,this.sizeCalculation=M,this.sizeCalculation){if(!this.#Q&&!this.maxEntrySize)throw TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!=="function")throw TypeError("sizeCalculation set to non-function")}if(R!==void 0&&typeof R!=="function")throw TypeError("memoMethod must be a function if defined");if(this.#I=R,$!==void 0&&typeof $!=="function")throw TypeError("fetchMethod must be a function if specified");if(this.#L=$,this.#C=!!$,this.#V=new Map,this.#z=Array(Z).fill(void 0),this.#Y=Array(Z).fill(void 0),this.#M=new v(Z),this.#O=new v(Z),this.#$=0,this.#A=0,this.#j=l0.create(Z),this.#K=0,this.#G=0,typeof V==="function")this.#X=V;if(typeof K==="function")this.#q=K;if(typeof z==="function")this.#J=z,this.#B=[];else this.#J=void 0,this.#B=void 0;if(this.#_=!!this.#X,this.#k=!!this.#q,this.#R=!!this.#J,this.noDisposeOnSet=!!G,this.noUpdateTTL=!!_,this.noDeleteOnFetchRejection=!!O,this.allowStaleOnFetchRejection=!!T,this.allowStaleOnFetchAbort=!!S,this.ignoreFetchAbort=!!y,this.maxEntrySize!==0){if(this.#Q!==0){if(!k0(this.#Q))throw TypeError("maxSize must be a positive integer if specified")}if(!k0(this.maxEntrySize))throw TypeError("maxEntrySize must be a positive integer if specified");this.#g()}if(this.allowStale=!!H,this.noDeleteOnStaleGet=!!B,this.updateAgeOnGet=!!J,this.updateAgeOnHas=!!W,this.ttlResolution=k0(q)||q===0?q:1,this.ttlAutopurge=!!Y,this.ttl=X||0,this.ttl){if(!k0(this.ttl))throw TypeError("ttl must be a positive integer if specified");this.#H()}if(this.#Z===0&&this.ttl===0&&this.#Q===0)throw TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.#Z&&!this.#Q){if(X4("LRU_CACHE_UNBOUNDED"))e9.add("LRU_CACHE_UNBOUNDED"),QQ("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning","LRU_CACHE_UNBOUNDED",Q8)}}getRemainingTTL(Q){return this.#V.has(Q)?1/0:0}#H(){let Q=new e0(this.#Z),Z=new e0(this.#Z);this.#F=Q,this.#W=Z,this.#D=(Y,J,W=m0.now())=>{if(Z[Y]=J!==0?W:0,Q[Y]=J,J!==0&&this.ttlAutopurge){let H=setTimeout(()=>{if(this.#S(Y))this.#b(this.#z[Y],"expire")},J+1);if(H.unref)H.unref()}},this.#v=(Y)=>{Z[Y]=Q[Y]!==0?m0.now():0},this.#w=(Y,J)=>{if(Q[J]){let W=Q[J],H=Z[J];if(!W||!H)return;Y.ttl=W,Y.start=H,Y.now=X||q();let V=Y.now-H;Y.remainingTTL=W-V}};let X=0,q=()=>{let Y=m0.now();if(this.ttlResolution>0){X=Y;let J=setTimeout(()=>X=0,this.ttlResolution);if(J.unref)J.unref()}return Y};this.getRemainingTTL=(Y)=>{let J=this.#V.get(Y);if(J===void 0)return 0;let W=Q[J],H=Z[J];if(!W||!H)return 1/0;let V=(X||q())-H;return W-V},this.#S=(Y)=>{let J=Z[Y],W=Q[Y];return!!W&&!!J&&(X||q())-J>W}}#v=()=>{};#w=()=>{};#D=()=>{};#S=()=>!1;#g(){let Q=new e0(this.#Z);this.#G=0,this.#T=Q,this.#y=(Z)=>{this.#G-=Q[Z],Q[Z]=0},this.#m=(Z,X,q,Y)=>{if(this.#U(X))return 0;if(!k0(q))if(Y){if(typeof Y!=="function")throw TypeError("sizeCalculation must be a function");if(q=Y(X,Z),!k0(q))throw TypeError("sizeCalculation return invalid (expect positive integer)")}else throw TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return q},this.#x=(Z,X,q)=>{if(Q[Z]=X,this.#Q){let Y=this.#Q-Q[Z];while(this.#G>Y)this.#u(!0)}if(this.#G+=Q[Z],q)q.entrySize=X,q.totalCalculatedSize=this.#G}}#y=(Q)=>{};#x=(Q,Z,X)=>{};#m=(Q,Z,X,q)=>{if(X||q)throw TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0};*#N({allowStale:Q=this.allowStale}={}){if(this.#K)for(let Z=this.#A;;){if(!this.#l(Z))break;if(Q||!this.#S(Z))yield Z;if(Z===this.#$)break;else Z=this.#O[Z]}}*#P({allowStale:Q=this.allowStale}={}){if(this.#K)for(let Z=this.#$;;){if(!this.#l(Z))break;if(Q||!this.#S(Z))yield Z;if(Z===this.#A)break;else Z=this.#M[Z]}}#l(Q){return Q!==void 0&&this.#V.get(this.#z[Q])===Q}*entries(){for(let Q of this.#N())if(this.#Y[Q]!==void 0&&this.#z[Q]!==void 0&&!this.#U(this.#Y[Q]))yield[this.#z[Q],this.#Y[Q]]}*rentries(){for(let Q of this.#P())if(this.#Y[Q]!==void 0&&this.#z[Q]!==void 0&&!this.#U(this.#Y[Q]))yield[this.#z[Q],this.#Y[Q]]}*keys(){for(let Q of this.#N()){let Z=this.#z[Q];if(Z!==void 0&&!this.#U(this.#Y[Q]))yield Z}}*rkeys(){for(let Q of this.#P()){let Z=this.#z[Q];if(Z!==void 0&&!this.#U(this.#Y[Q]))yield Z}}*values(){for(let Q of this.#N())if(this.#Y[Q]!==void 0&&!this.#U(this.#Y[Q]))yield this.#Y[Q]}*rvalues(){for(let Q of this.#P())if(this.#Y[Q]!==void 0&&!this.#U(this.#Y[Q]))yield this.#Y[Q]}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(Q,Z={}){for(let X of this.#N()){let q=this.#Y[X],Y=this.#U(q)?q.__staleWhileFetching:q;if(Y===void 0)continue;if(Q(Y,this.#z[X],this))return this.get(this.#z[X],Z)}}forEach(Q,Z=this){for(let X of this.#N()){let q=this.#Y[X],Y=this.#U(q)?q.__staleWhileFetching:q;if(Y===void 0)continue;Q.call(Z,Y,this.#z[X],this)}}rforEach(Q,Z=this){for(let X of this.#P()){let q=this.#Y[X],Y=this.#U(q)?q.__staleWhileFetching:q;if(Y===void 0)continue;Q.call(Z,Y,this.#z[X],this)}}purgeStale(){let Q=!1;for(let Z of this.#P({allowStale:!0}))if(this.#S(Z))this.#b(this.#z[Z],"expire"),Q=!0;return Q}info(Q){let Z=this.#V.get(Q);if(Z===void 0)return;let X=this.#Y[Z],q=this.#U(X)?X.__staleWhileFetching:X;if(q===void 0)return;let Y={value:q};if(this.#F&&this.#W){let J=this.#F[Z],W=this.#W[Z];if(J&&W){let H=J-(m0.now()-W);Y.ttl=H,Y.start=Date.now()}}if(this.#T)Y.size=this.#T[Z];return Y}dump(){let Q=[];for(let Z of this.#N({allowStale:!0})){let X=this.#z[Z],q=this.#Y[Z],Y=this.#U(q)?q.__staleWhileFetching:q;if(Y===void 0||X===void 0)continue;let J={value:Y};if(this.#F&&this.#W){J.ttl=this.#F[Z];let W=m0.now()-this.#W[Z];J.start=Math.floor(Date.now()-W)}if(this.#T)J.size=this.#T[Z];Q.unshift([X,J])}return Q}load(Q){this.clear();for(let[Z,X]of Q){if(X.start){let q=Date.now()-X.start;X.start=m0.now()-q}this.set(Z,X.value,X)}}set(Q,Z,X={}){if(Z===void 0)return this.delete(Q),this;let{ttl:q=this.ttl,start:Y,noDisposeOnSet:J=this.noDisposeOnSet,sizeCalculation:W=this.sizeCalculation,status:H}=X,{noUpdateTTL:V=this.noUpdateTTL}=X,K=this.#m(Q,Z,X.size||0,W);if(this.maxEntrySize&&K>this.maxEntrySize){if(H)H.set="miss",H.maxEntrySizeExceeded=!0;return this.#b(Q,"set"),this}let z=this.#K===0?void 0:this.#V.get(Q);if(z===void 0){if(z=this.#K===0?this.#A:this.#j.length!==0?this.#j.pop():this.#K===this.#Z?this.#u(!1):this.#K,this.#z[z]=Q,this.#Y[z]=Z,this.#V.set(Q,z),this.#M[this.#A]=z,this.#O[z]=this.#A,this.#A=z,this.#K++,this.#x(z,K,H),H)H.set="add";if(V=!1,this.#k)this.#q?.(Z,Q,"add")}else{this.#f(z);let G=this.#Y[z];if(Z!==G){if(this.#C&&this.#U(G)){G.__abortController.abort(Error("replaced"));let{__staleWhileFetching:_}=G;if(_!==void 0&&!J){if(this.#_)this.#X?.(_,Q,"set");if(this.#R)this.#B?.push([_,Q,"set"])}}else if(!J){if(this.#_)this.#X?.(G,Q,"set");if(this.#R)this.#B?.push([G,Q,"set"])}if(this.#y(z),this.#x(z,K,H),this.#Y[z]=Z,H){H.set="replace";let _=G&&this.#U(G)?G.__staleWhileFetching:G;if(_!==void 0)H.oldValue=_}}else if(H)H.set="update";if(this.#k)this.onInsert?.(Z,Q,Z===G?"update":"replace")}if(q!==0&&!this.#F)this.#H();if(this.#F){if(!V)this.#D(z,q,Y);if(H)this.#w(H,z)}if(!J&&this.#R&&this.#B){let G=this.#B,_;while(_=G?.shift())this.#J?.(..._)}return this}pop(){try{while(this.#K){let Q=this.#Y[this.#$];if(this.#u(!0),this.#U(Q)){if(Q.__staleWhileFetching)return Q.__staleWhileFetching}else if(Q!==void 0)return Q}}finally{if(this.#R&&this.#B){let Q=this.#B,Z;while(Z=Q?.shift())this.#J?.(...Z)}}}#u(Q){let Z=this.#$,X=this.#z[Z],q=this.#Y[Z];if(this.#C&&this.#U(q))q.__abortController.abort(Error("evicted"));else if(this.#_||this.#R){if(this.#_)this.#X?.(q,X,"evict");if(this.#R)this.#B?.push([q,X,"evict"])}if(this.#y(Z),Q)this.#z[Z]=void 0,this.#Y[Z]=void 0,this.#j.push(Z);if(this.#K===1)this.#$=this.#A=0,this.#j.length=0;else this.#$=this.#M[Z];return this.#V.delete(X),this.#K--,Z}has(Q,Z={}){let{updateAgeOnHas:X=this.updateAgeOnHas,status:q}=Z,Y=this.#V.get(Q);if(Y!==void 0){let J=this.#Y[Y];if(this.#U(J)&&J.__staleWhileFetching===void 0)return!1;if(!this.#S(Y)){if(X)this.#v(Y);if(q)q.has="hit",this.#w(q,Y);return!0}else if(q)q.has="stale",this.#w(q,Y)}else if(q)q.has="miss";return!1}peek(Q,Z={}){let{allowStale:X=this.allowStale}=Z,q=this.#V.get(Q);if(q===void 0||!X&&this.#S(q))return;let Y=this.#Y[q];return this.#U(Y)?Y.__staleWhileFetching:Y}#E(Q,Z,X,q){let Y=Z===void 0?void 0:this.#Y[Z];if(this.#U(Y))return Y;let J=new S8,{signal:W}=X;W?.addEventListener("abort",()=>J.abort(W.reason),{signal:J.signal});let H={signal:J.signal,options:X,context:q},V=(U,M=!1)=>{let{aborted:$}=J.signal,R=X.ignoreFetchAbort&&U!==void 0;if(X.status)if($&&!M){if(X.status.fetchAborted=!0,X.status.fetchError=J.signal.reason,R)X.status.fetchAbortIgnored=!0}else X.status.fetchResolved=!0;if($&&!R&&!M)return z(J.signal.reason);let O=_;if(this.#Y[Z]===_)if(U===void 0)if(O.__staleWhileFetching)this.#Y[Z]=O.__staleWhileFetching;else this.#b(Q,"fetch");else{if(X.status)X.status.fetchUpdated=!0;this.set(Q,U,H.options)}return U},K=(U)=>{if(X.status)X.status.fetchRejected=!0,X.status.fetchError=U;return z(U)},z=(U)=>{let{aborted:M}=J.signal,$=M&&X.allowStaleOnFetchAbort,R=$||X.allowStaleOnFetchRejection,O=R||X.noDeleteOnFetchRejection,B=_;if(this.#Y[Z]===_){if(!O||B.__staleWhileFetching===void 0)this.#b(Q,"fetch");else if(!$)this.#Y[Z]=B.__staleWhileFetching}if(R){if(X.status&&B.__staleWhileFetching!==void 0)X.status.returnedStale=!0;return B.__staleWhileFetching}else if(B.__returned===B)throw U},G=(U,M)=>{let $=this.#L?.(Q,Y,H);if($&&$ instanceof Promise)$.then((R)=>U(R===void 0?void 0:R),M);J.signal.addEventListener("abort",()=>{if(!X.ignoreFetchAbort||X.allowStaleOnFetchAbort){if(U(void 0),X.allowStaleOnFetchAbort)U=(R)=>V(R,!0)}})};if(X.status)X.status.fetchDispatched=!0;let _=new Promise(G).then(V,K),A=Object.assign(_,{__abortController:J,__staleWhileFetching:Y,__returned:void 0});if(Z===void 0)this.set(Q,A,{...H.options,status:void 0}),Z=this.#V.get(Q);else this.#Y[Z]=A;return A}#U(Q){if(!this.#C)return!1;let Z=Q;return!!Z&&Z instanceof Promise&&Z.hasOwnProperty("__staleWhileFetching")&&Z.__abortController instanceof S8}async fetch(Q,Z={}){let{allowStale:X=this.allowStale,updateAgeOnGet:q=this.updateAgeOnGet,noDeleteOnStaleGet:Y=this.noDeleteOnStaleGet,ttl:J=this.ttl,noDisposeOnSet:W=this.noDisposeOnSet,size:H=0,sizeCalculation:V=this.sizeCalculation,noUpdateTTL:K=this.noUpdateTTL,noDeleteOnFetchRejection:z=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:G=this.allowStaleOnFetchRejection,ignoreFetchAbort:_=this.ignoreFetchAbort,allowStaleOnFetchAbort:A=this.allowStaleOnFetchAbort,context:U,forceRefresh:M=!1,status:$,signal:R}=Z;if(!this.#C){if($)$.fetch="get";return this.get(Q,{allowStale:X,updateAgeOnGet:q,noDeleteOnStaleGet:Y,status:$})}let O={allowStale:X,updateAgeOnGet:q,noDeleteOnStaleGet:Y,ttl:J,noDisposeOnSet:W,size:H,sizeCalculation:V,noUpdateTTL:K,noDeleteOnFetchRejection:z,allowStaleOnFetchRejection:G,allowStaleOnFetchAbort:A,ignoreFetchAbort:_,status:$,signal:R},B=this.#V.get(Q);if(B===void 0){if($)$.fetch="miss";let T=this.#E(Q,B,O,U);return T.__returned=T}else{let T=this.#Y[B];if(this.#U(T)){let H0=X&&T.__staleWhileFetching!==void 0;if($){if($.fetch="inflight",H0)$.returnedStale=!0}return H0?T.__staleWhileFetching:T.__returned=T}let S=this.#S(B);if(!M&&!S){if($)$.fetch="hit";if(this.#f(B),q)this.#v(B);if($)this.#w($,B);return T}let y=this.#E(Q,B,O,U),J0=y.__staleWhileFetching!==void 0&&X;if($){if($.fetch=S?"stale":"refresh",J0&&S)$.returnedStale=!0}return J0?y.__staleWhileFetching:y.__returned=y}}async forceFetch(Q,Z={}){let X=await this.fetch(Q,Z);if(X===void 0)throw Error("fetch() returned undefined");return X}memo(Q,Z={}){let X=this.#I;if(!X)throw Error("no memoMethod provided to constructor");let{context:q,forceRefresh:Y,...J}=Z,W=this.get(Q,J);if(!Y&&W!==void 0)return W;let H=X(Q,W,{options:J,context:q});return this.set(Q,H,J),H}get(Q,Z={}){let{allowStale:X=this.allowStale,updateAgeOnGet:q=this.updateAgeOnGet,noDeleteOnStaleGet:Y=this.noDeleteOnStaleGet,status:J}=Z,W=this.#V.get(Q);if(W!==void 0){let H=this.#Y[W],V=this.#U(H);if(J)this.#w(J,W);if(this.#S(W)){if(J)J.get="stale";if(!V){if(!Y)this.#b(Q,"expire");if(J&&X)J.returnedStale=!0;return X?H:void 0}else{if(J&&X&&H.__staleWhileFetching!==void 0)J.returnedStale=!0;return X?H.__staleWhileFetching:void 0}}else{if(J)J.get="hit";if(V)return H.__staleWhileFetching;if(this.#f(W),q)this.#v(W);return H}}else if(J)J.get="miss"}#c(Q,Z){this.#O[Z]=Q,this.#M[Q]=Z}#f(Q){if(Q!==this.#A){if(Q===this.#$)this.#$=this.#M[Q];else this.#c(this.#O[Q],this.#M[Q]);this.#c(this.#A,Q),this.#A=Q}}delete(Q){return this.#b(Q,"delete")}#b(Q,Z){let X=!1;if(this.#K!==0){let q=this.#V.get(Q);if(q!==void 0)if(X=!0,this.#K===1)this.#h(Z);else{this.#y(q);let Y=this.#Y[q];if(this.#U(Y))Y.__abortController.abort(Error("deleted"));else if(this.#_||this.#R){if(this.#_)this.#X?.(Y,Q,Z);if(this.#R)this.#B?.push([Y,Q,Z])}if(this.#V.delete(Q),this.#z[q]=void 0,this.#Y[q]=void 0,q===this.#A)this.#A=this.#O[q];else if(q===this.#$)this.#$=this.#M[q];else{let J=this.#O[q];this.#M[J]=this.#M[q];let W=this.#M[q];this.#O[W]=this.#O[q]}this.#K--,this.#j.push(q)}}if(this.#R&&this.#B?.length){let q=this.#B,Y;while(Y=q?.shift())this.#J?.(...Y)}return X}clear(){return this.#h("delete")}#h(Q){for(let Z of this.#P({allowStale:!0})){let X=this.#Y[Z];if(this.#U(X))X.__abortController.abort(Error("deleted"));else{let q=this.#z[Z];if(this.#_)this.#X?.(X,q,Q);if(this.#R)this.#B?.push([X,q,Q])}}if(this.#V.clear(),this.#Y.fill(void 0),this.#z.fill(void 0),this.#F&&this.#W)this.#F.fill(0),this.#W.fill(0);if(this.#T)this.#T.fill(0);if(this.#$=0,this.#A=0,this.#j.length=0,this.#G=0,this.#K=0,this.#R&&this.#B){let Z=this.#B,X;while(X=Z?.shift())this.#J?.(...X)}}}import{posix as U4,win32 as Z7}from"node:path";import{fileURLToPath as $4}from"node:url";import{lstatSync as O4,readdir as M4,readdirSync as A4,readlinkSync as R4,realpathSync as B4}from"fs";import*as I4 from"node:fs";import{lstat as F4,readdir as T4,readlink as j4,realpath as C4}from"node:fs/promises";import{EventEmitter as o6}from"node:events";import HQ from"node:stream";import{StringDecoder as q4}from"node:string_decoder";var XQ=typeof process==="object"&&process?process:{stdout:null,stderr:null},Y4=(Q)=>!!Q&&typeof Q==="object"&&(Q instanceof x0||Q instanceof HQ||J4(Q)||H4(Q)),J4=(Q)=>!!Q&&typeof Q==="object"&&Q instanceof o6&&typeof Q.pipe==="function"&&Q.pipe!==HQ.Writable.prototype.pipe,H4=(Q)=>!!Q&&typeof Q==="object"&&Q instanceof o6&&typeof Q.write==="function"&&typeof Q.end==="function",F0=Symbol("EOF"),T0=Symbol("maybeEmitEnd"),D0=Symbol("emittedEnd"),N8=Symbol("emittingEnd"),Z8=Symbol("emittedError"),P8=Symbol("closed"),qQ=Symbol("read"),k8=Symbol("flush"),YQ=Symbol("flushChunk"),$0=Symbol("encoding"),c0=Symbol("decoder"),i=Symbol("flowing"),X8=Symbol("paused"),d0=Symbol("resume"),p=Symbol("buffer"),X0=Symbol("pipes"),a=Symbol("bufferLength"),p6=Symbol("bufferPush"),D8=Symbol("bufferShift"),Q0=Symbol("objectMode"),g=Symbol("destroyed"),a6=Symbol("error"),n6=Symbol("emitData"),JQ=Symbol("emitEnd"),r6=Symbol("emitEnd2"),A0=Symbol("async"),s6=Symbol("abort"),b8=Symbol("aborted"),q8=Symbol("signal"),E0=Symbol("dataListeners"),Y0=Symbol("discarded"),Y8=(Q)=>Promise.resolve().then(Q),W4=(Q)=>Q(),V4=(Q)=>Q==="end"||Q==="finish"||Q==="prefinish",K4=(Q)=>Q instanceof ArrayBuffer||!!Q&&typeof Q==="object"&&Q.constructor&&Q.constructor.name==="ArrayBuffer"&&Q.byteLength>=0,_4=(Q)=>!Buffer.isBuffer(Q)&&ArrayBuffer.isView(Q);class t6{src;dest;opts;ondrain;constructor(Q,Z,X){this.src=Q,this.dest=Z,this.opts=X,this.ondrain=()=>Q[d0](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(Q){}end(){if(this.unpipe(),this.opts.end)this.dest.end()}}class WQ extends t6{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(Q,Z,X){super(Q,Z,X);this.proxyErrors=(q)=>Z.emit("error",q),Q.on("error",this.proxyErrors)}}var z4=(Q)=>!!Q.objectMode,G4=(Q)=>!Q.objectMode&&!!Q.encoding&&Q.encoding!=="buffer";class x0 extends o6{[i]=!1;[X8]=!1;[X0]=[];[p]=[];[Q0];[$0];[A0];[c0];[F0]=!1;[D0]=!1;[N8]=!1;[P8]=!1;[Z8]=null;[a]=0;[g]=!1;[q8];[b8]=!1;[E0]=0;[Y0]=!1;writable=!0;readable=!0;constructor(...Q){let Z=Q[0]||{};super();if(Z.objectMode&&typeof Z.encoding==="string")throw TypeError("Encoding and objectMode may not be used together");if(z4(Z))this[Q0]=!0,this[$0]=null;else if(G4(Z))this[$0]=Z.encoding,this[Q0]=!1;else this[Q0]=!1,this[$0]=null;if(this[A0]=!!Z.async,this[c0]=this[$0]?new q4(this[$0]):null,Z&&Z.debugExposeBuffer===!0)Object.defineProperty(this,"buffer",{get:()=>this[p]});if(Z&&Z.debugExposePipes===!0)Object.defineProperty(this,"pipes",{get:()=>this[X0]});let{signal:X}=Z;if(X)if(this[q8]=X,X.aborted)this[s6]();else X.addEventListener("abort",()=>this[s6]())}get bufferLength(){return this[a]}get encoding(){return this[$0]}set encoding(Q){throw Error("Encoding must be set at instantiation time")}setEncoding(Q){throw Error("Encoding must be set at instantiation time")}get objectMode(){return this[Q0]}set objectMode(Q){throw Error("objectMode must be set at instantiation time")}get["async"](){return this[A0]}set["async"](Q){this[A0]=this[A0]||!!Q}[s6](){this[b8]=!0,this.emit("abort",this[q8]?.reason),this.destroy(this[q8]?.reason)}get aborted(){return this[b8]}set aborted(Q){}write(Q,Z,X){if(this[b8])return!1;if(this[F0])throw Error("write after end");if(this[g])return this.emit("error",Object.assign(Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;if(typeof Z==="function")X=Z,Z="utf8";if(!Z)Z="utf8";let q=this[A0]?Y8:W4;if(!this[Q0]&&!Buffer.isBuffer(Q)){if(_4(Q))Q=Buffer.from(Q.buffer,Q.byteOffset,Q.byteLength);else if(K4(Q))Q=Buffer.from(Q);else if(typeof Q!=="string")throw Error("Non-contiguous data written to non-objectMode stream")}if(this[Q0]){if(this[i]&&this[a]!==0)this[k8](!0);if(this[i])this.emit("data",Q);else this[p6](Q);if(this[a]!==0)this.emit("readable");if(X)q(X);return this[i]}if(!Q.length){if(this[a]!==0)this.emit("readable");if(X)q(X);return this[i]}if(typeof Q==="string"&&!(Z===this[$0]&&!this[c0]?.lastNeed))Q=Buffer.from(Q,Z);if(Buffer.isBuffer(Q)&&this[$0])Q=this[c0].write(Q);if(this[i]&&this[a]!==0)this[k8](!0);if(this[i])this.emit("data",Q);else this[p6](Q);if(this[a]!==0)this.emit("readable");if(X)q(X);return this[i]}read(Q){if(this[g])return null;if(this[Y0]=!1,this[a]===0||Q===0||Q&&Q>this[a])return this[T0](),null;if(this[Q0])Q=null;if(this[p].length>1&&!this[Q0])this[p]=[this[$0]?this[p].join(""):Buffer.concat(this[p],this[a])];let Z=this[qQ](Q||null,this[p][0]);return this[T0](),Z}[qQ](Q,Z){if(this[Q0])this[D8]();else{let X=Z;if(Q===X.length||Q===null)this[D8]();else if(typeof X==="string")this[p][0]=X.slice(Q),Z=X.slice(0,Q),this[a]-=Q;else this[p][0]=X.subarray(Q),Z=X.subarray(0,Q),this[a]-=Q}if(this.emit("data",Z),!this[p].length&&!this[F0])this.emit("drain");return Z}end(Q,Z,X){if(typeof Q==="function")X=Q,Q=void 0;if(typeof Z==="function")X=Z,Z="utf8";if(Q!==void 0)this.write(Q,Z);if(X)this.once("end",X);if(this[F0]=!0,this.writable=!1,this[i]||!this[X8])this[T0]();return this}[d0](){if(this[g])return;if(!this[E0]&&!this[X0].length)this[Y0]=!0;if(this[X8]=!1,this[i]=!0,this.emit("resume"),this[p].length)this[k8]();else if(this[F0])this[T0]();else this.emit("drain")}resume(){return this[d0]()}pause(){this[i]=!1,this[X8]=!0,this[Y0]=!1}get destroyed(){return this[g]}get flowing(){return this[i]}get paused(){return this[X8]}[p6](Q){if(this[Q0])this[a]+=1;else this[a]+=Q.length;this[p].push(Q)}[D8](){if(this[Q0])this[a]-=1;else this[a]-=this[p][0].length;return this[p].shift()}[k8](Q=!1){do;while(this[YQ](this[D8]())&&this[p].length);if(!Q&&!this[p].length&&!this[F0])this.emit("drain")}[YQ](Q){return this.emit("data",Q),this[i]}pipe(Q,Z){if(this[g])return Q;this[Y0]=!1;let X=this[D0];if(Z=Z||{},Q===XQ.stdout||Q===XQ.stderr)Z.end=!1;else Z.end=Z.end!==!1;if(Z.proxyErrors=!!Z.proxyErrors,X){if(Z.end)Q.end()}else if(this[X0].push(!Z.proxyErrors?new t6(this,Q,Z):new WQ(this,Q,Z)),this[A0])Y8(()=>this[d0]());else this[d0]();return Q}unpipe(Q){let Z=this[X0].find((X)=>X.dest===Q);if(Z){if(this[X0].length===1){if(this[i]&&this[E0]===0)this[i]=!1;this[X0]=[]}else this[X0].splice(this[X0].indexOf(Z),1);Z.unpipe()}}addListener(Q,Z){return this.on(Q,Z)}on(Q,Z){let X=super.on(Q,Z);if(Q==="data"){if(this[Y0]=!1,this[E0]++,!this[X0].length&&!this[i])this[d0]()}else if(Q==="readable"&&this[a]!==0)super.emit("readable");else if(V4(Q)&&this[D0])super.emit(Q),this.removeAllListeners(Q);else if(Q==="error"&&this[Z8]){let q=Z;if(this[A0])Y8(()=>q.call(this,this[Z8]));else q.call(this,this[Z8])}return X}removeListener(Q,Z){return this.off(Q,Z)}off(Q,Z){let X=super.off(Q,Z);if(Q==="data"){if(this[E0]=this.listeners("data").length,this[E0]===0&&!this[Y0]&&!this[X0].length)this[i]=!1}return X}removeAllListeners(Q){let Z=super.removeAllListeners(Q);if(Q==="data"||Q===void 0){if(this[E0]=0,!this[Y0]&&!this[X0].length)this[i]=!1}return Z}get emittedEnd(){return this[D0]}[T0](){if(!this[N8]&&!this[D0]&&!this[g]&&this[p].length===0&&this[F0]){if(this[N8]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[P8])this.emit("close");this[N8]=!1}}emit(Q,...Z){let X=Z[0];if(Q!=="error"&&Q!=="close"&&Q!==g&&this[g])return!1;else if(Q==="data")return!this[Q0]&&!X?!1:this[A0]?(Y8(()=>this[n6](X)),!0):this[n6](X);else if(Q==="end")return this[JQ]();else if(Q==="close"){if(this[P8]=!0,!this[D0]&&!this[g])return!1;let Y=super.emit("close");return this.removeAllListeners("close"),Y}else if(Q==="error"){this[Z8]=X,super.emit(a6,X);let Y=!this[q8]||this.listeners("error").length?super.emit("error",X):!1;return this[T0](),Y}else if(Q==="resume"){let Y=super.emit("resume");return this[T0](),Y}else if(Q==="finish"||Q==="prefinish"){let Y=super.emit(Q);return this.removeAllListeners(Q),Y}let q=super.emit(Q,...Z);return this[T0](),q}[n6](Q){for(let X of this[X0])if(X.dest.write(Q)===!1)this.pause();let Z=this[Y0]?!1:super.emit("data",Q);return this[T0](),Z}[JQ](){if(this[D0])return!1;return this[D0]=!0,this.readable=!1,this[A0]?(Y8(()=>this[r6]()),!0):this[r6]()}[r6](){if(this[c0]){let Z=this[c0].end();if(Z){for(let X of this[X0])X.dest.write(Z);if(!this[Y0])super.emit("data",Z)}}for(let Z of this[X0])Z.end();let Q=super.emit("end");return this.removeAllListeners("end"),Q}async collect(){let Q=Object.assign([],{dataLength:0});if(!this[Q0])Q.dataLength=0;let Z=this.promise();return this.on("data",(X)=>{if(Q.push(X),!this[Q0])Q.dataLength+=X.length}),await Z,Q}async concat(){if(this[Q0])throw Error("cannot concat in objectMode");let Q=await this.collect();return this[$0]?Q.join(""):Buffer.concat(Q,Q.dataLength)}async promise(){return new Promise((Q,Z)=>{this.on(g,()=>Z(Error("stream destroyed"))),this.on("error",(X)=>Z(X)),this.on("end",()=>Q())})}[Symbol.asyncIterator](){this[Y0]=!1;let Q=!1,Z=async()=>{return this.pause(),Q=!0,{value:void 0,done:!0}};return{next:()=>{if(Q)return Z();let q=this.read();if(q!==null)return Promise.resolve({done:!1,value:q});if(this[F0])return Z();let Y,J,W=(z)=>{this.off("data",H),this.off("end",V),this.off(g,K),Z(),J(z)},H=(z)=>{this.off("error",W),this.off("end",V),this.off(g,K),this.pause(),Y({value:z,done:!!this[F0]})},V=()=>{this.off("error",W),this.off("data",H),this.off(g,K),Z(),Y({done:!0,value:void 0})},K=()=>W(Error("stream destroyed"));return new Promise((z,G)=>{J=G,Y=z,this.once(g,K),this.once("error",W),this.once("end",V),this.once("data",H)})},throw:Z,return:Z,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[Y0]=!1;let Q=!1,Z=()=>{return this.pause(),this.off(a6,Z),this.off(g,Z),this.off("end",Z),Q=!0,{done:!0,value:void 0}},X=()=>{if(Q)return Z();let q=this.read();return q===null?Z():{done:!1,value:q}};return this.once("end",Z),this.once(a6,Z),this.once(g,Z),{next:X,throw:Z,return:Z,[Symbol.iterator](){return this}}}destroy(Q){if(this[g]){if(Q)this.emit("error",Q);else this.emit(g);return this}this[g]=!0,this[Y0]=!0,this[p].length=0,this[a]=0;let Z=this;if(typeof Z.close==="function"&&!this[P8])Z.close();if(Q)this.emit("error",Q);else this.emit(g);return this}static get isStream(){return Y4}}var L4=B4.native,H8={lstatSync:O4,readdir:M4,readdirSync:A4,readlinkSync:R4,realpathSync:L4,promises:{lstat:F4,readdir:T4,readlink:j4,realpath:C4}},GQ=(Q)=>!Q||Q===H8||Q===I4?H8:{...H8,...Q,promises:{...H8.promises,...Q.promises||{}}},UQ=/^\\\\\?\\([a-z]:)\\?$/i,w4=(Q)=>Q.replace(/\//g,"\\").replace(UQ,"$1\\"),S4=/[\\\/]/,_0=0,$Q=1,OQ=2,R0=4,MQ=6,AQ=8,u0=10,RQ=12,K0=15,J8=~K0,e6=16,VQ=32,W8=64,O0=128,v8=256,E8=512,KQ=W8|O0|E8,N4=1023,Q7=(Q)=>Q.isFile()?AQ:Q.isDirectory()?R0:Q.isSymbolicLink()?u0:Q.isCharacterDevice()?OQ:Q.isBlockDevice()?MQ:Q.isSocket()?RQ:Q.isFIFO()?$Q:_0,_Q=new Map,V8=(Q)=>{let Z=_Q.get(Q);if(Z)return Z;let X=Q.normalize("NFKD");return _Q.set(Q,X),X},zQ=new Map,y8=(Q)=>{let Z=zQ.get(Q);if(Z)return Z;let X=V8(Q.toLowerCase());return zQ.set(Q,X),X};class X7 extends Q8{constructor(){super({max:256})}}class BQ extends Q8{constructor(Q=16384){super({maxSize:Q,sizeCalculation:(Z)=>Z.length+1})}}var IQ=Symbol("PathScurry setAsCwd");class q0{name;root;roots;parent;nocase;isCWD=!1;#Z;#Q;get dev(){return this.#Q}#X;get mode(){return this.#X}#q;get nlink(){return this.#q}#J;get uid(){return this.#J}#L;get gid(){return this.#L}#I;get rdev(){return this.#I}#K;get blksize(){return this.#K}#G;get ino(){return this.#G}#V;get size(){return this.#V}#z;get blocks(){return this.#z}#Y;get atimeMs(){return this.#Y}#M;get mtimeMs(){return this.#M}#O;get ctimeMs(){return this.#O}#$;get birthtimeMs(){return this.#$}#A;get atime(){return this.#A}#j;get mtime(){return this.#j}#B;get ctime(){return this.#B}#T;get birthtime(){return this.#T}#W;#F;#_;#C;#R;#k;#H;#v;#w;#D;get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}constructor(Q,Z=_0,X,q,Y,J,W){if(this.name=Q,this.#W=Y?y8(Q):V8(Q),this.#H=Z&N4,this.nocase=Y,this.roots=q,this.root=X||this,this.#v=J,this.#_=W.fullpath,this.#R=W.relative,this.#k=W.relativePosix,this.parent=W.parent,this.parent)this.#Z=this.parent.#Z;else this.#Z=GQ(W.fs)}depth(){if(this.#F!==void 0)return this.#F;if(!this.parent)return this.#F=0;return this.#F=this.parent.depth()+1}childrenCache(){return this.#v}resolve(Q){if(!Q)return this;let Z=this.getRootString(Q),q=Q.substring(Z.length).split(this.splitSep);return Z?this.getRoot(Z).#S(q):this.#S(q)}#S(Q){let Z=this;for(let X of Q)Z=Z.child(X);return Z}children(){let Q=this.#v.get(this);if(Q)return Q;let Z=Object.assign([],{provisional:0});return this.#v.set(this,Z),this.#H&=~e6,Z}child(Q,Z){if(Q===""||Q===".")return this;if(Q==="..")return this.parent||this;let X=this.children(),q=this.nocase?y8(Q):V8(Q);for(let H of X)if(H.#W===q)return H;let Y=this.parent?this.sep:"",J=this.#_?this.#_+Y+Q:void 0,W=this.newChild(Q,_0,{...Z,parent:this,fullpath:J});if(!this.canReaddir())W.#H|=O0;return X.push(W),W}relative(){if(this.isCWD)return"";if(this.#R!==void 0)return this.#R;let Q=this.name,Z=this.parent;if(!Z)return this.#R=this.name;let X=Z.relative();return X+(!X||!Z.parent?"":this.sep)+Q}relativePosix(){if(this.sep==="/")return this.relative();if(this.isCWD)return"";if(this.#k!==void 0)return this.#k;let Q=this.name,Z=this.parent;if(!Z)return this.#k=this.fullpathPosix();let X=Z.relativePosix();return X+(!X||!Z.parent?"":"/")+Q}fullpath(){if(this.#_!==void 0)return this.#_;let Q=this.name,Z=this.parent;if(!Z)return this.#_=this.name;let q=Z.fullpath()+(!Z.parent?"":this.sep)+Q;return this.#_=q}fullpathPosix(){if(this.#C!==void 0)return this.#C;if(this.sep==="/")return this.#C=this.fullpath();if(!this.parent){let q=this.fullpath().replace(/\\/g,"/");if(/^[a-z]:\//i.test(q))return this.#C=`//?/${q}`;else return this.#C=q}let Q=this.parent,Z=Q.fullpathPosix(),X=Z+(!Z||!Q.parent?"":"/")+this.name;return this.#C=X}isUnknown(){return(this.#H&K0)===_0}isType(Q){return this[`is${Q}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return(this.#H&K0)===AQ}isDirectory(){return(this.#H&K0)===R0}isCharacterDevice(){return(this.#H&K0)===OQ}isBlockDevice(){return(this.#H&K0)===MQ}isFIFO(){return(this.#H&K0)===$Q}isSocket(){return(this.#H&K0)===RQ}isSymbolicLink(){return(this.#H&u0)===u0}lstatCached(){return this.#H&VQ?this:void 0}readlinkCached(){return this.#w}realpathCached(){return this.#D}readdirCached(){let Q=this.children();return Q.slice(0,Q.provisional)}canReadlink(){if(this.#w)return!0;if(!this.parent)return!1;let Q=this.#H&K0;return!(Q!==_0&&Q!==u0||this.#H&v8||this.#H&O0)}calledReaddir(){return!!(this.#H&e6)}isENOENT(){return!!(this.#H&O0)}isNamed(Q){return!this.nocase?this.#W===V8(Q):this.#W===y8(Q)}async readlink(){let Q=this.#w;if(Q)return Q;if(!this.canReadlink())return;if(!this.parent)return;try{let Z=await this.#Z.promises.readlink(this.fullpath()),X=(await this.parent.realpath())?.resolve(Z);if(X)return this.#w=X}catch(Z){this.#u(Z.code);return}}readlinkSync(){let Q=this.#w;if(Q)return Q;if(!this.canReadlink())return;if(!this.parent)return;try{let Z=this.#Z.readlinkSync(this.fullpath()),X=this.parent.realpathSync()?.resolve(Z);if(X)return this.#w=X}catch(Z){this.#u(Z.code);return}}#g(Q){this.#H|=e6;for(let Z=Q.provisional;Z<Q.length;Z++){let X=Q[Z];if(X)X.#y()}}#y(){if(this.#H&O0)return;this.#H=(this.#H|O0)&J8,this.#x()}#x(){let Q=this.children();Q.provisional=0;for(let Z of Q)Z.#y()}#m(){this.#H|=E8,this.#N()}#N(){if(this.#H&W8)return;let Q=this.#H;if((Q&K0)===R0)Q&=J8;this.#H=Q|W8,this.#x()}#P(Q=""){if(Q==="ENOTDIR"||Q==="EPERM")this.#N();else if(Q==="ENOENT")this.#y();else this.children().provisional=0}#l(Q=""){if(Q==="ENOTDIR")this.parent.#N();else if(Q==="ENOENT")this.#y()}#u(Q=""){let Z=this.#H;if(Z|=v8,Q==="ENOENT")Z|=O0;if(Q==="EINVAL"||Q==="UNKNOWN")Z&=J8;if(this.#H=Z,Q==="ENOTDIR"&&this.parent)this.parent.#N()}#E(Q,Z){return this.#c(Q,Z)||this.#U(Q,Z)}#U(Q,Z){let X=Q7(Q),q=this.newChild(Q.name,X,{parent:this}),Y=q.#H&K0;if(Y!==R0&&Y!==u0&&Y!==_0)q.#H|=W8;return Z.unshift(q),Z.provisional++,q}#c(Q,Z){for(let X=Z.provisional;X<Z.length;X++){let q=Z[X];if((this.nocase?y8(Q.name):V8(Q.name))!==q.#W)continue;return this.#f(Q,q,X,Z)}}#f(Q,Z,X,q){let Y=Z.name;if(Z.#H=Z.#H&J8|Q7(Q),Y!==Q.name)Z.name=Q.name;if(X!==q.provisional){if(X===q.length-1)q.pop();else q.splice(X,1);q.unshift(Z)}return q.provisional++,Z}async lstat(){if((this.#H&O0)===0)try{return this.#b(await this.#Z.promises.lstat(this.fullpath())),this}catch(Q){this.#l(Q.code)}}lstatSync(){if((this.#H&O0)===0)try{return this.#b(this.#Z.lstatSync(this.fullpath())),this}catch(Q){this.#l(Q.code)}}#b(Q){let{atime:Z,atimeMs:X,birthtime:q,birthtimeMs:Y,blksize:J,blocks:W,ctime:H,ctimeMs:V,dev:K,gid:z,ino:G,mode:_,mtime:A,mtimeMs:U,nlink:M,rdev:$,size:R,uid:O}=Q;this.#A=Z,this.#Y=X,this.#T=q,this.#$=Y,this.#K=J,this.#z=W,this.#B=H,this.#O=V,this.#Q=K,this.#L=z,this.#G=G,this.#X=_,this.#j=A,this.#M=U,this.#q=M,this.#I=$,this.#V=R,this.#J=O;let B=Q7(Q);if(this.#H=this.#H&J8|B|VQ,B!==_0&&B!==R0&&B!==u0)this.#H|=W8}#h=[];#i=!1;#p(Q){this.#i=!1;let Z=this.#h.slice();this.#h.length=0,Z.forEach((X)=>X(null,Q))}readdirCB(Q,Z=!1){if(!this.canReaddir()){if(Z)Q(null,[]);else queueMicrotask(()=>Q(null,[]));return}let X=this.children();if(this.calledReaddir()){let Y=X.slice(0,X.provisional);if(Z)Q(null,Y);else queueMicrotask(()=>Q(null,Y));return}if(this.#h.push(Q),this.#i)return;this.#i=!0;let q=this.fullpath();this.#Z.readdir(q,{withFileTypes:!0},(Y,J)=>{if(Y)this.#P(Y.code),X.provisional=0;else{for(let W of J)this.#E(W,X);this.#g(X)}this.#p(X.slice(0,X.provisional));return})}#d;async readdir(){if(!this.canReaddir())return[];let Q=this.children();if(this.calledReaddir())return Q.slice(0,Q.provisional);let Z=this.fullpath();if(this.#d)await this.#d;else{let X=()=>{};this.#d=new Promise((q)=>X=q);try{for(let q of await this.#Z.promises.readdir(Z,{withFileTypes:!0}))this.#E(q,Q);this.#g(Q)}catch(q){this.#P(q.code),Q.provisional=0}this.#d=void 0,X()}return Q.slice(0,Q.provisional)}readdirSync(){if(!this.canReaddir())return[];let Q=this.children();if(this.calledReaddir())return Q.slice(0,Q.provisional);let Z=this.fullpath();try{for(let X of this.#Z.readdirSync(Z,{withFileTypes:!0}))this.#E(X,Q);this.#g(Q)}catch(X){this.#P(X.code),Q.provisional=0}return Q.slice(0,Q.provisional)}canReaddir(){if(this.#H&KQ)return!1;let Q=K0&this.#H;if(!(Q===_0||Q===R0||Q===u0))return!1;return!0}shouldWalk(Q,Z){return(this.#H&R0)===R0&&!(this.#H&KQ)&&!Q.has(this)&&(!Z||Z(this))}async realpath(){if(this.#D)return this.#D;if((E8|v8|O0)&this.#H)return;try{let Q=await this.#Z.promises.realpath(this.fullpath());return this.#D=this.resolve(Q)}catch(Q){this.#m()}}realpathSync(){if(this.#D)return this.#D;if((E8|v8|O0)&this.#H)return;try{let Q=this.#Z.realpathSync(this.fullpath());return this.#D=this.resolve(Q)}catch(Q){this.#m()}}[IQ](Q){if(Q===this)return;Q.isCWD=!1,this.isCWD=!0;let Z=new Set([]),X=[],q=this;while(q&&q.parent)Z.add(q),q.#R=X.join(this.sep),q.#k=X.join("/"),q=q.parent,X.push("..");q=Q;while(q&&q.parent&&!Z.has(q))q.#R=void 0,q.#k=void 0,q=q.parent}}class x8 extends q0{sep="\\";splitSep=S4;constructor(Q,Z=_0,X,q,Y,J,W){super(Q,Z,X,q,Y,J,W)}newChild(Q,Z=_0,X={}){return new x8(Q,Z,this.root,this.roots,this.nocase,this.childrenCache(),X)}getRootString(Q){return Z7.parse(Q).root}getRoot(Q){if(Q=w4(Q.toUpperCase()),Q===this.root.name)return this.root;for(let[Z,X]of Object.entries(this.roots))if(this.sameRoot(Q,Z))return this.roots[Q]=X;return this.roots[Q]=new K8(Q,this).root}sameRoot(Q,Z=this.root.name){return Q=Q.toUpperCase().replace(/\//g,"\\").replace(UQ,"$1\\"),Q===Z}}class u8 extends q0{splitSep="/";sep="/";constructor(Q,Z=_0,X,q,Y,J,W){super(Q,Z,X,q,Y,J,W)}getRootString(Q){return Q.startsWith("/")?"/":""}getRoot(Q){return this.root}newChild(Q,Z=_0,X={}){return new u8(Q,Z,this.root,this.roots,this.nocase,this.childrenCache(),X)}}class q7{root;rootPath;roots;cwd;#Z;#Q;#X;nocase;#q;constructor(Q=process.cwd(),Z,X,{nocase:q,childrenCacheSize:Y=16384,fs:J=H8}={}){if(this.#q=GQ(J),Q instanceof URL||Q.startsWith("file://"))Q=$4(Q);let W=Z.resolve(Q);this.roots=Object.create(null),this.rootPath=this.parseRootPath(W),this.#Z=new X7,this.#Q=new X7,this.#X=new BQ(Y);let H=W.substring(this.rootPath.length).split(X);if(H.length===1&&!H[0])H.pop();if(q===void 0)throw TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=q,this.root=this.newRoot(this.#q),this.roots[this.rootPath]=this.root;let V=this.root,K=H.length-1,z=Z.sep,G=this.rootPath,_=!1;for(let A of H){let U=K--;V=V.child(A,{relative:Array(U).fill("..").join(z),relativePosix:Array(U).fill("..").join("/"),fullpath:G+=(_?"":z)+A}),_=!0}this.cwd=V}depth(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.depth()}childrenCache(){return this.#X}resolve(...Q){let Z="";for(let Y=Q.length-1;Y>=0;Y--){let J=Q[Y];if(!J||J===".")continue;if(Z=Z?`${J}/${Z}`:J,this.isAbsolute(J))break}let X=this.#Z.get(Z);if(X!==void 0)return X;let q=this.cwd.resolve(Z).fullpath();return this.#Z.set(Z,q),q}resolvePosix(...Q){let Z="";for(let Y=Q.length-1;Y>=0;Y--){let J=Q[Y];if(!J||J===".")continue;if(Z=Z?`${J}/${Z}`:J,this.isAbsolute(J))break}let X=this.#Q.get(Z);if(X!==void 0)return X;let q=this.cwd.resolve(Z).fullpathPosix();return this.#Q.set(Z,q),q}relative(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.relative()}relativePosix(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.relativePosix()}basename(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.name}dirname(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return(Q.parent||Q).fullpath()}async readdir(Q=this.cwd,Z={withFileTypes:!0}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X}=Z;if(!Q.canReaddir())return[];else{let q=await Q.readdir();return X?q:q.map((Y)=>Y.name)}}readdirSync(Q=this.cwd,Z={withFileTypes:!0}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X=!0}=Z;if(!Q.canReaddir())return[];else if(X)return Q.readdirSync();else return Q.readdirSync().map((q)=>q.name)}async lstat(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.lstat()}lstatSync(Q=this.cwd){if(typeof Q==="string")Q=this.cwd.resolve(Q);return Q.lstatSync()}async readlink(Q=this.cwd,{withFileTypes:Z}={withFileTypes:!1}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q.withFileTypes,Q=this.cwd;let X=await Q.readlink();return Z?X:X?.fullpath()}readlinkSync(Q=this.cwd,{withFileTypes:Z}={withFileTypes:!1}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q.withFileTypes,Q=this.cwd;let X=Q.readlinkSync();return Z?X:X?.fullpath()}async realpath(Q=this.cwd,{withFileTypes:Z}={withFileTypes:!1}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q.withFileTypes,Q=this.cwd;let X=await Q.realpath();return Z?X:X?.fullpath()}realpathSync(Q=this.cwd,{withFileTypes:Z}={withFileTypes:!1}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q.withFileTypes,Q=this.cwd;let X=Q.realpathSync();return Z?X:X?.fullpath()}async walk(Q=this.cwd,Z={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X=!0,follow:q=!1,filter:Y,walkFilter:J}=Z,W=[];if(!Y||Y(Q))W.push(X?Q:Q.fullpath());let H=new Set,V=(z,G)=>{H.add(z),z.readdirCB((_,A)=>{if(_)return G(_);let U=A.length;if(!U)return G();let M=()=>{if(--U===0)G()};for(let $ of A){if(!Y||Y($))W.push(X?$:$.fullpath());if(q&&$.isSymbolicLink())$.realpath().then((R)=>R?.isUnknown()?R.lstat():R).then((R)=>R?.shouldWalk(H,J)?V(R,M):M());else if($.shouldWalk(H,J))V($,M);else M()}},!0)},K=Q;return new Promise((z,G)=>{V(K,(_)=>{if(_)return G(_);z(W)})})}walkSync(Q=this.cwd,Z={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X=!0,follow:q=!1,filter:Y,walkFilter:J}=Z,W=[];if(!Y||Y(Q))W.push(X?Q:Q.fullpath());let H=new Set([Q]);for(let V of H){let K=V.readdirSync();for(let z of K){if(!Y||Y(z))W.push(X?z:z.fullpath());let G=z;if(z.isSymbolicLink()){if(!(q&&(G=z.realpathSync())))continue;if(G.isUnknown())G.lstatSync()}if(G.shouldWalk(H,J))H.add(G)}}return W}[Symbol.asyncIterator](){return this.iterate()}iterate(Q=this.cwd,Z={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;return this.stream(Q,Z)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(Q=this.cwd,Z={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X=!0,follow:q=!1,filter:Y,walkFilter:J}=Z;if(!Y||Y(Q))yield X?Q:Q.fullpath();let W=new Set([Q]);for(let H of W){let V=H.readdirSync();for(let K of V){if(!Y||Y(K))yield X?K:K.fullpath();let z=K;if(K.isSymbolicLink()){if(!(q&&(z=K.realpathSync())))continue;if(z.isUnknown())z.lstatSync()}if(z.shouldWalk(W,J))W.add(z)}}}stream(Q=this.cwd,Z={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X=!0,follow:q=!1,filter:Y,walkFilter:J}=Z,W=new x0({objectMode:!0});if(!Y||Y(Q))W.write(X?Q:Q.fullpath());let H=new Set,V=[Q],K=0,z=()=>{let G=!1;while(!G){let _=V.shift();if(!_){if(K===0)W.end();return}K++,H.add(_);let A=(M,$,R=!1)=>{if(M)return W.emit("error",M);if(q&&!R){let O=[];for(let B of $)if(B.isSymbolicLink())O.push(B.realpath().then((T)=>T?.isUnknown()?T.lstat():T));if(O.length){Promise.all(O).then(()=>A(null,$,!0));return}}for(let O of $)if(O&&(!Y||Y(O))){if(!W.write(X?O:O.fullpath()))G=!0}K--;for(let O of $){let B=O.realpathCached()||O;if(B.shouldWalk(H,J))V.push(B)}if(G&&!W.flowing)W.once("drain",z);else if(!U)z()},U=!0;_.readdirCB(A,!0),U=!1}};return z(),W}streamSync(Q=this.cwd,Z={}){if(typeof Q==="string")Q=this.cwd.resolve(Q);else if(!(Q instanceof q0))Z=Q,Q=this.cwd;let{withFileTypes:X=!0,follow:q=!1,filter:Y,walkFilter:J}=Z,W=new x0({objectMode:!0}),H=new Set;if(!Y||Y(Q))W.write(X?Q:Q.fullpath());let V=[Q],K=0,z=()=>{let G=!1;while(!G){let _=V.shift();if(!_){if(K===0)W.end();return}K++,H.add(_);let A=_.readdirSync();for(let U of A)if(!Y||Y(U)){if(!W.write(X?U:U.fullpath()))G=!0}K--;for(let U of A){let M=U;if(U.isSymbolicLink()){if(!(q&&(M=U.realpathSync())))continue;if(M.isUnknown())M.lstatSync()}if(M.shouldWalk(H,J))V.push(M)}}if(G&&!W.flowing)W.once("drain",z)};return z(),W}chdir(Q=this.cwd){let Z=this.cwd;this.cwd=typeof Q==="string"?this.cwd.resolve(Q):Q,this.cwd[IQ](Z)}}class K8 extends q7{sep="\\";constructor(Q=process.cwd(),Z={}){let{nocase:X=!0}=Z;super(Q,Z7,"\\",{...Z,nocase:X});this.nocase=X;for(let q=this.cwd;q;q=q.parent)q.nocase=this.nocase}parseRootPath(Q){return Z7.parse(Q).root.toUpperCase()}newRoot(Q){return new x8(this.rootPath,R0,void 0,this.roots,this.nocase,this.childrenCache(),{fs:Q})}isAbsolute(Q){return Q.startsWith("/")||Q.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(Q)}}class _8 extends q7{sep="/";constructor(Q=process.cwd(),Z={}){let{nocase:X=!1}=Z;super(Q,U4,"/",{...Z,nocase:X});this.nocase=X}parseRootPath(Q){return"/"}newRoot(Q){return new u8(this.rootPath,R0,void 0,this.roots,this.nocase,this.childrenCache(),{fs:Q})}isAbsolute(Q){return Q.startsWith("/")}}class f8 extends _8{constructor(Q=process.cwd(),Z={}){let{nocase:X=!0}=Z;super(Q,{...Z,nocase:X})}}var XY=process.platform==="win32"?x8:u8,LQ=process.platform==="win32"?K8:process.platform==="darwin"?f8:_8;var P4=(Q)=>Q.length>=1,k4=(Q)=>Q.length>=1;class i0{#Z;#Q;#X;length;#q;#J;#L;#I;#K;#G;#V=!0;constructor(Q,Z,X,q){if(!P4(Q))throw TypeError("empty pattern list");if(!k4(Z))throw TypeError("empty glob list");if(Z.length!==Q.length)throw TypeError("mismatched pattern list and glob list lengths");if(this.length=Q.length,X<0||X>=this.length)throw TypeError("index out of range");if(this.#Z=Q,this.#Q=Z,this.#X=X,this.#q=q,this.#X===0){if(this.isUNC()){let[Y,J,W,H,...V]=this.#Z,[K,z,G,_,...A]=this.#Q;if(V[0]==="")V.shift(),A.shift();let U=[Y,J,W,H,""].join("/"),M=[K,z,G,_,""].join("/");this.#Z=[U,...V],this.#Q=[M,...A],this.length=this.#Z.length}else if(this.isDrive()||this.isAbsolute()){let[Y,...J]=this.#Z,[W,...H]=this.#Q;if(J[0]==="")J.shift(),H.shift();let V=Y+"/",K=W+"/";this.#Z=[V,...J],this.#Q=[K,...H],this.length=this.#Z.length}}}pattern(){return this.#Z[this.#X]}isString(){return typeof this.#Z[this.#X]==="string"}isGlobstar(){return this.#Z[this.#X]===r}isRegExp(){return this.#Z[this.#X]instanceof RegExp}globString(){return this.#L=this.#L||(this.#X===0?this.isAbsolute()?this.#Q[0]+this.#Q.slice(1).join("/"):this.#Q.join("/"):this.#Q.slice(this.#X).join("/"))}hasMore(){return this.length>this.#X+1}rest(){if(this.#J!==void 0)return this.#J;if(!this.hasMore())return this.#J=null;return this.#J=new i0(this.#Z,this.#Q,this.#X+1,this.#q),this.#J.#G=this.#G,this.#J.#K=this.#K,this.#J.#I=this.#I,this.#J}isUNC(){let Q=this.#Z;return this.#K!==void 0?this.#K:this.#K=this.#q==="win32"&&this.#X===0&&Q[0]===""&&Q[1]===""&&typeof Q[2]==="string"&&!!Q[2]&&typeof Q[3]==="string"&&!!Q[3]}isDrive(){let Q=this.#Z;return this.#I!==void 0?this.#I:this.#I=this.#q==="win32"&&this.#X===0&&this.length>1&&typeof Q[0]==="string"&&/^[a-z]:$/i.test(Q[0])}isAbsolute(){let Q=this.#Z;return this.#G!==void 0?this.#G:this.#G=Q[0]===""&&Q.length>1||this.isDrive()||this.isUNC()}root(){let Q=this.#Z[0];return typeof Q==="string"&&this.isAbsolute()&&this.#X===0?Q:""}checkFollowGlobstar(){return!(this.#X===0||!this.isGlobstar()||!this.#V)}markFollowGlobstar(){if(this.#X===0||!this.isGlobstar()||!this.#V)return!1;return this.#V=!1,!0}}var D4=typeof process==="object"&&process&&typeof process.platform==="string"?process.platform:"linux";class z8{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(Q,{nobrace:Z,nocase:X,noext:q,noglobstar:Y,platform:J=D4}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[],this.platform=J,this.mmopts={dot:!0,nobrace:Z,nocase:X,noext:q,noglobstar:Y,optimizationLevel:2,platform:J,nocomment:!0,nonegate:!0};for(let W of Q)this.add(W)}add(Q){let Z=new V0(Q,this.mmopts);for(let X=0;X<Z.set.length;X++){let q=Z.set[X],Y=Z.globParts[X];if(!q||!Y)throw Error("invalid pattern object");while(q[0]==="."&&Y[0]===".")q.shift(),Y.shift();let J=new i0(q,Y,0,this.platform),W=new V0(J.globString(),this.mmopts),H=Y[Y.length-1]==="**",V=J.isAbsolute();if(V)this.absolute.push(W);else this.relative.push(W);if(H)if(V)this.absoluteChildren.push(W);else this.relativeChildren.push(W)}}ignored(Q){let Z=Q.fullpath(),X=`${Z}/`,q=Q.relative()||".",Y=`${q}/`;for(let J of this.relative)if(J.match(q)||J.match(Y))return!0;for(let J of this.absolute)if(J.match(Z)||J.match(X))return!0;return!1}childrenIgnored(Q){let Z=Q.fullpath()+"/",X=(Q.relative()||".")+"/";for(let q of this.relativeChildren)if(q.match(X))return!0;for(let q of this.absoluteChildren)if(q.match(Z))return!0;return!1}}class Y7{store;constructor(Q=new Map){this.store=Q}copy(){return new Y7(new Map(this.store))}hasWalked(Q,Z){return this.store.get(Q.fullpath())?.has(Z.globString())}storeWalked(Q,Z){let X=Q.fullpath(),q=this.store.get(X);if(q)q.add(Z.globString());else this.store.set(X,new Set([Z.globString()]))}}class FQ{store=new Map;add(Q,Z,X){let q=(Z?2:0)|(X?1:0),Y=this.store.get(Q);this.store.set(Q,Y===void 0?q:q&Y)}entries(){return[...this.store.entries()].map(([Q,Z])=>[Q,!!(Z&2),!!(Z&1)])}}class TQ{store=new Map;add(Q,Z){if(!Q.canReaddir())return;let X=this.store.get(Q);if(X){if(!X.find((q)=>q.globString()===Z.globString()))X.push(Z)}else this.store.set(Q,[Z])}get(Q){let Z=this.store.get(Q);if(!Z)throw Error("attempting to walk unknown path");return Z}entries(){return this.keys().map((Q)=>[Q,this.store.get(Q)])}keys(){return[...this.store.keys()].filter((Q)=>Q.canReaddir())}}class G8{hasWalkedCache;matches=new FQ;subwalks=new TQ;patterns;follow;dot;opts;constructor(Q,Z){this.opts=Q,this.follow=!!Q.follow,this.dot=!!Q.dot,this.hasWalkedCache=Z?Z.copy():new Y7}processPatterns(Q,Z){this.patterns=Z;let X=Z.map((q)=>[Q,q]);for(let[q,Y]of X){this.hasWalkedCache.storeWalked(q,Y);let J=Y.root(),W=Y.isAbsolute()&&this.opts.absolute!==!1;if(J){q=q.resolve(J==="/"&&this.opts.root!==void 0?this.opts.root:J);let z=Y.rest();if(!z){this.matches.add(q,!0,!1);continue}else Y=z}if(q.isENOENT())continue;let H,V,K=!1;while(typeof(H=Y.pattern())==="string"&&(V=Y.rest()))q=q.resolve(H),Y=V,K=!0;if(H=Y.pattern(),V=Y.rest(),K){if(this.hasWalkedCache.hasWalked(q,Y))continue;this.hasWalkedCache.storeWalked(q,Y)}if(typeof H==="string"){let z=H===".."||H===""||H===".";this.matches.add(q.resolve(H),W,z);continue}else if(H===r){if(!q.isSymbolicLink()||this.follow||Y.checkFollowGlobstar())this.subwalks.add(q,Y);let z=V?.pattern(),G=V?.rest();if(!V||(z===""||z===".")&&!G)this.matches.add(q,W,z===""||z===".");else if(z===".."){let _=q.parent||q;if(!G)this.matches.add(_,W,!0);else if(!this.hasWalkedCache.hasWalked(_,G))this.subwalks.add(_,G)}}else if(H instanceof RegExp)this.subwalks.add(q,Y)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new G8(this.opts,this.hasWalkedCache)}filterEntries(Q,Z){let X=this.subwalks.get(Q),q=this.child();for(let Y of Z)for(let J of X){let W=J.isAbsolute(),H=J.pattern(),V=J.rest();if(H===r)q.testGlobstar(Y,J,V,W);else if(H instanceof RegExp)q.testRegExp(Y,H,V,W);else q.testString(Y,H,V,W)}return q}testGlobstar(Q,Z,X,q){if(this.dot||!Q.name.startsWith(".")){if(!Z.hasMore())this.matches.add(Q,q,!1);if(Q.canReaddir()){if(this.follow||!Q.isSymbolicLink())this.subwalks.add(Q,Z);else if(Q.isSymbolicLink()){if(X&&Z.checkFollowGlobstar())this.subwalks.add(Q,X);else if(Z.markFollowGlobstar())this.subwalks.add(Q,Z)}}}if(X){let Y=X.pattern();if(typeof Y==="string"&&Y!==".."&&Y!==""&&Y!==".")this.testString(Q,Y,X.rest(),q);else if(Y===".."){let J=Q.parent||Q;this.subwalks.add(J,X)}else if(Y instanceof RegExp)this.testRegExp(Q,Y,X.rest(),q)}}testRegExp(Q,Z,X,q){if(!Z.test(Q.name))return;if(!X)this.matches.add(Q,q,!1);else this.subwalks.add(Q,X)}testString(Q,Z,X,q){if(!Q.isNamed(Z))return;if(!X)this.matches.add(Q,q,!1);else this.subwalks.add(Q,X)}}var b4=(Q,Z)=>typeof Q==="string"?new z8([Q],Z):Array.isArray(Q)?new z8(Q,Z):Q;class J7{path;patterns;opts;seen=new Set;paused=!1;aborted=!1;#Z=[];#Q;#X;signal;maxDepth;includeChildMatches;constructor(Q,Z,X){if(this.patterns=Q,this.path=Z,this.opts=X,this.#X=!X.posix&&X.platform==="win32"?"\\":"/",this.includeChildMatches=X.includeChildMatches!==!1,X.ignore||!this.includeChildMatches){if(this.#Q=b4(X.ignore??[],X),!this.includeChildMatches&&typeof this.#Q.add!=="function")throw Error("cannot ignore child matches, ignore lacks add() method.")}if(this.maxDepth=X.maxDepth||1/0,X.signal)this.signal=X.signal,this.signal.addEventListener("abort",()=>{this.#Z.length=0})}#q(Q){return this.seen.has(Q)||!!this.#Q?.ignored?.(Q)}#J(Q){return!!this.#Q?.childrenIgnored?.(Q)}pause(){this.paused=!0}resume(){if(this.signal?.aborted)return;this.paused=!1;let Q=void 0;while(!this.paused&&(Q=this.#Z.shift()))Q()}onResume(Q){if(this.signal?.aborted)return;if(!this.paused)Q();else this.#Z.push(Q)}async matchCheck(Q,Z){if(Z&&this.opts.nodir)return;let X;if(this.opts.realpath){if(X=Q.realpathCached()||await Q.realpath(),!X)return;Q=X}let Y=Q.isUnknown()||this.opts.stat?await Q.lstat():Q;if(this.opts.follow&&this.opts.nodir&&Y?.isSymbolicLink()){let J=await Y.realpath();if(J&&(J.isUnknown()||this.opts.stat))await J.lstat()}return this.matchCheckTest(Y,Z)}matchCheckTest(Q,Z){return Q&&(this.maxDepth===1/0||Q.depth()<=this.maxDepth)&&(!Z||Q.canReaddir())&&(!this.opts.nodir||!Q.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!Q.isSymbolicLink()||!Q.realpathCached()?.isDirectory())&&!this.#q(Q)?Q:void 0}matchCheckSync(Q,Z){if(Z&&this.opts.nodir)return;let X;if(this.opts.realpath){if(X=Q.realpathCached()||Q.realpathSync(),!X)return;Q=X}let Y=Q.isUnknown()||this.opts.stat?Q.lstatSync():Q;if(this.opts.follow&&this.opts.nodir&&Y?.isSymbolicLink()){let J=Y.realpathSync();if(J&&(J?.isUnknown()||this.opts.stat))J.lstatSync()}return this.matchCheckTest(Y,Z)}matchFinish(Q,Z){if(this.#q(Q))return;if(!this.includeChildMatches&&this.#Q?.add){let Y=`${Q.relativePosix()}/**`;this.#Q.add(Y)}let X=this.opts.absolute===void 0?Z:this.opts.absolute;this.seen.add(Q);let q=this.opts.mark&&Q.isDirectory()?this.#X:"";if(this.opts.withFileTypes)this.matchEmit(Q);else if(X){let Y=this.opts.posix?Q.fullpathPosix():Q.fullpath();this.matchEmit(Y+q)}else{let Y=this.opts.posix?Q.relativePosix():Q.relative(),J=this.opts.dotRelative&&!Y.startsWith(".."+this.#X)?"."+this.#X:"";this.matchEmit(!Y?"."+q:J+Y+q)}}async match(Q,Z,X){let q=await this.matchCheck(Q,X);if(q)this.matchFinish(q,Z)}matchSync(Q,Z,X){let q=this.matchCheckSync(Q,X);if(q)this.matchFinish(q,Z)}walkCB(Q,Z,X){if(this.signal?.aborted)X();this.walkCB2(Q,Z,new G8(this.opts),X)}walkCB2(Q,Z,X,q){if(this.#J(Q))return q();if(this.signal?.aborted)q();if(this.paused){this.onResume(()=>this.walkCB2(Q,Z,X,q));return}X.processPatterns(Q,Z);let Y=1,J=()=>{if(--Y===0)q()};for(let[W,H,V]of X.matches.entries()){if(this.#q(W))continue;Y++,this.match(W,H,V).then(()=>J())}for(let W of X.subwalkTargets()){if(this.maxDepth!==1/0&&W.depth()>=this.maxDepth)continue;Y++;let H=W.readdirCached();if(W.calledReaddir())this.walkCB3(W,H,X,J);else W.readdirCB((V,K)=>this.walkCB3(W,K,X,J),!0)}J()}walkCB3(Q,Z,X,q){X=X.filterEntries(Q,Z);let Y=1,J=()=>{if(--Y===0)q()};for(let[W,H,V]of X.matches.entries()){if(this.#q(W))continue;Y++,this.match(W,H,V).then(()=>J())}for(let[W,H]of X.subwalks.entries())Y++,this.walkCB2(W,H,X.child(),J);J()}walkCBSync(Q,Z,X){if(this.signal?.aborted)X();this.walkCB2Sync(Q,Z,new G8(this.opts),X)}walkCB2Sync(Q,Z,X,q){if(this.#J(Q))return q();if(this.signal?.aborted)q();if(this.paused){this.onResume(()=>this.walkCB2Sync(Q,Z,X,q));return}X.processPatterns(Q,Z);let Y=1,J=()=>{if(--Y===0)q()};for(let[W,H,V]of X.matches.entries()){if(this.#q(W))continue;this.matchSync(W,H,V)}for(let W of X.subwalkTargets()){if(this.maxDepth!==1/0&&W.depth()>=this.maxDepth)continue;Y++;let H=W.readdirSync();this.walkCB3Sync(W,H,X,J)}J()}walkCB3Sync(Q,Z,X,q){X=X.filterEntries(Q,Z);let Y=1,J=()=>{if(--Y===0)q()};for(let[W,H,V]of X.matches.entries()){if(this.#q(W))continue;this.matchSync(W,H,V)}for(let[W,H]of X.subwalks.entries())Y++,this.walkCB2Sync(W,H,X.child(),J);J()}}class h8 extends J7{matches=new Set;constructor(Q,Z,X){super(Q,Z,X)}matchEmit(Q){this.matches.add(Q)}async walk(){if(this.signal?.aborted)throw this.signal.reason;if(this.path.isUnknown())await this.path.lstat();return await new Promise((Q,Z)=>{this.walkCB(this.path,this.patterns,()=>{if(this.signal?.aborted)Z(this.signal.reason);else Q(this.matches)})}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;if(this.path.isUnknown())this.path.lstatSync();return this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}}class g8 extends J7{results;constructor(Q,Z,X){super(Q,Z,X);this.results=new x0({signal:this.signal,objectMode:!0}),this.results.on("drain",()=>this.resume()),this.results.on("resume",()=>this.resume())}matchEmit(Q){if(this.results.write(Q),!this.results.flowing)this.pause()}stream(){let Q=this.path;if(Q.isUnknown())Q.lstat().then(()=>{this.walkCB(Q,this.patterns,()=>this.results.end())});else this.walkCB(Q,this.patterns,()=>this.results.end());return this.results}streamSync(){if(this.path.isUnknown())this.path.lstatSync();return this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}}var y4=typeof process==="object"&&process&&typeof process.platform==="string"?process.platform:"linux";class B0{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;includeChildMatches;opts;patterns;constructor(Q,Z){if(!Z)throw TypeError("glob options required");if(this.withFileTypes=!!Z.withFileTypes,this.signal=Z.signal,this.follow=!!Z.follow,this.dot=!!Z.dot,this.dotRelative=!!Z.dotRelative,this.nodir=!!Z.nodir,this.mark=!!Z.mark,!Z.cwd)this.cwd="";else if(Z.cwd instanceof URL||Z.cwd.startsWith("file://"))Z.cwd=v4(Z.cwd);if(this.cwd=Z.cwd||"",this.root=Z.root,this.magicalBraces=!!Z.magicalBraces,this.nobrace=!!Z.nobrace,this.noext=!!Z.noext,this.realpath=!!Z.realpath,this.absolute=Z.absolute,this.includeChildMatches=Z.includeChildMatches!==!1,this.noglobstar=!!Z.noglobstar,this.matchBase=!!Z.matchBase,this.maxDepth=typeof Z.maxDepth==="number"?Z.maxDepth:1/0,this.stat=!!Z.stat,this.ignore=Z.ignore,this.withFileTypes&&this.absolute!==void 0)throw Error("cannot set absolute and withFileTypes:true");if(typeof Q==="string")Q=[Q];if(this.windowsPathsNoEscape=!!Z.windowsPathsNoEscape||Z.allowWindowsEscape===!1,this.windowsPathsNoEscape)Q=Q.map((H)=>H.replace(/\\/g,"/"));if(this.matchBase){if(Z.noglobstar)throw TypeError("base matching requires globstar");Q=Q.map((H)=>H.includes("/")?H:`./**/${H}`)}if(this.pattern=Q,this.platform=Z.platform||y4,this.opts={...Z,platform:this.platform},Z.scurry){if(this.scurry=Z.scurry,Z.nocase!==void 0&&Z.nocase!==Z.scurry.nocase)throw Error("nocase option contradicts provided scurry option")}else{let H=Z.platform==="win32"?K8:Z.platform==="darwin"?f8:Z.platform?_8:LQ;this.scurry=new H(this.cwd,{nocase:Z.nocase,fs:Z.fs})}this.nocase=this.scurry.nocase;let X=this.platform==="darwin"||this.platform==="win32",q={...Z,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:X,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},Y=this.pattern.map((H)=>new V0(H,q)),[J,W]=Y.reduce((H,V)=>{return H[0].push(...V.set),H[1].push(...V.globParts),H},[[],[]]);this.patterns=J.map((H,V)=>{let K=W[V];if(!K)throw Error("invalid pattern object");return new i0(H,K,0,this.platform)})}async walk(){return[...await new h8(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return[...new h8(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new g8(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new g8(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}}var H7=(Q,Z={})=>{if(!Array.isArray(Q))Q=[Q];for(let X of Q)if(new V0(X,Z).hasMagic())return!0;return!1};function m8(Q,Z={}){return new B0(Q,Z).streamSync()}function wQ(Q,Z={}){return new B0(Q,Z).stream()}function l8(Q,Z={}){return new B0(Q,Z).walkSync()}async function jQ(Q,Z={}){return new B0(Q,Z).walk()}function c8(Q,Z={}){return new B0(Q,Z).iterateSync()}function SQ(Q,Z={}){return new B0(Q,Z).iterate()}var E4=m8,x4=Object.assign(wQ,{sync:m8}),u4=c8,f4=Object.assign(SQ,{sync:c8}),h4=Object.assign(l8,{stream:m8,iterate:c8}),CQ=Object.assign(jQ,{glob:jQ,globSync:l8,sync:h4,globStream:wQ,stream:x4,globStreamSync:m8,streamSync:E4,globIterate:SQ,iterate:f4,globIterateSync:c8,iterateSync:u4,Glob:B0,hasMagic:H7,escape:g0,unescape:U0});CQ.glob=CQ;import g4 from"node:path";var NQ=({dir:Q,pattern:Z="*",nodir:X=!1,dot:q=!0,ignore:Y=[],absolute:J=!1,matchBase:W=!1,follow:H=!1})=>{if(Q=Q||process.cwd(),Q=g4.resolve(Q),Z&&!Array.isArray(Z))Z=[Z];else Z=Z||["*"];if(Y&&!Array.isArray(Y))Y=[Y];else Y=Y||[];return l8(Z,{cwd:Q,nodir:X,dot:q,ignore:Y,absolute:J,matchBase:W,follow:H})};import PQ from"lodash.clonedeep";import m4 from"@fnet/key-value-transformer";async function m({node:Q,initNode:Z,extra:X=!0}){if(Reflect.has(Q.definition,"modules")&&!Array.isArray(Q.definition.modules)){let q=Q.definition.modules;Q.definition.modules=[],Object.keys(q).forEach((Y)=>{let J={...q[Y]};if(typeof J.export==="boolean")J.export=J.export===!0?Y:!1;else if(typeof J.export==="string")J.export=J.export;else delete J.export;Q.definition.modules.push({[Y]:J})})}if(X){let q=[],Y=await m4({data:Q.definition,callback:(J,W,H)=>{let V=P0(J,!0);if(V?.processor==="m"){let K=H.slice(0,-1);K.push(V.statement);let z=K.join("_");return q.push({[z]:W}),[V.statement,`m::${z}`]}return[J,W]}});if(q.length>0)Q.definition=Y,Q.definition.modules=Q.definition.modules||[],Q.definition.modules=Q.definition.modules.concat(q)}Q.hasModules=Q.definition.modules?.length>0;for(let q=0;q<Q.definition.modules?.length;q++){let Y=Q.definition.modules[q],J=Object.keys(Y)[0],W={name:J,childs:[],parent:Q,definition:Y[J],module:!0,block_child_auto_jump_to_parent:!0,index:Q.childs.length,context:{}};Q.childs.push(W),await Z({node:W})}}async function k({node:Q,transformExpression:Z}){let X=Q.context.transform;if(Reflect.has(X,"export"))X.export=await Z(X.export);if(Reflect.has(X,"return"))Q.hasReturn=!0,X.return=await Z(X.return);if(Reflect.has(X,"output"))X.output=await Z(X.output);if(Reflect.has(X,"assign"))for(let q=0;q<X.assign?.length;q++){let Y=X.assign[q];if(Object.keys(Y).length===0){X.assign.splice(q,1),q--;continue}let J=Object.keys(Y)[0],W=Y[J],H={key:await Z(J),value:await Z(W)};X.assign[q]=H}if(Reflect.has(X,"result")){if(typeof X.result==="string")X.result=[{[X.result]:"e::result"}];for(let q=0;q<X.result?.length;q++){let Y=X.result[q],J=Object.keys(Y)[0],W=Y[J],H={key:await Z(J),value:await Z(W)};X.result[q]=H}}}async function l4({node:Q}){if(!Q.definition.hasOwnProperty("switch"))return!1;return!0}async function c4({node:Q,initNode:Z}){Q.type="switch";let X=Q.definition.switch||[];if(!X.every((W)=>W.hasOwnProperty("condition")||W.hasOwnProperty("default")))throw Error("Switch must have condition or default");if(X.filter((W)=>W.hasOwnProperty("condition")).length===0)throw Error("Switch must have at least one condition");let J=X.filter((W)=>W.hasOwnProperty("default"));if(J.length>1)throw Error("Switch must have only one default");if(J.length===1&&!X[X.length-1].hasOwnProperty("default"))throw Error("Switch default must be the last child");Q.hasDefaultCondition=J.length===1,await m({node:Q,initNode:Z,extra:!1}),Q.block_child_auto_jump_to_sibling=!0;for(let W=0;W<Q.definition.switch.length;W++){let H=Q.definition.switch[W],V=`${W}`;if(H.hasOwnProperty("default"))V="default",H=H.default;let K={name:H.condition||V,childs:[],parent:Q,definition:H,index:Q.childs.length,context:{}};Q.childs.push(K),await Z({node:K})}Q.resolve=kQ}async function kQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||PQ(Q.definition);let Y=Q.context.transform;for(let J of Q.childs)if(J.context.transform=J.context.transform||PQ(J.definition),J.definition.hasOwnProperty("condition"))J.context.transform.condition=await q(J.definition.condition);if(await k({node:Q,transformExpression:q}),await Z({node:Q}),!Q.hasDefaultCondition)X({node:Q})}var U8={hits:l4,init:c4,resolve:kQ};async function d4({node:Q}){if(Object.keys(Q.definition).filter((q)=>P0(q)==="if").length===1)return!0;if(Q.definition.if&&typeof Q.definition.if==="object")return!0;return!1}async function i4(Q){let{node:Z}=Q,X=Object.keys(Z.definition),q=[],Y=X.find((H)=>P0(H)==="if");if(Y){let H=Z.definition[Y],V=P0(Y,!0);q.push({name:`${Z.name}_if`,definition:H,processor:{expression:Y,statement:V.statement,processor:V.processor}}),delete Z.definition[Y]}else if(Z.definition.if){let{condition:H,...V}=Z.definition.if;q.push({name:`${Z.name}_if`,definition:V,processor:{expression:`if::${H}`,statement:H}}),delete Z.definition.if}let J=X.filter((H)=>P0(H)==="elseif"),W=0;for(let H of J){let V=Z.definition[H],K=P0(H,!0);q.push({name:`${Z.name}_elseif_${W++}`,definition:V,processor:{expression:H,statement:K.statement,processor:K.processor}}),delete Z.definition[H]}if(Z.definition.elseif){let{condition:H,...V}=Z.definition.elseif;q.push({name:`${Z.name}_elseif_${W++}`,definition:V,processor:{expression:`elseif::${H}`,statement:H}}),delete Z.definition.elseif}Z.definition.switch=[];for(let H of q)Z.definition.switch.push({condition:H.processor.statement,...H.definition});if(Z.definition?.else){let H=Z.definition.else;Z.definition.switch.push({default:H}),delete Z.definition.else}await U8.init(Q)}var W7={hits:d4,init:i4};import DQ from"lodash.clonedeep";async function p4({node:Q}){return Q.definition.hasOwnProperty("try")&&Q.definition.hasOwnProperty("except")}async function a4({node:Q,initNode:Z}){if(Q.type="tryexcept",await m({node:Q,initNode:Z,extra:!1}),Q.block_child_auto_jump_to_sibling=!0,Q.definition.try){let q={name:"try",childs:[],parent:Q,definition:Q.definition.try,index:Q.childs.length,context:{}};Q.childs.push(q),await Z({node:q})}if(Q.definition.except){let q={name:"except",childs:[],parent:Q,definition:Q.definition.except,index:Q.childs.length,context:{}};Q.childs.push(q),await Z({node:q})}Q.resolve=bQ}async function bQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||DQ(Q.definition);let Y=Q.context.transform;if(Q.context.try=Q.childs.find((J)=>J.name==="try"),Q.context.except=Q.childs.find((J)=>J.name==="except"),Q.context.except){let J=Q.context.except;if(J.context.transform=J.context.transform||DQ(J.definition),!J.context.transform.hasOwnProperty("as"))J.context.transform.as="error"}await k({node:Q,transformExpression:q}),await Z({node:Q})}var V7={hits:p4,init:a4,resolve:bQ};import n4 from"lodash.clonedeep";async function r4({node:Q}){return Q.definition.hasOwnProperty("assign")}async function s4({node:Q,initNode:Z}){Q.type="assign",await m({node:Q,initNode:Z}),Q.resolve=vQ}async function vQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||n4(Q.definition);let Y=Q.context.transform;await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var K7={hits:r4,init:s4,resolve:vQ};import o4 from"lodash.clonedeep";async function t4({node:Q}){return Q.definition.hasOwnProperty("for")}async function e4({node:Q,initNode:Z}){if(Q.type="for",await m({node:Q,initNode:Z,extra:!1}),Q.block_child_auto_jump_to_parent=!0,Q.block_child_auto_jump_to_sibling=!1,!Q.definition.for.hasOwnProperty("steps")){let{as:X,in:q,...Y}=Q.definition.for,J={};if(X!==void 0)J.as=X;if(q!==void 0)J.in=q;Q.definition.for=J,Q.definition.for.steps=[{[`${Q.name}_step`]:Y}]}if(!Array.isArray(Q.definition.for.steps))Q.definition.for.steps=[{[`${Q.name}_step`]:Q.definition.for.steps}];for(let X=0;X<Q.definition.for.steps.length;X++){let q=Q.definition.for.steps[X],Y=Object.keys(q)[0],J={name:Y,childs:[],parent:Q,definition:q[Y],index:Q.childs.length,context:{}};Q.childs.push(J),await Z({node:J})}Q.resolve=yQ}async function yQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||o4(Q.definition);let Y=Q.context.transform;Y.for.in=await q(Q.definition.for.in),await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var _7={hits:t4,init:e4,resolve:yQ};import Q2 from"lodash.clonedeep";async function Z2({node:Q}){return Q.definition.hasOwnProperty("parallel")}async function X2({node:Q,initNode:Z}){Q.type="parallel",Q.block_child_auto_jump_to_parent=!0,Q.block_child_auto_jump_to_sibling=!0;let X=Q.definition.parallel||[];for await(let q of X){let Y=Object.keys(q)[0],J={name:Y,childs:[],parent:Q,definition:q[Y],index:Q.childs.length,context:{}};Q.childs.push(J),await Z({node:J})}Q.resolve=EQ}async function EQ({node:Q,transformExpression:Z,resolveNextBlock:X}){Q.context.transform=Q.context.transform||Q2(Q.definition),await k({node:Q,transformExpression:Z}),X({node:Q})}var z7={hits:Z2,init:X2,resolve:EQ};import q2 from"lodash.clonedeep";async function Y2({node:Q}){return Q.definition.hasOwnProperty("raise")}async function J2({node:Q,initNode:Z}){Q.type="raise",Q.resolve=xQ}async function xQ({node:Q,resolveTypeCommon:Z,transformExpression:X}){Q.context.transform=Q.context.transform||q2(Q.definition);let q=Q.context.transform;q.raise=await X(q.raise),await Z({node:Q})}var G7={hits:Y2,init:J2,resolve:xQ};import H2 from"lodash.clonedeep";async function W2({node:Q}){return Q.definition.hasOwnProperty("return")}async function V2({node:Q,initNode:Z}){Q.type="return",Q.resolve=uQ}async function uQ({node:Q,resolveTypeCommon:Z,transformExpression:X}){Q.context.transform=Q.context.transform||H2(Q.definition);let q=Q.context.transform;Q.hasReturn=!0,q.return=await X(q.return),await Z({node:Q})}var U7={hits:W2,init:V2,resolve:uQ};import K2 from"lodash.clonedeep";async function _2({node:Q}){return Q.definition.hasOwnProperty("call")}async function z2({node:Q,initNode:Z}){Q.type="call",await m({node:Q,initNode:Z}),Q.resolve=fQ}async function fQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||K2(Q.definition);let Y=Q.context.transform,J=Y.from||Y.import||Y.call;if(Q.target?.atom?.doc?.type==="function"){if(Reflect.has(Y,"from"))J=Y.from,Y.from=await q(Q.target.atom.name);else if(Reflect.has(Y,"import"))J=Y.import,Y.import=await q(Q.target.atom.name);else if(Reflect.has(Y,"call"))Y.call=await q(Q.target.atom.name),J=Y.call}else if(Reflect.has(Y,"from")||Reflect.has(Y,"import")){if(Y.call.startsWith("use:e::")){let H=Y.call.substring(7);Y.libExp=await q(`e::LIBRARY.${H}`)}}if(Y.args)Y.args=await q(Y.args);if(Y.new)Y.new=await q(Y.new);if(Y.context)Y.context=await q(Y.context);let W=Q.workflow.parent;Q.context.lib=W.context.libs.find((H)=>H.name===J),await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var $8={hits:_2,init:z2,resolve:fQ};import G2 from"lodash.clonedeep";async function U2({node:Q}){return Q.definition.hasOwnProperty("steps")}async function $2({node:Q,initNode:Z}){if(!Q.type)Q.type="steps";let X=Q.definition.steps||[];for await(let q of X){let Y=Object.keys(q)[0];if(q[Y].enabled===!1)continue;let J={name:Y,childs:[],parent:Q,definition:q[Y],index:Q.childs.length,context:{}};Q.childs.push(J),await Z({node:J})}Q.resolve=hQ}async function hQ({node:Q,transformExpression:Z}){Q.context.next=Q.childs[0],Q.context.transform=Q.context.transform||G2(Q.definition),await k({node:Q,transformExpression:Z})}var $7={hits:U2,init:$2,resolve:hQ};import O2 from"lodash.clonedeep";async function M2({node:Q}){return Q.definition.hasOwnProperty("form")}async function A2({node:Q,initNode:Z}){Q.type="form",await m({node:Q,initNode:Z}),Q.resolve=gQ}async function gQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||O2(Q.definition);let Y=Q.context.transform;if(Y.props)Y.props=await q(Y.props);let J=Q.workflow.parent;Q.context.lib=J.context.libs.find((W)=>W.name===Y.form),await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var O7={hits:M2,init:A2,resolve:gQ};import R2 from"lodash.clonedeep";async function B2({node:Q}){return Q.definition.hasOwnProperty("signal")}async function I2({node:Q,initNode:Z}){Q.type="signal",Q.resolve=mQ}async function mQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q,transformValue:Y}){Q.context.transform=Q.context.transform||R2(Q.definition),await Z({node:Q}),X({node:Q})}var M7={hits:B2,init:I2,resolve:mQ};import L2 from"lodash.clonedeep";async function F2({node:Q}){return Q.definition.hasOwnProperty("wait")}async function T2({node:Q,initNode:Z}){Q.type="wait",Q.resolve=lQ}async function lQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q,transformValue:Y}){Q.context.transform=Q.context.transform||L2(Q.definition),await Z({node:Q}),X({node:Q})}var A7={hits:F2,init:T2,resolve:lQ};import j2 from"lodash.clonedeep";async function C2({node:Q}){return Q.definition.hasOwnProperty("next")}async function w2({node:Q,initNode:Z}){Q.type="next",Q.resolve=cQ}async function cQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||j2(Q.definition);let Y=Q.context.transform;Y.next=await q(Y.next),await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var R7={hits:C2,init:w2,resolve:cQ};import S2 from"lodash.clonedeep";async function N2({node:Q}){return Q.definition.hasOwnProperty("modules")}async function P2({node:Q,initNode:Z}){Q.type="modules",await m({node:Q,initNode:Z}),Q.resolve=dQ}async function dQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||S2(Q.definition);let Y=Q.context.transform;await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var B7={hits:N2,init:P2,resolve:dQ};function I7({node:Q}){let Z=Q.definition;if(Q.hasReturn){if(j("tree"))f.info(`[RETURN] no next: ${Q.indexKey}`);return}if(Z.next==="end"){if(j("tree"))f.info(`[EXPLICIT-END] ${Q.indexKey}`)}else if(Z.next==="stop"){if(j("tree"))f.info(`[EXPLICIT-STOP] ${Q.indexKey}`)}else if(Z.next==="none"){if(j("tree"))f.info(`[EXPLICIT-NONE] ${Q.indexKey}`)}else if(Z.next){if(j("tree"))f.info(`[EXPLICIT-NEXT] "${Z.next}" from ${Q.indexKey}`);let X=Q.parent;while(X.parent){let q=X.childs.find((Y)=>Y.name===Z.next);if(q){if(Q.context.next=q,j("tree"))f.info(`[FOUND] ${q.indexKey}`);break}X=X.parent}if(!Q.context.next&&j("tree"))f.warn(` [NOT-FOUND] "${Z.next}"`)}else{if(Q.module===!0){if(j("tree"))f.info(`[MODULE-ROOT] no auto next: ${Q.indexKey}`);return}if(j("tree"))f.info(`[AUTO-NEXT] from ${Q.indexKey}`);let X=Q.parent,q=Q.index+1,Y=0;while(X.parent)if(Y++,X.block_child_auto_jump_to_parent&&X.block_child_auto_jump_to_sibling){if(j("tree"))f.info(`${Y}. [BLOCKED] both jumps disabled at ${X.indexKey}`);break}else if(!Reflect.has(X,"block_child_auto_jump_to_parent")&&!Reflect.has(X,"block_child_auto_jump_to_sibling")){let J=X.childs.find((W)=>W.index===q);if(J){if(Q.context.next=J,j("tree"))f.info(`${Y}. [SIBLING-FOUND] ${J.indexKey}`);break}else{if(j("tree"))f.info(`${Y}. [CLIMB] no sibling, climbing to parent: ${X.parent?.indexKey}`);q=X.index+1,X=X.parent;continue}}else if(X.block_child_auto_jump_to_parent){let J=X.childs.find((W)=>W.index===q);if(J){if(Q.context.next=J,j("tree"))f.info(`${Y}. [SIBLING-FOUND] parent jump disabled: ${J.indexKey}`)}else if(j("tree"))f.info(`${Y}. [BLOCKED] no sibling, parent jump disabled`);break}else if(!X.block_child_auto_jump_to_parent){if(j("tree"))f.info(`${Y}. [CLIMB] sibling disabled, climbing to parent: ${X.parent?.indexKey}`);q=X.index+1,X=X.parent;continue}if(Q.context.next&&j("tree"))f.info(`[RESOLVED] auto next: ${Q.context.next.indexKey} (${Y} steps)`);else if(j("tree"))f.info(`[NO-NEXT] end of flow (${Y} steps)`)}}class iQ{#Z;#Q;#X;#q;constructor({key:Q,npm:Z,master:X,extras:q}){this.#Z=Q,this.#Q=Z,this.#X=X,this.#q=q}hits({node:Q}){return Q.definition.hasOwnProperty(this.#Z)}async init(Q){let{node:Z}=Q,X=this.#Z,q=Z.definition,Y=typeof q[X];if(q.call=`npm:${this.#Q}`,Y!=="object")q.args={...q.args,[`${this.#X}`]:q[X]};else q.args=q[X];if(delete q[X],this.#q)for(let J in this.#q)q[J]=this.#q[J];console.log(`[npm-block] ${this.#Z} --> ${this.#Q}`),await $8.init(Q)}}function s(Q){return new iQ(Q)}import k2 from"lodash.clonedeep";async function D2({node:Q}){return Q.definition.hasOwnProperty("new")}async function b2({node:Q,initNode:Z}){Q.type="new",await m({node:Q,initNode:Z}),Q.resolve=pQ}async function pQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||k2(Q.definition);let Y=Q.context.transform,J=Y.from||Y.import;if(Q.target?.atom?.doc?.type==="function"){if(Reflect.has(Y,"from"))J=Y.from,Y.from=await q(Q.target.atom.name);else if(Reflect.has(Y,"import"))J=Y.import,Y.import=await q(Q.target.atom.name)}if(Y.args)Y.args=await q(Y.args);if(Y.new)Y.new=await q(Y.new);let W=Q.workflow.parent;Q.context.lib=W.context.libs.find((H)=>H.name===J),await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var L7={hits:D2,init:b2,resolve:pQ};import v2 from"lodash.clonedeep";async function y2({node:Q}){return Q.definition.hasOwnProperty("output")}async function E2({node:Q,initNode:Z}){Q.type="output",await m({node:Q,initNode:Z}),Q.resolve=aQ}async function aQ({node:Q,resolveTypeCommon:Z,resolveNextBlock:X,transformExpression:q}){Q.context.transform=Q.context.transform||v2(Q.definition),await k({node:Q,transformExpression:q}),await Z({node:Q}),X({node:Q})}var F7={hits:y2,init:E2,resolve:aQ};import x2 from"lodash.clonedeep";async function u2({node:Q}){return Q.definition.hasOwnProperty("pipeline")}async function f2({node:Q}){Q.type="pipeline";let Z=Q.definition.pipeline;if(!Z||typeof Z!=="string")throw Error(`Pipeline step '${Q.indexKey}' requires a binary name`);Q.definition.binaryName=Z,Q.resolve=nQ}async function nQ({node:Q,transformExpression:Z,resolveNextBlock:X}){Q.context.transform=Q.context.transform||x2(Q.definition);let q=Q.context.transform;if(q.input)q.input=await Z(q.input);if(q.args)q.args=await Z(q.args);if(q.env)q.env=await Z(q.env);if(q.cwd)q.cwd=await Z(q.cwd);await k({node:Q,transformExpression:Z}),X({node:Q})}var T7={hits:u2,init:f2,resolve:nQ};import h2 from"lodash.clonedeep";async function g2({node:Q}){return Q.definition.hasOwnProperty("retry")}async function m2({node:Q,initNode:Z}){Q.type="retry";let X=Q.definition.retry,q;if(typeof X==="number")q={attempts:X,delay:1000,backoff:"exponential",maxDelay:null};else if(typeof X==="object")q={attempts:X.attempts||3,delay:X.delay||1000,backoff:X.backoff||"exponential",maxDelay:X.maxDelay||null,on:X.on,onRetry:X.onRetry};else throw Error(`Retry step '${Q.name}' requires a number or object configuration`);if(!q.attempts||q.attempts<1)throw Error(`Retry step '${Q.name}' requires attempts >= 1`);let Y=["exponential","linear","fixed"];if(!Y.includes(q.backoff))throw Error(`Retry step '${Q.name}' has invalid backoff strategy '${q.backoff}'. Valid options: ${Y.join(", ")}`);Q.definition.retry=q;let{retry:J,...W}=Q.definition,H={name:`${Q.name}_retryable`,childs:[],parent:Q,definition:W,index:0,context:{}};Q.childs.push(H),await Z({node:H}),Q.resolve=rQ}async function rQ({node:Q,transformExpression:Z,resolveNextBlock:X}){Q.context.transform=Q.context.transform||h2(Q.definition);let q=Q.context.transform;if(q.retry.attempts&&typeof q.retry.attempts==="string")q.retry.attempts=await Z(q.retry.attempts);if(q.retry.delay&&typeof q.retry.delay==="string")q.retry.delay=await Z(q.retry.delay);if(q.retry.maxDelay&&typeof q.retry.maxDelay==="string")q.retry.maxDelay=await Z(q.retry.maxDelay);if(q.retry.onRetry)q.retry.onRetry=await Z(q.retry.onRetry);await k({node:Q,transformExpression:Z}),X({node:Q})}var j7={hits:g2,init:m2,resolve:rQ};import l2 from"lodash.clonedeep";async function c2({node:Q}){return Q.definition.hasOwnProperty("schedule")}async function d2({node:Q,initNode:Z}){Q.type="schedule";let X=Q.definition.schedule,q;if(typeof X==="string")q={cron:X,timezone:null,enabled:!0};else if(typeof X==="object")q={cron:X.cron,timezone:X.timezone||null,enabled:X.enabled!==!1};else throw Error(`Schedule step '${Q.name}' requires a cron expression string or object`);if(!q.cron||typeof q.cron!=="string")throw Error(`Schedule step '${Q.name}' requires a valid cron expression`);Q.definition.schedule=q;let{schedule:Y,...J}=Q.definition,W={name:`${Q.name}_scheduled`,childs:[],parent:Q,definition:J,index:0,context:{}};Q.childs.push(W),await Z({node:W}),Q.resolve=sQ}async function sQ({node:Q,transformExpression:Z,resolveNextBlock:X}){Q.context.transform=Q.context.transform||l2(Q.definition);let q=Q.context.transform;if(q.schedule){if(q.schedule.cron&&typeof q.schedule.cron==="string")q.schedule.cron=await Z(q.schedule.cron);if(q.schedule.timezone&&typeof q.schedule.timezone==="string")q.schedule.timezone=await Z(q.schedule.timezone)}await k({node:Q,transformExpression:Z}),X({node:Q})}var C7={hits:c2,init:d2,resolve:sQ};import i2 from"lodash.clonedeep";async function p2({node:Q}){return Q.definition.hasOwnProperty("http")}async function a2({node:Q,initNode:Z}){Q.type="http",await m({node:Q,initNode:Z});let X=Q.definition.http,q;if(typeof X==="string")q={url:X,method:"GET",headers:{},timeout:30000};else if(typeof X==="object"){if(q={url:X.url,method:X.method||"GET",headers:X.headers||{},body:X.body,params:X.params,timeout:X.timeout||30000},!q.url)throw Error(`HTTP step '${Q.name}' requires a url property`)}else throw Error(`HTTP step '${Q.name}' requires a string URL or object configuration`);let Y=["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS"],J=q.method.toUpperCase();if(!Y.includes(J))throw Error(`HTTP step '${Q.name}' has invalid method '${q.method}'. Valid options: ${Y.join(", ")}`);if(q.method=J,q.timeout&&(typeof q.timeout!=="number"||q.timeout<=0))throw Error(`HTTP step '${Q.name}' timeout must be a positive number`);Q.definition.http=q,Q.resolve=n2}async function n2({node:Q,transformExpression:Z,resolveNextBlock:X}){Q.context.transform=Q.context.transform||i2(Q.definition);let q=Q.context.transform;if(q.http.url)q.http.url=await Z(q.http.url);if(q.http.headers)q.http.headers=await Z(q.http.headers);if(q.http.body)q.http.body=await Z(q.http.body);if(q.http.params)q.http.params=await Z(q.http.params);if(q.http.timeout)q.http.timeout=await Z(q.http.timeout);await k({node:Q,transformExpression:Z}),X({node:Q})}var w7={hits:p2,init:a2};var oQ=({path:Q})=>{if(!Q)throw Error("Path is required");let Z=/^@([^\/]+\/[^\/]+)(?:\/(.+))?$/,X=/^([^\/]+)(?:\/(.+))?$/,q;if(q=Q.match(Z))return{path:Q,package:"@"+q[1],subpath:q[2]||null};else if(q=Q.match(X))return{path:Q,package:q[1],subpath:q[2]||null};return null};import Z1 from"node:os";class XZ{#Z;#Q;#X;#q;#J;#L;#I;#K;#G;#V;#z;#Y;#M;#O;#$;#A;#j;#B;#T;#W;#F;#_=[];constructor(Q){this.#Z=new n7,this.#Q=Q,this.#L=[],this.#I=[],this.#K={},this._expire_ttl=3600,this._expire_ttl_short=300,this.#_.push(s({key:"config",npm:"@fnet/config",master:"name"})),this.#_.push(s({key:"yaml",npm:"@fnet/yaml",master:"file"})),this.#_.push(s({key:"prompt",npm:"@fnet/prompt",master:"message"})),this.#_.push(s({key:"html-link",npm:"@flownet/lib-load-browser-link-url",master:"src"})),this.#_.push(s({key:"html-script",npm:"@flownet/lib-load-browser-script-url",master:"src"})),this.#_.push(s({key:"http-server",npm:"@fnet/node-express",master:"server_port"})),this.#_.push(s({key:"shell",npm:"@fnet/shell-flow",master:"commands"})),this.#_.push(s({key:"list-files",npm:"@fnet/list-files",master:"pattern"})),this.#_.push(s({key:"up-list-files",npm:"@fnet/up-list-files",master:"pattern"})),this.#_.push(s({key:"auto-conda-env",npm:"@fnet/auto-conda-env",master:"envDir"})),this.#_.push(s({key:"ollama-chat",npm:"@fnet/ollama-chat",master:"model"})),this.#_.push(s({key:"ai",npm:"@fnet/ai",master:"prompt",extras:{subtype:"flow"}})),this.#_.push(s({key:"invoke",npm:"@fnet/invoke",master:"method",extras:{}})),this.#_.push(s({key:"fetch",npm:"@fnet/fetch",master:"url",extras:{}})),this.#_.push(s({key:"filemap",npm:"@fnet/filemap",master:"target",extras:{}})),this.#W={packageDependencies:this.#L,packageDevDependencies:this.#I,setProgress:this.setProgress.bind(this),context:this.#Q,Atom:I0,registerToPackageManager:this.registerToPackageManager.bind(this)},this.#F={initNode:this.initNode.bind(this),cloneDeep:QZ,resolveTypeCommon:this.resolveTypeCommon.bind(this),resolveNextBlock:I7,transformExpression:this.transformExpression.bind(this),transformValue:this.transformValue.bind(this)}}async _cache_set(Q,Z,X){}async init(){this.#z=this.#Q.buildId||ZZ(),this.#W.buildId=this.#z,this.#$=this.#Q.mode,this.#A=["all","deploy","build","file"].includes(this.#$),this.#j=["all","deploy","build"].includes(this.#$),this.#B=["all","deploy"].includes(this.#$),this.#T=this.#$==="bpmn"||this.#Q.bpmn===!0,this.#M=this.#Q.protocol,this.#Y="BUILD:"+this.#z,this.#O=(await o2({optional:!0,name:"atom",dir:this.#Q.projectDir,tags:this.#Q.tags}))?.data;try{await this.setProgress({message:"Initialization started."});let Q=this.#W.context.project;await this.initAuth(),await this.initWorkflow(),this.transformWorkflow({workflow:this.#q});let Z=await this.initNodeTree({workflow:this.#q});if(await this.initNodeTreeIndex({root:Z}),await this.initNodeCalls({root:Z}),await this.initNodeCallLibs({root:Z}),await this.initNodeForms({root:Z}),await this.initNodeFormLibs({root:Z}),await this.initEntryFiles({root:Z,features:this.#X.doc.features}),await this.initFeaturesFromNodes({childs:Z.childs,features:this.#X.doc.features}),await O6(this.#W),Q.runtime.type==="bun")await A6(this.#W);else await M6(this.#W);await this.initAtomLibsAndDeps({libs:Z.context.libs,packageDependencies:this.#L}),await this.resolveNodeTree({root:Z}),this.#V=Z}catch(Q){throw await this._cache_set(this.#Y,{status:"FAILED",message:Q?.message||Q}),Q}}async initAuth(){if(!this.#Q.id)return;this.#G=await this.#Z.init({config:this.#O}),this.#W.atomAccessToken=this.#G}async initWorkflow(){let Q=this.#Q.id;this.#X=this.#Q.project?.workflowAtom||await I0.get({id:Q}),this.#q=typeof this.#X.doc.content==="string"?(await e2({content:this.#X.doc.content,tags:this.#Q.tags})).parsed:this.#X.doc.content;let Z=this.#X.doc.bundleName;Z=Z||(this.#X.doc.name||"").toUpperCase().replace(/[^A-Z0-9]/g,"_"),this.#X.doc.bundleName=Z,this.#X.type=this.#X.type||"workflow",this.#W.atom=this.#X,this.#X.doc.features=this.#X.doc.features||{}}#C(Q){if(console.log("filePath",Q),C.statSync(Q).isDirectory())C.readdirSync(Q).forEach((Z)=>{let X=D.join(Q,Z);this.#C(X)}),C.rmSync(Q);else C.unlinkSync(Q)}#R(Q,Z){let X=C.existsSync(Q),q=X&&C.statSync(Q);if(X&&q.isDirectory())C.mkdirSync(Z,{recursive:!0}),C.readdirSync(Q).forEach((J)=>{this.#R(D.join(Q,J),D.join(Z,J))});else C.copyFileSync(Q,Z)}async initWorkflowDir(){this.setProgress({message:"Initializing library directory."});let Q=this.#Q.projectDir,Z=this.#Q.projectSrcDir,X=this.#Q.coreDir;this.setProgress({message:"Cleaning project directory."});let q=NQ({dir:Q,ignore:[".cache","node_modules",".conda",".bin",".dev"],absolute:!0});for(let V of q)C.rmSync(V,{recursive:!0,force:!0});if(this.setProgress({message:"Creating project directory."}),!C.existsSync(Q))C.mkdirSync(Q,{recursive:!0});let Y=D.join(Q,"src");if(!C.existsSync(Y))C.mkdirSync(Y,{recursive:!0});let J=D.join(Y,"core");this.#R(X,J);let W=D.join(Y,"default","blocks");if(!C.existsSync(W))C.mkdirSync(W,{recursive:!0});let H=D.join(Q,".dev");if(!C.existsSync(H))C.mkdirSync(H,{recursive:!0});if(this.#X.doc.features?.symlinks===!0){if(H=this.#Q.projectSrcDirSymlink,!C.existsSync(H))try{if(Z1.platform()==="win32")C.symlinkSync(Z,H,"junction");else C.symlinkSync(Z,H,"dir")}catch(V){throw Error(`Couldn't create symlink. Error: ${V.message}`)}}}async initNunjucks(){this.setProgress({message:"Initializing nunjucks."});let Q=this.#Q.templateDir;this.#J=O8.configure(Q,{watch:!1,dev:!0}),this.#W.njEnv=this.#J}transformWorkflow({workflow:Q}){for(let Z of Object.values(Q))Z.steps=Z.steps||[],Z.steps=Z.steps.filter((X)=>Object.keys(X).length>0),Z.steps=Z.steps.map((X)=>this.transformStep({step:X}))}transformStep({step:Q}){if(Array.isArray(Q))throw Error("Step must be an object.");let[Z,X]=Object.entries(Q)[0];if(X.hasOwnProperty("onerror")){let{onerror:q,...Y}=X;Q[Z]={try:Y,except:q}}if(Q[Z].hasOwnProperty("steps")){let q=Q[Z].steps;if(!Array.isArray(q))throw Error("Steps must be an array.");Q[Z].steps=q.map((Y)=>this.transformStep({step:Y}))}return Q}async initNodeTree({workflow:Q}){let Z=["$meta","$project","$features","$input","$output","$commands"],X=Object.keys(Q).filter((Y)=>!Z.includes(Y));if(j("tree"))f.info("[TREE] Creating root node");let q={definition:Q,name:void 0,type:"root",parent:void 0,childs:[],block_child_auto_jump_to_parent:!0,block_child_auto_jump_to_sibling:!0,index:0,depth:0,context:{libs:[],atom:this.#X}};X.forEach((Y)=>{if(j("tree"))f.info(`[TREE] Creating ${Y==="main"?"workflow":"subworkflow"}: ${Y}`);let J={name:Y,type:Y==="main"?"workflow":"subworkflow",enabled:Q[Y].enabled!==!1,childs:[],parent:q,definition:Q[Y],index:q.childs.length,depth:q.depth+1,context:{},block_child_auto_jump_to_parent:!0};q.childs.push(J)});for(let Y=0;Y<q.childs.length;Y++){let J=q.childs[Y];if(j("tree"))f.info(`[INIT] node: ${J.name}`);if(J.definition.enabled===!1){q.childs.splice(Y,1),Y--;continue}else await this.initNode({node:J})}if(j("tree"))f.info(`[TREE] Root node tree created (${q.childs.length} flows)`);return q}async initNode({node:Q}){let Z={...this.#F,node:Q};Q.workflow=Q.parent.workflow||Q,Q.depth=Q.parent.depth+1;let X="unknown";if(await V7.hits(Z))X="tryexcept",await V7.init(Z);else if(await U8.hits(Z))X="switch",await U8.init(Z);else if(await W7.hits(Z))X="if",await W7.init(Z);else if(await _7.hits(Z))X="for",await _7.init(Z);else if(await j7.hits(Z))X="retry",await j7.init(Z);else if(await C7.hits(Z))X="schedule",await C7.init(Z);else if(await z7.hits(Z))X="parallel",await z7.init(Z);else if(await T7.hits(Z))X="pipeline",await T7.init(Z);else if(await w7.hits(Z))X="http",await w7.init(Z);else if(await $8.hits(Z))X="call",await $8.init(Z);else if(await L7.hits(Z))X="new",await L7.init(Z);else if(await G7.hits(Z))X="raise",await G7.init(Z);else if(await O7.hits(Z))X="form",await O7.init(Z);else if(await M7.hits(Z))X="signal",await M7.init(Z);else if(await A7.hits(Z))X="wait",await A7.init(Z);else if(await $7.hits(Z))X="steps",await $7.init(Z);else if(await R7.hits(Z))X="next",await R7.init(Z);else if(await B7.hits(Z))X="modules",await B7.init(Z);else if(this.#_.find((q)=>q.hits(Z)))X="npm-block",await this.#_.find((q)=>q.hits(Z)).init(Z);else if(await K7.hits(Z))X="assign",await K7.init(Z);else if(await F7.hits(Z))X="output",await F7.init(Z);else if(await U7.hits(Z))X="return",await U7.init(Z);else throw Error("Undefined step type.");if(j("tree")){let q=Q.childs?.length>0?` (${Q.childs.length} childs)`:"";f.info(`[NODE] ${X}: ${Q.name}${q}`)}return!0}async initNodeTreeIndex({root:Q}){let Z={};Q.indexKey="/";for await(let X of Q.childs)await this.initNodeIndex({node:X,index:Z});return Q.context.index=Z,Z}async initNodeIndex({node:Q,index:Z}){let X=D.join(Q.parent.indexKey,Q.name);Q.indexKey=X,Z[X]=Q;let q=[],Y=Q;while(Y?.parent)q.push(Y.index),Y=Y.parent;q.reverse(),Q.codeKey=`B_${q.join("_")}_${Q.type}`,Q.pathKey=`${q.join(".")}`,Q.typeId=ZZ();for await(let J of Q.childs)await this.initNodeIndex({node:J,index:Z})}async initNodeCalls({root:Q}){let Z=Q.context.index,X=[];for await(let q of Object.keys(Z)){let Y=Z[q];if(Y.type!=="call"&&Y.type!=="new")continue;X.push(Y)}return Q.context.calls=X,X}async initNodeCallLibs({root:Q}){let Z=[],X=Q.context.calls;for await(let q of X){let Y=q.definition.from||q.definition.import||q.definition.call,J=await this.findNodeCallTarget({refNode:q,curNode:q.parent})||{name:Y,type:"atom",definition:q.definition},W=Z.find((H)=>H.name===J.name&&H.type===J.type);if(!W)Z.push(J);q.target=W||J}return Q.context.callLibs=Z,Q.context.libs=[...Q.context.libs,...Z],Z}async findNodeCallTarget({refNode:Q,curNode:Z}){if(!Z)return;let X=Q.definition.call,q=Z.childs.find((Y)=>Y.name===X&&Y.type==="subworkflow");if(q)return q;else return await this.findNodeCallTarget({refNode:Q,curNode:Z.parent})}async initNodeForms({root:Q}){let Z=Q.context.index,X=[];for await(let q of Object.keys(Z)){let Y=Z[q];if(Y.type!=="form")continue;X.push(Y)}return Q.context.forms=X,X}async initNodeFormLibs({root:Q}){let Z=[],X=Q.context.forms;for await(let q of X){let Y=q.definition.from||q.definition.import||q.definition.form,J=await this.findNodeCallTarget({refNode:q,curNode:q.parent})||{name:Y,type:"atom"},W=Z.find((H)=>H.name===J.name&&H.type===J.type);if(!W)Z.push(J);q.target=W||J}return Q.context.formLibs=Z,Q.context.libs=[...Q.context.libs,...Z],Z}async initFeaturesFromNodes({childs:Q,features:Z}){for await(let X of Q){if(X.type==="form"&&!Reflect.has(Z,"form"))Z.form=!0;await this.initFeaturesFromNodes({childs:X.childs,features:Z})}}async initEntryFiles({root:Q,features:Z}){for await(let X of Q.childs){let q;if(X.name==="main")q="index.js";else if(X.name==="cli")q="cli.js";else if(X.name==="app")q="app.js";else if(X.name==="api")q="api.js";else continue;Z[`${X.name}_default_entry_file`]=q,X.entryFile=q}}async findNodeFormTarget({refNode:Q,curNode:Z}){if(!Z)return;let X=Q.definition.form,q=Z.childs.find((Y)=>Y.name===X&&Y.type==="subworkflow");if(q)return q;else return await this.findNodeFormTarget({refNode:Q,curNode:Z.parent})}async initAtomLibsAndDeps({libs:Q,packageDependencies:Z}){let X=Q.filter((q)=>q.type==="atom");for(let q=0;q<X.length;q++){let Y=X[q],J=await this.findAtomLibrary({url:Y.name,libRef:Y});Y.atom=J,J.doc.dependencies?.filter((H)=>typeof H.repo>"u"||H.repo==="npm")?.forEach((H)=>{let V=Z.find((K)=>K.package===H.package);if(V){if(typeof H.path==="string"){if(!(V.path||[]).some((K)=>K===H.path))V.path=V.path||[],V.path.push(H.path)}else if(Array.isArray(H.path))H.path.forEach((K)=>{if(!(V.path||[]).some((z)=>z===K))V.path=V.path||[],V.path.push(K)})}else Z.push(H)})}Z.sort((q,Y)=>q.package?.localeCompare(Y.package))}async findAtomLibrary({url:Q,libRef:Z}){let X=s2({url:Q});if(!X)throw Error(`Invalid package name: ${Q}`);if(!X.protocol)X.protocol=this.#M;if(X.protocol==="src:"){let q=D.resolve(this.#Q.projectSrcDir,`${X.pathname}.js`),Y=[],W=(await t2({file:q,recursive:!0})).all;for await(let V of W){if(V.type!=="npm")continue;if(Y.find((z)=>z.package===V.package))continue;let K=await w0({name:V.package,projectDir:this.#Q.projectDir,setProgress:this.#W.setProgress});Y.push({package:V.package,subpath:V.subpath,version:K.minorRange,type:"npm"})}return{name:X.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:Y},protocol:X.protocol}}else if(X.protocol==="npm:"){let q=oQ({path:X.pathname}),Y=await w0({name:q.package,subpath:q.subpath,projectDir:this.#Q.projectDir,setProgress:this.#W.setProgress});return{name:X.pathname,doc:{type:"workflow.lib",subtype:Z?.definition?.subtype==="flow"?"workflow":null,"content-type":"javascript",language:"js",dependencies:[{package:q.package,version:Y.minorRange,type:"npm"}]},protocol:X.protocol}}else if(X.protocol==="use:")return{name:X.pathname,doc:{type:"function",dependencies:[]},protocol:X.protocol};else if(X.protocol==="node:")return{name:X.pathname,doc:{type:"workflow.lib","content-type":"javascript",language:"js",dependencies:[]},protocol:X.protocol};else if(X.protocol==="ac:"){let q=X.pathname.split("/");if(q.length===1)return await I0.first({where:{name:Q,parent_id:this.#O.env.ATOM_LIBRARIES_ID,type:"workflow.lib"}});if(q.length===2){let Y=await I0.first({where:{name:q[0],parent_id:this.#O.env.ATOM_LIBRARIES_ID,type:"folder"}});return await I0.first({where:{name:q[1],parent_id:Y.id,type:"workflow.lib"}})}}}async resolveNodeTree({root:Q}){for await(let Z of Q.childs)await this.resolveTypeWorkflow({node:Z})}async resolveTypeWorkflow({node:Q}){Q.context.transform=Q.context.transform||QZ(Q.definition);let Z=Q.context.transform;for(let X=0;X<Z.params?.length;X++){let q=Z.params[X];if(typeof q==="string")Z.params[X]={key:q,hasDefault:!1};else{if(Object.keys(q).length===0){Z.params.splice(X,1),X--;continue}let Y=Object.keys(q)[0];Z.params[X]={key:Y,hasDefault:!0,default:q[Y],type:typeof q[Y]}}}Q.context.next=Q.childs[0];for await(let X of Q.childs)await this.resolveType({node:X})}async resolveType({node:Q}){let Z={...this.#F,node:Q};if(typeof Q.resolve==="function")await Q.resolve(Z);for await(let X of Q.childs)await this.resolveType({node:X})}async resolveTypeCommon({node:Q}){let Z=Q.context.transform;if(Z.hasOwnProperty("page"))Z.page=await this.transformExpression(Z.page);if(Z.hasOwnProperty("print"))Z.print=await this.transformExpression(Z.print);if(Z.hasOwnProperty("sleep"))Z.sleep=await this.transformExpression(Z.sleep);if(Z.hasOwnProperty("assert"))Z.assert=await this.transformExpression(Z.assert)}async createAtomLibFiles({root:Q}){await this.setProgress({message:"Creating external lib files."}),this.#X.typesDir="./types";let X=Q.context.libs.filter((q)=>q.type==="atom");for(let q=0;q<X.length;q++){let J=X[q].atom,W=this.#Q.projectDir;if(J.protocol==="src:"){let H=this.#X.doc.features?.symlinks===!0?this.#Q.projectSrcDirSymlink:this.#Q.projectSrcDir;H=D.resolve(H,`${J.fileName||J.name}.js`);let V=D.relative(`${this.#Q.projectDir}/src/default/blocks`,H);if(!C.existsSync(H)){C.mkdirSync(D.dirname(H),{recursive:!0});let K=`export default async (input)=>{
12
+ `;K+="}",C.writeFileSync(H,K,"utf8")}J.relativePath=V.split(D.sep).join("/"),this.#X.typesDir=`./types/${D.basename(W)}/src`}else if(J.protocol==="npm:")J.relativePath=J.name;else if(J.protocol==="node:")J.relativePath=J.name;else if(J.protocol==="use:");else{let H=`${W}/src/libs/${J.id}.js`,V=J.doc.contents?.find((K)=>K.format==="esm")||J.doc;C.writeFileSync(D.normalize(H),V.content,"utf8")}}}async createEngine({root:Q}){await this.setProgress({message:"Creating engine file."});let Z=this.#Q.templateDir,X=O8.compile(C.readFileSync(D.resolve(Z,"src/default/engine.js.njk"),"utf8"),this.#J);for(let q=0;q<Q.childs.length;q++){let Y=Q.childs[q];if(!Y.entryFile)continue;let J=X.render({flow:Y,ui:{package:"@fnet/react-app"}}),W=this.#Q.projectDir,H=D.resolve(W,`src/default/${Y.entryFile}`);C.writeFileSync(H,J,"utf8")}}async createNodeTree({root:Q}){await this.setProgress({message:"Creating block files."});for await(let Z of Q.childs)await this.createTypeWorkflow({node:Z})}async createTypeWorkflow({node:Q}){let Z=this.#Q.templateDir,q=O8.compile(C.readFileSync(D.resolve(Z,"src/default/workflow.js.njk"),"utf8"),this.#J).render(Q),Y=this.#Q.projectDir,J=D.resolve(Y,`src/default/${Q.codeKey}.js`);C.writeFileSync(J,q,"utf8");for await(let W of Q.childs)await this.createType({node:W})}async createType({node:Q}){switch(Q.type){case"assign":case"steps":case"return":case"call":case"new":case"form":case"raise":case"switch":case"next":case"tryexcept":case"for":case"parallel":case"signal":case"wait":case"modules":case"output":case"pipeline":case"retry":case"schedule":case"http":this.createBlockFromTemplate({node:Q});break;default:break}for await(let Z of Q.childs)await this.createType({node:Z})}createBlockFromTemplate({node:Q}){let Z=this.getBlockTemplate({node:Q});Q.context.render=Z.render(Q),this.createStepFile({node:Q})}getBlockTemplate({node:Q}){let Z=this.#K[Q.type];if(Z)return Z;let X=this.#Q.templateDir;return Z=O8.compile(C.readFileSync(D.resolve(X,`src/default/blocks/${Q.type}.js.njk`),"utf8"),this.#J),this.#K[Q.type]=Z,Z}createStepFile({node:Q}){let Z=this.#Q.projectDir,X=`${Q.codeKey}.js`,q=D.resolve(Z,`src/default/blocks/${X}`);C.writeFileSync(q,Q.context.render,"utf8"),Q.context.fileName=X,Q.context.filePath=q}async transformExpression(Q){try{let Z=await this.transformValue(Q);return Z=JSON.stringify(Z),Z=this.replaceSpecialPattern(Z),Z}catch(Z){throw console.error("❌ transformExpression error:",Z.message),console.error(" Input value:",Q),console.error(" Stack:",Z.stack),Z}}async transformValue(Q){if(Array.isArray(Q))for(let Z=0;Z<Q.length;Z++)Q[Z]=await this.transformValue(Q[Z]);else if(r2(Q)){let Z=Object.keys(Q);for(let X=0;X<Z.length;X++){let q=Z[X],Y=m6({expression:q});if(Y)if(Y.processor==="e"){let J=typeof Q[q]==="string"?Q[q]:Q[q];Q[Y.statement]=`$::${J}::`,delete Q[q]}else Q[q]=await this.transformValue(Q[q]);else Q[q]=await this.transformValue(Q[q])}}else if(typeof Q==="string"){let Z=m6({expression:Q,transform:{v:"v.{stmt}",for:"c.for.{stmt}",m:"c.module?.{stmt}||flow.module?.{stmt}",f:"c.form.{stmt}"}});if(Z){let{processor:X,transformed:q}=Z;switch(X){case"v":case"for":case"m":case"f":case"e":Q=`$::${q||Z.statement}::`;break}}}return Q}replaceSpecialPattern(Q){if(typeof Q!=="string")return console.error("❌ replaceSpecialPattern received non-string:",typeof Q,Q),Q;let Z=/"\$::(.*?)::"/g;return Q.replace(Z,"$1")}replaceExpressionLegacy(Q){let Z=/(?<outer>"\${(?<inner>[^{]*)}")/g;return Q.replaceAll(Z,"$2")}async createProjectYaml(){await this.setProgress({message:"Creating fnet.yaml"});let{content:X,...q}=this.#X.doc,Y=this.#Q.projectDir,J=D.resolve(Y,"fnet.yaml");C.writeFileSync(J,tQ.stringify(q),"utf8")}async createProjectMainYaml(){await this.setProgress({message:"Creating flow.main.yaml"});let X={content:tQ.stringify(this.#q)},q=this.#Q.templateDir,J=O8.compile(C.readFileSync(D.resolve(q,"flow.main.yaml.njk"),"utf8"),this.#J).render(X),W=this.#Q.projectDir,H=D.resolve(W,"flow.main.yaml");C.writeFileSync(H,J,"utf8")}async runPrettifier(){let Q=this.#Q.projectDir;if(z0("bun")){let Z=await eQ("bunx prettier --write .",{cwd:D.resolve(Q,"src")});if(Z.code!==0)throw Error(Z.stderr)}else{let Z=await eQ("npx prettier --write .",{cwd:D.resolve(Q,"src")});if(Z.code!==0)throw Error(Z.stderr)}}async deploy(){if(await this.setProgress({message:"Deploying."}),this.#Q.project?.devops){let Q=[this.#Q.project?.devops];for(let Z=0;Z<Q.length;Z++){let X=Q[Z];if(await this.deployProject({deploymentProject:X}),X.isDirty===!0)await X.save()}}else if(this.#X.id){let Q=await I0.list({type:"workflow.deploy",parent_id:this.#X.id});for(let Z=0;Z<Q.length;Z++){let X=Q[Z];if(await this.deployProject({deploymentProject:X}),X.isDirty===!0)X=await I0.update(X,{id:X.id})}}}async deployProject(Q){let{deploymentProject:Z}=Q,{yamlDocument:X}=Z;if(Z.doc.targets&&Array.isArray(Z.doc.targets))throw Error("Deployment project targets are deprecated. Please update targets in the yaml file.");let q=Object.keys(Z.doc||{}),Y=X||{};for(let J=0;J<q.length;J++){let W=Z.doc[q[J]];W.name=q[J];let H=Y.get(q[J]);await A9({...this.#W,deploymentProject:Z,deploymentProjectTarget:W,yamlTarget:H})}}async registerToPackageManager(Q){let{target:Z,packageJSON:X}=Q;if(!this.#Q.id)return;let q=await I0.first({name:Z.params.name,parent_id:this.#O.env.ATOM_PACKAGES_ID});if(!q)q=await I0.create({parent_id:this.#O.env.ATOM_PACKAGES_ID,doc:{name:Z.params.name,type:"pm",versions:[{v:X.version}]}});else q.doc.versions.splice(0,0,{v:X.version}),await I0.update(q,{id:q.id})}async setProgress(Q){let Z=typeof Q==="string"?Q:Q?.message;console.log(Q1.blue(Z)),await this._cache_set(this.#Y,{status:"IN_PROGRESS",message:Z})}async build(){if(this.#T&&!this.#A)return await this.createNetwork();try{let Q=this.#T?await j8({root:this.#V}):void 0;if(this.#A){let Z=this.#W.context.project;if(await this.initWorkflowDir(),await this.initNunjucks(),this.#T){let X=this.#Q.project?.projectDir||this.#Q.projectDir;if(X=D.resolve(X,"fnet"),C.existsSync(X)){if(C.existsSync(D.resolve(X,"flow.bpmn")))C.unlinkSync(D.resolve(X,"flow.bpmn"));if(C.writeFileSync(D.resolve(X,"flows.bpmn"),Q.diagramXML,"utf8"),((this.#X.doc.features||{}).bpmn||{}).per_flow===!0){let W=D.resolve(X,"bpmn");if(!C.existsSync(W))C.mkdirSync(W,{recursive:!0});let H=await L9({root:this.#V});for(let V of H){let K=`${V.flowName}.bpmn`,z=D.resolve(W,K);C.writeFileSync(z,V.diagramXML,"utf8")}}}}if(await this.createAtomLibFiles({root:this.#V}),await this.createEngine({root:this.#V}),await this.createNodeTree({root:this.#V}),await this.createProjectYaml(),await D6(this.#W),await k6(this.#W),await P6(this.#W),await N6(this.#W),await I6(this.#W),await R6(this.#W),Z.runtime.type==="bun")await C6(this.#W);else await T6(this.#W);if(await B6(this.#W),await b6(this.#W),await v6(this.#W),this.#j){if(await y6(this.#W),await E6(this.#W),this.#B)await this.deploy()}}await this._cache_set(this.#Y,{status:"COMPLETED",data:{network:Q}})}catch(Q){throw await this._cache_set(this.#Y,{status:"FAILED",message:Q.message||Q}),Q}}async createNetwork(){try{let Q=await j8({root:this.#V});await this._cache_set(this.#Y,{status:"COMPLETED",data:{...Q}})}catch(Q){throw await this._cache_set(this.#Y,{status:"FAILED",message:Q.message||Q}),Q}}}var b0=XZ;var X1={command:"build",describe:"Build flownet project",builder:(Q)=>{return Q.option("id",{type:"string",describe:"Project ID"}).option("buildId",{type:"string",alias:"bid",describe:"Build ID"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"],describe:"Build mode"}).option("ftag",{type:"array",describe:"Tags for conditional configuration"}).option("dev",{type:"boolean",default:!1,describe:"Development mode"}).option("flows",{type:"string",alias:"flow",describe:"Path to flows file"}).option("bpmn",{type:"boolean",default:!1,describe:"Generate BPMN diagram"})},handler:async(Q)=>{try{let Z=await b(Q),X=new b0(Z);await X.init(),await X.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(Z){console.error("Building workflow failed!",Z.message),process.exit(1)}}},qZ=X1;var q1={command:"build:dev",describe:"Build flownet project",builder:(Q)=>{return Q.option("id",{type:"string",describe:"Project ID"}).option("buildId",{type:"string",alias:"bid",describe:"Build ID"}).option("mode",{type:"string",default:"build",choices:["all","file","build","deploy","bpmn"],describe:"Build mode"}).option("ftag",{type:"array",describe:"Tags for conditional configuration"}).option("dev",{type:"boolean",default:!1,describe:"Development mode"}).option("flows",{type:"string",describe:"Path to flows file"})},handler:async(Q)=>{try{Q.dev=!0;let Z=await b(Q),X=new b0(Z);await X.init(),await X.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(Z){console.error("Building workflow failed!",Z.message),process.exit(1)}}},YZ=q1;var Y1={command:"deploy",describe:"Build and deploy flownet project",builder:(Q)=>{return Q.option("id",{type:"string",describe:"Project ID"}).option("buildId",{type:"string",alias:"bid",describe:"Build ID"}).option("ftag",{type:"array",describe:"Tags for conditional configuration"}).option("flows",{type:"string",describe:"Path to flows file"})},handler:async(Q)=>{try{let Z=await b({...Q,mode:"all"}),X=new b0(Z);await X.init(),await X.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(Z){console.error("Building workflow failed!",Z.message),process.exit(1)}}},JZ=Y1;var J1={command:"file",describe:"Just create files",builder:(Q)=>{return Q.option("id",{type:"string",describe:"Project ID"}).option("buildId",{type:"string",alias:"bid",describe:"Build ID"}).option("ftag",{type:"array",describe:"Tags for conditional configuration"}).option("flows",{type:"string",describe:"Path to flows file"})},handler:async(Q)=>{try{let Z=await b({...Q,mode:"file"}),X=new b0(Z);await X.init(),await X.build(),console.log("Building workflow succeeded!"),process.exit(0)}catch(Z){console.error("Building workflow failed!",Z.message),process.exit(1)}}},HZ=J1;import WZ from"node:path";import d8 from"node:fs";import H1 from"@fnet/prompt";var W1={command:"input [name]",describe:"Create or modify an input config file",builder:(Q)=>{return Q.positional("name",{type:"string",demandOption:!1,describe:"Input name"})},handler:async(Q)=>{try{let Z=await b(Q),{project:X}=Z,{projectDir:q,projectFileParsed:Y}=X,J=Y.input;if(!J)throw Error("Config schema not found in project file.");if(!Reflect.has(Q,"name")){let{inputName:G}=await H1({type:"input",name:"inputName",message:"Input name:",initial:"dev"});Q.name=G}let W=WZ.resolve(q,".fnet");if(!d8.existsSync(W))d8.mkdirSync(W);let H=WZ.resolve(W,`${Q.name}.fnet`),V=d8.existsSync(H),K=(await import("@fnet/object-from-schema")).default,z=await K({schema:J,format:"yaml",ref:V?H:void 0});d8.writeFileSync(H,z)}catch(Z){console.error(Z.message),process.exit(1)}}},VZ=W1;import P from"node:path";import N from"node:fs";import p8 from"node:os";import{spawn as a8}from"node:child_process";import F from"chalk";import j0 from"@fnet/prompt";import i8 from"chalk";import KZ from"@fnet/prompt";async function V1(Q){let{items:Z,message:X,nameField:q="name",valueField:Y="name",initialValue:J=null,allowAbort:W=!0}=Q;if(!Z||Z.length===0)return console.log(i8.yellow("No items available for selection.")),null;if(Z.length===1&&!W){let G=Z[0],_=typeof G==="string"?G:G[Y];return console.log(i8.blue(`Only one option available: ${typeof G==="string"?G:G[q]}`)),_}let H=Z.map((G)=>{if(typeof G==="string")return{name:G,value:G,message:G};else return{name:G[Y],value:G[Y],message:G[q]||G[Y]}});if(W)H.push({name:"cancel",value:null,message:i8.yellow("Cancel")});let V=null;if(J){let G=H.findIndex((_)=>_.name===J);if(G!==-1)V=G}let K="selectedItem",{[K]:z}=await KZ({type:"select",name:K,message:X,choices:H,initial:V});if(z==="cancel")return null;return z}async function K1(Q){let{items:Z,message:X,nameField:q="name",valueField:Y="name",initialValues:J=[],allowAbort:W=!0}=Q;if(!Z||Z.length===0)return console.log(i8.yellow("No items available for selection.")),null;let H=Z.map((G)=>{if(typeof G==="string")return{name:G,value:G,message:G};else return{name:G[Y],value:G[Y],message:G[q]||G[Y]}}),V=[];if(J&&J.length>0)V=H.map((G,_)=>J.includes(G.name)?_:-1).filter((G)=>G!==-1);let K="selectedItems",z=await KZ({type:"multiselect",name:K,message:X,choices:H,initial:V,hint:"(Use space to select, enter to confirm)",validate:(G)=>{if(G.length===0&&!W)return"Please select at least one item";return!0}});if(W&&z[K].length===0)return null;return z[K]}var S7={promptForSelection:V1,promptForMultipleSelection:K1};var l=P.join(p8.homedir(),".fnet","express");async function zZ(Q){Q.command(["$0 [project-name]","create [project-name]"],"Create a new express project",(Z)=>{return Z.positional("project-name",{describe:"Name of the project",type:"string"}).option("yes",{alias:"y",describe:"Skip all prompts and use defaults",type:"boolean",default:!1}).option("runtime",{describe:"Runtime to use (node)",type:"string",choices:["node"],default:"node"})},async(Z)=>{await _1(Z)}).command("list","List express projects",(Z)=>{return Z.option("today",{describe:"Show only projects created today",type:"boolean",default:!1}).option("type",{describe:"Filter by project type (fnode or fnet)",type:"string",choices:["fnode","fnet"]}).option("all",{describe:"Show all projects regardless of type",type:"boolean",default:!1,alias:"a"}).option("name",{describe:"Filter by project name",type:"string"})},async(Z)=>{await z1(Z)}).command("open [project-name]","Open an express project",(Z)=>{return Z.positional("project-name",{describe:"Name of the project to open",type:"string"}).option("latest",{describe:"Open the most recent project",type:"boolean",default:!1})},async(Z)=>{await G1(Z)}).command("move [project-name] [destination]","Move an express project to a real project location",(Z)=>{return Z.positional("project-name",{describe:"Name of the project to move",type:"string"}).positional("destination",{describe:"Destination directory",type:"string"}).option("latest",{describe:"Move the most recent project",type:"boolean",default:!1})},async(Z)=>{await U1(Z)}).command("remove [project-name]","Remove an express project",(Z)=>{return Z.positional("project-name",{describe:"Name of the project to remove",type:"string"}).option("latest",{describe:"Remove the most recent project",type:"boolean",default:!1}).option("yes",{alias:"y",describe:"Skip confirmation prompt",type:"boolean",default:!1})},async(Z)=>{await O1(Z)}).command("enter [project-name]","Enter the directory of an express project in the active terminal",(Z)=>{return Z.positional("project-name",{describe:"Name of the project to enter",type:"string"}).option("latest",{describe:"Enter the most recent project directory",type:"boolean",default:!1})},async(Z)=>{await M1(Z)}).demandCommand(1,"You need to specify a command").help()}async function _1(Q){try{if(!N.existsSync(l))N.mkdirSync(l,{recursive:!0});let Z=new Date().toISOString().slice(0,10).replace(/-/g,""),X=P.join(l,Z);if(!N.existsSync(X))N.mkdirSync(X,{recursive:!0});let q=Q.projectName,Y,J=Q.runtime;if(!Q.yes){if(!q){let _=N.readdirSync(X).filter(($)=>$.startsWith("fnet-")).map(($)=>parseInt($.replace("fnet-",""),10)).filter(($)=>!isNaN($)),U=`fnet-${_.length>0?Math.max(..._)+1:1}`;q=(await j0([{type:"input",name:"projectName",message:"Enter project name:",default:U}])).projectName}J=(await j0({type:"select",name:"runtime",message:"Select runtime:",choices:["node"],initial:J||"node"})).runtime}else{if(!q){let z=N.readdirSync(X).filter((_)=>_.startsWith("fnet-")).map((_)=>parseInt(_.replace("fnet-",""),10)).filter((_)=>!isNaN(_));q=`fnet-${z.length>0?Math.max(...z)+1:1}`}if(!J)J="node"}if(Y=P.join(X,q),N.existsSync(Y)){let z=1;while(N.existsSync(P.join(X,`${q}-${z}`)))z++;q=`${q}-${z}`,Y=P.join(X,q)}if(!Q.yes){if(!(await j0([{type:"confirm",name:"proceed",message:`Create express project "${q}" in ${Y}?`,default:!0}])).proceed){console.log(F.yellow("Project creation cancelled."));return}}console.log(F.blue(`Creating express project "${q}" in ${Y}...`));let W=P.dirname(Y),V=["create","--name",P.basename(Y)];if(V.push("--runtime",J),Q.yes)V.push("--yes");if(!N.existsSync(W))N.mkdirSync(W,{recursive:!0});let K=a8("fnet",V,{stdio:"inherit",shell:!0,cwd:W});return new Promise((z,G)=>{K.on("close",(_)=>{if(_===0)if(console.log(F.green(`
13
13
  Express project "${q}" created successfully!`)),console.log(F.blue(`
14
14
  Project location: ${Y}`)),!Q.yes)$1(Y);else z();else console.error(F.red(`
15
15
  Failed to create express project "${q}".`)),G(Error(`Process exited with code ${_}`))})})}catch(Z){console.error(F.red(`Error creating express project: ${Z.message}`)),process.exit(1)}}async function z1(Q){try{if(!N.existsSync(l)){console.log(F.yellow("No express projects found."));return}let Z=N.readdirSync(l).filter((W)=>/^\d{8}$/.test(W)).sort((W,H)=>H.localeCompare(W));if(Q.today){let W=new Date().toISOString().slice(0,10).replace(/-/g,""),H=Z.indexOf(W);if(H===-1){console.log(F.yellow("No express projects found for today."));return}Z.splice(0,H),Z.splice(1)}let X=[];if(!Q.type&&!Q.all)Q.type="fnet";for(let W of Z){let H=P.join(l,W),V=N.readdirSync(H);for(let K of V){let z=P.join(H,K),G=N.statSync(z),_="unknown";if(K.startsWith("fnode-")||N.existsSync(P.join(z,"fnode.yaml")))_="fnode";else if(K.startsWith("fnet-")||N.existsSync(P.join(z,"fnet.yaml")))_="fnet";if(Q.type&&_!==Q.type)continue;if(Q.name&&!K.includes(Q.name))continue;let A=`${W.slice(0,4)}-${W.slice(4,6)}-${W.slice(6,8)}`;X.push({name:K,type:_,date:A,path:z,created:G.birthtime})}}if(X.sort((W,H)=>H.created-W.created),X.length===0){console.log(F.yellow("No express projects found matching the criteria."));return}console.log(F.blue(`
16
16
  Express Projects:`));let q=(await import("./index.844kkj93.js")).default,Y=["NAME","TYPE","DATE","PATH"],J=q.createTable(Y,{chars:{mid:"","mid-mid":"","left-mid":"","right-mid":""}});for(let W of X){let H=W.path;if(H.startsWith(p8.homedir()))H="~"+H.substring(p8.homedir().length);J.push([F.white(W.name),W.type==="fnet"?F.cyan(W.type):W.type==="fnode"?F.green(W.type):W.type,W.date,H])}console.log(J.toString()),console.log(F.blue(`
17
- Total: ${X.length} projects`))}catch(Z){console.error(F.red(`Error listing express projects: ${Z.message}`)),process.exit(1)}}async function G1(Q){try{if(!N.existsSync(l)){console.log(F.yellow("No express projects found."));return}let Z;if(Q.latest){if(Z=await n8(),!Z){console.log(F.yellow("No express projects found."));return}}else if(Q.projectName){if(Z=await r8(Q.projectName),!Z){console.log(F.yellow(`Project "${Q.projectName}" not found.`));return}}else{let X=await s8();if(!X){console.log(F.yellow("No project selected."));return}Z=P.join(l,X)}await N7(Z)}catch(Z){console.error(F.red(`Error opening express project: ${Z.message}`)),process.exit(1)}}async function U1(Q){try{let Z=process.cwd(),X=Z.includes(l),q;if(X)q=Z,console.log(F.blue(`Using current express project: ${P.basename(q)}`));else if(Q.latest){if(q=await n8(),!q){console.log(F.yellow("No express projects found."));return}}else if(Q.projectName){if(q=await r8(Q.projectName),!q){console.log(F.yellow(`Project "${Q.projectName}" not found.`));return}}else{let W=await s8();if(!W){console.log(F.yellow("No project selected."));return}q=P.join(l,W)}let Y=Q.destination;if(!Y)Y=(await j0({type:"input",name:"destination",message:"Enter destination directory:",initial:P.join(process.cwd(),P.basename(q))})).destination;if(Y.startsWith("~"))Y=P.join(p8.homedir(),Y.slice(1));if(Y=P.resolve(Y),Y.startsWith(q+P.sep)||Y===q){console.log(F.red("Destination cannot be inside the source directory."));return}if(N.existsSync(Y)){if(!N.statSync(Y).isDirectory()){console.log(F.red(`Destination "${Y}" is not a directory.`));return}if(N.readdirSync(Y).length>0){if(!(await j0({type:"confirm",name:"overwrite",message:`Destination "${Y}" is not empty. Continue anyway?`,initial:!1})).overwrite){console.log(F.yellow("Project move cancelled."));return}}}else N.mkdirSync(Y,{recursive:!0});if(console.log(F.blue(`Moving project from ${q} to ${Y}...`)),_Z(q,Y),console.log(F.green(`
18
- Project moved successfully to ${Y}`)),(await j0({type:"confirm",name:"deleteOriginal",message:"Delete the original express project?",initial:!1})).deleteOriginal)N.rmSync(q,{recursive:!0,force:!0}),console.log(F.green("Original project deleted."));await N7(Y)}catch(Z){console.error(F.red(`Error moving express project: ${Z.message}`)),process.exit(1)}}async function n8(){let Q=N.readdirSync(l).filter((W)=>/^\d{8}$/.test(W)).sort((W,H)=>H.localeCompare(W));if(Q.length===0)return null;let Z=Q[0],X=P.join(l,Z),q=N.readdirSync(X);if(q.length===0)return null;let Y=null,J=0;for(let W of q){let H=P.join(X,W),V=N.statSync(H);if(V.birthtimeMs>J)J=V.birthtimeMs,Y=H}return Y}async function r8(Q){let Z=N.readdirSync(l).filter((X)=>/^\d{8}$/.test(X)).sort((X,q)=>q.localeCompare(X));for(let X of Z){let q=P.join(l,X),Y=N.readdirSync(q);if(Y.includes(Q))return P.join(q,Q);let J=Y.filter((W)=>W.includes(Q));if(J.length>0)if(J.length===1)return P.join(q,J[0]);else{let W=J.map((V)=>({name:P.join(q,V),value:P.join(q,V),message:`${V} (${X})`})),H=await S7.promptForSelection({items:W,message:`Multiple projects match "${Q}". Please select one:`,nameField:"message",valueField:"value",allowAbort:!0});if(H===null)return console.log(F.yellow("Operation cancelled.")),null;return H}}return null}async function s8(){let Q=[],Z=N.readdirSync(l).filter((q)=>/^\d{8}$/.test(q)).sort((q,Y)=>Y.localeCompare(q));for(let q of Z){let Y=P.join(l,q),J=N.readdirSync(Y);for(let W of J){let H=P.join(Y,W),V=N.statSync(H),K=`${q}/${W}`;Q.push({name:K,value:K,created:V.birthtime})}}if(Q.sort((q,Y)=>Y.created-q.created),Q.length===0)return null;let X=await S7.promptForSelection({items:Q,message:"Select a project:",nameField:"value",valueField:"value",allowAbort:!0});if(X===null)return console.log(F.yellow("Operation cancelled.")),null;return X}async function $1(Q){try{if((await j0({type:"confirm",name:"openIDE",message:"Would you like to open the project in an IDE?",initial:!0})).openIDE)await N7(Q)}catch(Z){console.error(F.red(`Error opening IDE: ${Z.message}`))}}async function N7(Q){let Z=await VZ("code --version"),X=await VZ("code-insiders --version"),q=null;if(Z&&X)q=(await j0({type:"select",name:"ide",message:"Which IDE would you like to use?",choices:[{name:"Visual Studio Code",value:"code"},{name:"Visual Studio Code Insiders",value:"code-insiders"}]})).ide;else if(Z)q="code";else if(X)q="code-insiders";else{console.log(F.yellow("No supported IDE found. Please open the project manually.")),console.log(F.blue(`Project path: ${Q}`));return}console.log(F.blue(`Opening project in ${q}...`)),console.log(F.blue(`Project path: ${Q}`));let Y=a8(q,[Q],{stdio:"inherit",shell:!0});return new Promise((J,W)=>{Y.on("close",(H)=>{if(H===0)console.log(F.green(`Project opened in ${q}.`)),J();else console.error(F.red(`Failed to open project in ${q}.`)),W(Error(`Process exited with code ${H}`))})})}async function VZ(Q){return new Promise((Z)=>{a8(Q,{shell:!0,stdio:"ignore"}).on("close",(q)=>{Z(q===0)})})}function _Z(Q,Z){if(!N.existsSync(Z))N.mkdirSync(Z,{recursive:!0});let X=N.readdirSync(Q,{withFileTypes:!0});for(let q of X){let Y=P.join(Q,q.name),J=P.join(Z,q.name);if(q.isDirectory()){if(q.name===".git"||q.name===".workspace")continue;_Z(Y,J)}else N.copyFileSync(Y,J)}}async function O1(Q){try{if(!N.existsSync(l)){console.log(F.yellow("No express projects found."));return}let Z;if(Q.latest){if(Z=await n8(),!Z){console.log(F.yellow("No express projects found."));return}}else if(Q.projectName){if(Z=await r8(Q.projectName),!Z){console.log(F.yellow(`Project "${Q.projectName}" not found.`));return}}else{let q=await s8();if(!q){console.log(F.yellow("No project selected."));return}Z=P.join(l,q)}let X=P.basename(Z);if(!Q.yes){if(!(await j0({type:"confirm",name:"confirm",message:`Are you sure you want to remove project "${X}"?`,initial:!1})).confirm){console.log(F.yellow("Project removal cancelled."));return}}console.log(F.blue(`Removing project "${X}"...`)),N.rmSync(Z,{recursive:!0,force:!0}),console.log(F.green(`Project "${X}" removed successfully.`))}catch(Z){console.error(F.red(`Error removing express project: ${Z.message}`)),process.exit(1)}}async function M1(Q){try{if(!N.existsSync(l)){console.log(F.yellow("No express projects found."));return}let Z;if(Q.latest){if(Z=await n8(),!Z){console.log(F.yellow("No express projects found."));return}}else if(Q.projectName){if(Z=await r8(Q.projectName),!Z){console.log(F.yellow(`Project "${Q.projectName}" not found.`));return}}else{let Y=await s8();if(!Y){console.log(F.yellow("No project selected."));return}Z=P.join(l,Y)}console.log(F.blue(`Entering project directory: ${Z}`)),console.log(F.yellow(`
17
+ Total: ${X.length} projects`))}catch(Z){console.error(F.red(`Error listing express projects: ${Z.message}`)),process.exit(1)}}async function G1(Q){try{if(!N.existsSync(l)){console.log(F.yellow("No express projects found."));return}let Z;if(Q.latest){if(Z=await n8(),!Z){console.log(F.yellow("No express projects found."));return}}else if(Q.projectName){if(Z=await r8(Q.projectName),!Z){console.log(F.yellow(`Project "${Q.projectName}" not found.`));return}}else{let X=await s8();if(!X){console.log(F.yellow("No project selected."));return}Z=P.join(l,X)}await N7(Z)}catch(Z){console.error(F.red(`Error opening express project: ${Z.message}`)),process.exit(1)}}async function U1(Q){try{let Z=process.cwd(),X=Z.includes(l),q;if(X)q=Z,console.log(F.blue(`Using current express project: ${P.basename(q)}`));else if(Q.latest){if(q=await n8(),!q){console.log(F.yellow("No express projects found."));return}}else if(Q.projectName){if(q=await r8(Q.projectName),!q){console.log(F.yellow(`Project "${Q.projectName}" not found.`));return}}else{let W=await s8();if(!W){console.log(F.yellow("No project selected."));return}q=P.join(l,W)}let Y=Q.destination;if(!Y)Y=(await j0({type:"input",name:"destination",message:"Enter destination directory:",initial:P.join(process.cwd(),P.basename(q))})).destination;if(Y.startsWith("~"))Y=P.join(p8.homedir(),Y.slice(1));if(Y=P.resolve(Y),Y.startsWith(q+P.sep)||Y===q){console.log(F.red("Destination cannot be inside the source directory."));return}if(N.existsSync(Y)){if(!N.statSync(Y).isDirectory()){console.log(F.red(`Destination "${Y}" is not a directory.`));return}if(N.readdirSync(Y).length>0){if(!(await j0({type:"confirm",name:"overwrite",message:`Destination "${Y}" is not empty. Continue anyway?`,initial:!1})).overwrite){console.log(F.yellow("Project move cancelled."));return}}}else N.mkdirSync(Y,{recursive:!0});if(console.log(F.blue(`Moving project from ${q} to ${Y}...`)),GZ(q,Y),console.log(F.green(`
18
+ Project moved successfully to ${Y}`)),(await j0({type:"confirm",name:"deleteOriginal",message:"Delete the original express project?",initial:!1})).deleteOriginal)N.rmSync(q,{recursive:!0,force:!0}),console.log(F.green("Original project deleted."));await N7(Y)}catch(Z){console.error(F.red(`Error moving express project: ${Z.message}`)),process.exit(1)}}async function n8(){let Q=N.readdirSync(l).filter((W)=>/^\d{8}$/.test(W)).sort((W,H)=>H.localeCompare(W));if(Q.length===0)return null;let Z=Q[0],X=P.join(l,Z),q=N.readdirSync(X);if(q.length===0)return null;let Y=null,J=0;for(let W of q){let H=P.join(X,W),V=N.statSync(H);if(V.birthtimeMs>J)J=V.birthtimeMs,Y=H}return Y}async function r8(Q){let Z=N.readdirSync(l).filter((X)=>/^\d{8}$/.test(X)).sort((X,q)=>q.localeCompare(X));for(let X of Z){let q=P.join(l,X),Y=N.readdirSync(q);if(Y.includes(Q))return P.join(q,Q);let J=Y.filter((W)=>W.includes(Q));if(J.length>0)if(J.length===1)return P.join(q,J[0]);else{let W=J.map((V)=>({name:P.join(q,V),value:P.join(q,V),message:`${V} (${X})`})),H=await S7.promptForSelection({items:W,message:`Multiple projects match "${Q}". Please select one:`,nameField:"message",valueField:"value",allowAbort:!0});if(H===null)return console.log(F.yellow("Operation cancelled.")),null;return H}}return null}async function s8(){let Q=[],Z=N.readdirSync(l).filter((q)=>/^\d{8}$/.test(q)).sort((q,Y)=>Y.localeCompare(q));for(let q of Z){let Y=P.join(l,q),J=N.readdirSync(Y);for(let W of J){let H=P.join(Y,W),V=N.statSync(H),K=`${q}/${W}`;Q.push({name:K,value:K,created:V.birthtime})}}if(Q.sort((q,Y)=>Y.created-q.created),Q.length===0)return null;let X=await S7.promptForSelection({items:Q,message:"Select a project:",nameField:"value",valueField:"value",allowAbort:!0});if(X===null)return console.log(F.yellow("Operation cancelled.")),null;return X}async function $1(Q){try{if((await j0({type:"confirm",name:"openIDE",message:"Would you like to open the project in an IDE?",initial:!0})).openIDE)await N7(Q)}catch(Z){console.error(F.red(`Error opening IDE: ${Z.message}`))}}async function N7(Q){let Z=await _Z("code --version"),X=await _Z("code-insiders --version"),q=null;if(Z&&X)q=(await j0({type:"select",name:"ide",message:"Which IDE would you like to use?",choices:[{name:"Visual Studio Code",value:"code"},{name:"Visual Studio Code Insiders",value:"code-insiders"}]})).ide;else if(Z)q="code";else if(X)q="code-insiders";else{console.log(F.yellow("No supported IDE found. Please open the project manually.")),console.log(F.blue(`Project path: ${Q}`));return}console.log(F.blue(`Opening project in ${q}...`)),console.log(F.blue(`Project path: ${Q}`));let Y=a8(q,[Q],{stdio:"inherit",shell:!0});return new Promise((J,W)=>{Y.on("close",(H)=>{if(H===0)console.log(F.green(`Project opened in ${q}.`)),J();else console.error(F.red(`Failed to open project in ${q}.`)),W(Error(`Process exited with code ${H}`))})})}async function _Z(Q){return new Promise((Z)=>{a8(Q,{shell:!0,stdio:"ignore"}).on("close",(q)=>{Z(q===0)})})}function GZ(Q,Z){if(!N.existsSync(Z))N.mkdirSync(Z,{recursive:!0});let X=N.readdirSync(Q,{withFileTypes:!0});for(let q of X){let Y=P.join(Q,q.name),J=P.join(Z,q.name);if(q.isDirectory()){if(q.name===".git"||q.name===".workspace")continue;GZ(Y,J)}else N.copyFileSync(Y,J)}}async function O1(Q){try{if(!N.existsSync(l)){console.log(F.yellow("No express projects found."));return}let Z;if(Q.latest){if(Z=await n8(),!Z){console.log(F.yellow("No express projects found."));return}}else if(Q.projectName){if(Z=await r8(Q.projectName),!Z){console.log(F.yellow(`Project "${Q.projectName}" not found.`));return}}else{let q=await s8();if(!q){console.log(F.yellow("No project selected."));return}Z=P.join(l,q)}let X=P.basename(Z);if(!Q.yes){if(!(await j0({type:"confirm",name:"confirm",message:`Are you sure you want to remove project "${X}"?`,initial:!1})).confirm){console.log(F.yellow("Project removal cancelled."));return}}console.log(F.blue(`Removing project "${X}"...`)),N.rmSync(Z,{recursive:!0,force:!0}),console.log(F.green(`Project "${X}" removed successfully.`))}catch(Z){console.error(F.red(`Error removing express project: ${Z.message}`)),process.exit(1)}}async function M1(Q){try{if(!N.existsSync(l)){console.log(F.yellow("No express projects found."));return}let Z;if(Q.latest){if(Z=await n8(),!Z){console.log(F.yellow("No express projects found."));return}}else if(Q.projectName){if(Z=await r8(Q.projectName),!Z){console.log(F.yellow(`Project "${Q.projectName}" not found.`));return}}else{let Y=await s8();if(!Y){console.log(F.yellow("No project selected."));return}Z=P.join(l,Y)}console.log(F.blue(`Entering project directory: ${Z}`)),console.log(F.yellow(`
19
19
  Opening a new shell in the project directory...`));let X=process.env.SHELL||"/bin/bash",q=a8(X,[],{stdio:"inherit",cwd:Z,shell:!0});return new Promise((Y)=>{q.on("close",()=>{console.log(F.green(`
20
- Returned from project directory.`)),Y()})})}catch(Z){console.error(F.red(`Error entering express project directory: ${Z.message}`)),process.exit(1)}}import GZ from"node:path";import{fileURLToPath as L1}from"node:url";import A1 from"node:fs";import o8 from"node:path";import{fileURLToPath as R1}from"node:url";var B1=o8.dirname(R1(import.meta.url));function I1({baseDir:Q}){Q=Q||B1;let Z=Q;while(Z!==o8.parse(Z).root){let X=o8.join(Z,"node_modules");if(A1.existsSync(X))return X;Z=o8.dirname(Z)}return null}var zZ=I1;var F1=GZ.dirname(L1(import.meta.url));function UZ(){let Q=zZ({baseDir:F1}),Z=process.platform==="win32"?";":":";if(Q)process.env.PATH=`${GZ.join(Q,"/.bin")}${Z}${process.env.PATH}`}var c=new j1;UZ();async function C1(){try{let Q=T1(process.argv.slice(2)).scriptName("fnet").usage("Usage: fnet <command> [options]").command(m7).command(l7).command(ZZ).command(XZ).command(qZ).command(YZ).command(HZ).command("express","Create and manage express projects",KZ);Q=o(Q,{bin:"npm",createContext:b,processManager:c}),Q=o(Q,{bin:"node",createContext:b,processManager:c}),Q=o(Q,{bin:"bun",createContext:b,processManager:c}),Q=o(Q,{name:"serve",bin:"bun",preArgs:["run","serve","--"],createContext:b,processManager:c}),Q=o(Q,{name:"watch",bin:"bun",preArgs:["run","watch","--"],createContext:b,processManager:c}),Q=o(Q,{name:"app",bin:"bun",preArgs:["run","app","--"],createContext:b,processManager:c}),Q=o(Q,{name:"cli",bin:"bun",preArgs:["run","cli","--"],createContext:b,processManager:c}),Q=o(Q,{name:"cli:dev",bin:"bun",preArgs:["run","cli:dev","--"],createContext:b,processManager:c}),Q=o(Q,{name:"cli:compile",bin:"bun",preArgs:["run","cli:compile","--"],createContext:b,processManager:c}),Q=o(Q,{name:"cli:compile:dev",bin:"bun",preArgs:["run","cli:compile:dev","--"],createContext:b,processManager:c}),Q=o(Q,{name:"cli:install",bin:"bun",preArgs:["run","cli:install","--"],createContext:b,processManager:c}),Q=o(Q,{name:"compile",bin:"bun",preArgs:["run","compile","--"],createContext:b,processManager:c}),Q=f7(Q,{name:"install",createContext:b,processManager:c}),Q=o(Q,{bin:"npx",createContext:b,processManager:c}),Q=o(Q,{bin:"cdk",createContext:b,processManager:c}),Q=o(Q,{bin:"aws",createContext:b,processManager:c}),Q=x7(Q,{name:"with",createContext:b,processManager:c}),Q=u7(Q,{name:"run",projectType:"fnet",processManager:c}),Q.demandCommand(1,"You need at least one command before moving on").help().version("1.12.0").parse()}catch(Q){console.error($Z.red(`Fatal error: ${Q.message}`)),await c.dispose(),process.exit(1)}}C1().catch(async(Q)=>{console.error($Z.red(`Fatal error: ${Q.message}`)),await c.dispose(),process.exit(1)});
20
+ Returned from project directory.`)),Y()})})}catch(Z){console.error(F.red(`Error entering express project directory: ${Z.message}`)),process.exit(1)}}import $Z from"node:path";import{fileURLToPath as L1}from"node:url";import A1 from"node:fs";import o8 from"node:path";import{fileURLToPath as R1}from"node:url";var B1=o8.dirname(R1(import.meta.url));function I1({baseDir:Q}){Q=Q||B1;let Z=Q;while(Z!==o8.parse(Z).root){let X=o8.join(Z,"node_modules");if(A1.existsSync(X))return X;Z=o8.dirname(Z)}return null}var UZ=I1;var F1=$Z.dirname(L1(import.meta.url));function OZ(){let Q=UZ({baseDir:F1}),Z=process.platform==="win32"?";":":";if(Q)process.env.PATH=`${$Z.join(Q,"/.bin")}${Z}${process.env.PATH}`}var c=new j1;OZ();async function C1(){try{let Q=T1(process.argv.slice(2)).scriptName("fnet").usage("Usage: fnet <command> [options]").command(m7).command(l7).command(qZ).command(YZ).command(JZ).command(HZ).command(VZ).command("express","Create and manage express projects",zZ);Q=o(Q,{bin:"npm",createContext:b,processManager:c}),Q=o(Q,{bin:"node",createContext:b,processManager:c}),Q=o(Q,{bin:"bun",createContext:b,processManager:c}),Q=o(Q,{name:"serve",bin:"bun",preArgs:["run","serve","--"],createContext:b,processManager:c}),Q=o(Q,{name:"watch",bin:"bun",preArgs:["run","watch","--"],createContext:b,processManager:c}),Q=o(Q,{name:"app",bin:"bun",preArgs:["run","app","--"],createContext:b,processManager:c}),Q=o(Q,{name:"cli",bin:"bun",preArgs:["run","cli","--"],createContext:b,processManager:c}),Q=o(Q,{name:"cli:dev",bin:"bun",preArgs:["run","cli:dev","--"],createContext:b,processManager:c}),Q=o(Q,{name:"cli:compile",bin:"bun",preArgs:["run","cli:compile","--"],createContext:b,processManager:c}),Q=o(Q,{name:"cli:compile:dev",bin:"bun",preArgs:["run","cli:compile:dev","--"],createContext:b,processManager:c}),Q=o(Q,{name:"cli:install",bin:"bun",preArgs:["run","cli:install","--"],createContext:b,processManager:c}),Q=o(Q,{name:"compile",bin:"bun",preArgs:["run","compile","--"],createContext:b,processManager:c}),Q=f7(Q,{name:"install",createContext:b,processManager:c}),Q=o(Q,{bin:"npx",createContext:b,processManager:c}),Q=o(Q,{bin:"cdk",createContext:b,processManager:c}),Q=o(Q,{bin:"aws",createContext:b,processManager:c}),Q=x7(Q,{name:"with",createContext:b,processManager:c}),Q=u7(Q,{name:"run",projectType:"fnet",processManager:c}),Q.demandCommand(1,"You need at least one command before moving on").help().version("1.14.0").parse()}catch(Q){console.error(MZ.red(`Fatal error: ${Q.message}`)),await c.dispose(),process.exit(1)}}C1().catch(async(Q)=>{console.error(MZ.red(`Fatal error: ${Q.message}`)),await c.dispose(),process.exit(1)});