@kumori/kdsl 0.0.15 → 0.0.16

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 (92) hide show
  1. package/dist/build/deployment_spec.d.ts +1133 -19642
  2. package/dist/build/deployment_spec.js +14 -13
  3. package/dist/build/deployment_spec.js.map +1 -1
  4. package/dist/build/helpers/builtin.js +7 -9
  5. package/dist/build/helpers/builtin.js.map +1 -1
  6. package/dist/build/helpers/component.d.ts +2 -2
  7. package/dist/build/helpers/component.js +28 -28
  8. package/dist/build/helpers/component.js.map +1 -1
  9. package/dist/build/helpers/connector.js +4 -5
  10. package/dist/build/helpers/connector.js.map +1 -1
  11. package/dist/build/helpers/deployment.d.ts +96 -96
  12. package/dist/build/helpers/deployment.js +8 -9
  13. package/dist/build/helpers/deployment.js.map +1 -1
  14. package/dist/build/helpers/resource.d.ts +4 -4
  15. package/dist/build/helpers/service.d.ts +1 -1
  16. package/dist/build/helpers/service.js +29 -32
  17. package/dist/build/helpers/service.js.map +1 -1
  18. package/dist/build/helpers/utils.d.ts +8 -0
  19. package/dist/build/helpers/utils.js +23 -1
  20. package/dist/build/helpers/utils.js.map +1 -1
  21. package/dist/build/main.js +51 -2
  22. package/dist/build/main.js.map +1 -1
  23. package/dist/build/solution.js +2 -3
  24. package/dist/build/solution.js.map +1 -1
  25. package/dist/check/main.js +1 -1
  26. package/dist/check/main.js.map +1 -1
  27. package/dist/deployment/gen/deployment-template.kumori +33 -0
  28. package/dist/deployment/gen/main.d.ts +15 -0
  29. package/dist/deployment/gen/main.js +158 -0
  30. package/dist/deployment/gen/main.js.map +1 -0
  31. package/dist/deployment/gen/types.d.ts +27 -0
  32. package/dist/deployment/gen/types.js +2 -0
  33. package/dist/deployment/gen/types.js.map +1 -0
  34. package/dist/deployment/main.d.ts +8 -0
  35. package/dist/deployment/main.js +17 -0
  36. package/dist/deployment/main.js.map +1 -0
  37. package/dist/index/create/main.js +38 -16
  38. package/dist/index/create/main.js.map +1 -1
  39. package/dist/lib/build.js +42 -28
  40. package/dist/lib/build.js.map +1 -1
  41. package/dist/lib/check.js +45 -15
  42. package/dist/lib/check.js.map +1 -1
  43. package/dist/lib/clean.js +39 -1
  44. package/dist/lib/deployment.d.ts +35 -0
  45. package/dist/lib/deployment.js +31 -0
  46. package/dist/lib/deployment.js.map +1 -0
  47. package/dist/lib/index-cmd.js +60 -57
  48. package/dist/lib/index-cmd.js.map +1 -1
  49. package/dist/lib/index.d.ts +2 -0
  50. package/dist/lib/index.js +54 -117
  51. package/dist/lib/index.js.map +1 -1
  52. package/dist/lib/logger.js +1 -1
  53. package/dist/lib/logger.js.map +1 -1
  54. package/dist/lib/mod.js +144 -70
  55. package/dist/lib/mod.js.map +1 -1
  56. package/dist/lib/registry.d.ts +4 -4
  57. package/dist/lib/registry.js +67 -1
  58. package/dist/lib/registry.js.map +1 -1
  59. package/dist/main.js +2 -0
  60. package/dist/main.js.map +1 -1
  61. package/dist/mod/dependency/main.js +17 -10
  62. package/dist/mod/dependency/main.js.map +1 -1
  63. package/dist/mod/download/functions.js +5 -5
  64. package/dist/mod/download/functions.js.map +1 -1
  65. package/dist/mod/download/main.js +12 -2
  66. package/dist/mod/download/main.js.map +1 -1
  67. package/dist/mod/init/main.js +1 -1
  68. package/dist/mod/init/main.js.map +1 -1
  69. package/dist/mod/jsonschema/gen/main.js +14 -7
  70. package/dist/mod/jsonschema/gen/main.js.map +1 -1
  71. package/dist/mod/jsonschema/get/main.js +10 -2
  72. package/dist/mod/jsonschema/get/main.js.map +1 -1
  73. package/dist/mod/update/main.js +3 -4
  74. package/dist/mod/update/main.js.map +1 -1
  75. package/dist/registry/add.d.ts +1 -1
  76. package/dist/registry/add.js +12 -7
  77. package/dist/registry/add.js.map +1 -1
  78. package/dist/util/err-format.js +1 -2
  79. package/dist/util/err-format.js.map +1 -1
  80. package/dist/version.js +1 -2
  81. package/dist/version.js.map +1 -1
  82. package/out/deployment/gen/deployment-template.kumori +33 -0
  83. package/out/deployment-template.kumori +33 -0
  84. package/out/main.cjs +378 -209
  85. package/package.json +20 -14
  86. package/out/lib/build.cjs +0 -29
  87. package/out/lib/check.cjs +0 -16
  88. package/out/lib/clean.cjs +0 -2
  89. package/out/lib/index-cmd.cjs +0 -58
  90. package/out/lib/index.cjs +0 -118
  91. package/out/lib/mod.cjs +0 -71
  92. package/out/lib/registry.cjs +0 -2
package/out/lib/index.cjs DELETED
@@ -1,118 +0,0 @@
1
- const __importMetaUrl = require('url').pathToFileURL(__filename).href;
2
- "use strict";var $u=Object.create;var Ge=Object.defineProperty,Iu=Object.defineProperties,Nu=Object.getOwnPropertyDescriptor,_u=Object.getOwnPropertyDescriptors,ju=Object.getOwnPropertyNames,jr=Object.getOwnPropertySymbols,Uu=Object.getPrototypeOf,Kr=Object.prototype.hasOwnProperty,Ku=Object.prototype.propertyIsEnumerable;var Ur=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e);var Gt=(e,t,r)=>t in e?Ge(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,F=(e,t)=>{for(var r in t||(t={}))Kr.call(t,r)&&Gt(e,r,t[r]);if(jr)for(var r of jr(t))Ku.call(t,r)&&Gt(e,r,t[r]);return e},L=(e,t)=>Iu(e,_u(t));var S=(e,t)=>()=>(e&&(t=e(e=0)),t);var zt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ae=(e,t)=>{for(var r in t)Ge(e,r,{get:t[r],enumerable:!0})},Vr=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of ju(t))!Kr.call(e,n)&&n!==r&&Ge(e,n,{get:()=>t[n],enumerable:!(o=Nu(t,n))||o.enumerable});return e};var k=(e,t,r)=>(r=e!=null?$u(Uu(e)):{},Vr(t||!e||!e.__esModule?Ge(r,"default",{value:e,enumerable:!0}):r,e)),Vu=e=>Vr(Ge({},"__esModule",{value:!0}),e);var x=(e,t,r)=>(Gt(e,typeof t!="symbol"?t+"":t,r),r),Wt=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)};var v=(e,t,r)=>(Wt(e,t,"read from private field"),r?r.call(e):t.get(e)),K=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},ie=(e,t,r,o)=>(Wt(e,t,"write to private field"),o?o.call(e,r):t.set(e,r),r);var te=(e,t,r)=>(Wt(e,t,"access private method"),r);var Jr=(e,t,r)=>{if(t!=null){if(typeof t!="object"&&typeof t!="function")throw TypeError("Object expected");var o;if(r&&(o=t[Ur("asyncDispose")]),o===void 0&&(o=t[Ur("dispose")]),typeof o!="function")throw TypeError("Object not disposable");e.push([r,o,t])}else r&&e.push([r]);return t},qr=(e,t,r)=>{var o=typeof SuppressedError=="function"?SuppressedError:function(i,s,a,c){return c=Error(a),c.name="SuppressedError",c.error=i,c.suppressed=s,c},n=i=>t=r?new o(i,t,"An error was suppressed during disposal"):(r=!0,i),u=i=>{for(;i=e.pop();)try{var s=i[1]&&i[1].call(i[2]);if(i[0])return Promise.resolve(s).then(u,a=>(n(a),u()))}catch(a){n(a)}if(r)throw t};return u()};function Re(e,t){if(Fo.Result.isErr(t)){for(let r of t.err)e.error(r);process.exit(1)}return t.value}var Fo,ct=S(()=>{"use strict";Fo=require("@kumori/kdsl-lsp/util/result.js")});async function Bo(e){let t=new Map;return await xo(e,t),t}async function bo(e,t){let r=new Map;console.log(t);for(let o of t){let n=(0,or.ParseQuery)(o);if(se.Maybe.isNone(n)){let a=`invalid download query '${o}': failed to parse`;r.set(o,L(F({},(0,R.Err)(a)),{required:!0}));continue}let u=(0,tr.Version)(n.value.Version);if(se.Maybe.isNone(u)){let a=`invalid download query '${o}': invalid version specifier '${n.value.Version}': failed to parse`;r.set(o,L(F({},(0,R.Err)(a)),{required:!0}));continue}if(!tr.Version.isSemVer(u.value)){let a=`invalid download query '${o}': invalid version specifier '${n.value.Version}': invalid semver`;r.set(o,L(F({},(0,R.Err)(a)),{required:!0}));continue}let i=`${n.value.Scheme}://${n.value.Location}`,s=n.value.Version;await So(e,i,s,r)}return r}async function xo(e,t){var o;let r=(0,go.ListDependencies)(e.Current);for(let n of r.keys()){let u=r.get(n);if(u.length<1)continue;let{target:i,version:s}=u[0];await So(e,i,s,t);let a=u.reduce((D,l)=>D||l.interface===void 0,!1),c=(0,ir.DependencyId)(i,s);(0,dt.default)(t.has(c)),(o=t.get(c)).required||(o.required=a)}}async function So(e,t,r,o){let n=(0,ir.DependencyId)(t,r);if(o.has(n))return;let u=await Hu(e,t,r);if(o.set(n,L(F({},u),{required:!1})),R.Result.isErr(u))return;let i=await(0,nr.LocateDependency)(e,t,r);(0,dt.default)(se.Maybe.isSome(i));let s=await Co.ModuleContext.Move(e,e.FS,i.value.Root);(0,dt.default)(R.Result.isOk(s)),e=F(F({},e),s.value),await xo(e,o)}async function Hu(e,t,r){var c=[];try{let o=await(0,nr.LocateDependency)(e,t,r);if(R.Result.isOk(o))return(0,R.Ok)(se.None);let n=Jr(c,await(0,Eo.MkdirTemp)(),!0);let u=await ur(e,t,r,n.Path);if(R.Result.isErr(u))return(0,R.Err)(`failed to fetch ${t}@${r}: ${u.err}`);let i=await(0,yo.ValidateChecksum)(e.SumDB,mt.URI.file(n.Path),e,t,u.value);if(R.Result.isErr(i))return i;let s=`${t}@${r}`;let a=mt.UriUtils.joinPath(e.Locations.Cache(),s);await(0,Me.mkdir)(a.fsPath,{recursive:!0});await(0,Me.rm)(a.fsPath,{recursive:!0,force:!0});await(0,Me.rename)(n.Path,a.fsPath);return(0,R.Ok)((0,se.Some)(s))}catch(D){var l=D,d=!0}finally{var p=qr(c,l,d);p&&await p}}async function ur(e,t,r,o){let n=`${t}@${r}`,u=(0,or.ParseQuery)(n);if(se.Maybe.isNone(u))return(0,R.Err)(`failed to resolve ${n}: invalid download query`);let i=(0,rr.SemVer)(u.value.Version),s=new vo.URL(`${u.value.Scheme}://${u.value.Location}`),a=(0,wo.ForURL)(e.Remotes,s);if(R.Result.isErr(a))return(0,R.Err)(`failed to resolve ${n}': invalid remote ${s}: ${a.err}`);let c=await a.value.Versions(s);if(R.Result.isErr(c))return(0,R.Err)(`failed to read ${s}: ${c.err}`);let D=i,l=c.value.filter(f=>rr.SemVer.Compare(f,D)===0);if(l.length===0)return(0,R.Err)(`no remote matches for ${s}@v${i}`);if(l.length>1){let f=`[${l.map(String).join(", ")}]`;return(0,R.Err)(`ambiguous match for ${s}@v${i}: found ${f}`)}let d=l[0],p=await a.value.Get(s,d.toString(),o);return R.Result.isErr(p)?(0,R.Err)(`failed to fetch ${s}@${i.toString()}: ${p.err}`):(0,R.Ok)(d)}var or,se,R,tr,go,dt,nr,Co,Eo,yo,mt,Me,wo,rr,vo,ir,sr=S(()=>{"use strict";or=require("@kumori/kdsl-lsp/module/query.js"),se=require("@kumori/kdsl-lsp/util/maybe.js"),R=require("@kumori/kdsl-lsp/util/result.js"),tr=require("@kumori/kdsl-lsp/module/version.js"),go=require("@kumori/kdsl-lsp/module/dependency/list.js"),dt=k(require("assert"),1),nr=require("@kumori/kdsl-lsp/module/dependency/locate.js"),Co=require("@kumori/kdsl-lsp/module/context.js"),Eo=require("@kumori/kdsl-lsp/util/tmp.js"),yo=require("@kumori/kdsl-lsp/module/integrity/validate.js"),mt=require("langium"),Me=require("fs/promises"),wo=require("@kumori/kdsl-lsp/module/remote/factory.js"),rr=require("@kumori/kdsl-lsp/util/semver.js"),vo=require("@kumori/kdsl-lsp/util/url.js"),ir=require("@kumori/kdsl-lsp/module/dependency/id.js")});var No={};ae(No,{Action:()=>Io,Description:()=>$o,Download:()=>ge,Register:()=>To,default:()=>Qu});function To(e,t){return e.command("download").alias("dl").summary(Yu).argument("[module...]").option("-q, --quiet","do not log warnings").description($o).helpOption(!0).action(Io(t))}function Io(e){let t=(0,ko.createKumoriServices)(Mo.NodeFileSystem).Kumori,r=o=>Re(e,o);return async(o,n)=>{await new Po.RegistryManager().ensureIndexes(),r(await ge(e,t,process.cwd(),o,n))}}var Lo,Ao,ar,Oo,Y,Ro,Mo,ko,Po,Qu,Yu,$o,ge,ft=S(()=>{"use strict";Lo=require("@kumori/kdsl-lsp/module/context.js"),Ao=require("@kumori/kdsl-lsp/module/integrity/sumdb.js"),ar=require("@kumori/kdsl-lsp/module/remote/factory.js"),Oo=require("@kumori/kdsl-lsp/util/maybe.js"),Y=require("@kumori/kdsl-lsp/util/result.js"),Ro=require("langium"),Mo=require("langium/node"),ko=require("@kumori/kdsl-lsp/language/kumori.js");ct();sr();Po=require("@kumori/kdsl-lsp/module/registry/manager.js"),Qu={Register:To};Yu="download modules to local cache",$o=`
3
- Downloads the specified modules, which can be module patterns selecting depen-
4
- dencies of the current module or module queries of the form path@version.
5
-
6
- With no arguments, download applies to the modules needed to build the packages
7
- in the current module.
8
-
9
- The kdsl command will automatically download modules as needed during ordinary
10
- execution. The "kdsl mod download" command is useful mainly for pre-filling the
11
- local cache.
12
-
13
- By default, download writes nothing to standard output. It may print progress
14
- messages and errors to standard error.
15
- `.trim();ge=async(e,t,r,o,n)=>{let u=t.shared.workspace.FileSystemProvider,i=await(0,Lo.ModuleContext)(u,Ro.URI.file(r));if(Y.Result.isErr(i))return(0,Y.Err)([i.err]);let s=await Ao.SumDB.Open(i.value.Locations.Checksum());if(Y.Result.isErr(s))return Y.Result.mapErr(s,l=>[l]);let a;o.length?a=await bo(L(F({},i.value),{FS:u,Remotes:(0,ar.RemoteFetcherFactory)(),SumDB:s.value}),o):a=await Bo(L(F({},i.value),{FS:u,Remotes:(0,ar.RemoteFetcherFactory)(),SumDB:s.value}));let c=[];for(let[l,d]of a){if(Y.Result.isOk(d)){Oo.Maybe.isSome(d.value)&&e.info(`Downloaded dependency ${l}`);continue}d.required?c.push(`${l}: ${d.err}`):n.quiet||(e.warn(`${l}: ${d.err}`),e.warn(`${l}: not required - continuing`))}return Array.from(a.entries()).filter(([,l])=>Y.Result.isErr(l)&&l.required).length>0?(0,Y.Err)(c):(0,Y.Ok)(void 0)}});var zo={};ae(zo,{Action:()=>qo,Check:()=>oe,RawCheck:()=>Go,Register:()=>Jo,default:()=>os});function Jo(e,t){return e.command("check").argument("[directory]","directory containing a Kumori module").description(Xu).summary(Zu).action(qo(t))}function qo(e){return async t=>{await new Vo.RegistryManager().ensureIndexes();let o=(0,_o.createKumoriServices)(jo.NodeFileSystem).Kumori,n=o.shared.workspace.FileSystemProvider,u=s=>Re(e,s),i=u(G.Result.mapErr(await(0,Uo.ModuleContext)(n,ke.URI.file(Ko.default.resolve(t!=null?t:"."))),s=>[s]));u(await oe(e,o,i))}}function es(e,t){return`lexer error: ${ke.UriUtils.relative(process.cwd(),e.uri.fsPath)}:${t.line||1}:${t.column||1}: ${t.message}`}function ts(e,t){return`parser error: ${ke.UriUtils.relative(process.cwd(),e.uri.fsPath)}:${t.token.startLine||1}:${t.token.startColumn||1}: ${t.message}`}function rs(e,t){return`diagnostic error: ${ke.UriUtils.relative(process.cwd(),e.uri.fsPath)}:${t.range.start.line+1}:${t.range.start.character+1}: ${t.message}`}var _o,ke,jo,lr,G,Uo,Ko,Vo,Zu,Xu,oe,Go,os,Pe=S(()=>{"use strict";_o=require("@kumori/kdsl-lsp/language/kumori.js"),ke=require("langium"),jo=require("langium/node"),lr=require("vscode-languageserver"),G=require("@kumori/kdsl-lsp/util/result.js"),Uo=require("@kumori/kdsl-lsp/module/context.js");ft();ct();Ko=k(require("path"),1),Vo=require("@kumori/kdsl-lsp/module/registry/manager.js");Zu="typecheck and validate a module",Xu=`
16
- `.trim();oe=async(e,t,r)=>{let o=r.Current.Root,n=await ge(e,t,o.fsPath,[],{quiet:!0});if(G.Result.isErr(n))return n;let u=await Go(t,r);if(G.Result.isErr(u)){let i=u.err.warnings.concat(u.err.errors);return(0,G.Err)(i)}return(0,G.Ok)(void 0)},Go=async(e,t)=>{let r={errors:[],warnings:[]},o=e.shared.workspace.FileSystemProvider,n=t.Current.Root,u=await G.Result.tryCatchAsync(()=>o.readDirectory(n));if(G.Result.isErr(u)){let c=""+u.err;return u.err instanceof Error&&(c=u.err.message),r.errors.push(`failed to read directory '${n.fsPath}': ${c}`),(0,G.Err)(r)}await e.shared.workspace.WorkspaceManager.initializeWorkspace([{name:"root",uri:n.toString()}]);let s=e.shared.workspace.LangiumDocuments;await e.shared.workspace.DocumentBuilder.build(s.all.toArray(),{validation:!0});for(let c of e.shared.workspace.LangiumDocuments.all){for(let D of c.parseResult.lexerErrors)r.errors.push(es(c,D));for(let D of c.parseResult.parserErrors)r.errors.push(ts(c,D));for(let D of c.diagnostics||[]){let l=rs(c,D);D.severity===lr.DiagnosticSeverity.Error&&r.errors.push(l),D.severity===lr.DiagnosticSeverity.Warning&&r.warnings.push(l)}}return r.errors.length>0?(0,G.Err)(r):(0,G.Ok)(void 0)};os={Register:Jo}});var gn={};ae(gn,{Action:()=>hn,Description:()=>pn,NewModule:()=>Fn,Register:()=>fn,default:()=>ss});function fn(e,t){return e.command("init").summary(as).argument("<name>","module name (e.g., kumori.systems/my-module)").argument("<version>","module version - defaults to 0.0.1").argument("[path]","location to create the module under - defaults to the current directory").argument("[cacheLocation]","location to store cached modules - default to .kumori/mod").description(pn).helpOption(!0).action(hn(t))}function hn(e){return async(...t)=>{await Fn(e,process.cwd(),...t)}}var cn,Et,dn,mn,He,Ct,ss,as,pn,Fn,Cn=S(()=>{"use strict";cn=require("@kumori/kdsl-lsp/util/maybe.js"),Et=require("fs/promises"),dn=require("langium"),mn=require("langium/node"),He=require("@kumori/kdsl-lsp/module/locator.js"),Ct=k(require("path"),1),ss={Register:fn};as="initializes a new kumori module",pn=`
17
- Initializes a new Kumori module, which effectively means to create a new
18
- kumori.mod.json file or overwrite it in case it already exists.
19
- It is required to provide a name and a version for the module and optionally
20
- a location path where the new module is going to be initialized.
21
-
22
- kdsl mod init kumori.systems/my-module
23
-
24
- You could as well provide a custom location for the module's local cache,
25
- where all the dependencies will be downloaded. By default, the cache location
26
- is set to ".kumori/mod" under the module location.
27
-
28
- kdsl mod init kumori.systems/my-module ./my-module
29
-
30
- `.trim();Fn=async(e,t,...[r,o,n,u])=>{let i=mn.NodeFileSystem.fileSystemProvider();n=n!=null?n:t,Ct.default.isAbsolute(n)||(n=Ct.default.join(t,n));let s=await(0,He.LocateModuleManifest)(i,dn.URI.file(n));cn.Maybe.isSome(s)&&s.value.fsPath===n&&(e.error(`error: module ${n} already exists`),process.exit(1));let a={spec:"kumori/module/v1",kumori:"0.0.1",version:o,module:r,cacheLocation:u,requires:[]},c=Ct.default.join(n,He.MOD_FILE);await(0,Et.mkdir)(n,{recursive:!0}),await(0,Et.writeFile)(c,JSON.stringify(a,null,4)),e.info(`creating new ${He.MOD_FILE}: module ${r}`)}});var Ln={};ae(Ln,{Action:()=>xn,Dependency:()=>Sn,Description:()=>Bn,Register:()=>bn,default:()=>Ds});function bn(e,t){return e.command("dependency").alias("dep").argument("<module>","Module URL with @<tag> (e.g. https://github.com/org/repo@v1.2.3)").option("--alias <alias>","Alias for the dependency").option("--headers <module>","Specify a separate location for the headers module").option("--remove","Remove the dependency").option("--download","Download the dependency after adding it").summary(ls).description(Bn).helpOption(!0).showHelpAfterError(!0).action(xn(t))}function xn(e){return async(t,r)=>{await new vn.RegistryManager().ensureIndexes();try{await Sn(e,$e.URI.file(process.cwd()),t,r)}catch(n){throw e.error(`Failed to manage dependency: ${n}`),n}}}var $e,En,yn,Te,wn,yt,wt,mr,vn,ls,Bn,Ds,Sn,An=S(()=>{"use strict";$e=require("langium"),En=require("@kumori/kdsl-lsp/language/kumori.js"),yn=require("langium/node"),Te=require("@kumori/kdsl-lsp/util/result.js"),wn=require("@kumori/kdsl-lsp/module/context.js"),yt=require("fs/promises"),wt=require("@kumori/kdsl-lsp/module/locator.js"),mr=require("@kumori/kdsl-lsp/module/query.js");ft();vn=require("@kumori/kdsl-lsp/module/registry/manager.js"),ls="Add, update, or remove a dependency from the module declaration",Bn=`
31
- Manage dependencies within the current module. It can add, update
32
- or remove dependencies. Optionally, it can attempt to download the dependency after adding it.
33
- Dependencies should resolve to a git repository.
34
-
35
- To add a dependency:
36
- kdsl mod dep github.com/org/repo@v1.0.0
37
-
38
- To add a dependency with an alias:
39
- kdsl mod dep github.com/org/repo@v1.0.0 --alias mydep
40
-
41
- To update a dependency to a new version:
42
- kdsl mod dep github.com/org/repo@v1.2.0
43
-
44
- To remove a dependency:
45
- kdsl mod dep github.com/org/repo --remove
46
-
47
- To add a dependency and download it immediately:
48
- kdsl mod dep github.com/org/repo@v1.0.0 --download
49
- `.trim(),Ds={Register:bn};Sn=async(e,t,r,o)=>{let n=(0,En.createKumoriServices)(yn.NodeFileSystem).Kumori,u=n.shared.workspace.FileSystemProvider,i=await(0,wn.ModuleContext)(u,t);if(Te.Result.isErr(i))throw new Error(i.err);let s=i.value.Current.Manifest,a=(0,mr.ParseQuery)(r);if(Te.Result.isErr(a))throw new Error(`invalid query '${r}': invalid format`);let c=null;if(o.headers&&(c=(0,mr.ParseQuery)(o.headers),Te.Result.isErr(c)))throw new Error(`invalid query '${o.headers}': invalid format`);let D=c?c.value:null,l=a.value;l.Location.endsWith("/")&&(l.Location=l.Location.replace(/\/+$/,""));let d=o.alias;if(o.remove){let m=s.requires.findIndex(g=>g.target===l.Location&&g.version===l.Version);if(m===-1)throw new Error(`Dependency ${l} not found`);s.requires.splice(m,1),await(0,yt.writeFile)($e.UriUtils.joinPath(i.value.Current.Root,wt.MOD_FILE).fsPath,JSON.stringify(s,void 0,4)),e.info(`Removed dependency ${l.toString()}`);return}if(d&&s.requires.some(m=>m.alias===d&&m.target!==l.Location))throw new Error(`Alias '${d}' is already used by another dependency`);let f=s.requires.find(m=>m.target===l.Location);if(f){if(d?f.alias=d:delete f.alias,D&&(f.headers={target:D.Location,version:D.Version}),await(0,yt.writeFile)($e.UriUtils.joinPath(i.value.Current.Root,wt.MOD_FILE).fsPath,JSON.stringify(s,void 0,4)),o.download){let m=await ge(e,n,t.fsPath,[],{quiet:!0});if(Te.Result.isErr(m))throw new Error(`Failed to download dependency: ${m.err.join(", ")}`)}e.info(`Updated dependency ${l.Location} to version ${l.Version}`+(d?` (alias: ${d})`:"")+(D?` (headers: ${D})`:""))}else{let m=l.Version,g=F(F({target:l.Location,version:m},d?{alias:d}:{}),D?{headers:{target:D.Location,version:D.Version}}:{});if(s.requires.push(g),await(0,yt.writeFile)($e.UriUtils.joinPath(i.value.Current.Root,wt.MOD_FILE).fsPath,JSON.stringify(s,void 0,4)),o.download){let h=await ge(e,n,t.fsPath,[],{quiet:!0});if(Te.Result.isErr(h))throw new Error(`Failed to download dependency: ${h.err.join(", ")}`)}e.info(`Added dependency ${l.toString()}`+(d?` (alias: ${d})`:"")+(D?` (headers: ${D})`:"")+" to module manifest")}}});var $n={};ae($n,{Action:()=>Pn,Description:()=>kn,NewModule:()=>Tn,Register:()=>Mn,default:()=>cs});function Mn(e,t){return e.command("update").summary(ds).option("-v, --version <version>","new module version").option("-p, --path <location>","location where the module to update is located - defaults to the current directory").option("-c, --cacheLocation <cacheLocation>","new cache location").description(kn).helpOption(!0).action(Pn(t))}function Pn(e){return async t=>{await Tn(e,process.cwd(),t)}}var On,vt,fr,Rn,Ie,Qe,cs,ds,kn,Tn,In=S(()=>{"use strict";On=require("@kumori/kdsl-lsp/util/maybe.js"),vt=require("fs/promises"),fr=require("langium"),Rn=require("langium/node"),Ie=require("@kumori/kdsl-lsp/module/locator.js"),Qe=k(require("path"),1),cs={Register:Mn};ds="updates an existing kumori module's version or cache location",kn=`
50
- This command updates an existing Kumori module's version or cache location in the kumori.mod.json file. It is required to provide the new version and optionally
51
- a new cache location for the module.
52
-
53
- kdsl mod update -v 1.0.0
54
-
55
- You could as well provide a new location for the module's local cache,
56
- where all the dependencies will be downloaded.
57
-
58
- kdsl mod update -v 1.0.0 -c ./my-mod-cache
59
-
60
- If the module is not located in the current directory, you can provide a custom location path.
61
-
62
- kdsl mod update -v 1.0.0 -p ./my-module
63
- `.trim();Tn=async(e,t,r)=>{var D,l,d;let o=Rn.NodeFileSystem.fileSystemProvider(),n=(D=r.path)!=null?D:t;Qe.default.isAbsolute(n)||(n=Qe.default.join(t,n));let u=await(0,Ie.LocateModuleManifest)(o,fr.URI.file(n));On.Maybe.isSome(u)&&u.value.fsPath===n&&(e.error(`error: module ${n} already exists`),process.exit(1));let i=await o.readFile(fr.URI.file(Qe.default.join(n,Ie.MOD_FILE))),s=JSON.parse(i),a={spec:"kumori/module/v1",kumori:"0.0.1",version:(l=r.version)!=null?l:s.version,module:s.module,cacheLocation:(d=r.cacheLocation)!=null?d:s.cacheLocation,requires:[]},c=Qe.default.join(n,Ie.MOD_FILE);await(0,vt.mkdir)(n,{recursive:!0}),await(0,vt.writeFile)(c,JSON.stringify(a,null,4)),e.info(`updated ${Ie.MOD_FILE}: module ${a.module}`)}});function Nn(e){var o,n;let t=(n=(o=e.node.$cstNode)==null?void 0:o.range)!=null?n:{start:{line:-1,character:-1},end:{line:-1,character:-1}},r=Bt.AstUtils.getDocument(e.node);return`${Bt.UriUtils.relative(process.cwd(),r.uri.fsPath)}:${t.start.line+1}:${t.start.character+1}: ${e.message}`}var Bt,_n=S(()=>{"use strict";Bt=require("langium")});var Xn={};ae(Xn,{Action:()=>Qn,Description:()=>Hn,GetSchema:()=>bt,LocateModule:()=>Yn,Register:()=>Wn,ToJSONSchema:()=>Zn,ToJSONSchemaInternal:()=>ne,default:()=>ms});function Wn(e,t){return e.command("get").summary(fs).argument("<target>",'Unique path of the kmodule where the artifact is defined. Accepts remote targets (e.g., "github.com/MyOrg/component@v1.2.3") or local paths (e.g. "/abs/path/to/module", "../rel/path/to/module").').argument("<package-path>",`Relative path to the package that contains the artifact (e.g., "internal/service"). For artifacts in the module's root package, use ".".`).argument("<artifact-name>",'Name of the target artifact (e.g., "ExampleService").').description(Hn).helpOption(!0).action(Qn(t))}function Qn(e){return async(t,r,o)=>{let n=(0,jn.createKumoriServices)(pr.NodeFileSystem).Kumori,u=D=>Re(e,D),i=u(await Yn(t)),s=n.shared.workspace.FileSystemProvider,a=u(b.Result.mapErr(await(0,Un.ModuleContext)(s,De.URI.file(i.fsPath)),D=>[D]));u(await oe(e,n,a));let c=u(await bt(n,a,r,o));console.log(JSON.stringify(c,null,4))}}async function Yn(e){let t=await(0,Vn.TempCache)(),r=pr.NodeFileSystem.fileSystemProvider(),o=e;if(e[0]==="."||Ce.default.isAbsolute(e)){let D=Ce.default.isAbsolute(e)?e:Ce.default.resolve(process.cwd(),e);return(0,b.Ok)({$type:"local",fsPath:D})}let u=(0,Kn.ParseQuery)(e);if(Ee.Maybe.isNone(u))return(0,b.Err)([`invalid remote target '${e}': invalid syntax`]);let i=u.value.Version,s=`${u.value.Location}@${i}`,a=De.UriUtils.joinPath(t,s),c=await(0,Jn.ModuleDescriptor)(r,a);if(b.Result.isErr(c)){let D=await ur({Remotes:(0,zn.RemoteFetcherFactory)()},u.value.Location,i,a.fsPath);if(b.Result.isErr(D))return(0,b.Err)([`failed to fetch ${o}: ${D.err}`])}return(0,b.Ok)({$type:"remote",fsPath:a.fsPath,query:u.value})}async function bt(e,t,r,o){let n=De.UriUtils.joinPath(t.Current.Root,Ce.default.normalize(r)),u=e.references.KumoriPackages.GetPackage(n);if(b.Result.isErr(u))return(0,b.Err)([`error: failed to retrieve package: ${n.toString()}`]);let i=new Set(u.value.docs.map(m=>m.uri.toString())),s=e.shared.workspace.IndexManager.allElements(void 0,i).toArray().filter(m=>m.name===o);if(s.length<1)return(0,b.Err)([`error: no artifact named defined in ${n.toString()}`]);if(s.length>2)return(0,b.Err)([`error: too many matches in ${n.toString()}`]);let a=s[0].node;if(!((0,_e.isComponentArtifact)(a)||(0,_e.isServiceArtifact)(a)||(0,_e.isBuiltinArtifact)(a)))return(0,b.Err)([`invalid reference to node of type: ${a.$type}`]);if(!De.AstUtils.getDocument(a).uri.fsPath.endsWith(".h.kumori")){if(!a.name.value.ref)return(0,b.Err)(["no headers found for component"]);a=a.name.value.ref}let D=e.validation.KumoriTypeSystem,l=e.validation.KumoriValidations.ctx(),[d,p]=D.Infer(l,a);if(p.length>0){let m=[];return p.map(g=>m.concat(g.message)),(0,b.Err)([`type inference failed with errors: ${m}`])}let f=await Zn(e,t,d,Ce.default.join(t.Current.Manifest.module,r+"@"+o));return b.Result.mapErr(f,m=>m.map(Nn))}async function Zn(e,t,r,o){return b.Result.map(await ne({svcs:e,mod:t},r),n=>F({$schema:"https://json-schema.org/draft/2020-12/schema",$spec:"kumori/schema/v1",$id:o},n))}async function ne(e,t){if(O.TAny.is(t))return(0,b.Ok)({});if(O.TFunction.is(t))return ne(e,t.returns);if(O.TOptional.is(t))return ne(e,t.inner);if(O.TTypeDefAlias.is(t))return ne(e,t.spec);if(O.TNumber.is(t))return t.literal===void 0?(0,b.Ok)({type:"number"}):(0,b.Ok)({const:t.literal});if(O.TString.is(t))return t.literal===void 0?(0,b.Ok)({type:"string"}):(0,b.Ok)({const:t.literal});if(O.TBoolean.is(t))return t.literal===void 0?(0,b.Ok)({type:"boolean"}):(0,b.Ok)({const:t.literal});if(O.TList.is(t)){let r=await ne(e,t.restriction);return b.Result.isErr(r)?r:(0,b.Ok)({type:"array",items:r.value})}if(O.TEither.is(t)){let r=await Promise.all(t.variations.map(u=>ne(e,u))),o=r.filter(b.Result.isErr).map(u=>u.err).flat();if(o.length>0)return(0,b.Err)(o);let n=r.filter(b.Result.isOk).map(u=>u.value);return(0,Ne.default)(n.length===r.length),(0,b.Ok)({oneOf:n})}if(O.TStruct.is(t)){let r=await Promise.all(Object.entries(t.parameters).map(async i=>({key:i[0],value:i[1],schema:await ne(e,i[1].value)}))),o=r.map(i=>i.schema).filter(i=>b.Result.isErr(i)).map(i=>i.err).flat(),n=Ee.None;if(t.restriction!==void 0&&!O.TAny.is(t.restriction)){let i=await ne(e,t.restriction);b.Result.isOk(i)?n=(0,Ee.Some)(i.value):o=o.concat(i.err)}if(o.length>0)return(0,b.Err)(o);let u={type:"object",properties:Object.fromEntries(r.map(i=>((0,Ne.default)(b.Result.isOk(i.schema)),[i.key,i.schema.value]))),required:r.filter(i=>i.value.optional===!1&&!O.TOptional.is(i.value.value)).map(i=>i.key)};return Ee.Maybe.isSome(n)&&(u=L(F({},u),{additionalProperties:n.value})),(0,b.Ok)(u)}if(O.TTypeDefNamed.is(t)){let r=await ne(e,t.spec);return b.Result.isErr(r)?r:(0,b.Ok)({type:"object",properties:{$kdsl:{const:{NamedType:await ps(e,t)}},inner:r.value},required:["$kdsl","inner"]})}return(0,b.Err)([O.TypeSystemError.create({node:t,message:`cannot convert definition to JSONSchema: ${(0,O.TypeToString)(t)}`})])}var jn,Un,Kn,Ee,b,Vn,pr,Ce,De,Ne,O,Jn,_e,qn,Gn,zn,ms,fs,Hn,ps,hr=S(()=>{"use strict";jn=require("@kumori/kdsl-lsp/language/kumori.js"),Un=require("@kumori/kdsl-lsp/module/context.js"),Kn=require("@kumori/kdsl-lsp/module/query.js"),Ee=require("@kumori/kdsl-lsp/util/maybe.js"),b=require("@kumori/kdsl-lsp/util/result.js"),Vn=require("@kumori/kdsl-lsp/util/tmp.js"),pr=require("langium/node"),Ce=k(require("path"),1);Pe();De=require("langium"),Ne=k(require("assert"),1),O=require("@kumori/kdsl-lsp/language/type-system/type.js"),Jn=require("@kumori/kdsl-lsp/module/descriptor.js"),_e=require("@kumori/kdsl-lsp/language/generated/ast.js"),qn=require("@kumori/kdsl-lsp/language/builtin/util.js"),Gn=require("@kumori/kdsl-lsp/module/documents.js");ct();_n();sr();zn=require("@kumori/kdsl-lsp/module/remote/factory.js"),ms={Register:Wn};fs="extracts jsonschema for a specified module and artifact",Hn=`
64
- Generates and outputs the JSON Schema that describes a particular Kumori DSL
65
- artifact. This schema defines the artifact's configurable properties, resource
66
- requirements, and overall structure, making it valuable for programmatic
67
- interaction, validation, or documentation purposes.
68
-
69
- The command allows you to specify artifacts from both remote/external modules
70
- and local modules.
71
- `.trim();ps=async(e,t)=>{let r=t.node;(0,Ne.default)(r);let o=e.svcs.shared.references.KumoriModules,n=De.AstUtils.getDocument(r).uri,u=e.svcs.references.KumoriPackages.GetPackage(r),i=e.mod.Current;if((0,Ne.default)(b.Result.isOk(u)),n.scheme===qn.Scheme)return{Import:u.value.uri.path.slice(1),Name:t.meta.name};if(!(await(0,Gn.GatherModuleDocuments)(e.svcs.shared,e.mod.Root.Root)).map(d=>d.fsPath).includes(n.fsPath)){let d=o.getModule(n);(0,Ne.default)(b.Result.isOk(d)),i=d.value}let D=i.Root,l=u.value.uri.fsPath.slice(D.fsPath.length);return{Import:Ce.default.join(i.Manifest.module,l),Name:t.meta.name}}});var Fr,Ye,Ze,Di=S(()=>{Fr=e=>e.name==="backspace",Ye=e=>e.name==="tab",Ze=e=>e.name==="enter"||e.name==="return"});var St,Lt,Xe,At,Ot,Rt=S(()=>{St=class extends Error{constructor(r){super();x(this,"name","AbortPromptError");x(this,"message","Prompt was aborted");this.cause=r==null?void 0:r.cause}},Lt=class extends Error{constructor(){super(...arguments);x(this,"name","CancelPromptError");x(this,"message","Prompt was canceled")}},Xe=class extends Error{constructor(){super(...arguments);x(this,"name","ExitPromptError")}},At=class extends Error{constructor(){super(...arguments);x(this,"name","HookError")}},Ot=class extends Error{constructor(){super(...arguments);x(this,"name","ValidationError")}}});function hs(e){return{rl:e,hooks:[],hooksCleanup:[],hooksEffect:[],index:0,handleChange(){}}}function di(e,t){let r=hs(e);return ci.run(r,()=>{function o(n){r.handleChange=()=>{r.index=0,n()},r.handleChange()}return t(o)})}function ye(){let e=ci.getStore();if(!e)throw new At("[Inquirer] Hook functions can only be called from within a prompt");return e}function gr(){return ye().rl}function Cr(e){let t=(...r)=>{let o=ye(),n=!1,u=o.handleChange;o.handleChange=()=>{n=!0};let i=e(...r);return n&&u(),o.handleChange=u,i};return Mt.AsyncResource.bind(t)}function kt(e){let t=ye(),{index:r}=t,o={get(){return t.hooks[r]},set(u){t.hooks[r]=u},initialized:r in t.hooks},n=e(o);return t.index++,n}function mi(){ye().handleChange()}var Mt,ci,we,je=S(()=>{Mt=require("async_hooks");Rt();ci=new Mt.AsyncLocalStorage;we={queue(e){let t=ye(),{index:r}=t;t.hooksEffect.push(()=>{var n,u;(u=(n=t.hooksCleanup)[r])==null||u.call(n);let o=e(gr());if(o!=null&&typeof o!="function")throw new Ot("useEffect return value must be a cleanup function or nothing.");t.hooksCleanup[r]=o})},run(){let e=ye();Cr(()=>{e.hooksEffect.forEach(t=>{t()}),e.hooksEffect.length=0})()},clearAll(){let e=ye();e.hooksCleanup.forEach(t=>{t==null||t()}),e.hooksEffect.length=0,e.hooksCleanup.length=0}}});function J(e){return kt(t=>{let r=fi.AsyncResource.bind(function(u){t.get()!==u&&(t.set(u),mi())});if(t.initialized)return[t.get(),r];let o=typeof e=="function"?e():e;return t.set(o),[o,r]})}var fi,Pt=S(()=>{fi=require("async_hooks");je()});function ve(e,t){kt(r=>{let o=r.get();(!Array.isArray(o)||t.some((u,i)=>!Object.is(u,o[i])))&&we.queue(e),r.set(t)})}var Tt=S(()=>{je()});function Fs(){return Z.default.platform!=="win32"?Z.default.env.TERM!=="linux":!!Z.default.env.WT_SESSION||!!Z.default.env.TERMINUS_SUBLIME||Z.default.env.ConEmuTask==="{cmd::Cmder}"||Z.default.env.TERM_PROGRAM==="Terminus-Sublime"||Z.default.env.TERM_PROGRAM==="vscode"||Z.default.env.TERM==="xterm-256color"||Z.default.env.TERM==="alacritty"||Z.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Z,pi,hi,gs,Cs,Es,ys,ws,Fi,sD,gi=S(()=>{Z=k(require("process"),1);pi={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},hi={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},gs={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},Cs=F(F({},pi),hi),Es=F(F({},pi),gs),ys=Fs(),ws=ys?Cs:Es,Fi=ws,sD=Object.entries(hi)});var W,Ci,Ei=S(()=>{W=require("util");gi();Ci={prefix:{idle:(0,W.styleText)("blue","?"),done:(0,W.styleText)("green",Fi.tick)},spinner:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"].map(e=>(0,W.styleText)("yellow",e))},style:{answer:e=>(0,W.styleText)("cyan",e),message:e=>(0,W.styleText)("bold",e),error:e=>(0,W.styleText)("red",`> ${e}`),defaultAnswer:e=>(0,W.styleText)("dim",`(${e})`),help:e=>(0,W.styleText)("dim",e),highlight:e=>(0,W.styleText)("cyan",e),key:e=>(0,W.styleText)("cyan",(0,W.styleText)("bold",`<${e}>`))}}});function yi(e){if(typeof e!="object"||e===null)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function wi(...e){let t={};for(let r of e)for(let[o,n]of Object.entries(r)){let u=t[o];t[o]=yi(u)&&yi(n)?wi(u,n):n}return t}function Be(...e){let t=[Ci,...e.filter(r=>r!=null)];return wi(...t)}var Er=S(()=>{Ei()});function et({status:e="idle",theme:t}){var c;let[r,o]=J(!1),[n,u]=J(0),{prefix:i,spinner:s}=Be(t);return ve(()=>{if(e==="loading"){let D,l=-1,d=setTimeout(()=>{o(!0),D=setInterval(()=>{l=l+1,u(l%s.frames.length)},s.interval)},300);return()=>{clearTimeout(d),clearInterval(D)}}else o(!1)},[e]),r?s.frames[n]:typeof i=="string"?i:(c=i[e==="loading"?"idle":e])!=null?c:i.idle}var vi=S(()=>{Pt();Tt();Er()});function Bi(e){return J({current:e})[0]}var bi=S(()=>{Pt()});function tt(e){let t=Bi(e);t.current=e,ve(r=>{let o=!1,n=Cr((u,i)=>{o||t.current(i,r)});return r.input.on("keypress",n),()=>{o=!0,r.input.removeListener("keypress",n)}},[])}var xi=S(()=>{bi();Tt();je()});var Li=zt((BD,Si)=>{"use strict";Si.exports=Bs;function vs(e){let t={defaultWidth:0,output:process.stdout,tty:require("tty")};return e?(Object.keys(t).forEach(function(r){e[r]||(e[r]=t[r])}),e):t}function Bs(e){let t=vs(e);if(t.output.getWindowSize)return t.output.getWindowSize()[0]||t.defaultWidth;if(t.tty.getWindowSize)return t.tty.getWindowSize()[1]||t.defaultWidth;if(t.output.columns)return t.output.columns;if(process.env.CLI_WIDTH){let r=parseInt(process.env.CLI_WIDTH,10);if(!isNaN(r)&&r!==0)return r}return t.defaultWidth}});function yr({onlyFirst:e=!1}={}){let n="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(n,e?void 0:"g")}var Ai=S(()=>{});function rt(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(bs,"")}var bs,wr=S(()=>{Ai();bs=yr()});function Oi(e){return e===161||e===164||e===167||e===168||e===170||e===173||e===174||e>=176&&e<=180||e>=182&&e<=186||e>=188&&e<=191||e===198||e===208||e===215||e===216||e>=222&&e<=225||e===230||e>=232&&e<=234||e===236||e===237||e===240||e===242||e===243||e>=247&&e<=250||e===252||e===254||e===257||e===273||e===275||e===283||e===294||e===295||e===299||e>=305&&e<=307||e===312||e>=319&&e<=322||e===324||e>=328&&e<=331||e===333||e===338||e===339||e===358||e===359||e===363||e===462||e===464||e===466||e===468||e===470||e===472||e===474||e===476||e===593||e===609||e===708||e===711||e>=713&&e<=715||e===717||e===720||e>=728&&e<=731||e===733||e===735||e>=768&&e<=879||e>=913&&e<=929||e>=931&&e<=937||e>=945&&e<=961||e>=963&&e<=969||e===1025||e>=1040&&e<=1103||e===1105||e===8208||e>=8211&&e<=8214||e===8216||e===8217||e===8220||e===8221||e>=8224&&e<=8226||e>=8228&&e<=8231||e===8240||e===8242||e===8243||e===8245||e===8251||e===8254||e===8308||e===8319||e>=8321&&e<=8324||e===8364||e===8451||e===8453||e===8457||e===8467||e===8470||e===8481||e===8482||e===8486||e===8491||e===8531||e===8532||e>=8539&&e<=8542||e>=8544&&e<=8555||e>=8560&&e<=8569||e===8585||e>=8592&&e<=8601||e===8632||e===8633||e===8658||e===8660||e===8679||e===8704||e===8706||e===8707||e===8711||e===8712||e===8715||e===8719||e===8721||e===8725||e===8730||e>=8733&&e<=8736||e===8739||e===8741||e>=8743&&e<=8748||e===8750||e>=8756&&e<=8759||e===8764||e===8765||e===8776||e===8780||e===8786||e===8800||e===8801||e>=8804&&e<=8807||e===8810||e===8811||e===8814||e===8815||e===8834||e===8835||e===8838||e===8839||e===8853||e===8857||e===8869||e===8895||e===8978||e>=9312&&e<=9449||e>=9451&&e<=9547||e>=9552&&e<=9587||e>=9600&&e<=9615||e>=9618&&e<=9621||e===9632||e===9633||e>=9635&&e<=9641||e===9650||e===9651||e===9654||e===9655||e===9660||e===9661||e===9664||e===9665||e>=9670&&e<=9672||e===9675||e>=9678&&e<=9681||e>=9698&&e<=9701||e===9711||e===9733||e===9734||e===9737||e===9742||e===9743||e===9756||e===9758||e===9792||e===9794||e===9824||e===9825||e>=9827&&e<=9829||e>=9831&&e<=9834||e===9836||e===9837||e===9839||e===9886||e===9887||e===9919||e>=9926&&e<=9933||e>=9935&&e<=9939||e>=9941&&e<=9953||e===9955||e===9960||e===9961||e>=9963&&e<=9969||e===9972||e>=9974&&e<=9977||e===9979||e===9980||e===9982||e===9983||e===10045||e>=10102&&e<=10111||e>=11094&&e<=11097||e>=12872&&e<=12879||e>=57344&&e<=63743||e>=65024&&e<=65039||e===65533||e>=127232&&e<=127242||e>=127248&&e<=127277||e>=127280&&e<=127337||e>=127344&&e<=127373||e===127375||e===127376||e>=127387&&e<=127404||e>=917760&&e<=917999||e>=983040&&e<=1048573||e>=1048576&&e<=1114109}function Ri(e){return e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510}function Mi(e){return e>=4352&&e<=4447||e===8986||e===8987||e===9001||e===9002||e>=9193&&e<=9196||e===9200||e===9203||e===9725||e===9726||e===9748||e===9749||e>=9776&&e<=9783||e>=9800&&e<=9811||e===9855||e>=9866&&e<=9871||e===9875||e===9889||e===9898||e===9899||e===9917||e===9918||e===9924||e===9925||e===9934||e===9940||e===9962||e===9970||e===9971||e===9973||e===9978||e===9981||e===9989||e===9994||e===9995||e===10024||e===10060||e===10062||e>=10067&&e<=10069||e===10071||e>=10133&&e<=10135||e===10160||e===10175||e===11035||e===11036||e===11088||e===11093||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12773||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=94176&&e<=94180||e>=94192&&e<=94198||e>=94208&&e<=101589||e>=101631&&e<=101662||e>=101760&&e<=101874||e>=110576&&e<=110579||e>=110581&&e<=110587||e===110589||e===110590||e>=110592&&e<=110882||e===110898||e>=110928&&e<=110930||e===110933||e>=110948&&e<=110951||e>=110960&&e<=111355||e>=119552&&e<=119638||e>=119648&&e<=119670||e===126980||e===127183||e===127374||e>=127377&&e<=127386||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e===127568||e===127569||e>=127584&&e<=127589||e>=127744&&e<=127776||e>=127789&&e<=127797||e>=127799&&e<=127868||e>=127870&&e<=127891||e>=127904&&e<=127946||e>=127951&&e<=127955||e>=127968&&e<=127984||e===127988||e>=127992&&e<=128062||e===128064||e>=128066&&e<=128252||e>=128255&&e<=128317||e>=128331&&e<=128334||e>=128336&&e<=128359||e===128378||e===128405||e===128406||e===128420||e>=128507&&e<=128591||e>=128640&&e<=128709||e===128716||e>=128720&&e<=128722||e>=128725&&e<=128728||e>=128732&&e<=128735||e===128747||e===128748||e>=128756&&e<=128764||e>=128992&&e<=129003||e===129008||e>=129292&&e<=129338||e>=129340&&e<=129349||e>=129351&&e<=129535||e>=129648&&e<=129660||e>=129664&&e<=129674||e>=129678&&e<=129734||e===129736||e>=129741&&e<=129756||e>=129759&&e<=129770||e>=129775&&e<=129784||e>=131072&&e<=196605||e>=196608&&e<=262141}var ki=S(()=>{});function xs(e){if(!Number.isSafeInteger(e))throw new TypeError(`Expected a code point, got \`${typeof e}\`.`)}function Pi(e,{ambiguousAsWide:t=!1}={}){return xs(e),Ri(e)||Mi(e)||t&&Oi(e)?2:1}var Ti=S(()=>{ki()});var Ii=zt((MD,$i)=>{$i.exports=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g});function be(e,t={}){if(typeof e!="string"||e.length===0)return 0;let{ambiguousIsNarrow:r=!0,countAnsiEscapeCodes:o=!1}=t;if(o||(e=rt(e)),e.length===0)return 0;let n=0,u={ambiguousAsWide:!r};for(let{segment:i}of Ss.segment(e)){let s=i.codePointAt(0);if(!(s<=31||s>=127&&s<=159)&&!(s>=8203&&s<=8207||s===65279)&&!(s>=768&&s<=879||s>=6832&&s<=6911||s>=7616&&s<=7679||s>=8400&&s<=8447||s>=65056&&s<=65071)&&!(s>=55296&&s<=57343)&&!(s>=65024&&s<=65039)&&!Ls.test(i)){if((0,Ni.default)().test(i)){n+=2;continue}n+=Pi(s,u)}}return n}var Ni,Ss,Ls,_i=S(()=>{wr();Ti();Ni=k(Ii(),1),Ss=new Intl.Segmenter,Ls=new RegExp("^\\p{Default_Ignorable_Code_Point}$","u")});function Rs(){let e=new Map;for(let[t,r]of Object.entries(M)){for(let[o,n]of Object.entries(r))M[o]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},r[o]=M[o],e.set(n[0],n[1]);Object.defineProperty(M,t,{value:r,enumerable:!1})}return Object.defineProperty(M,"codes",{value:e,enumerable:!1}),M.color.close="\x1B[39m",M.bgColor.close="\x1B[49m",M.color.ansi=ji(),M.color.ansi256=Ui(),M.color.ansi16m=Ki(),M.bgColor.ansi=ji(10),M.bgColor.ansi256=Ui(10),M.bgColor.ansi16m=Ki(10),Object.defineProperties(M,{rgbToAnsi256:{value(t,r,o){return t===r&&r===o?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(t){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(u=>u+u).join(""));let n=Number.parseInt(o,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:t=>M.rgbToAnsi256(...M.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let r,o,n;if(t>=232)r=((t-232)*10+8)/255,o=r,n=r;else{t-=16;let s=t%36;r=Math.floor(t/36)/5,o=Math.floor(s/6)/5,n=s%6/5}let u=Math.max(r,o,n)*2;if(u===0)return 30;let i=30+(Math.round(n)<<2|Math.round(o)<<1|Math.round(r));return u===2&&(i+=60),i},enumerable:!1},rgbToAnsi:{value:(t,r,o)=>M.ansi256ToAnsi(M.rgbToAnsi256(t,r,o)),enumerable:!1},hexToAnsi:{value:t=>M.ansi256ToAnsi(M.hexToAnsi256(t)),enumerable:!1}}),M}var ji,Ui,Ki,M,$D,As,Os,ID,Ms,Vi,Ji=S(()=>{ji=(e=0)=>t=>`\x1B[${t+e}m`,Ui=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,Ki=(e=0)=>(t,r,o)=>`\x1B[${38+e};2;${t};${r};${o}m`,M={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},$D=Object.keys(M.modifier),As=Object.keys(M.color),Os=Object.keys(M.bgColor),ID=[...As,...Os];Ms=Rs(),Vi=Ms});function br(e,t,r){return String(e).normalize().replaceAll(`\r
72
- `,`
73
- `).split(`
74
- `).map(o=>Is(o,t,r)).join(`
75
- `)}var It,ks,Br,zi,Ps,Wi,$t,qi,Gi,Ts,vr,$s,Is,Hi=S(()=>{_i();wr();Ji();It=new Set(["\x1B","\x9B"]),ks=39,Br="\x07",zi="[",Ps="]",Wi="m",$t=`${Ps}8;;`,qi=e=>`${It.values().next().value}${zi}${e}${Wi}`,Gi=e=>`${It.values().next().value}${$t}${e}${Br}`,Ts=e=>e.split(" ").map(t=>be(t)),vr=(e,t,r)=>{let o=[...t],n=!1,u=!1,i=be(rt(e.at(-1)));for(let[s,a]of o.entries()){let c=be(a);if(i+c<=r?e[e.length-1]+=a:(e.push(a),i=0),It.has(a)&&(n=!0,u=o.slice(s+1,s+1+$t.length).join("")===$t),n){u?a===Br&&(n=!1,u=!1):a===Wi&&(n=!1);continue}i+=c,i===r&&s<o.length-1&&(e.push(""),i=0)}!i&&e.at(-1).length>0&&e.length>1&&(e[e.length-2]+=e.pop())},$s=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(be(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},Is=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let o="",n,u,i=Ts(e),s=[""];for(let[l,d]of e.split(" ").entries()){r.trim!==!1&&(s[s.length-1]=s.at(-1).trimStart());let p=be(s.at(-1));if(l!==0&&(p>=t&&(r.wordWrap===!1||r.trim===!1)&&(s.push(""),p=0),(p>0||r.trim===!1)&&(s[s.length-1]+=" ",p++)),r.hard&&i[l]>t){let f=t-p,m=1+Math.floor((i[l]-f-1)/t);Math.floor((i[l]-1)/t)<m&&s.push(""),vr(s,d,t);continue}if(p+i[l]>t&&p>0&&i[l]>0){if(r.wordWrap===!1&&p<t){vr(s,d,t);continue}s.push("")}if(p+i[l]>t&&r.wordWrap===!1){vr(s,d,t);continue}s[s.length-1]+=d}r.trim!==!1&&(s=s.map(l=>$s(l)));let a=s.join(`
76
- `),c=[...a],D=0;for(let[l,d]of c.entries()){if(o+=d,It.has(d)){let{groups:f}=new RegExp(`(?:\\${zi}(?<code>\\d+)m|\\${$t}(?<uri>.*)${Br})`).exec(a.slice(D))||{groups:{}};if(f.code!==void 0){let m=Number.parseFloat(f.code);n=m===ks?void 0:m}else f.uri!==void 0&&(u=f.uri.length===0?void 0:f.uri)}let p=Vi.codes.get(Number(n));c[l+1]===`
77
- `?(u&&(o+=Gi("")),n&&p&&(o+=qi(p))):d===`
78
- `&&(n&&p&&(o+=qi(n)),u&&(o+=Gi(u))),D+=d.length}return o}});function xr(e,t){return e.split(`
79
- `).flatMap(r=>br(r,t,{trim:!1,hard:!0}).split(`
80
- `).map(o=>o.trimEnd())).join(`
81
- `)}function Yi(){return(0,Qi.default)({defaultWidth:80,output:gr().output})}var Qi,Zi=S(()=>{Qi=k(Li(),1);Hi();je()});var eu=zt((GD,Xi)=>{var Ns=require("stream"),Ue,Ke,Nt,Ve,_t,Sr=class extends Ns{constructor(r={}){super(r);K(this,Ke);K(this,Ve);K(this,Ue,null);this.writable=this.readable=!0,this.muted=!1,this.on("pipe",this._onpipe),this.replace=r.replace,this._prompt=r.prompt||null,this._hadControl=!1}get isTTY(){return v(this,Ue)!==null?v(this,Ue):te(this,Ke,Nt).call(this,"isTTY",!1)}set isTTY(r){ie(this,Ue,r)}get rows(){return te(this,Ke,Nt).call(this,"rows")}get columns(){return te(this,Ke,Nt).call(this,"columns")}mute(){this.muted=!0}unmute(){this.muted=!1}_onpipe(r){this._src=r}pipe(r,o){return this._dest=r,super.pipe(r,o)}pause(){if(this._src)return this._src.pause()}resume(){if(this._src)return this._src.resume()}write(r){if(this.muted){if(!this.replace)return!0;if(r.match(/^\u001b/))return r.indexOf(this._prompt)===0&&(r=r.slice(this._prompt.length),r=r.replace(/./g,this.replace),r=this._prompt+r),this._hadControl=!0,this.emit("data",r);this._prompt&&this._hadControl&&r.indexOf(this._prompt)===0&&(this._hadControl=!1,this.emit("data",this._prompt),r=r.slice(this._prompt.length)),r=r.toString().replace(/./g,this.replace)}this.emit("data",r)}end(r){this.muted&&(r&&this.replace?r=r.toString().replace(/./g,this.replace):r=null),r&&this.emit("data",r),this.emit("end")}destroy(...r){return te(this,Ve,_t).call(this,"destroy",...r)}destroySoon(...r){return te(this,Ve,_t).call(this,"destroySoon",...r)}close(...r){return te(this,Ve,_t).call(this,"close",...r)}};Ue=new WeakMap,Ke=new WeakSet,Nt=function(r,o){return this._dest?this._dest[r]:this._src?this._src[r]:o},Ve=new WeakSet,_t=function(r,...o){var n,u;typeof((n=this._dest)==null?void 0:n[r])=="function"&&this._dest[r](...o),typeof((u=this._src)==null?void 0:u[r])=="function"&&this._src[r](...o)};Xi.exports=Sr});var xe,tu=S(()=>{xe=[];xe.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&xe.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&xe.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT")});var jt,Lr,Ar,_s,Or,Ut,js,Rr,Kt,z,P,Je,qe,Se,de,Vt,ru,Jt,ou,Mr,kr,nu,QD,YD,iu=S(()=>{tu();jt=e=>!!e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function",Lr=Symbol.for("signal-exit emitter"),Ar=globalThis,_s=Object.defineProperty.bind(Object),Or=class{constructor(){x(this,"emitted",{afterExit:!1,exit:!1});x(this,"listeners",{afterExit:[],exit:[]});x(this,"count",0);x(this,"id",Math.random());if(Ar[Lr])return Ar[Lr];_s(Ar,Lr,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(t,r){this.listeners[t].push(r)}removeListener(t,r){let o=this.listeners[t],n=o.indexOf(r);n!==-1&&(n===0&&o.length===1?o.length=0:o.splice(n,1))}emit(t,r,o){if(this.emitted[t])return!1;this.emitted[t]=!0;let n=!1;for(let u of this.listeners[t])n=u(r,o)===!0||n;return t==="exit"&&(n=this.emit("afterExit",r,o)||n),n}},Ut=class{},js=e=>({onExit(t,r){return e.onExit(t,r)},load(){return e.load()},unload(){return e.unload()}}),Rr=class extends Ut{onExit(){return()=>{}}load(){}unload(){}},Mr=class extends Ut{constructor(r){super();K(this,Vt);K(this,Jt);K(this,Kt,kr.platform==="win32"?"SIGINT":"SIGHUP");K(this,z,new Or);K(this,P,void 0);K(this,Je,void 0);K(this,qe,void 0);K(this,Se,{});K(this,de,!1);ie(this,P,r),ie(this,Se,{});for(let o of xe)v(this,Se)[o]=()=>{let n=v(this,P).listeners(o),{count:u}=v(this,z),i=r;if(typeof i.__signal_exit_emitter__=="object"&&typeof i.__signal_exit_emitter__.count=="number"&&(u+=i.__signal_exit_emitter__.count),n.length===u){this.unload();let s=v(this,z).emit("exit",null,o),a=o==="SIGHUP"?v(this,Kt):o;s||r.kill(r.pid,a)}};ie(this,qe,r.reallyExit),ie(this,Je,r.emit)}onExit(r,o){if(!jt(v(this,P)))return()=>{};v(this,de)===!1&&this.load();let n=o!=null&&o.alwaysLast?"afterExit":"exit";return v(this,z).on(n,r),()=>{v(this,z).removeListener(n,r),v(this,z).listeners.exit.length===0&&v(this,z).listeners.afterExit.length===0&&this.unload()}}load(){if(!v(this,de)){ie(this,de,!0),v(this,z).count+=1;for(let r of xe)try{let o=v(this,Se)[r];o&&v(this,P).on(r,o)}catch(o){}v(this,P).emit=(r,...o)=>te(this,Jt,ou).call(this,r,...o),v(this,P).reallyExit=r=>te(this,Vt,ru).call(this,r)}}unload(){v(this,de)&&(ie(this,de,!1),xe.forEach(r=>{let o=v(this,Se)[r];if(!o)throw new Error("Listener not defined for signal: "+r);try{v(this,P).removeListener(r,o)}catch(n){}}),v(this,P).emit=v(this,Je),v(this,P).reallyExit=v(this,qe),v(this,z).count-=1)}};Kt=new WeakMap,z=new WeakMap,P=new WeakMap,Je=new WeakMap,qe=new WeakMap,Se=new WeakMap,de=new WeakMap,Vt=new WeakSet,ru=function(r){return jt(v(this,P))?(v(this,P).exitCode=r||0,v(this,z).emit("exit",v(this,P).exitCode,null),v(this,qe).call(v(this,P),v(this,P).exitCode)):0},Jt=new WeakSet,ou=function(r,...o){let n=v(this,Je);if(r==="exit"&&jt(v(this,P))){typeof o[0]=="number"&&(v(this,P).exitCode=o[0]);let u=n.call(v(this,P),r,...o);return v(this,z).emit("exit",v(this,P).exitCode,null),u}else return n.call(v(this,P),r,...o)};kr=globalThis.process,{onExit:nu,load:QD,unload:YD}=js(jt(kr)?new Mr(kr):new Rr)});var me,Us,ec,su,Pr,Tr,$r,uu,Ir,au=S(()=>{me="\x1B[",Us=me+"G",ec=me+"?25l",su=me+"?25h",Pr=(e=1)=>e>0?`${me}${e}A`:"",Tr=(e=1)=>e>0?`${me}${e}B`:"",$r=(e,t)=>typeof t=="number"&&!Number.isNaN(t)?`${me}${t+1};${e+1}H`:`${me}${e+1}G`,uu=me+"2K",Ir=e=>e>0?(uu+Pr(1)).repeat(e-1)+uu+Us:""});var Du,lu,Ks,ot,cu=S(()=>{Du=require("util");Zi();au();lu=e=>e.split(`
82
- `).length,Ks=e=>{var t;return(t=e.split(`
83
- `).pop())!=null?t:""},ot=class{constructor(t){x(this,"height",0);x(this,"extraLinesUnderPrompt",0);x(this,"cursorPos");x(this,"rl");this.rl=t,this.cursorPos=t.getCursorPos()}write(t){this.rl.output.unmute(),this.rl.output.write(t),this.rl.output.mute()}render(t,r=""){let o=Ks(t),n=(0,Du.stripVTControlCharacters)(o),u=n;this.rl.line.length>0&&(u=u.slice(0,-this.rl.line.length)),this.rl.setPrompt(u),this.cursorPos=this.rl.getCursorPos();let i=Yi();t=xr(t,i),r=xr(r,i),n.length%i===0&&(t+=`
84
- `);let s=t+(r?`
85
- `+r:""),c=Math.floor(n.length/i)-this.cursorPos.rows+(r?lu(r):0);c>0&&(s+=Pr(c)),s+=$r(this.cursorPos.cols),this.write(Tr(this.extraLinesUnderPrompt)+Ir(this.height)+s),this.extraLinesUnderPrompt=c,this.height=lu(s)}checkCursorPos(){let t=this.rl.getCursorPos();t.cols!==this.cursorPos.cols&&(this.write($r(t.cols)),this.cursorPos=t)}done({clearContent:t}){this.rl.setPrompt("");let r=Tr(this.extraLinesUnderPrompt);r+=t?Ir(this.height):`
86
- `,r+=su,this.write(r),this.rl.close()}}});var qt,du=S(()=>{qt=class extends Promise{static withResolver(){let t,r;return{promise:new Promise((n,u)=>{t=n,r=u}),resolve:t,reject:r}}}});function Vs(){let e=Error.prepareStackTrace,t=[];try{Error.prepareStackTrace=(r,o)=>{let n=o.slice(1);return t=n,n},new Error().stack}catch(r){return t}return Error.prepareStackTrace=e,t}function nt(e){let t=Vs();return(o,n={})=>{var h;let{input:u=process.stdin,signal:i}=n,s=new Set,a=new pu.default;a.pipe((h=n.output)!=null?h:process.stdout);let c=mu.createInterface({terminal:!0,input:u,output:a}),D=new ot(c),{promise:l,resolve:d,reject:p}=qt.withResolver(),f=()=>p(new Lt);if(i){let C=()=>p(new St({cause:i.reason}));if(i.aborted)return C(),Object.assign(l,{cancel:f});i.addEventListener("abort",C),s.add(()=>i.removeEventListener("abort",C))}s.add(nu((C,E)=>{p(new Xe(`User force closed the prompt with ${C} ${E}`))}));let m=()=>p(new Xe("User force closed the prompt with SIGINT"));c.on("SIGINT",m),s.add(()=>c.removeListener("SIGINT",m));let g=()=>D.checkCursorPos();return c.input.on("keypress",g),s.add(()=>c.input.removeListener("keypress",g)),di(c,C=>{let E=fu.AsyncResource.bind(()=>we.clearAll());return c.on("close",E),s.add(()=>c.removeListener("close",E)),C(()=>{var w;try{let A=e(o,H=>{setImmediate(()=>d(H))});if(A===void 0){let H=(w=t[1])==null?void 0:w.getFileName();throw new Error(`Prompt functions must return a string.
87
- at ${H}`)}let[T,ee]=typeof A=="string"?[A]:A;D.render(T,ee),we.run()}catch(A){p(A)}}),Object.assign(l.then(w=>(we.clearAll(),w),w=>{throw we.clearAll(),w}).finally(()=>{s.forEach(w=>w()),D.done({clearContent:!!n.clearPromptOnDone}),a.end()}).then(()=>l),{cancel:f})})}}var mu,fu,pu,hu=S(()=>{mu=k(require("readline"),1),fu=require("async_hooks"),pu=k(eu(),1);iu();cu();du();je();Rt()});var Nr=S(()=>{Di();Rt();vi();Pt();Tt();xi();Er();hu()});function Fu(e,t){let r=t!==!1;return/^(y|yes)/i.test(e)?r=!0:/^(n|no)/i.test(e)&&(r=!1),r}function gu(e){return e?"Yes":"No"}var it,Cu=S(()=>{Nr();it=nt((e,t)=>{let{transformer:r=gu}=e,[o,n]=J("idle"),[u,i]=J(""),s=Be(e.theme),a=et({status:o,theme:s});tt((d,p)=>{if(o==="idle")if(Ze(d)){let f=Fu(u,e.default);i(r(f)),n("done"),t(f)}else if(Ye(d)){let f=gu(!Fu(u,e.default));p.clearLine(0),p.write(f),i(f)}else i(p.line)});let c=u,D="";o==="done"?c=s.style.answer(u):D=` ${s.style.defaultAnswer(e.default===!1?"y/N":"Y/n")}`;let l=s.style.message(e.message,o);return`${a} ${l}${D} ${c}`})});var Js,fe,Eu=S(()=>{Nr();Js={validationFailureMode:"keep"},fe=nt((e,t)=>{let{prefill:r="tab"}=e,o=Be(Js,e.theme),[n,u]=J("idle"),[i="",s]=J(e.default),[a,c]=J(),[D,l]=J(""),d=et({status:n,theme:o});async function p(C){let{required:E,pattern:w,patternError:A="Invalid input"}=e;return E&&!C?"You must provide a value":w&&!w.test(C)?A:typeof e.validate=="function"?await e.validate(C)||"You must provide a valid value":!0}tt(async(C,E)=>{if(n==="idle")if(Ze(C)){let w=D||i;u("loading");let A=await p(w);A===!0?(l(w),u("done"),t(w)):(o.validationFailureMode==="clear"?l(""):E.write(D),c(A),u("idle"))}else Fr(C)&&!D?s(void 0):Ye(C)&&!D?(s(void 0),E.clearLine(0),E.write(i),l(i)):(l(E.line),c(void 0))}),ve(C=>{r==="editable"&&i&&(C.write(i),l(i))},[]);let f=o.style.message(e.message,n),m=D;typeof e.transformer=="function"?m=e.transformer(D,{isFinal:n==="done"}):n==="done"&&(m=o.style.answer(D));let g;i&&n!=="done"&&!D&&(g=o.style.defaultAnswer(i));let h="";return a&&(h=o.style.error(a)),[[d,f,g,m].filter(C=>C!==void 0).join(" "),h]})});var yu=S(()=>{Cu();Eu()});var Ru={};ae(Ru,{Action:()=>Ou,Description:()=>Lu,Register:()=>Au,default:()=>Gs});function Au(e,t){return e.command("create").option("--module <module>","Path to the module to generate the index entry for. It can be either a relative or absolute path. Defaults to the current directory.").option("--index <index>","Path to the index file to append the new entry to. It can be either a relative or absolute path. If not provided, the entry will be printed to standard output.").summary(qs).description(Lu).action(Ou(t))}function Ou(e){return async t=>{let r=(0,wu.createKumoriServices)(vu.NodeFileSystem).Kumori,o=r.shared.workspace.FileSystemProvider,n=process.cwd();t.module&&(t.module[0]==="."||X.default.isAbsolute(t.module))&&(n=X.default.isAbsolute(t.module)?t.module:X.default.resolve(process.cwd(),t.module));let u=await(0,Bu.ModuleContext)(o,pe.URI.file(n));if(_r.Result.isErr(u))throw new Error(u.err);await oe(e,r,u.value);let i=null;t.index&&(t.index[0]==="."||X.default.isAbsolute(t.index)?i=X.default.isAbsolute(t.index)?t.index:X.default.resolve(process.cwd(),t.index):i=X.default.resolve(process.cwd(),t.index)),console.log(i);let s=null;if(i)try{let m=null;try{m=await o.readFile(pe.URI.file(i))}catch(C){m=""}if(m===null||m===""){s={modules:[]},e.info(`Index file at ${i} is either missing or empty. A new one will be created.`);try{await ut.promises.mkdir(X.default.dirname(i),{recursive:!0}),await ut.promises.writeFile(pe.URI.file(i).fsPath,JSON.stringify(s,null,2)),e.info(`Created new index file at ${i}`)}catch(C){e.error(`Failed to create new index file at ${i}: ${C}`);return}}try{m=await o.readFile(pe.URI.file(i)),s=await JSON.parse(m)}catch(C){throw new Error(`Failed to parse index file at ${i}: ${C}`)}if(!new bu.RegistryManager().validateIndexSchema(s))throw new Error(`Index schema validation failed for ${i}`)}catch(m){e.error(`Failed to read index file at ${i}: ${m}`);return}let a;if(s!=null&&s.modules&&(a=s.modules.find(m=>m.domain===u.value.Current.Manifest.module&&m.version===u.value.Current.Manifest.version)),a&&(e.warn(`Module ${a.domain} version ${a.version} already exists in the index file at ${i}. Proceeding will override the current entry.`),!await it({message:"Do you want to proceed anyway?",default:!1}))){e.info("Aborting index entry creation.");return}let c=await(0,xu.GatherModuleDocuments)(r.shared,u.value.Current.Root),D={};for(let m of c)if(X.default.basename(m.path).endsWith(".h.kumori")){let h=m.path.substring(pe.URI.parse(n).fsPath.length),C=X.default.dirname(h),w=(await o.readFile(m)).split(`
88
- `);for(let A of w){let T=A.match(/service\s+(\w+)/),ee=A.match(/component\s+(\w+)/);T?D[C]={name:T[1],type:"service"}:ee&&(D[C]={name:ee[1],type:"component"})}}let l=u.value.Current.Manifest,d=await(0,Su.CalculateChecksum)(n),p=await fe({message:"Enter the module location (remember it has to be a valid Git repository):",required:!0}),f={domain:l.module,version:l.version,location:p,checksum:d,releaseDate:new Date().toISOString().split("T")[0],artifacts:[]};for(let[m,g]of Object.entries(D)){if(!await it({message:`Do you want to include artifact ${g.name} located at route ${m} in the index?`,default:!0}))continue;let C=await bt(r,u.value,m,g.name);if(_r.Result.isErr(C))throw new Error(`Failed to generate JSON Schema for artifact ${g.name} at route ${m}: ${C.err}`);let E=await fe({message:`Enter the route for artifact ${g.name} (default: ${m}):`,default:m,required:!0}),w=await fe({message:`Enter a description for artifact ${g.name} (optional):`}),A=await it({message:`Do you want to publish artifact ${g.name} to the marketplace?`,default:!0}),T=await fe({message:`Enter an icon route for artifact ${g.name}. This is an optional field and it should be a path to an image file within the artifact route.
89
- For example, your icon could be located at ${E}/icon.png or ${E}/img/icon.jpg`}),ee=await fe({message:`Enter categories for artifact ${g.name}, separated by commas. For example: utility,network,storage (optional):`}).then(I=>I?I.split(",").map(N=>N.trim()):[]),H=await fe({message:`Enter tags for artifact ${g.name}, separated by commas. For example: sql,database,relational (optional):`}).then(I=>I?I.split(",").map(N=>N.trim()):[]);f.artifacts.push({name:g.name,description:w,location:E,type:g.type,marketplace:A,schema:C.value,icon:T,categories:ee,tags:H})}if(i&&s)if(a){s.modules=s.modules.map(g=>g.domain===a.domain&&g.version===a.version?f:g);let m=JSON.stringify(s,null,2);await ut.promises.writeFile(pe.URI.file(i).fsPath,m),e.info(`Updated module entry in index file at ${i}`)}else{s.modules.push(f);let m=JSON.stringify(s,null,2);await ut.promises.writeFile(pe.URI.file(i).fsPath,m),e.info(`Appended new module entry to index file at ${i}`)}else console.log(JSON.stringify({modules:[f]},null,2))}}var wu,vu,Bu,pe,X,_r,bu,xu,ut,Su,qs,Lu,Gs,Mu=S(()=>{"use strict";wu=require("@kumori/kdsl-lsp/language/kumori.js"),vu=require("langium/node"),Bu=require("@kumori/kdsl-lsp/module/context.js"),pe=require("langium"),X=k(require("path"),1),_r=require("@kumori/kdsl-lsp/util/result.js"),bu=require("@kumori/kdsl-lsp/module/registry/manager.js"),xu=require("@kumori/kdsl-lsp/module/documents.js"),ut=require("fs"),Su=require("@kumori/kdsl-lsp/module/integrity/checksum.js");yu();hr();Pe();qs="Creates an index file",Lu=`
90
- Creates a new index file entry for the current module. Additionally, you can provide
91
- the location of the module from which generate the entry for.
92
-
93
- This command will generate the entry for the current module:
94
- kdsl index create
95
-
96
- Or you can provide a module location to generate the entry for:
97
- kdsl index create --module path/to/module
98
-
99
- The generated index entry will be printed to the standard output. However, you can directly add
100
- the new entry onto an existing index file by providing the --index option:
101
- kdsl index create --index path/to/index/file.json
102
-
103
- If the index file is empty, a new index file will be created with just the new entry. Otherwise,
104
- if the index file already contains entries, the new entry will be appended to the existing ones.
105
- `.trim(),Gs={Register:Au}});var zs={};ae(zs,{build:()=>rn,check:()=>sn,clean:()=>Dn,createKumoriServices:()=>Pu.createKumoriServices,createSilentLogger:()=>Ht,getLogger:()=>$,indexCreate:()=>ku,moduleChecksum:()=>ii,moduleDependency:()=>ri,moduleDownload:()=>oi,moduleInit:()=>ti,moduleSchemaGet:()=>ui,moduleUpdate:()=>ni,registryAdd:()=>si,registryList:()=>ai,registryRemove:()=>li});module.exports=Vu(zs);var q=function(e){return e.info="info",e.warn="warn",e.error="error",e.debug="debug",e.trace="trace",e.fatal="fatal",e}({}),Hs={[q.trace]:10,[q.debug]:20,[q.info]:30,[q.warn]:40,[q.error]:50,[q.fatal]:60},Qs={10:q.trace,20:q.debug,30:q.info,40:q.warn,50:q.error,60:q.fatal};var V=function(e){return e.onBeforeDataOut="onBeforeDataOut",e.shouldSendToLogger="shouldSendToLogger",e.onMetadataCalled="onMetadataCalled",e.onBeforeMessageOut="onBeforeMessageOut",e.onContextCalled="onContextCalled",e}({});var B=function(e){return e.info="info",e.warn="warn",e.error="error",e.debug="debug",e.trace="trace",e.fatal="fatal",e}({}),ze={[B.trace]:10,[B.debug]:20,[B.info]:30,[B.warn]:40,[B.error]:50,[B.fatal]:60},ea={10:B.trace,20:B.debug,30:B.info,40:B.warn,50:B.error,60:B.fatal};var Gr=class zr{constructor(){x(this,"context",{});x(this,"hasContext",!1)}setContext(t){if(!t){this.context={},this.hasContext=!1;return}this.context=t,this.hasContext=!0}appendContext(t){this.context=F(F({},this.context),t),this.hasContext=!0}getContext(){return this.context}hasContextData(){return this.hasContext}onChildLoggerCreated({parentContextManager:t,childContextManager:r}){if(t.hasContextData()){let o=t.getContext();r.setContext(F({},o))}}clone(){let t=new zr;return t.setContext(F({},this.context)),t.hasContext=this.hasContext,t}};var Wr=class{constructor(e){x(this,"err");x(this,"metadata");x(this,"structuredLogger");x(this,"hasMetadata");x(this,"pluginManager");this.err=null,this.metadata={},this.structuredLogger=e,this.hasMetadata=!1,this.pluginManager=e.pluginManager}withMetadata(e){let{pluginManager:t,structuredLogger:{_config:{consoleDebug:r}}}=this;if(!e)return r&&console.debug("[LogLayer] withMetadata was called with no metadata; dropping."),this;let o=e;return t.hasPlugins(V.onMetadataCalled)&&(o=t.runOnMetadataCalled(e,this.structuredLogger),!o)?(r&&console.debug("[LogLayer] Metadata was dropped due to plugin returning falsy value."),this):(this.metadata=F(F({},this.metadata),o),this.hasMetadata=!0,this)}withError(e){return this.err=e,this}info(...e){this.structuredLogger.isLevelEnabled(B.info)&&(this.structuredLogger._formatMessage(e),this.formatLog(B.info,e))}warn(...e){this.structuredLogger.isLevelEnabled(B.warn)&&(this.structuredLogger._formatMessage(e),this.formatLog(B.warn,e))}error(...e){this.structuredLogger.isLevelEnabled(B.error)&&(this.structuredLogger._formatMessage(e),this.formatLog(B.error,e))}debug(...e){this.structuredLogger.isLevelEnabled(B.debug)&&(this.structuredLogger._formatMessage(e),this.formatLog(B.debug,e))}trace(...e){this.structuredLogger.isLevelEnabled(B.trace)&&(this.structuredLogger._formatMessage(e),this.formatLog(B.trace,e))}fatal(...e){this.structuredLogger.isLevelEnabled(B.fatal)&&(this.structuredLogger._formatMessage(e),this.formatLog(B.fatal,e))}disableLogging(){return this.structuredLogger.disableLogging(),this}enableLogging(){return this.structuredLogger.enableLogging(),this}formatLog(e,t){let{muteMetadata:r}=this.structuredLogger._config,o=r?!1:this.hasMetadata;this.structuredLogger._formatLog({logLevel:e,params:t,metadata:o?this.metadata:null,err:this.err})}},Ju=[V.onBeforeDataOut,V.onMetadataCalled,V.shouldSendToLogger,V.onBeforeMessageOut,V.onContextCalled],Hr=class{constructor(e){x(this,"idToPlugin");x(this,"onBeforeDataOut",[]);x(this,"shouldSendToLogger",[]);x(this,"onMetadataCalled",[]);x(this,"onBeforeMessageOut",[]);x(this,"onContextCalled",[]);this.idToPlugin={},this.mapPlugins(e),this.indexPlugins()}mapPlugins(e){for(let t of e){if(t.id||(t.id=Date.now().toString()+Math.random().toString()),this.idToPlugin[t.id])throw new Error(`[LogLayer] Plugin with id ${t.id} already exists.`);t.registeredAt=Date.now(),this.idToPlugin[t.id]=t}}indexPlugins(){this.onBeforeDataOut=[],this.shouldSendToLogger=[],this.onMetadataCalled=[],this.onBeforeMessageOut=[],this.onContextCalled=[];let e=Object.values(this.idToPlugin).sort((t,r)=>t.registeredAt-r.registeredAt);for(let t of e){if(t.disabled)return;for(let r of Ju)t[r]&&t.id&&this[r].push(t.id)}}hasPlugins(e){return this[e].length>0}countPlugins(e){return e?this[e].length:Object.keys(this.idToPlugin).length}addPlugins(e){this.mapPlugins(e),this.indexPlugins()}enablePlugin(e){let t=this.idToPlugin[e];t&&(t.disabled=!1),this.indexPlugins()}disablePlugin(e){let t=this.idToPlugin[e];t&&(t.disabled=!0),this.indexPlugins()}removePlugin(e){delete this.idToPlugin[e],this.indexPlugins()}runOnBeforeDataOut(e,t){let r=F({},e);for(let o of this.onBeforeDataOut){let n=this.idToPlugin[o];if(n.onBeforeDataOut){let u=n.onBeforeDataOut({data:r.data,logLevel:r.logLevel,error:r.error,metadata:r.metadata,context:r.context},t);u&&(r.data||(r.data={}),Object.assign(r.data,u))}}return r.data}runShouldSendToLogger(e,t){return!this.shouldSendToLogger.some(r=>{var o,n;return!((n=(o=this.idToPlugin[r]).shouldSendToLogger)!=null&&n.call(o,e,t))})}runOnMetadataCalled(e,t){var o,n;let r=F({},e);for(let u of this.onMetadataCalled){let i=(n=(o=this.idToPlugin[u]).onMetadataCalled)==null?void 0:n.call(o,r,t);if(i)r=i;else return null}return r}runOnBeforeMessageOut(e,t){var o,n;let r=[...e.messages];for(let u of this.onBeforeMessageOut){let i=(n=(o=this.idToPlugin[u]).onBeforeMessageOut)==null?void 0:n.call(o,{messages:r,logLevel:e.logLevel},t);i&&(r=i)}return r}runOnContextCalled(e,t){var o,n;let r=F({},e);for(let u of this.onContextCalled){let i=(n=(o=this.idToPlugin[u]).onContextCalled)==null?void 0:n.call(o,r,t);if(i)r=i;else return null}return r}},Qr=class Yr{constructor(t){x(this,"pluginManager");x(this,"idToTransport");x(this,"hasMultipleTransports");x(this,"singleTransport");x(this,"contextManager");x(this,"logLevelEnabledStatus",{info:!0,warn:!0,error:!0,debug:!0,trace:!0,fatal:!0});x(this,"_config");var r;this._config=L(F({},t),{enabled:(r=t.enabled)!=null?r:!0}),this._config.enabled||this.disableLogging(),this.contextManager=new Gr,this.pluginManager=new Hr(t.plugins||[]),this._config.errorFieldName||(this._config.errorFieldName="err"),this._config.copyMsgOnOnlyError||(this._config.copyMsgOnOnlyError=!1),this._initializeTransports(this._config.transport)}withContextManager(t){return this.contextManager&&typeof this.contextManager[Symbol.dispose]=="function"&&this.contextManager[Symbol.dispose](),this.contextManager=t,this}getContextManager(){return this.contextManager}_initializeTransports(t){if(this.idToTransport)for(let r in this.idToTransport)this.idToTransport[r]&&typeof this.idToTransport[r][Symbol.dispose]=="function"&&this.idToTransport[r][Symbol.dispose]();this.hasMultipleTransports=Array.isArray(t)&&t.length>1,this.singleTransport=this.hasMultipleTransports?null:Array.isArray(t)?t[0]:t,Array.isArray(t)?this.idToTransport=t.reduce((r,o)=>(r[o.id]=o,r),{}):this.idToTransport={[t.id]:t}}withPrefix(t){let r=this.child();return r._config.prefix=t,r}withContext(t){let r=t;return t?this.pluginManager.hasPlugins(V.onContextCalled)&&(r=this.pluginManager.runOnContextCalled(t,this),!r)?(this._config.consoleDebug&&console.debug("[LogLayer] Context was dropped due to plugin returning falsy value."),this):(this.contextManager.appendContext(r),this):(this._config.consoleDebug&&console.debug("[LogLayer] withContext was called with no context; dropping."),this)}clearContext(){return this.contextManager.setContext(void 0),this}getContext(){return this.contextManager.getContext()}addPlugins(t){this.pluginManager.addPlugins(t)}enablePlugin(t){this.pluginManager.enablePlugin(t)}disablePlugin(t){this.pluginManager.disablePlugin(t)}removePlugin(t){this.pluginManager.removePlugin(t)}withMetadata(t){return new Wr(this).withMetadata(t)}withError(t){return new Wr(this).withError(t)}child(){let t=new Yr(L(F({},this._config),{transport:Array.isArray(this._config.transport)?[...this._config.transport]:this._config.transport})).withPluginManager(this.pluginManager).withContextManager(this.contextManager.clone());return this.contextManager.onChildLoggerCreated({parentContextManager:this.contextManager,childContextManager:t.contextManager,parentLogger:this,childLogger:t}),t}withFreshTransports(t){return this._config.transport=t,this._initializeTransports(t),this}withFreshPlugins(t){return this._config.plugins=t,this.pluginManager=new Hr(t),this}withPluginManager(t){return this.pluginManager=t,this}errorOnly(t,r){let o=(r==null?void 0:r.logLevel)||B.error;if(!this.isLevelEnabled(o))return;let{copyMsgOnOnlyError:n}=this._config,u={logLevel:o,err:t};(n&&(r==null?void 0:r.copyMsg)!==!1||(r==null?void 0:r.copyMsg)===!0)&&(t!=null&&t.message)&&(u.params=[t.message]),this._formatLog(u)}metadataOnly(t,r=B.info){if(!this.isLevelEnabled(r))return;let{muteMetadata:o,consoleDebug:n}=this._config;if(o)return;if(!t){n&&console.debug("[LogLayer] metadataOnly was called with no metadata; dropping.");return}let u=t;if(this.pluginManager.hasPlugins(V.onMetadataCalled)&&(u=this.pluginManager.runOnMetadataCalled(t,this),!u)){n&&console.debug("[LogLayer] Metadata was dropped due to plugin returning falsy value.");return}let i={logLevel:r,metadata:u};this._formatLog(i)}info(...t){this.isLevelEnabled(B.info)&&(this._formatMessage(t),this._formatLog({logLevel:B.info,params:t}))}warn(...t){this.isLevelEnabled(B.warn)&&(this._formatMessage(t),this._formatLog({logLevel:B.warn,params:t}))}error(...t){this.isLevelEnabled(B.error)&&(this._formatMessage(t),this._formatLog({logLevel:B.error,params:t}))}debug(...t){this.isLevelEnabled(B.debug)&&(this._formatMessage(t),this._formatLog({logLevel:B.debug,params:t}))}trace(...t){this.isLevelEnabled(B.trace)&&(this._formatMessage(t),this._formatLog({logLevel:B.trace,params:t}))}fatal(...t){this.isLevelEnabled(B.fatal)&&(this._formatMessage(t),this._formatLog({logLevel:B.fatal,params:t}))}raw(t){if(!this.isLevelEnabled(t.logLevel))return;let r={logLevel:t.logLevel,params:t.messages,metadata:t.metadata,err:t.error,context:t.context};this._formatMessage(t.messages),this._formatLog(r)}disableLogging(){for(let t of Object.keys(this.logLevelEnabledStatus))this.logLevelEnabledStatus[t]=!1;return this}enableLogging(){for(let t of Object.keys(this.logLevelEnabledStatus))this.logLevelEnabledStatus[t]=!0;return this}muteContext(){return this._config.muteContext=!0,this}unMuteContext(){return this._config.muteContext=!1,this}muteMetadata(){return this._config.muteMetadata=!0,this}unMuteMetadata(){return this._config.muteMetadata=!1,this}enableIndividualLevel(t){let r=t;return r in this.logLevelEnabledStatus&&(this.logLevelEnabledStatus[r]=!0),this}disableIndividualLevel(t){let r=t;return r in this.logLevelEnabledStatus&&(this.logLevelEnabledStatus[r]=!1),this}setLevel(t){let r=ze[t];for(let o of Object.values(B)){let n=o,u=ze[o];this.logLevelEnabledStatus[n]=u>=r}return this}isLevelEnabled(t){let r=t;return this.logLevelEnabledStatus[r]}formatContext(t){let{contextFieldName:r,muteContext:o}=this._config;return t&&Object.keys(t).length>0&&!o?r?{[r]:F({},t)}:F({},t):{}}formatMetadata(t=null){let{metadataFieldName:r,muteMetadata:o}=this._config;return t&&!o?r?{[r]:F({},t)}:F({},t):{}}getLoggerInstance(t){let r=this.idToTransport[t];if(r)return r.getLoggerInstance()}_formatMessage(t=[]){let{prefix:r}=this._config;r&&typeof t[0]=="string"&&(t[0]=`${r} ${t[0]}`)}_formatLog({logLevel:t,params:r=[],metadata:o=null,err:n,context:u=null}){var m;let{errorSerializer:i,errorFieldInMetadata:s,muteContext:a,contextFieldName:c,metadataFieldName:D,errorFieldName:l}=this._config,d=u!==null?u:this.contextManager.getContext(),p=!!o||(a?!1:u!==null?Object.keys(u).length>0:this.contextManager.hasContextData()),f={};if(p)if(c&&c===D){let g=this.formatContext(d)[c],h=this.formatMetadata(o)[D];f={[c]:F(F({},g),h)}}else f=F(F({},this.formatContext(d)),this.formatMetadata(o));if(n){let g=i?i(n):n;s&&o&&D?f!=null&&f[D]?f[D][l]=g:f=L(F({},f),{[D]:{[l]:g}}):s&&!o&&D?f=L(F({},f),{[D]:{[l]:g}}):f=L(F({},f),{[l]:g}),p=!0}if(this.pluginManager.hasPlugins(V.onBeforeDataOut)&&(f=this.pluginManager.runOnBeforeDataOut({data:p?f:void 0,logLevel:t,error:n,metadata:o,context:d},this),f&&!p&&(p=!0)),this.pluginManager.hasPlugins(V.onBeforeMessageOut)&&(r=this.pluginManager.runOnBeforeMessageOut({messages:[...r],logLevel:t},this)),this.hasMultipleTransports){let g=this._config.transport.filter(h=>h.enabled).map(async h=>{if(!(this.pluginManager.hasPlugins(V.shouldSendToLogger)&&!this.pluginManager.runShouldSendToLogger({messages:[...r],data:p?f:void 0,logLevel:t,transportId:h.id,error:n,metadata:o,context:d},this)))return h._sendToLogger({logLevel:t,messages:[...r],data:p?f:void 0,hasData:p,error:n,metadata:o,context:d})});Promise.all(g).catch(h=>{this._config.consoleDebug&&console.error("[LogLayer] Error executing transports:",h)})}else{if(!((m=this.singleTransport)!=null&&m.enabled)||this.pluginManager.hasPlugins(V.shouldSendToLogger)&&!this.pluginManager.runShouldSendToLogger({messages:[...r],data:p?f:void 0,logLevel:t,transportId:this.singleTransport.id,error:n,metadata:o,context:d},this))return;this.singleTransport._sendToLogger({logLevel:t,messages:[...r],data:p?f:void 0,hasData:p,error:n,metadata:o,context:d})}}};function Ht(){let e={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};return new Qr({transport:e})}function $(e){return e!=null?e:Ht()}var tn=require("@kumori/kdsl-lsp/module/registry/manager.js");var pt=require("@kumori/kdsl-lsp/language/generated/ast.js"),ns=require("@kumori/kdsl-lsp/language/kumori.js"),ht=require("langium"),is=require("langium/node"),U=require("@kumori/kdsl-lsp/util/result.js");var fo=require("@kumori/kdsl-lsp/language/builtin/lib/kumori/deployment.js"),po=require("@kumori/kdsl-lsp/language/type-system/toJSON.js"),le=require("@kumori/kdsl-lsp/util/result.js"),er=require("langium");var ro=require("@kumori/kdsl-lsp/util/sized.js");var y=require("@kumori/kdsl-lsp/language/builtin/lib/kumori/resource.js");function re(e){if(e.$type===y.EphemeralName){let t=y.Ephemeral.parse(e);return{volume:{size:t.value.size,unit:t.value.unit,kind:"storage"}}}if(e.$type===y.PersistentName)return{volume:y.Persistent.parse(e).value};if(e.$type===y.RegisteredName)return{volume:y.Registered.parse(e).value};if(e.$type===y.VolatileName){let t=y.Volatile.parse(e);return{volume:{size:t.value.size,unit:t.value.unit,kind:"storage",type:"volatile"}}}if(e.$type===y.PersistedName){let t=y.Persisted.parse(e);return{volume:{size:t.value.size,unit:t.value.unit,kind:"storage",type:"persistent"}}}if(e.$type===y.NonReplicatedName){let t=y.NonReplicated.parse(e);return{volume:{size:t.value.size,unit:t.value.unit,kind:"storage",type:"nonreplicated"}}}if(e.$type===y.CAName)return{ca:y.CA.parse(e).value};if(e.$type===y.CertificateName)return{certificate:y.Certificate.parse(e).value};if(e.$type===y.SecretName)return{secret:y.Secret.parse(e).value};if(e.$type===y.DomainName)return{domain:y.Domain.parse(e).value};if(e.$type===y.PortName)return{port:y.Port.parse(e).value};throw new Error(`unknown resource type '${e.$type}'`)}var Zr=require("@kumori/kdsl-lsp/util/oci.js"),Le=require("@kumori/kdsl-lsp/util/result.js"),Xr=require("langium"),eo=require("path");function to(e){return typeof e=="string"?Le.Result.orElse(Le.Result.map((0,Zr.ParseOCIString)(e),t=>{var r,o;return{tag:t.tag,hub:{name:t.hub,secret:typeof e=="string"?"":(o=(r=e.hub)==null?void 0:r.secret)!=null?o:""}}}),t=>{throw new Error(t)}):e}function he(e,t){if(!t)return[];let r=Xr.AstUtils.getDocument(t).uri,o=e.getModule(r);if(Le.Result.isErr(o))return[];let n=Le.Result.tryCatch(()=>new URL(`file://${o.value.Manifest.module}`));if(Le.Result.isErr(n))return[];let u=[];return n.value.hostname.length&&u.push(i=>i.domain=n.value.hostname),n.value.pathname.length&&u.push(i=>{i.module=n.value.pathname.replace(/^\//,""),i.name=(0,eo.basename)(i.module)}),u}var oo=require("@kumori/kdsl-lsp/language/generated/ast.js");function no(e,t){let r={version:[0,0,0],kind:"service",domain:"unknown",module:"unknown",name:"unknown"},o=e.svcs.shared.references.KumoriModules,n=he(o,e.nodes.get(t));for(let s of n)s(r);let u=e.nodes.get(t),i="";if(u&&(0,oo.isComponentArtifact)(u)&&(i=u.name.value.$refText),i==="")throw new Error("Unable to determine component name for service artifact conversion.");return{spec:[1,0],ref:r,description:{builtin:!1,connector:{},config:{resilience:0,scale:{},parameter:{},resource:{}},role:{[i]:{name:i,meta:{},artifact:Qt(e,t)}}}}}function Qt(e,t){var c,D,l,d,p,f,m,g,h,C;let r={version:[0,0,0],kind:"component",domain:"unknown",module:"unknown",name:"unknown"},o=e.svcs.shared.references.KumoriModules,n=he(o,e.nodes.get(t));for(let E of n)E(r);function u(E,w=!1){return Object.fromEntries(Object.entries(E!=null?E:{}).map(([A,T])=>{var H,I;return[A,{name:A,init:w,entrypoint:T.entrypoint,image:to(T.image),cmd:T.cmd,size:{memory:L(F({},T.size.memory),{kind:"ram"}),cpu:L(F({},T.size.cpu),{kind:"cpu"}),mincpu:T.size.mincpu?T.size.mincpu.size:T.size.cpu.size},mapping:{filesystem:Object.fromEntries(Object.entries((H=T.fs)!=null?H:{}).map(([N,j])=>[N,qu(N,j)])),env:Object.fromEntries(Object.entries((I=T.env)!=null?I:{}).map(([N,j])=>{let Q=N,Tu=typeof j=="string"||typeof j=="number"||typeof j=="boolean"?{value:String(j)}:j;return[Q,Tu]}))}}]}))}let i=Object.fromEntries(((c=t.init)!=null?c:[]).map((E,w)=>[`INIT_${w}`,E])),s=u(t.code),a=u(i,!0);return{spec:[1,0],ref:r,description:{builtin:!1,config:{resilience:0,scale:{hsize:1},parameter:t.config,resource:Object.fromEntries(Object.entries((D=t.resource)!=null?D:{}).map(([E,w])=>[E,re(w)]))},size:{bandwidth:L(F({},t.size.bandwidth),{kind:"bandwidth"}),minbandwidth:Math.ceil((0,ro.ToUnits)((l=t.size.minbandwidth)!=null?l:t.size.bandwidth,t.size.bandwidth.unit).size),mincpu:L(F({},t.size.mincpu),{kind:"cpu"})},profile:{threadability:"*",iopsintensive:!1},srv:{client:Object.fromEntries(Object.entries((p=(d=t.srv)==null?void 0:d.client)!=null?p:{}).map(([E,w])=>[E,{protocol:w,inherited:!1}])),server:Object.fromEntries(Object.entries((m=(f=t.srv)==null?void 0:f.server)!=null?m:{}).map(([E,w])=>{let A;return typeof w=="string"?A={port:80,portnum:1,inherited:!1,protocol:w}:A=L(F({},w),{portnum:1,inherited:!1}),[E,A]})),duplex:Object.fromEntries(Object.entries((h=(g=t.srv)==null?void 0:g.duplex)!=null?h:{}).map(([E,w])=>{let A;return typeof w=="string"?A={port:80,portnum:1,inherited:!1,protocol:w}:A=L(F({},w),{portnum:1,inherited:!1}),[E,A]}))},code:F(F({},a),s),probe:Object.fromEntries(Object.entries((C=t.probe)!=null?C:{}).map(([E,w])=>[E,w]))}}}function qu(e,t){var r,o,n,u;if(typeof t=="string")return{path:e,data:{value:t},format:"text"};if(typeof t=="object"){if("volume"in t)return{path:e,volume:t.volume};if("data"in t)return{path:e,data:{value:t.data},format:(r=t.format)!=null?r:"text",mode:(o=t.mode)!=null?o:420};let s=["secret","port","domain","certificate","ca"].find(a=>a in t);if(s){let a=s;return{path:e,data:{[a]:t[a]},format:(n=t.format)!=null?n:"text",mode:(u=t.mode)!=null?u:420}}}throw new Error(`Unknown key '${e}': ${JSON.stringify(t)}`)}var Oe=require("@kumori/kdsl-lsp/util/maybe.js");var io=require("@kumori/kdsl-lsp/util/semver.js");function Gu(e){var r,o,n;let t=(0,io.SemVer)(e.id.version);return{spec:[1,0],ref:{version:[t.major,t.minor,t.patch],kind:e.id.kind,domain:e.id.domain,module:e.id.module,name:e.id.name},description:{builtin:!0,srv:{client:Object.fromEntries(Object.entries((r=e.srv.client)!=null?r:{}).map(([u])=>[u,{protocol:"http",inherited:!1}])),server:Object.fromEntries(Object.entries((o=e.srv.server)!=null?o:{}).map(([u,i])=>{let s;return typeof i=="string"?s={port:80,portnum:1,inherited:!1,protocol:i}:s=L(F({},i),{inherited:!1}),[u,s]})),duplex:Object.fromEntries(Object.entries((n=e.srv.duplex)!=null?n:{}).map(([u,i])=>{let s;return typeof i=="string"?s={port:80,portnum:1,inherited:!1,protocol:i}:s=L(F({},i),{inherited:!1}),[u,s]}))},config:{resilience:0,scale:{},parameter:e.config,resource:Object.fromEntries(Object.entries(e.resource).map(([u,i])=>[u,re(i)]))},connector:{},role:{}}}}function uo(e,t){var r,o;return{name:Fe(e),up:Ae(e),meta:{},config:{resilience:0,scale:{},parameter:(r=t.config)!=null?r:{},resource:Object.fromEntries(Object.entries((o=t.resource)!=null?o:{}).map(([n,u])=>[n,re(u)]))},artifact:Gu(t)}}var Dt=require("@kumori/kdsl-lsp/language/builtin/lib/kumori/service.js");function at(e,t,r,o){let n=e.svcs.shared.references.KumoriModules,u=he(n,e.nodes.get(t));for(let i of u)i(r);return o&&(r.kind="service"),r}function Yt(e,t){return e.some(r=>JSON.stringify(r)===JSON.stringify(t))}function Zt(e,t){return{role:e,channel:t}}function lt(e,t,r){return{meta:e,links:[{role:t,channel:r}]}}function so(e,t,r){var n,u,i,s;let o={version:[0,0,0],kind:"component",domain:"unknown",module:"unknown",name:"unknown"};if(r.$type===Dt.LoadBalancerName){r=r;let a=[],c=[];if("from"in r.value&&Array.isArray(r.value.from)&&"to"in r.value&&Array.isArray(r.value.to))for(let D of r.value.from){c.push(Zt(D.target,D.channel));for(let l of r.value.to){let d=t.role[l.target=="self"?D.target:l.target],p=ue(d.artifact)||l.target=="self";at(e,d,o,p);let f=(n=r.value.meta)!=null?n:[{auto:{channel:l.target!=="self"?l.target+"."+l.channel:l.channel,compRef:o,roleName:l.target=="self"?D.target:l.target},user:{}}],m=lt(f,l.target,l.channel);Yt(a,m)||a.push(m)}}else if("from"in r.value&&!Array.isArray(r.value.from)&&!Array.isArray(r.value.to)){let D=r.value.from,l=r.value.to;c.push(Zt(D.target,D.channel));let d=t.role[l.target=="self"?D.target:l.target],p=ue(d.artifact)||l.target=="self";at(e,d,o,p);let f=(u=r.value.meta)!=null?u:[{auto:{channel:l.target!=="self"?l.target+"."+l.channel:l.channel,compRef:o,roleName:l.target=="self"?D.target:l.target},user:{}}],m=lt(f,l.target,l.channel);Yt(a,m)||a.push(m)}return{kind:"lb",clients:c,servers:a}}if(r.$type===Dt.FullConnectorName){r=r;let a=[],c=[];if("from"in r.value&&Array.isArray(r.value.from)&&"to"in r.value&&Array.isArray(r.value.to))for(let D of r.value.from){c.push(Zt(D.target,D.channel));for(let l of r.value.to){let d=t.role[l.target=="self"?D.target:l.target],p=ue(d.artifact);at(e,d,o,p);let f=(i=r.value.meta)!=null?i:[{auto:{channel:l.target!=="self"?l.target+"."+l.channel:l.channel,compRef:o,roleName:l.target=="self"?D.target:l.target},user:{}}],m=lt(f,l.target,l.channel);Yt(a,m)||a.push(m)}}else if("target"in r.value&&"channel"in r.value){let D=t.role[r.value.target],l=ue(D.artifact);at(e,D,o,l);let d=(s=r.value.meta)!=null?s:[{auto:{channel:r.value.channel,compRef:o,roleName:r.value.target},user:{}}];a.push(lt(d,r.value.target,r.value.channel))}return{kind:"full",clients:c,servers:a}}throw new Error(`unknown connection type '${r.$type}'`)}function Xt(e,t){var i,s,a,c,D,l,d,p,f,m,g;let r={version:[0,0,0],kind:"service",domain:"unknown",module:"unknown",name:"unknown"},o=e.svcs.shared.references.KumoriModules,n=he(o,e.nodes.get(t));for(let h of n)h(r);let u={spec:[1,0],ref:r,description:{builtin:!1,config:{resilience:0,scale:{detail:Object.fromEntries(Object.entries((i=t.role)!=null?i:{}).map(([h])=>[h,{hsize:1}]))},parameter:(s=t==null?void 0:t.config)!=null?s:{},resource:Object.fromEntries(Object.entries((a=t.resource)!=null?a:{}).map(([h,C])=>[h,re(C)]))},role:{},connector:Object.fromEntries(Object.entries((c=t.connect)!=null?c:{}).map(([h,C])=>[h,so(e,t,C)])),srv:{client:Object.fromEntries(Object.entries((l=(D=t.srv)==null?void 0:D.client)!=null?l:{}).map(([h,C])=>[h,{protocol:C,inherited:!1}])),server:Object.fromEntries(Object.entries((p=(d=t.srv)==null?void 0:d.server)!=null?p:{}).map(([h,C])=>{let E;return typeof C=="string"?E={port:80,inherited:!1,protocol:C}:E=L(F({},C),{inherited:!1}),[h,E]})),duplex:Object.fromEntries(Object.entries((m=(f=t.srv)==null?void 0:f.duplex)!=null?m:{}).map(([h,C])=>{let E;return typeof C=="string"?E={port:80,inherited:!1,protocol:C}:E=L(F({},C),{inherited:!1}),[h,E]}))}}};return u.description.role=Object.fromEntries(Object.entries((g=t.role)!=null?g:{}).map(([h,C])=>[h,Wu(e,h,C,u)]).filter(([,h])=>Oe.Maybe.isSome(h)).map(([h,C])=>[h,C.value])),u}function zu(e,t){var r,o,n,u,i,s,a;return{name:Fe(e),up:Ae(e),meta:{},config:{resilience:0,scale:(n=(r=t.config)==null?void 0:r.scale)!=null?n:{hsize:(o=t.config)==null?void 0:o.scale},parameter:(i=(u=t.config)==null?void 0:u.parameter)!=null?i:{},resource:Object.fromEntries(Object.entries((a=(s=t.config)==null?void 0:s.resource)!=null?a:{}).map(([c,D])=>[c,re(D)]))},artifact:Xt(e,t)}}function Wu(e,t,r,o){var i,s,a,c,D,l,d,p,f,m,g,h,C,E,w,A,T,ee;if(We(r.artifact))return(0,Oe.Some)({name:t,meta:r.meta,config:{resilience:0,scale:{hsize:1},parameter:(i=r.artifact.config)!=null?i:{},resource:{}},artifact:Qt(e,r.artifact)});let n=r.artifact;e=ao(e,t),lo(e,ue(n)?zu(e,n):uo(e,n)),(a=(s=o.description).srv)!=null||(s.srv={}),(D=(c=o.description.srv).server)!=null||(c.server={}),(d=(l=o.description.srv).client)!=null||(l.client={});for(let[,H]of Object.entries((p=o.description.connector)!=null?p:{})){for(let I of H.clients){if(I.role!==t)continue;let N=F({},I),j=`${I.role}.${I.channel}`,Q=((m=(f=n==null?void 0:n.srv)==null?void 0:f.client)!=null?m:{})[I.channel];o.description.srv.server[j]={inherited:!0,protocol:I.channel=="inbound"?"http":Q},I.role="self",I.channel=j,(h=(g=e.root).links)!=null||(g.links=[]),e.root.links.push({meta:{},s_d:Fe(e),s_c:N.channel,t_d:Ae(e),t_c:j})}for(let I of H.servers)for(let N of I.links)if(N.role===t){let j=`${N.role}.${N.channel}`,Q=((E=(C=n==null?void 0:n.srv)==null?void 0:C.server)!=null?E:{})[N.channel];Q===void 0&&(Q=((A=(w=n==null?void 0:n.srv)==null?void 0:w.duplex)!=null?A:{})[N.channel]),o.description.srv.client[j]={inherited:!0,protocol:typeof Q=="string"?Q:Q.protocol,port:typeof Q=="object"?Q.port:void 0},(ee=(T=e.root).links)!=null||(T.links=[]),e.root.links.push({meta:{},s_d:Ae(e),s_c:j,t_d:Fe(e),t_c:N.channel}),N.role="self",N.channel=j}}return Oe.None}var Do=require("@kumori/kdsl-lsp/language/generated/ast.js");var Fe=e=>e.path.join("."),Ae=e=>e.path.slice(0,-1).join("."),ao=(e,t)=>L(F({},e),{path:[...e.path,t]}),lo=(e,t)=>e.root.deployments[Fe(e)]=t;function co(e,t,r){var u,i,s;let o={top:r.name,deployments:{},links:[]},n={svcs:e,path:[r.name],root:o,nodes:t};return o.deployments[r.name]={name:r.name,meta:r.meta,config:{parameter:(u=r.config)!=null?u:{},resource:Object.fromEntries(Object.entries((i=r.resource)!=null?i:{}).map(([a,c])=>[a,re(c)])),resilience:(s=r.resilience)!=null?s:0,scale:{detail:(()=>{var a;if(We(r.artifact)){let c=n.nodes.get(r.artifact),D="";if(c&&(0,Do.isComponentArtifact)(c)&&(D=c.name.value.$refText),D==="")throw new Error("Unable to determine component name for scale detail.");return{[D]:{hsize:typeof r.scale=="number"?r.scale:1}}}if(ue(r.artifact)){let c=Object.entries((a=r.artifact.role)!=null?a:{});return Object.fromEntries(c.map(([D])=>[D,{hsize:r.scale&&typeof r.scale=="object"&&!Array.isArray(r.scale)&&D in r.scale?r.scale[D]:1}]))}return{}})()}},artifact:(()=>{if(We(r.artifact))return no(n,r.artifact);if(ue(r.artifact))return Xt(n,r.artifact);throw mo(r.artifact)?new Error("not implemented: handle builtin"):new Error("unknown artifact")})()},o}function We(e){return"size"in e}function ue(e){return!(We(e)||mo(e))}function mo(e){return"id"in e}function ho(e,t,r){var D,l;let o=t.validation.KumoriTypeSystem,[{Value:n},u]=o.Eval(t.validation.KumoriValidations.ctx(),r);if(u.length!==0){let d=[];for(let p of u){let f=p.node,m=er.AstUtils.getDocument(f),g=((D=f.$cstNode)==null?void 0:D.range.start)||{line:0,character:0},h=`${m.uri.fsPath}:${g.line}:${g.character}: type error: ${p.message}`;e.error(h),d.push(h)}return(0,le.Err)(d)}let i=new Map,s=(0,po.toJSON)({svcs:t,nodes:i},n);if(le.Result.isErr(s)){let d=[];for(let p of s.err){let f=p.node,m=er.AstUtils.getDocument(f),g=((l=f.$cstNode)==null?void 0:l.range.start)||{line:0,character:0},h=`${m.uri.fsPath}:${g.line}:${g.character}: json conversion error: ${p.message}`;e.error(h),d.push(h)}return(0,le.Err)(d)}let a=fo.Deployment.safeParse(s.value);if(!a.success){let d=[];for(let p of a.error.issues){let f=`${p.code}: ${p.path}: invalid deployment: ${p.message}`;e.error(f),d.push(f)}return(0,le.Err)(d)}let c=JSON.stringify(co(t,i,s.value),null,2);return(0,le.Ok)(c)}var dr=require("@kumori/kdsl-lsp/module/context.js"),Wo=require("@kumori/kdsl-lsp/module/dependency/list.js"),Dr=k(require("assert"),1),Ho=require("@kumori/kdsl-lsp/module/dependency/locate.js"),Qo=require("@kumori/kdsl-lsp/util/maybe.js"),Yo=require("@kumori/kdsl-lsp/module/dependency/id.js"),cr=k(require("path"),1);Pe();var Zo=require("fs"),us=require("@kumori/kdsl-lsp/module/registry/manager.js");var Bl=`
106
- Generates a solution.json file for a specified Kumori package containing deployment definitions.
107
- The command requires the path to the package as an argument, and optionally accepts a directory
108
- path where the Kumori module is located. If the directory is not provided, the current working
109
- directory is used by default.
110
-
111
- Some usage examples:
112
- kdsl build
113
- kdsl build my-package
114
- kdsl build my-package path/to/module
115
-
116
- The generated solution.json file will be created in the package directory, containing all necessary
117
- information for deploying the resources defined in the package's deployment artifacts.
118
- `.trim();async function Xo(e,t,r,o){let n=t.shared.workspace.FileSystemProvider,u=await(0,dr.ModuleContext)(n,ht.URI.file(cr.default.resolve(o)));if(U.Result.isErr(u)){let h=`error: ${u.err}`;return e.error(h),(0,U.Err)([h])}let i=F({FS:n},u.value),s=await en(i);if(s.size>0){let h=["error: missing modules"];e.error(h[0]);for(let E of s){let w=`+ ${E}`;e.error(w),h.push(w)}let C="unable to build solution.json";return e.error(C),h.push(C),(0,U.Err)(h)}let a=await oe(e,t,u.value);if(U.Result.isErr(a))return a;let c=ht.UriUtils.joinPath(u.value.Current.Root,r),D=t.references.KumoriPackages.GetPackage(c);if(U.Result.isErr(D)){let h=`error: failed to retrieve package: ${c.toString()}`;return e.error(h),(0,U.Err)([h])}let l=new Set(D.value.docs.map(h=>h.uri.toString())),d=t.shared.workspace.IndexManager.allElements(pt.DeploymentArtifact.$type,l).toArray();if(d.length<1){let h=`error: no deployment defined in ${c.toString()}`;return e.error(h),(0,U.Err)([h])}if(d.length>1){let h=`error: too many deployments in ${c.toString()}`;return e.error(h),(0,U.Err)([h])}let p=d[0],f=p.node;if(!(0,pt.isDeploymentArtifact)(f)){let h=`error: invalid target doc=${p.documentUri} location=${p.path}`;return e.error(h),(0,U.Err)([h])}let m=ho(e,t,f);if(U.Result.isErr(m))return m;let g=cr.default.join(c.fsPath,"solution.json");return await Zo.promises.writeFile(g,m.value,"utf-8"),e.info(`solution.json written to ${g}`),(0,U.Ok)(void 0)}async function en(e,t=new Set){let r=(0,Wo.ListDependencies)(e.Current);for(let[,o]of r.entriesGroupedByKey()){(0,Dr.default)(o.length>0);let{target:n,version:u}=o[0],i=await(0,Ho.LocateDependency)(e,n,u);if(Qo.Maybe.isNone(i)){t.add((0,Yo.DependencyId)(n,u));continue}let s=await dr.ModuleContext.Move(e,e.FS,i.value.Root);(0,Dr.default)(U.Result.isOk(s));let a=F(F({},e),s.value);await en(a,t)}return t}async function rn(e){var i,s,a;let t=$(e.logger),r=(i=e.package)!=null?i:".",o=(a=(s=e.directory)!=null?s:e.cwd)!=null?a:".",n=e.services;return await new tn.RegistryManager().ensureIndexes(),await Xo(t,n,r,o)}Pe();var on=require("@kumori/kdsl-lsp/module/context.js"),nn=require("langium"),Ft=require("@kumori/kdsl-lsp/util/result.js"),un=k(require("path"),1);async function sn(e){var i,s;let t=$(e.logger),r=(s=(i=e.directory)!=null?i:e.cwd)!=null?s:".",o=e.services,n=o.shared.workspace.FileSystemProvider,u=await(0,on.ModuleContext)(n,nn.URI.file(un.default.resolve(r)));return Ft.Result.isErr(u)?(0,Ft.Err)([u.err]):await oe(t,o,u.value)}var an=require("@kumori/kdsl-lsp/util/tmp.js"),ln=require("fs/promises"),gt=require("@kumori/kdsl-lsp/util/result.js");async function Dn(e={}){let t=$(e.logger);try{let r=await(0,an.TempCache)();return t.info(r.fsPath),await(0,ln.rm)(r.fsPath,{force:!0,recursive:!0}),(0,gt.Ok)(void 0)}catch(r){return(0,gt.Err)([String(r)])}}var Pu=require("@kumori/kdsl-lsp/language/kumori.js");var ei=require("langium"),_=require("@kumori/kdsl-lsp/util/result.js");async function ti(e){var o;let t=$(e.logger),{NewModule:r}=await Promise.resolve().then(()=>(Cn(),gn));try{let n=(o=e.cwd)!=null?o:process.cwd();return await r(t,n,e.name,e.version,e.location,e.cacheLocation),(0,_.Ok)(void 0)}catch(n){return(0,_.Err)([String(n)])}}async function ri(e){var i;let t=$(e.logger),r=ei.URI.file((i=e.cwd)!=null?i:process.cwd()),{Dependency:o}=await Promise.resolve().then(()=>(An(),Ln)),{RegistryManager:n}=await import("@kumori/kdsl-lsp/module/registry/manager.js");await new n().ensureIndexes();try{return await o(t,r,e.module,{alias:e.alias,headers:e.headers,remove:e.remove?!0:void 0,download:e.download?!0:void 0}),(0,_.Ok)(void 0)}catch(s){return(0,_.Err)([String(s)])}}async function oi(e){var u,i;let t=$(e.logger),{Download:r}=await Promise.resolve().then(()=>(ft(),No)),{RegistryManager:o}=await import("@kumori/kdsl-lsp/module/registry/manager.js");return await new o().ensureIndexes(),await r(t,e.services,(u=e.cwd)!=null?u:process.cwd(),(i=e.modules)!=null?i:[],{quiet:e.quiet?!0:void 0})}async function ni(e){var o;let t=$(e.logger),{NewModule:r}=await Promise.resolve().then(()=>(In(),$n));try{return await r(t,(o=e.cwd)!=null?o:process.cwd(),{version:e.version,cacheLocation:e.cacheLocation,path:e.path}),(0,_.Ok)(void 0)}catch(n){return(0,_.Err)([String(n)])}}async function ii(e){var a,c;let{CalculateChecksum:t}=await import("@kumori/kdsl-lsp/module/integrity/checksum.js"),{ModuleContext:r}=await import("@kumori/kdsl-lsp/module/context.js"),{URI:o}=await import("langium"),n=await import("path"),u=e.services.shared.workspace.FileSystemProvider,i=(c=(a=e.directory)!=null?a:e.cwd)!=null?c:".",s=await r(u,o.file(n.resolve(i)));if(_.Result.isErr(s))return(0,_.Err)([s.err]);try{let D=await t(s.value.Current.Root.fsPath);return(0,_.Ok)(D)}catch(D){return(0,_.Err)([String(D)])}}async function ui(e){let t=$(e.logger),{LocateModule:r,GetSchema:o}=await Promise.resolve().then(()=>(hr(),Xn)),{ModuleContext:n}=await import("@kumori/kdsl-lsp/module/context.js"),{Check:u}=await Promise.resolve().then(()=>(Pe(),zo)),{URI:i}=await import("langium"),s=e.services,a=s.shared.workspace.FileSystemProvider,c=await r(e.target);if(_.Result.isErr(c))return c;let D=await n(a,i.file(c.value.fsPath));if(_.Result.isErr(D))return(0,_.Err)([D.err]);let l=await u(t,s,D.value);return _.Result.isErr(l)?l:await o(s,D.value,e.packagePath,e.artifactName)}var xt=require("@kumori/kdsl-lsp/module/registry/manager.js"),ce=require("@kumori/kdsl-lsp/util/result.js");async function si(e){let t=$(e.logger),r=new xt.RegistryManager,o={selector:e.selector,version:e.version,indexUrl:e.url};try{return r.add(o),t.info(`Registry '${e.selector}' added at ${e.url}`),(0,ce.Ok)(void 0)}catch(n){return(0,ce.Err)([`Failed to add registry: ${n}`])}}async function ai(e={}){let t=$(e.logger),r=new xt.RegistryManager;try{let o=r.list();return t.info("Configured Registries:"),(0,ce.Ok)(o)}catch(o){return(0,ce.Err)([`Failed to list registries: ${o}`])}}async function li(e){let t=$(e.logger),r=new xt.RegistryManager;try{return r.remove(e.name),t.info(`Registry '${e.name}' removed`),(0,ce.Ok)(void 0)}catch(o){return(0,ce.Err)([`Failed to remove registry: ${o}`])}}var st=require("@kumori/kdsl-lsp/util/result.js");async function ku(e){var r,o;let t=$(e.logger);if(!e.interactive)return(0,st.Err)(["Index create command requires interactive mode. Set interactive: true to use this command programmatically with prompts, or use the CLI directly: kdsl index create"]);try{let{Action:n}=await Promise.resolve().then(()=>(Mu(),Ru));return await n(t)({module:(r=e.module)!=null?r:void 0,index:(o=e.indexFile)!=null?o:void 0}),(0,st.Ok)(void 0)}catch(n){return(0,st.Err)([String(n)])}}0&&(module.exports={build,check,clean,createKumoriServices,createSilentLogger,getLogger,indexCreate,moduleChecksum,moduleDependency,moduleDownload,moduleInit,moduleSchemaGet,moduleUpdate,registryAdd,registryList,registryRemove});
package/out/lib/mod.cjs DELETED
@@ -1,71 +0,0 @@
1
- const __importMetaUrl = require('url').pathToFileURL(__filename).href;
2
- "use strict";var ir=Object.create;var Q=Object.defineProperty,nr=Object.defineProperties,ar=Object.getOwnPropertyDescriptor,sr=Object.getOwnPropertyDescriptors,lr=Object.getOwnPropertyNames,be=Object.getOwnPropertySymbols,ur=Object.getPrototypeOf,Pe=Object.prototype.hasOwnProperty,dr=Object.prototype.propertyIsEnumerable;var Se=(t,e)=>(e=Symbol[t])?e:Symbol.for("Symbol."+t);var ue=(t,e,r)=>e in t?Q(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,h=(t,e)=>{for(var r in e||(e={}))Pe.call(e,r)&&ue(t,r,e[r]);if(be)for(var r of be(e))dr.call(e,r)&&ue(t,r,e[r]);return t},b=(t,e)=>nr(t,sr(e));var R=(t,e)=>()=>(t&&(e=t(t=0)),e);var $=(t,e)=>{for(var r in e)Q(t,r,{get:e[r],enumerable:!0})},Ce=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of lr(e))!Pe.call(t,o)&&o!==r&&Q(t,o,{get:()=>e[o],enumerable:!(i=ar(e,o))||i.enumerable});return t};var P=(t,e,r)=>(r=t!=null?ir(ur(t)):{},Ce(e||!t||!t.__esModule?Q(r,"default",{value:t,enumerable:!0}):r,t)),cr=t=>Ce(Q({},"__esModule",{value:!0}),t);var L=(t,e,r)=>(ue(t,typeof e!="symbol"?e+"":e,r),r);var De=(t,e,r)=>{if(e!=null){if(typeof e!="object"&&typeof e!="function")throw TypeError("Object expected");var i;if(r&&(i=e[Se("asyncDispose")]),i===void 0&&(i=e[Se("dispose")]),typeof i!="function")throw TypeError("Object not disposable");t.push([r,i,e])}else r&&t.push([r]);return e},Te=(t,e,r)=>{var i=typeof SuppressedError=="function"?SuppressedError:function(n,s,l,d){return d=Error(l),d.name="SuppressedError",d.error=n,d.suppressed=s,d},o=n=>e=r?new i(n,e,"An error was suppressed during disposal"):(r=!0,n),a=n=>{for(;n=t.pop();)try{var s=n[1]&&n[1].call(n[2]);if(n[0])return Promise.resolve(s).then(a,l=>(o(l),a()))}catch(l){o(l)}if(r)throw e};return a()};var Ke={};$(Ke,{Action:()=>je,Description:()=>Be,NewModule:()=>qe,Register:()=>Ae,default:()=>fr});function Ae(t,e){return t.command("init").summary(hr).argument("<name>","module name (e.g., kumori.systems/my-module)").argument("<version>","module version - defaults to 0.0.1").argument("[path]","location to create the module under - defaults to the current directory").argument("[cacheLocation]","location to store cached modules - default to .kumori/mod").description(Be).helpOption(!0).action(je(e))}function je(t){return async(...e)=>{await qe(t,process.cwd(),...e)}}var $e,Z,Ie,Ne,W,X,fr,hr,Be,qe,Ve=R(()=>{"use strict";$e=require("@kumori/kdsl-lsp/util/maybe.js"),Z=require("fs/promises"),Ie=require("langium"),Ne=require("langium/node"),W=require("@kumori/kdsl-lsp/module/locator.js"),X=P(require("path"),1),fr={Register:Ae};hr="initializes a new kumori module",Be=`
3
- Initializes a new Kumori module, which effectively means to create a new
4
- kumori.mod.json file or overwrite it in case it already exists.
5
- It is required to provide a name and a version for the module and optionally
6
- a location path where the new module is going to be initialized.
7
-
8
- kdsl mod init kumori.systems/my-module
9
-
10
- You could as well provide a custom location for the module's local cache,
11
- where all the dependencies will be downloaded. By default, the cache location
12
- is set to ".kumori/mod" under the module location.
13
-
14
- kdsl mod init kumori.systems/my-module ./my-module
15
-
16
- `.trim();qe=async(t,e,...[r,i,o,a])=>{let n=Ne.NodeFileSystem.fileSystemProvider();o=o!=null?o:e,X.default.isAbsolute(o)||(o=X.default.join(e,o));let s=await(0,W.LocateModuleManifest)(n,Ie.URI.file(o));$e.Maybe.isSome(s)&&s.value.fsPath===o&&(t.error(`error: module ${o} already exists`),process.exit(1));let l={spec:"kumori/module/v1",kumori:"0.0.1",version:i,module:r,cacheLocation:a,requires:[]},d=X.default.join(o,W.MOD_FILE);await(0,Z.mkdir)(o,{recursive:!0}),await(0,Z.writeFile)(d,JSON.stringify(l,null,4)),t.info(`creating new ${W.MOD_FILE}: module ${r}`)}});function j(t,e){if(Ue.Result.isErr(e)){for(let r of e.err)t.error(r);process.exit(1)}return e.value}var Ue,ee=R(()=>{"use strict";Ue=require("@kumori/kdsl-lsp/util/result.js")});async function Ye(t){let e=new Map;return await Ze(t,e),e}async function Xe(t,e){let r=new Map;console.log(e);for(let i of e){let o=(0,me.ParseQuery)(i);if(_.Maybe.isNone(o)){let l=`invalid download query '${i}': failed to parse`;r.set(i,b(h({},(0,y.Err)(l)),{required:!0}));continue}let a=(0,de.Version)(o.value.Version);if(_.Maybe.isNone(a)){let l=`invalid download query '${i}': invalid version specifier '${o.value.Version}': failed to parse`;r.set(i,b(h({},(0,y.Err)(l)),{required:!0}));continue}if(!de.Version.isSemVer(a.value)){let l=`invalid download query '${i}': invalid version specifier '${o.value.Version}': invalid semver`;r.set(i,b(h({},(0,y.Err)(l)),{required:!0}));continue}let n=`${o.value.Scheme}://${o.value.Location}`,s=o.value.Version;await et(t,n,s,r)}return r}async function Ze(t,e){var i;let r=(0,Je.ListDependencies)(t.Current);for(let o of r.keys()){let a=r.get(o);if(a.length<1)continue;let{target:n,version:s}=a[0];await et(t,n,s,e);let l=a.reduce((u,c)=>u||c.interface===void 0,!1),d=(0,fe.DependencyId)(n,s);(0,te.default)(e.has(d)),(i=e.get(d)).required||(i.required=l)}}async function et(t,e,r,i){let o=(0,fe.DependencyId)(e,r);if(i.has(o))return;let a=await pr(t,e,r);if(i.set(o,b(h({},a),{required:!1})),y.Result.isErr(a))return;let n=await(0,ge.LocateDependency)(t,e,r);(0,te.default)(_.Maybe.isSome(n));let s=await ze.ModuleContext.Move(t,t.FS,n.value.Root);(0,te.default)(y.Result.isOk(s)),t=h(h({},t),s.value),await Ze(t,i)}async function pr(t,e,r){var d=[];try{let i=await(0,ge.LocateDependency)(t,e,r);if(y.Result.isOk(i))return(0,y.Ok)(_.None);let o=De(d,await(0,Ge.MkdirTemp)(),!0);let a=await he(t,e,r,o.Path);if(y.Result.isErr(a))return(0,y.Err)(`failed to fetch ${e}@${r}: ${a.err}`);let n=await(0,Qe.ValidateChecksum)(t.SumDB,re.URI.file(o.Path),t,e,a.value);if(y.Result.isErr(n))return n;let s=`${e}@${r}`;let l=re.UriUtils.joinPath(t.Locations.Cache(),s);await(0,q.mkdir)(l.fsPath,{recursive:!0});await(0,q.rm)(l.fsPath,{recursive:!0,force:!0});await(0,q.rename)(o.Path,l.fsPath);return(0,y.Ok)((0,_.Some)(s))}catch(u){var c=u,f=!0}finally{var M=Te(d,c,f);M&&await M}}async function he(t,e,r,i){let o=`${e}@${r}`,a=(0,me.ParseQuery)(o);if(_.Maybe.isNone(a))return(0,y.Err)(`failed to resolve ${o}: invalid download query`);let n=(0,ce.SemVer)(a.value.Version),s=new We.URL(`${a.value.Scheme}://${a.value.Location}`),l=(0,He.ForURL)(t.Remotes,s);if(y.Result.isErr(l))return(0,y.Err)(`failed to resolve ${o}': invalid remote ${s}: ${l.err}`);let d=await l.value.Versions(s);if(y.Result.isErr(d))return(0,y.Err)(`failed to read ${s}: ${d.err}`);let u=n,c=d.value.filter(p=>ce.SemVer.Compare(p,u)===0);if(c.length===0)return(0,y.Err)(`no remote matches for ${s}@v${n}`);if(c.length>1){let p=`[${c.map(String).join(", ")}]`;return(0,y.Err)(`ambiguous match for ${s}@v${n}: found ${p}`)}let f=c[0],M=await l.value.Get(s,f.toString(),i);return y.Result.isErr(M)?(0,y.Err)(`failed to fetch ${s}@${n.toString()}: ${M.err}`):(0,y.Ok)(f)}var me,_,y,de,Je,te,ge,ze,Ge,Qe,re,q,He,ce,We,fe,pe=R(()=>{"use strict";me=require("@kumori/kdsl-lsp/module/query.js"),_=require("@kumori/kdsl-lsp/util/maybe.js"),y=require("@kumori/kdsl-lsp/util/result.js"),de=require("@kumori/kdsl-lsp/module/version.js"),Je=require("@kumori/kdsl-lsp/module/dependency/list.js"),te=P(require("assert"),1),ge=require("@kumori/kdsl-lsp/module/dependency/locate.js"),ze=require("@kumori/kdsl-lsp/module/context.js"),Ge=require("@kumori/kdsl-lsp/util/tmp.js"),Qe=require("@kumori/kdsl-lsp/module/integrity/validate.js"),re=require("langium"),q=require("fs/promises"),He=require("@kumori/kdsl-lsp/module/remote/factory.js"),ce=require("@kumori/kdsl-lsp/util/semver.js"),We=require("@kumori/kdsl-lsp/util/url.js"),fe=require("@kumori/kdsl-lsp/module/dependency/id.js")});var ct={};$(ct,{Action:()=>dt,Description:()=>ut,Download:()=>I,Register:()=>lt,default:()=>wr});function lt(t,e){return t.command("download").alias("dl").summary(vr).argument("[module...]").option("-q, --quiet","do not log warnings").description(ut).helpOption(!0).action(dt(e))}function dt(t){let e=(0,at.createKumoriServices)(nt.NodeFileSystem).Kumori,r=i=>j(t,i);return async(i,o)=>{await new st.RegistryManager().ensureIndexes(),r(await I(t,e,process.cwd(),i,o))}}var tt,rt,we,ot,E,it,nt,at,st,wr,vr,ut,I,oe=R(()=>{"use strict";tt=require("@kumori/kdsl-lsp/module/context.js"),rt=require("@kumori/kdsl-lsp/module/integrity/sumdb.js"),we=require("@kumori/kdsl-lsp/module/remote/factory.js"),ot=require("@kumori/kdsl-lsp/util/maybe.js"),E=require("@kumori/kdsl-lsp/util/result.js"),it=require("langium"),nt=require("langium/node"),at=require("@kumori/kdsl-lsp/language/kumori.js");ee();pe();st=require("@kumori/kdsl-lsp/module/registry/manager.js"),wr={Register:lt};vr="download modules to local cache",ut=`
17
- Downloads the specified modules, which can be module patterns selecting depen-
18
- dencies of the current module or module queries of the form path@version.
19
-
20
- With no arguments, download applies to the modules needed to build the packages
21
- in the current module.
22
-
23
- The kdsl command will automatically download modules as needed during ordinary
24
- execution. The "kdsl mod download" command is useful mainly for pre-filling the
25
- local cache.
26
-
27
- By default, download writes nothing to standard output. It may print progress
28
- messages and errors to standard error.
29
- `.trim();I=async(t,e,r,i,o)=>{let a=e.shared.workspace.FileSystemProvider,n=await(0,tt.ModuleContext)(a,it.URI.file(r));if(E.Result.isErr(n))return(0,E.Err)([n.err]);let s=await rt.SumDB.Open(n.value.Locations.Checksum());if(E.Result.isErr(s))return E.Result.mapErr(s,c=>[c]);let l;i.length?l=await Xe(b(h({},n.value),{FS:a,Remotes:(0,we.RemoteFetcherFactory)(),SumDB:s.value}),i):l=await Ye(b(h({},n.value),{FS:a,Remotes:(0,we.RemoteFetcherFactory)(),SumDB:s.value}));let d=[];for(let[c,f]of l){if(E.Result.isOk(f)){ot.Maybe.isSome(f.value)&&t.info(`Downloaded dependency ${c}`);continue}f.required?d.push(`${c}: ${f.err}`):o.quiet||(t.warn(`${c}: ${f.err}`),t.warn(`${c}: not required - continuing`))}return Array.from(l.entries()).filter(([,c])=>E.Result.isErr(c)&&c.required).length>0?(0,E.Err)(d):(0,E.Ok)(void 0)}});var Lt={};$(Lt,{Action:()=>vt,Dependency:()=>yt,Description:()=>pt,Register:()=>wt,default:()=>Lr});function wt(t,e){return t.command("dependency").alias("dep").argument("<module>","Module URL with @<tag> (e.g. https://github.com/org/repo@v1.2.3)").option("--alias <alias>","Alias for the dependency").option("--headers <module>","Specify a separate location for the headers module").option("--remove","Remove the dependency").option("--download","Download the dependency after adding it").summary(yr).description(pt).helpOption(!0).showHelpAfterError(!0).action(vt(e))}function vt(t){return async(e,r)=>{await new ht.RegistryManager().ensureIndexes();try{await yt(t,V.URI.file(process.cwd()),e,r)}catch(o){throw t.error(`Failed to manage dependency: ${o}`),o}}}var V,mt,gt,K,ft,ie,ne,ve,ht,yr,pt,Lr,yt,Mt=R(()=>{"use strict";V=require("langium"),mt=require("@kumori/kdsl-lsp/language/kumori.js"),gt=require("langium/node"),K=require("@kumori/kdsl-lsp/util/result.js"),ft=require("@kumori/kdsl-lsp/module/context.js"),ie=require("fs/promises"),ne=require("@kumori/kdsl-lsp/module/locator.js"),ve=require("@kumori/kdsl-lsp/module/query.js");oe();ht=require("@kumori/kdsl-lsp/module/registry/manager.js"),yr="Add, update, or remove a dependency from the module declaration",pt=`
30
- Manage dependencies within the current module. It can add, update
31
- or remove dependencies. Optionally, it can attempt to download the dependency after adding it.
32
- Dependencies should resolve to a git repository.
33
-
34
- To add a dependency:
35
- kdsl mod dep github.com/org/repo@v1.0.0
36
-
37
- To add a dependency with an alias:
38
- kdsl mod dep github.com/org/repo@v1.0.0 --alias mydep
39
-
40
- To update a dependency to a new version:
41
- kdsl mod dep github.com/org/repo@v1.2.0
42
-
43
- To remove a dependency:
44
- kdsl mod dep github.com/org/repo --remove
45
-
46
- To add a dependency and download it immediately:
47
- kdsl mod dep github.com/org/repo@v1.0.0 --download
48
- `.trim(),Lr={Register:wt};yt=async(t,e,r,i)=>{let o=(0,mt.createKumoriServices)(gt.NodeFileSystem).Kumori,a=o.shared.workspace.FileSystemProvider,n=await(0,ft.ModuleContext)(a,e);if(K.Result.isErr(n))throw new Error(n.err);let s=n.value.Current.Manifest,l=(0,ve.ParseQuery)(r);if(K.Result.isErr(l))throw new Error(`invalid query '${r}': invalid format`);let d=null;if(i.headers&&(d=(0,ve.ParseQuery)(i.headers),K.Result.isErr(d)))throw new Error(`invalid query '${i.headers}': invalid format`);let u=d?d.value:null,c=l.value;c.Location.endsWith("/")&&(c.Location=c.Location.replace(/\/+$/,""));let f=i.alias;if(i.remove){let v=s.requires.findIndex(S=>S.target===c.Location&&S.version===c.Version);if(v===-1)throw new Error(`Dependency ${c} not found`);s.requires.splice(v,1),await(0,ie.writeFile)(V.UriUtils.joinPath(n.value.Current.Root,ne.MOD_FILE).fsPath,JSON.stringify(s,void 0,4)),t.info(`Removed dependency ${c.toString()}`);return}if(f&&s.requires.some(v=>v.alias===f&&v.target!==c.Location))throw new Error(`Alias '${f}' is already used by another dependency`);let p=s.requires.find(v=>v.target===c.Location);if(p){if(f?p.alias=f:delete p.alias,u&&(p.headers={target:u.Location,version:u.Version}),await(0,ie.writeFile)(V.UriUtils.joinPath(n.value.Current.Root,ne.MOD_FILE).fsPath,JSON.stringify(s,void 0,4)),i.download){let v=await I(t,o,e.fsPath,[],{quiet:!0});if(K.Result.isErr(v))throw new Error(`Failed to download dependency: ${v.err.join(", ")}`)}t.info(`Updated dependency ${c.Location} to version ${c.Version}`+(f?` (alias: ${f})`:"")+(u?` (headers: ${u})`:""))}else{let v=c.Version,S=h(h({target:c.Location,version:v},f?{alias:f}:{}),u?{headers:{target:u.Location,version:u.Version}}:{});if(s.requires.push(S),await(0,ie.writeFile)(V.UriUtils.joinPath(n.value.Current.Root,ne.MOD_FILE).fsPath,JSON.stringify(s,void 0,4)),i.download){let k=await I(t,o,e.fsPath,[],{quiet:!0});if(K.Result.isErr(k))throw new Error(`Failed to download dependency: ${k.err.join(", ")}`)}t.info(`Added dependency ${c.toString()}`+(f?` (alias: ${f})`:"")+(u?` (headers: ${u})`:"")+" to module manifest")}}});var Tt={};$(Tt,{Action:()=>Ct,Description:()=>Pt,NewModule:()=>Dt,Register:()=>St,default:()=>Mr});function St(t,e){return t.command("update").summary(xr).option("-v, --version <version>","new module version").option("-p, --path <location>","location where the module to update is located - defaults to the current directory").option("-c, --cacheLocation <cacheLocation>","new cache location").description(Pt).helpOption(!0).action(Ct(e))}function Ct(t){return async e=>{await Dt(t,process.cwd(),e)}}var xt,ae,ye,bt,U,Y,Mr,xr,Pt,Dt,kt=R(()=>{"use strict";xt=require("@kumori/kdsl-lsp/util/maybe.js"),ae=require("fs/promises"),ye=require("langium"),bt=require("langium/node"),U=require("@kumori/kdsl-lsp/module/locator.js"),Y=P(require("path"),1),Mr={Register:St};xr="updates an existing kumori module's version or cache location",Pt=`
49
- This command updates an existing Kumori module's version or cache location in the kumori.mod.json file. It is required to provide the new version and optionally
50
- a new cache location for the module.
51
-
52
- kdsl mod update -v 1.0.0
53
-
54
- You could as well provide a new location for the module's local cache,
55
- where all the dependencies will be downloaded.
56
-
57
- kdsl mod update -v 1.0.0 -c ./my-mod-cache
58
-
59
- If the module is not located in the current directory, you can provide a custom location path.
60
-
61
- kdsl mod update -v 1.0.0 -p ./my-module
62
- `.trim();Dt=async(t,e,r)=>{var u,c,f;let i=bt.NodeFileSystem.fileSystemProvider(),o=(u=r.path)!=null?u:e;Y.default.isAbsolute(o)||(o=Y.default.join(e,o));let a=await(0,U.LocateModuleManifest)(i,ye.URI.file(o));xt.Maybe.isSome(a)&&a.value.fsPath===o&&(t.error(`error: module ${o} already exists`),process.exit(1));let n=await i.readFile(ye.URI.file(Y.default.join(o,U.MOD_FILE))),s=JSON.parse(n),l={spec:"kumori/module/v1",kumori:"0.0.1",version:(c=r.version)!=null?c:s.version,module:s.module,cacheLocation:(f=r.cacheLocation)!=null?f:s.cacheLocation,requires:[]},d=Y.default.join(o,U.MOD_FILE);await(0,ae.mkdir)(o,{recursive:!0}),await(0,ae.writeFile)(d,JSON.stringify(l,null,4)),t.info(`updated ${U.MOD_FILE}: module ${l.module}`)}});var At={};$(At,{Action:()=>It,Check:()=>se,RawCheck:()=>Nt,Register:()=>$t,default:()=>Tr});function $t(t,e){return t.command("check").argument("[directory]","directory containing a Kumori module").description(Sr).summary(br).action(It(e))}function It(t){return async e=>{await new Ft.RegistryManager().ensureIndexes();let i=(0,Et.createKumoriServices)(Ot.NodeFileSystem).Kumori,o=i.shared.workspace.FileSystemProvider,a=s=>j(t,s),n=a(T.Result.mapErr(await(0,Rt.ModuleContext)(o,J.URI.file(_t.default.resolve(e!=null?e:"."))),s=>[s]));a(await se(t,i,n))}}function Pr(t,e){return`lexer error: ${J.UriUtils.relative(process.cwd(),t.uri.fsPath)}:${e.line||1}:${e.column||1}: ${e.message}`}function Cr(t,e){return`parser error: ${J.UriUtils.relative(process.cwd(),t.uri.fsPath)}:${e.token.startLine||1}:${e.token.startColumn||1}: ${e.message}`}function Dr(t,e){return`diagnostic error: ${J.UriUtils.relative(process.cwd(),t.uri.fsPath)}:${e.range.start.line+1}:${e.range.start.character+1}: ${e.message}`}var Et,J,Ot,Le,T,Rt,_t,Ft,br,Sr,se,Nt,Tr,Me=R(()=>{"use strict";Et=require("@kumori/kdsl-lsp/language/kumori.js"),J=require("langium"),Ot=require("langium/node"),Le=require("vscode-languageserver"),T=require("@kumori/kdsl-lsp/util/result.js"),Rt=require("@kumori/kdsl-lsp/module/context.js");oe();ee();_t=P(require("path"),1),Ft=require("@kumori/kdsl-lsp/module/registry/manager.js");br="typecheck and validate a module",Sr=`
63
- `.trim();se=async(t,e,r)=>{let i=r.Current.Root,o=await I(t,e,i.fsPath,[],{quiet:!0});if(T.Result.isErr(o))return o;let a=await Nt(e,r);if(T.Result.isErr(a)){let n=a.err.warnings.concat(a.err.errors);return(0,T.Err)(n)}return(0,T.Ok)(void 0)},Nt=async(t,e)=>{let r={errors:[],warnings:[]},i=t.shared.workspace.FileSystemProvider,o=e.Current.Root,a=await T.Result.tryCatchAsync(()=>i.readDirectory(o));if(T.Result.isErr(a)){let d=""+a.err;return a.err instanceof Error&&(d=a.err.message),r.errors.push(`failed to read directory '${o.fsPath}': ${d}`),(0,T.Err)(r)}await t.shared.workspace.WorkspaceManager.initializeWorkspace([{name:"root",uri:o.toString()}]);let s=t.shared.workspace.LangiumDocuments;await t.shared.workspace.DocumentBuilder.build(s.all.toArray(),{validation:!0});for(let d of t.shared.workspace.LangiumDocuments.all){for(let u of d.parseResult.lexerErrors)r.errors.push(Pr(d,u));for(let u of d.parseResult.parserErrors)r.errors.push(Cr(d,u));for(let u of d.diagnostics||[]){let c=Dr(d,u);u.severity===Le.DiagnosticSeverity.Error&&r.errors.push(c),u.severity===Le.DiagnosticSeverity.Warning&&r.warnings.push(c)}}return r.errors.length>0?(0,T.Err)(r):(0,T.Ok)(void 0)};Tr={Register:$t}});function Bt(t){var i,o;let e=(o=(i=t.node.$cstNode)==null?void 0:i.range)!=null?o:{start:{line:-1,character:-1},end:{line:-1,character:-1}},r=le.AstUtils.getDocument(t.node);return`${le.UriUtils.relative(process.cwd(),r.uri.fsPath)}:${e.start.line+1}:${e.start.character+1}: ${t.message}`}var le,jt=R(()=>{"use strict";le=require("langium")});var tr={};$(tr,{Action:()=>Yt,Description:()=>Wt,GetSchema:()=>Zt,LocateModule:()=>Xt,Register:()=>Ht,ToJSONSchema:()=>er,ToJSONSchemaInternal:()=>O,default:()=>kr});function Ht(t,e){return t.command("get").summary(Er).argument("<target>",'Unique path of the kmodule where the artifact is defined. Accepts remote targets (e.g., "github.com/MyOrg/component@v1.2.3") or local paths (e.g. "/abs/path/to/module", "../rel/path/to/module").').argument("<package-path>",`Relative path to the package that contains the artifact (e.g., "internal/service"). For artifacts in the module's root package, use ".".`).argument("<artifact-name>",'Name of the target artifact (e.g., "ExampleService").').description(Wt).helpOption(!0).action(Yt(e))}function Yt(t){return async(e,r,i)=>{let o=(0,qt.createKumoriServices)(xe.NodeFileSystem).Kumori,a=u=>j(t,u),n=a(await Xt(e)),s=o.shared.workspace.FileSystemProvider,l=a(g.Result.mapErr(await(0,Kt.ModuleContext)(s,F.URI.file(n.fsPath)),u=>[u]));a(await se(t,o,l));let d=a(await Zt(o,l,r,i));console.log(JSON.stringify(d,null,4))}}async function Xt(t){let e=await(0,Ut.TempCache)(),r=xe.NodeFileSystem.fileSystemProvider(),i=t;if(t[0]==="."||N.default.isAbsolute(t)){let u=N.default.isAbsolute(t)?t:N.default.resolve(process.cwd(),t);return(0,g.Ok)({$type:"local",fsPath:u})}let a=(0,Vt.ParseQuery)(t);if(A.Maybe.isNone(a))return(0,g.Err)([`invalid remote target '${t}': invalid syntax`]);let n=a.value.Version,s=`${a.value.Location}@${n}`,l=F.UriUtils.joinPath(e,s),d=await(0,Jt.ModuleDescriptor)(r,l);if(g.Result.isErr(d)){let u=await he({Remotes:(0,Qt.RemoteFetcherFactory)()},a.value.Location,n,l.fsPath);if(g.Result.isErr(u))return(0,g.Err)([`failed to fetch ${i}: ${u.err}`])}return(0,g.Ok)({$type:"remote",fsPath:l.fsPath,query:a.value})}async function Zt(t,e,r,i){let o=F.UriUtils.joinPath(e.Current.Root,N.default.normalize(r)),a=t.references.KumoriPackages.GetPackage(o);if(g.Result.isErr(a))return(0,g.Err)([`error: failed to retrieve package: ${o.toString()}`]);let n=new Set(a.value.docs.map(v=>v.uri.toString())),s=t.shared.workspace.IndexManager.allElements(void 0,n).toArray().filter(v=>v.name===i);if(s.length<1)return(0,g.Err)([`error: no artifact named defined in ${o.toString()}`]);if(s.length>2)return(0,g.Err)([`error: too many matches in ${o.toString()}`]);let l=s[0].node;if(!((0,G.isComponentArtifact)(l)||(0,G.isServiceArtifact)(l)||(0,G.isBuiltinArtifact)(l)))return(0,g.Err)([`invalid reference to node of type: ${l.$type}`]);if(!F.AstUtils.getDocument(l).uri.fsPath.endsWith(".h.kumori")){if(!l.name.value.ref)return(0,g.Err)(["no headers found for component"]);l=l.name.value.ref}let u=t.validation.KumoriTypeSystem,c=t.validation.KumoriValidations.ctx(),[f,M]=u.Infer(c,l);if(M.length>0){let v=[];return M.map(S=>v.concat(S.message)),(0,g.Err)([`type inference failed with errors: ${v}`])}let p=await er(t,e,f,N.default.join(e.Current.Manifest.module,r+"@"+i));return g.Result.mapErr(p,v=>v.map(Bt))}async function er(t,e,r,i){return g.Result.map(await O({svcs:t,mod:e},r),o=>h({$schema:"https://json-schema.org/draft/2020-12/schema",$spec:"kumori/schema/v1",$id:i},o))}async function O(t,e){if(w.TAny.is(e))return(0,g.Ok)({});if(w.TFunction.is(e))return O(t,e.returns);if(w.TOptional.is(e))return O(t,e.inner);if(w.TTypeDefAlias.is(e))return O(t,e.spec);if(w.TNumber.is(e))return e.literal===void 0?(0,g.Ok)({type:"number"}):(0,g.Ok)({const:e.literal});if(w.TString.is(e))return e.literal===void 0?(0,g.Ok)({type:"string"}):(0,g.Ok)({const:e.literal});if(w.TBoolean.is(e))return e.literal===void 0?(0,g.Ok)({type:"boolean"}):(0,g.Ok)({const:e.literal});if(w.TList.is(e)){let r=await O(t,e.restriction);return g.Result.isErr(r)?r:(0,g.Ok)({type:"array",items:r.value})}if(w.TEither.is(e)){let r=await Promise.all(e.variations.map(a=>O(t,a))),i=r.filter(g.Result.isErr).map(a=>a.err).flat();if(i.length>0)return(0,g.Err)(i);let o=r.filter(g.Result.isOk).map(a=>a.value);return(0,z.default)(o.length===r.length),(0,g.Ok)({oneOf:o})}if(w.TStruct.is(e)){let r=await Promise.all(Object.entries(e.parameters).map(async n=>({key:n[0],value:n[1],schema:await O(t,n[1].value)}))),i=r.map(n=>n.schema).filter(n=>g.Result.isErr(n)).map(n=>n.err).flat(),o=A.None;if(e.restriction!==void 0&&!w.TAny.is(e.restriction)){let n=await O(t,e.restriction);g.Result.isOk(n)?o=(0,A.Some)(n.value):i=i.concat(n.err)}if(i.length>0)return(0,g.Err)(i);let a={type:"object",properties:Object.fromEntries(r.map(n=>((0,z.default)(g.Result.isOk(n.schema)),[n.key,n.schema.value]))),required:r.filter(n=>n.value.optional===!1&&!w.TOptional.is(n.value.value)).map(n=>n.key)};return A.Maybe.isSome(o)&&(a=b(h({},a),{additionalProperties:o.value})),(0,g.Ok)(a)}if(w.TTypeDefNamed.is(e)){let r=await O(t,e.spec);return g.Result.isErr(r)?r:(0,g.Ok)({type:"object",properties:{$kdsl:{const:{NamedType:await Or(t,e)}},inner:r.value},required:["$kdsl","inner"]})}return(0,g.Err)([w.TypeSystemError.create({node:e,message:`cannot convert definition to JSONSchema: ${(0,w.TypeToString)(e)}`})])}var qt,Kt,Vt,A,g,Ut,xe,N,F,z,w,Jt,G,zt,Gt,Qt,kr,Er,Wt,Or,rr=R(()=>{"use strict";qt=require("@kumori/kdsl-lsp/language/kumori.js"),Kt=require("@kumori/kdsl-lsp/module/context.js"),Vt=require("@kumori/kdsl-lsp/module/query.js"),A=require("@kumori/kdsl-lsp/util/maybe.js"),g=require("@kumori/kdsl-lsp/util/result.js"),Ut=require("@kumori/kdsl-lsp/util/tmp.js"),xe=require("langium/node"),N=P(require("path"),1);Me();F=require("langium"),z=P(require("assert"),1),w=require("@kumori/kdsl-lsp/language/type-system/type.js"),Jt=require("@kumori/kdsl-lsp/module/descriptor.js"),G=require("@kumori/kdsl-lsp/language/generated/ast.js"),zt=require("@kumori/kdsl-lsp/language/builtin/util.js"),Gt=require("@kumori/kdsl-lsp/module/documents.js");ee();jt();pe();Qt=require("@kumori/kdsl-lsp/module/remote/factory.js"),kr={Register:Ht};Er="extracts jsonschema for a specified module and artifact",Wt=`
64
- Generates and outputs the JSON Schema that describes a particular Kumori DSL
65
- artifact. This schema defines the artifact's configurable properties, resource
66
- requirements, and overall structure, making it valuable for programmatic
67
- interaction, validation, or documentation purposes.
68
-
69
- The command allows you to specify artifacts from both remote/external modules
70
- and local modules.
71
- `.trim();Or=async(t,e)=>{let r=e.node;(0,z.default)(r);let i=t.svcs.shared.references.KumoriModules,o=F.AstUtils.getDocument(r).uri,a=t.svcs.references.KumoriPackages.GetPackage(r),n=t.mod.Current;if((0,z.default)(g.Result.isOk(a)),o.scheme===zt.Scheme)return{Import:a.value.uri.path.slice(1),Name:e.meta.name};if(!(await(0,Gt.GatherModuleDocuments)(t.svcs.shared,t.mod.Root.Root)).map(f=>f.fsPath).includes(o.fsPath)){let f=i.getModule(o);(0,z.default)(g.Result.isOk(f)),n=f.value}let u=n.Root,c=a.value.uri.fsPath.slice(u.fsPath.length);return{Import:N.default.join(n.Manifest.module,c),Name:e.meta.name}}});var Ar={};$(Ar,{moduleChecksum:()=>Ir,moduleDependency:()=>_r,moduleDownload:()=>Fr,moduleInit:()=>Rr,moduleSchemaGet:()=>Nr,moduleUpdate:()=>$r});module.exports=cr(Ar);var D=function(t){return t.info="info",t.warn="warn",t.error="error",t.debug="debug",t.trace="trace",t.fatal="fatal",t}({}),jr={[D.trace]:10,[D.debug]:20,[D.info]:30,[D.warn]:40,[D.error]:50,[D.fatal]:60},qr={10:D.trace,20:D.debug,30:D.info,40:D.warn,50:D.error,60:D.fatal};var C=function(t){return t.onBeforeDataOut="onBeforeDataOut",t.shouldSendToLogger="shouldSendToLogger",t.onMetadataCalled="onMetadataCalled",t.onBeforeMessageOut="onBeforeMessageOut",t.onContextCalled="onContextCalled",t}({});var m=function(t){return t.info="info",t.warn="warn",t.error="error",t.debug="debug",t.trace="trace",t.fatal="fatal",t}({}),H={[m.trace]:10,[m.debug]:20,[m.info]:30,[m.warn]:40,[m.error]:50,[m.fatal]:60},Jr={10:m.trace,20:m.debug,30:m.info,40:m.warn,50:m.error,60:m.fatal};var ke=class Ee{constructor(){L(this,"context",{});L(this,"hasContext",!1)}setContext(e){if(!e){this.context={},this.hasContext=!1;return}this.context=e,this.hasContext=!0}appendContext(e){this.context=h(h({},this.context),e),this.hasContext=!0}getContext(){return this.context}hasContextData(){return this.hasContext}onChildLoggerCreated({parentContextManager:e,childContextManager:r}){if(e.hasContextData()){let i=e.getContext();r.setContext(h({},i))}}clone(){let e=new Ee;return e.setContext(h({},this.context)),e.hasContext=this.hasContext,e}};var Oe=class{constructor(t){L(this,"err");L(this,"metadata");L(this,"structuredLogger");L(this,"hasMetadata");L(this,"pluginManager");this.err=null,this.metadata={},this.structuredLogger=t,this.hasMetadata=!1,this.pluginManager=t.pluginManager}withMetadata(t){let{pluginManager:e,structuredLogger:{_config:{consoleDebug:r}}}=this;if(!t)return r&&console.debug("[LogLayer] withMetadata was called with no metadata; dropping."),this;let i=t;return e.hasPlugins(C.onMetadataCalled)&&(i=e.runOnMetadataCalled(t,this.structuredLogger),!i)?(r&&console.debug("[LogLayer] Metadata was dropped due to plugin returning falsy value."),this):(this.metadata=h(h({},this.metadata),i),this.hasMetadata=!0,this)}withError(t){return this.err=t,this}info(...t){this.structuredLogger.isLevelEnabled(m.info)&&(this.structuredLogger._formatMessage(t),this.formatLog(m.info,t))}warn(...t){this.structuredLogger.isLevelEnabled(m.warn)&&(this.structuredLogger._formatMessage(t),this.formatLog(m.warn,t))}error(...t){this.structuredLogger.isLevelEnabled(m.error)&&(this.structuredLogger._formatMessage(t),this.formatLog(m.error,t))}debug(...t){this.structuredLogger.isLevelEnabled(m.debug)&&(this.structuredLogger._formatMessage(t),this.formatLog(m.debug,t))}trace(...t){this.structuredLogger.isLevelEnabled(m.trace)&&(this.structuredLogger._formatMessage(t),this.formatLog(m.trace,t))}fatal(...t){this.structuredLogger.isLevelEnabled(m.fatal)&&(this.structuredLogger._formatMessage(t),this.formatLog(m.fatal,t))}disableLogging(){return this.structuredLogger.disableLogging(),this}enableLogging(){return this.structuredLogger.enableLogging(),this}formatLog(t,e){let{muteMetadata:r}=this.structuredLogger._config,i=r?!1:this.hasMetadata;this.structuredLogger._formatLog({logLevel:t,params:e,metadata:i?this.metadata:null,err:this.err})}},mr=[C.onBeforeDataOut,C.onMetadataCalled,C.shouldSendToLogger,C.onBeforeMessageOut,C.onContextCalled],Re=class{constructor(t){L(this,"idToPlugin");L(this,"onBeforeDataOut",[]);L(this,"shouldSendToLogger",[]);L(this,"onMetadataCalled",[]);L(this,"onBeforeMessageOut",[]);L(this,"onContextCalled",[]);this.idToPlugin={},this.mapPlugins(t),this.indexPlugins()}mapPlugins(t){for(let e of t){if(e.id||(e.id=Date.now().toString()+Math.random().toString()),this.idToPlugin[e.id])throw new Error(`[LogLayer] Plugin with id ${e.id} already exists.`);e.registeredAt=Date.now(),this.idToPlugin[e.id]=e}}indexPlugins(){this.onBeforeDataOut=[],this.shouldSendToLogger=[],this.onMetadataCalled=[],this.onBeforeMessageOut=[],this.onContextCalled=[];let t=Object.values(this.idToPlugin).sort((e,r)=>e.registeredAt-r.registeredAt);for(let e of t){if(e.disabled)return;for(let r of mr)e[r]&&e.id&&this[r].push(e.id)}}hasPlugins(t){return this[t].length>0}countPlugins(t){return t?this[t].length:Object.keys(this.idToPlugin).length}addPlugins(t){this.mapPlugins(t),this.indexPlugins()}enablePlugin(t){let e=this.idToPlugin[t];e&&(e.disabled=!1),this.indexPlugins()}disablePlugin(t){let e=this.idToPlugin[t];e&&(e.disabled=!0),this.indexPlugins()}removePlugin(t){delete this.idToPlugin[t],this.indexPlugins()}runOnBeforeDataOut(t,e){let r=h({},t);for(let i of this.onBeforeDataOut){let o=this.idToPlugin[i];if(o.onBeforeDataOut){let a=o.onBeforeDataOut({data:r.data,logLevel:r.logLevel,error:r.error,metadata:r.metadata,context:r.context},e);a&&(r.data||(r.data={}),Object.assign(r.data,a))}}return r.data}runShouldSendToLogger(t,e){return!this.shouldSendToLogger.some(r=>{var i,o;return!((o=(i=this.idToPlugin[r]).shouldSendToLogger)!=null&&o.call(i,t,e))})}runOnMetadataCalled(t,e){var i,o;let r=h({},t);for(let a of this.onMetadataCalled){let n=(o=(i=this.idToPlugin[a]).onMetadataCalled)==null?void 0:o.call(i,r,e);if(n)r=n;else return null}return r}runOnBeforeMessageOut(t,e){var i,o;let r=[...t.messages];for(let a of this.onBeforeMessageOut){let n=(o=(i=this.idToPlugin[a]).onBeforeMessageOut)==null?void 0:o.call(i,{messages:r,logLevel:t.logLevel},e);n&&(r=n)}return r}runOnContextCalled(t,e){var i,o;let r=h({},t);for(let a of this.onContextCalled){let n=(o=(i=this.idToPlugin[a]).onContextCalled)==null?void 0:o.call(i,r,e);if(n)r=n;else return null}return r}},_e=class Fe{constructor(e){L(this,"pluginManager");L(this,"idToTransport");L(this,"hasMultipleTransports");L(this,"singleTransport");L(this,"contextManager");L(this,"logLevelEnabledStatus",{info:!0,warn:!0,error:!0,debug:!0,trace:!0,fatal:!0});L(this,"_config");var r;this._config=b(h({},e),{enabled:(r=e.enabled)!=null?r:!0}),this._config.enabled||this.disableLogging(),this.contextManager=new ke,this.pluginManager=new Re(e.plugins||[]),this._config.errorFieldName||(this._config.errorFieldName="err"),this._config.copyMsgOnOnlyError||(this._config.copyMsgOnOnlyError=!1),this._initializeTransports(this._config.transport)}withContextManager(e){return this.contextManager&&typeof this.contextManager[Symbol.dispose]=="function"&&this.contextManager[Symbol.dispose](),this.contextManager=e,this}getContextManager(){return this.contextManager}_initializeTransports(e){if(this.idToTransport)for(let r in this.idToTransport)this.idToTransport[r]&&typeof this.idToTransport[r][Symbol.dispose]=="function"&&this.idToTransport[r][Symbol.dispose]();this.hasMultipleTransports=Array.isArray(e)&&e.length>1,this.singleTransport=this.hasMultipleTransports?null:Array.isArray(e)?e[0]:e,Array.isArray(e)?this.idToTransport=e.reduce((r,i)=>(r[i.id]=i,r),{}):this.idToTransport={[e.id]:e}}withPrefix(e){let r=this.child();return r._config.prefix=e,r}withContext(e){let r=e;return e?this.pluginManager.hasPlugins(C.onContextCalled)&&(r=this.pluginManager.runOnContextCalled(e,this),!r)?(this._config.consoleDebug&&console.debug("[LogLayer] Context was dropped due to plugin returning falsy value."),this):(this.contextManager.appendContext(r),this):(this._config.consoleDebug&&console.debug("[LogLayer] withContext was called with no context; dropping."),this)}clearContext(){return this.contextManager.setContext(void 0),this}getContext(){return this.contextManager.getContext()}addPlugins(e){this.pluginManager.addPlugins(e)}enablePlugin(e){this.pluginManager.enablePlugin(e)}disablePlugin(e){this.pluginManager.disablePlugin(e)}removePlugin(e){this.pluginManager.removePlugin(e)}withMetadata(e){return new Oe(this).withMetadata(e)}withError(e){return new Oe(this).withError(e)}child(){let e=new Fe(b(h({},this._config),{transport:Array.isArray(this._config.transport)?[...this._config.transport]:this._config.transport})).withPluginManager(this.pluginManager).withContextManager(this.contextManager.clone());return this.contextManager.onChildLoggerCreated({parentContextManager:this.contextManager,childContextManager:e.contextManager,parentLogger:this,childLogger:e}),e}withFreshTransports(e){return this._config.transport=e,this._initializeTransports(e),this}withFreshPlugins(e){return this._config.plugins=e,this.pluginManager=new Re(e),this}withPluginManager(e){return this.pluginManager=e,this}errorOnly(e,r){let i=(r==null?void 0:r.logLevel)||m.error;if(!this.isLevelEnabled(i))return;let{copyMsgOnOnlyError:o}=this._config,a={logLevel:i,err:e};(o&&(r==null?void 0:r.copyMsg)!==!1||(r==null?void 0:r.copyMsg)===!0)&&(e!=null&&e.message)&&(a.params=[e.message]),this._formatLog(a)}metadataOnly(e,r=m.info){if(!this.isLevelEnabled(r))return;let{muteMetadata:i,consoleDebug:o}=this._config;if(i)return;if(!e){o&&console.debug("[LogLayer] metadataOnly was called with no metadata; dropping.");return}let a=e;if(this.pluginManager.hasPlugins(C.onMetadataCalled)&&(a=this.pluginManager.runOnMetadataCalled(e,this),!a)){o&&console.debug("[LogLayer] Metadata was dropped due to plugin returning falsy value.");return}let n={logLevel:r,metadata:a};this._formatLog(n)}info(...e){this.isLevelEnabled(m.info)&&(this._formatMessage(e),this._formatLog({logLevel:m.info,params:e}))}warn(...e){this.isLevelEnabled(m.warn)&&(this._formatMessage(e),this._formatLog({logLevel:m.warn,params:e}))}error(...e){this.isLevelEnabled(m.error)&&(this._formatMessage(e),this._formatLog({logLevel:m.error,params:e}))}debug(...e){this.isLevelEnabled(m.debug)&&(this._formatMessage(e),this._formatLog({logLevel:m.debug,params:e}))}trace(...e){this.isLevelEnabled(m.trace)&&(this._formatMessage(e),this._formatLog({logLevel:m.trace,params:e}))}fatal(...e){this.isLevelEnabled(m.fatal)&&(this._formatMessage(e),this._formatLog({logLevel:m.fatal,params:e}))}raw(e){if(!this.isLevelEnabled(e.logLevel))return;let r={logLevel:e.logLevel,params:e.messages,metadata:e.metadata,err:e.error,context:e.context};this._formatMessage(e.messages),this._formatLog(r)}disableLogging(){for(let e of Object.keys(this.logLevelEnabledStatus))this.logLevelEnabledStatus[e]=!1;return this}enableLogging(){for(let e of Object.keys(this.logLevelEnabledStatus))this.logLevelEnabledStatus[e]=!0;return this}muteContext(){return this._config.muteContext=!0,this}unMuteContext(){return this._config.muteContext=!1,this}muteMetadata(){return this._config.muteMetadata=!0,this}unMuteMetadata(){return this._config.muteMetadata=!1,this}enableIndividualLevel(e){let r=e;return r in this.logLevelEnabledStatus&&(this.logLevelEnabledStatus[r]=!0),this}disableIndividualLevel(e){let r=e;return r in this.logLevelEnabledStatus&&(this.logLevelEnabledStatus[r]=!1),this}setLevel(e){let r=H[e];for(let i of Object.values(m)){let o=i,a=H[i];this.logLevelEnabledStatus[o]=a>=r}return this}isLevelEnabled(e){let r=e;return this.logLevelEnabledStatus[r]}formatContext(e){let{contextFieldName:r,muteContext:i}=this._config;return e&&Object.keys(e).length>0&&!i?r?{[r]:h({},e)}:h({},e):{}}formatMetadata(e=null){let{metadataFieldName:r,muteMetadata:i}=this._config;return e&&!i?r?{[r]:h({},e)}:h({},e):{}}getLoggerInstance(e){let r=this.idToTransport[e];if(r)return r.getLoggerInstance()}_formatMessage(e=[]){let{prefix:r}=this._config;r&&typeof e[0]=="string"&&(e[0]=`${r} ${e[0]}`)}_formatLog({logLevel:e,params:r=[],metadata:i=null,err:o,context:a=null}){var v;let{errorSerializer:n,errorFieldInMetadata:s,muteContext:l,contextFieldName:d,metadataFieldName:u,errorFieldName:c}=this._config,f=a!==null?a:this.contextManager.getContext(),M=!!i||(l?!1:a!==null?Object.keys(a).length>0:this.contextManager.hasContextData()),p={};if(M)if(d&&d===u){let S=this.formatContext(f)[d],k=this.formatMetadata(i)[u];p={[d]:h(h({},S),k)}}else p=h(h({},this.formatContext(f)),this.formatMetadata(i));if(o){let S=n?n(o):o;s&&i&&u?p!=null&&p[u]?p[u][c]=S:p=b(h({},p),{[u]:{[c]:S}}):s&&!i&&u?p=b(h({},p),{[u]:{[c]:S}}):p=b(h({},p),{[c]:S}),M=!0}if(this.pluginManager.hasPlugins(C.onBeforeDataOut)&&(p=this.pluginManager.runOnBeforeDataOut({data:M?p:void 0,logLevel:e,error:o,metadata:i,context:f},this),p&&!M&&(M=!0)),this.pluginManager.hasPlugins(C.onBeforeMessageOut)&&(r=this.pluginManager.runOnBeforeMessageOut({messages:[...r],logLevel:e},this)),this.hasMultipleTransports){let S=this._config.transport.filter(k=>k.enabled).map(async k=>{if(!(this.pluginManager.hasPlugins(C.shouldSendToLogger)&&!this.pluginManager.runShouldSendToLogger({messages:[...r],data:M?p:void 0,logLevel:e,transportId:k.id,error:o,metadata:i,context:f},this)))return k._sendToLogger({logLevel:e,messages:[...r],data:M?p:void 0,hasData:M,error:o,metadata:i,context:f})});Promise.all(S).catch(k=>{this._config.consoleDebug&&console.error("[LogLayer] Error executing transports:",k)})}else{if(!((v=this.singleTransport)!=null&&v.enabled)||this.pluginManager.hasPlugins(C.shouldSendToLogger)&&!this.pluginManager.runShouldSendToLogger({messages:[...r],data:M?p:void 0,logLevel:e,transportId:this.singleTransport.id,error:o,metadata:i,context:f},this))return;this.singleTransport._sendToLogger({logLevel:e,messages:[...r],data:M?p:void 0,hasData:M,error:o,metadata:i,context:f})}}};function gr(){let t={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};return new _e({transport:t})}function B(t){return t!=null?t:gr()}var or=require("langium"),x=require("@kumori/kdsl-lsp/util/result.js");async function Rr(t){var i;let e=B(t.logger),{NewModule:r}=await Promise.resolve().then(()=>(Ve(),Ke));try{let o=(i=t.cwd)!=null?i:process.cwd();return await r(e,o,t.name,t.version,t.location,t.cacheLocation),(0,x.Ok)(void 0)}catch(o){return(0,x.Err)([String(o)])}}async function _r(t){var n;let e=B(t.logger),r=or.URI.file((n=t.cwd)!=null?n:process.cwd()),{Dependency:i}=await Promise.resolve().then(()=>(Mt(),Lt)),{RegistryManager:o}=await import("@kumori/kdsl-lsp/module/registry/manager.js");await new o().ensureIndexes();try{return await i(e,r,t.module,{alias:t.alias,headers:t.headers,remove:t.remove?!0:void 0,download:t.download?!0:void 0}),(0,x.Ok)(void 0)}catch(s){return(0,x.Err)([String(s)])}}async function Fr(t){var a,n;let e=B(t.logger),{Download:r}=await Promise.resolve().then(()=>(oe(),ct)),{RegistryManager:i}=await import("@kumori/kdsl-lsp/module/registry/manager.js");return await new i().ensureIndexes(),await r(e,t.services,(a=t.cwd)!=null?a:process.cwd(),(n=t.modules)!=null?n:[],{quiet:t.quiet?!0:void 0})}async function $r(t){var i;let e=B(t.logger),{NewModule:r}=await Promise.resolve().then(()=>(kt(),Tt));try{return await r(e,(i=t.cwd)!=null?i:process.cwd(),{version:t.version,cacheLocation:t.cacheLocation,path:t.path}),(0,x.Ok)(void 0)}catch(o){return(0,x.Err)([String(o)])}}async function Ir(t){var l,d;let{CalculateChecksum:e}=await import("@kumori/kdsl-lsp/module/integrity/checksum.js"),{ModuleContext:r}=await import("@kumori/kdsl-lsp/module/context.js"),{URI:i}=await import("langium"),o=await import("path"),a=t.services.shared.workspace.FileSystemProvider,n=(d=(l=t.directory)!=null?l:t.cwd)!=null?d:".",s=await r(a,i.file(o.resolve(n)));if(x.Result.isErr(s))return(0,x.Err)([s.err]);try{let u=await e(s.value.Current.Root.fsPath);return(0,x.Ok)(u)}catch(u){return(0,x.Err)([String(u)])}}async function Nr(t){let e=B(t.logger),{LocateModule:r,GetSchema:i}=await Promise.resolve().then(()=>(rr(),tr)),{ModuleContext:o}=await import("@kumori/kdsl-lsp/module/context.js"),{Check:a}=await Promise.resolve().then(()=>(Me(),At)),{URI:n}=await import("langium"),s=t.services,l=s.shared.workspace.FileSystemProvider,d=await r(t.target);if(x.Result.isErr(d))return d;let u=await o(l,n.file(d.value.fsPath));if(x.Result.isErr(u))return(0,x.Err)([u.err]);let c=await a(e,s,u.value);return x.Result.isErr(c)?c:await i(s,u.value,t.packagePath,t.artifactName)}0&&(module.exports={moduleChecksum,moduleDependency,moduleDownload,moduleInit,moduleSchemaGet,moduleUpdate});
@@ -1,2 +0,0 @@
1
- const __importMetaUrl = require('url').pathToFileURL(__filename).href;
2
- "use strict";var C=Object.defineProperty,N=Object.defineProperties,I=Object.getOwnPropertyDescriptor,z=Object.getOwnPropertyDescriptors,J=Object.getOwnPropertyNames,F=Object.getOwnPropertySymbols;var D=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var T=(r,e,t)=>e in r?C(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,a=(r,e)=>{for(var t in e||(e={}))D.call(e,t)&&T(r,t,e[t]);if(F)for(var t of F(e))K.call(e,t)&&T(r,t,e[t]);return r},M=(r,e)=>N(r,z(e));var V=(r,e)=>{for(var t in e)C(r,t,{get:e[t],enumerable:!0})},U=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of J(e))!D.call(r,o)&&o!==t&&C(r,o,{get:()=>e[o],enumerable:!(i=I(e,o))||i.enumerable});return r};var q=r=>U(C({},"__esModule",{value:!0}),r);var s=(r,e,t)=>(T(r,typeof e!="symbol"?e+"":e,t),t);var Y={};V(Y,{registryAdd:()=>Q,registryList:()=>W,registryRemove:()=>X});module.exports=q(Y);var h=function(r){return r.info="info",r.warn="warn",r.error="error",r.debug="debug",r.trace="trace",r.fatal="fatal",r}({}),$={[h.trace]:10,[h.debug]:20,[h.info]:30,[h.warn]:40,[h.error]:50,[h.fatal]:60},ee={10:h.trace,20:h.debug,30:h.info,40:h.warn,50:h.error,60:h.fatal};var u=function(r){return r.onBeforeDataOut="onBeforeDataOut",r.shouldSendToLogger="shouldSendToLogger",r.onMetadataCalled="onMetadataCalled",r.onBeforeMessageOut="onBeforeMessageOut",r.onContextCalled="onContextCalled",r}({});var n=function(r){return r.info="info",r.warn="warn",r.error="error",r.debug="debug",r.trace="trace",r.fatal="fatal",r}({}),v={[n.trace]:10,[n.debug]:20,[n.info]:30,[n.warn]:40,[n.error]:50,[n.fatal]:60},ne={10:n.trace,20:n.debug,30:n.info,40:n.warn,50:n.error,60:n.fatal};var E=class S{constructor(){s(this,"context",{});s(this,"hasContext",!1)}setContext(e){if(!e){this.context={},this.hasContext=!1;return}this.context=e,this.hasContext=!0}appendContext(e){this.context=a(a({},this.context),e),this.hasContext=!0}getContext(){return this.context}hasContextData(){return this.hasContext}onChildLoggerCreated({parentContextManager:e,childContextManager:t}){if(e.hasContextData()){let i=e.getContext();t.setContext(a({},i))}}clone(){let e=new S;return e.setContext(a({},this.context)),e.hasContext=this.hasContext,e}};var k=class{constructor(r){s(this,"err");s(this,"metadata");s(this,"structuredLogger");s(this,"hasMetadata");s(this,"pluginManager");this.err=null,this.metadata={},this.structuredLogger=r,this.hasMetadata=!1,this.pluginManager=r.pluginManager}withMetadata(r){let{pluginManager:e,structuredLogger:{_config:{consoleDebug:t}}}=this;if(!r)return t&&console.debug("[LogLayer] withMetadata was called with no metadata; dropping."),this;let i=r;return e.hasPlugins(u.onMetadataCalled)&&(i=e.runOnMetadataCalled(r,this.structuredLogger),!i)?(t&&console.debug("[LogLayer] Metadata was dropped due to plugin returning falsy value."),this):(this.metadata=a(a({},this.metadata),i),this.hasMetadata=!0,this)}withError(r){return this.err=r,this}info(...r){this.structuredLogger.isLevelEnabled(n.info)&&(this.structuredLogger._formatMessage(r),this.formatLog(n.info,r))}warn(...r){this.structuredLogger.isLevelEnabled(n.warn)&&(this.structuredLogger._formatMessage(r),this.formatLog(n.warn,r))}error(...r){this.structuredLogger.isLevelEnabled(n.error)&&(this.structuredLogger._formatMessage(r),this.formatLog(n.error,r))}debug(...r){this.structuredLogger.isLevelEnabled(n.debug)&&(this.structuredLogger._formatMessage(r),this.formatLog(n.debug,r))}trace(...r){this.structuredLogger.isLevelEnabled(n.trace)&&(this.structuredLogger._formatMessage(r),this.formatLog(n.trace,r))}fatal(...r){this.structuredLogger.isLevelEnabled(n.fatal)&&(this.structuredLogger._formatMessage(r),this.formatLog(n.fatal,r))}disableLogging(){return this.structuredLogger.disableLogging(),this}enableLogging(){return this.structuredLogger.enableLogging(),this}formatLog(r,e){let{muteMetadata:t}=this.structuredLogger._config,i=t?!1:this.hasMetadata;this.structuredLogger._formatLog({logLevel:r,params:e,metadata:i?this.metadata:null,err:this.err})}},G=[u.onBeforeDataOut,u.onMetadataCalled,u.shouldSendToLogger,u.onBeforeMessageOut,u.onContextCalled],B=class{constructor(r){s(this,"idToPlugin");s(this,"onBeforeDataOut",[]);s(this,"shouldSendToLogger",[]);s(this,"onMetadataCalled",[]);s(this,"onBeforeMessageOut",[]);s(this,"onContextCalled",[]);this.idToPlugin={},this.mapPlugins(r),this.indexPlugins()}mapPlugins(r){for(let e of r){if(e.id||(e.id=Date.now().toString()+Math.random().toString()),this.idToPlugin[e.id])throw new Error(`[LogLayer] Plugin with id ${e.id} already exists.`);e.registeredAt=Date.now(),this.idToPlugin[e.id]=e}}indexPlugins(){this.onBeforeDataOut=[],this.shouldSendToLogger=[],this.onMetadataCalled=[],this.onBeforeMessageOut=[],this.onContextCalled=[];let r=Object.values(this.idToPlugin).sort((e,t)=>e.registeredAt-t.registeredAt);for(let e of r){if(e.disabled)return;for(let t of G)e[t]&&e.id&&this[t].push(e.id)}}hasPlugins(r){return this[r].length>0}countPlugins(r){return r?this[r].length:Object.keys(this.idToPlugin).length}addPlugins(r){this.mapPlugins(r),this.indexPlugins()}enablePlugin(r){let e=this.idToPlugin[r];e&&(e.disabled=!1),this.indexPlugins()}disablePlugin(r){let e=this.idToPlugin[r];e&&(e.disabled=!0),this.indexPlugins()}removePlugin(r){delete this.idToPlugin[r],this.indexPlugins()}runOnBeforeDataOut(r,e){let t=a({},r);for(let i of this.onBeforeDataOut){let o=this.idToPlugin[i];if(o.onBeforeDataOut){let l=o.onBeforeDataOut({data:t.data,logLevel:t.logLevel,error:t.error,metadata:t.metadata,context:t.context},e);l&&(t.data||(t.data={}),Object.assign(t.data,l))}}return t.data}runShouldSendToLogger(r,e){return!this.shouldSendToLogger.some(t=>{var i,o;return!((o=(i=this.idToPlugin[t]).shouldSendToLogger)!=null&&o.call(i,r,e))})}runOnMetadataCalled(r,e){var i,o;let t=a({},r);for(let l of this.onMetadataCalled){let d=(o=(i=this.idToPlugin[l]).onMetadataCalled)==null?void 0:o.call(i,t,e);if(d)t=d;else return null}return t}runOnBeforeMessageOut(r,e){var i,o;let t=[...r.messages];for(let l of this.onBeforeMessageOut){let d=(o=(i=this.idToPlugin[l]).onBeforeMessageOut)==null?void 0:o.call(i,{messages:t,logLevel:r.logLevel},e);d&&(t=d)}return t}runOnContextCalled(r,e){var i,o;let t=a({},r);for(let l of this.onContextCalled){let d=(o=(i=this.idToPlugin[l]).onContextCalled)==null?void 0:o.call(i,t,e);if(d)t=d;else return null}return t}},R=class j{constructor(e){s(this,"pluginManager");s(this,"idToTransport");s(this,"hasMultipleTransports");s(this,"singleTransport");s(this,"contextManager");s(this,"logLevelEnabledStatus",{info:!0,warn:!0,error:!0,debug:!0,trace:!0,fatal:!0});s(this,"_config");var t;this._config=M(a({},e),{enabled:(t=e.enabled)!=null?t:!0}),this._config.enabled||this.disableLogging(),this.contextManager=new E,this.pluginManager=new B(e.plugins||[]),this._config.errorFieldName||(this._config.errorFieldName="err"),this._config.copyMsgOnOnlyError||(this._config.copyMsgOnOnlyError=!1),this._initializeTransports(this._config.transport)}withContextManager(e){return this.contextManager&&typeof this.contextManager[Symbol.dispose]=="function"&&this.contextManager[Symbol.dispose](),this.contextManager=e,this}getContextManager(){return this.contextManager}_initializeTransports(e){if(this.idToTransport)for(let t in this.idToTransport)this.idToTransport[t]&&typeof this.idToTransport[t][Symbol.dispose]=="function"&&this.idToTransport[t][Symbol.dispose]();this.hasMultipleTransports=Array.isArray(e)&&e.length>1,this.singleTransport=this.hasMultipleTransports?null:Array.isArray(e)?e[0]:e,Array.isArray(e)?this.idToTransport=e.reduce((t,i)=>(t[i.id]=i,t),{}):this.idToTransport={[e.id]:e}}withPrefix(e){let t=this.child();return t._config.prefix=e,t}withContext(e){let t=e;return e?this.pluginManager.hasPlugins(u.onContextCalled)&&(t=this.pluginManager.runOnContextCalled(e,this),!t)?(this._config.consoleDebug&&console.debug("[LogLayer] Context was dropped due to plugin returning falsy value."),this):(this.contextManager.appendContext(t),this):(this._config.consoleDebug&&console.debug("[LogLayer] withContext was called with no context; dropping."),this)}clearContext(){return this.contextManager.setContext(void 0),this}getContext(){return this.contextManager.getContext()}addPlugins(e){this.pluginManager.addPlugins(e)}enablePlugin(e){this.pluginManager.enablePlugin(e)}disablePlugin(e){this.pluginManager.disablePlugin(e)}removePlugin(e){this.pluginManager.removePlugin(e)}withMetadata(e){return new k(this).withMetadata(e)}withError(e){return new k(this).withError(e)}child(){let e=new j(M(a({},this._config),{transport:Array.isArray(this._config.transport)?[...this._config.transport]:this._config.transport})).withPluginManager(this.pluginManager).withContextManager(this.contextManager.clone());return this.contextManager.onChildLoggerCreated({parentContextManager:this.contextManager,childContextManager:e.contextManager,parentLogger:this,childLogger:e}),e}withFreshTransports(e){return this._config.transport=e,this._initializeTransports(e),this}withFreshPlugins(e){return this._config.plugins=e,this.pluginManager=new B(e),this}withPluginManager(e){return this.pluginManager=e,this}errorOnly(e,t){let i=(t==null?void 0:t.logLevel)||n.error;if(!this.isLevelEnabled(i))return;let{copyMsgOnOnlyError:o}=this._config,l={logLevel:i,err:e};(o&&(t==null?void 0:t.copyMsg)!==!1||(t==null?void 0:t.copyMsg)===!0)&&(e!=null&&e.message)&&(l.params=[e.message]),this._formatLog(l)}metadataOnly(e,t=n.info){if(!this.isLevelEnabled(t))return;let{muteMetadata:i,consoleDebug:o}=this._config;if(i)return;if(!e){o&&console.debug("[LogLayer] metadataOnly was called with no metadata; dropping.");return}let l=e;if(this.pluginManager.hasPlugins(u.onMetadataCalled)&&(l=this.pluginManager.runOnMetadataCalled(e,this),!l)){o&&console.debug("[LogLayer] Metadata was dropped due to plugin returning falsy value.");return}let d={logLevel:t,metadata:l};this._formatLog(d)}info(...e){this.isLevelEnabled(n.info)&&(this._formatMessage(e),this._formatLog({logLevel:n.info,params:e}))}warn(...e){this.isLevelEnabled(n.warn)&&(this._formatMessage(e),this._formatLog({logLevel:n.warn,params:e}))}error(...e){this.isLevelEnabled(n.error)&&(this._formatMessage(e),this._formatLog({logLevel:n.error,params:e}))}debug(...e){this.isLevelEnabled(n.debug)&&(this._formatMessage(e),this._formatLog({logLevel:n.debug,params:e}))}trace(...e){this.isLevelEnabled(n.trace)&&(this._formatMessage(e),this._formatLog({logLevel:n.trace,params:e}))}fatal(...e){this.isLevelEnabled(n.fatal)&&(this._formatMessage(e),this._formatLog({logLevel:n.fatal,params:e}))}raw(e){if(!this.isLevelEnabled(e.logLevel))return;let t={logLevel:e.logLevel,params:e.messages,metadata:e.metadata,err:e.error,context:e.context};this._formatMessage(e.messages),this._formatLog(t)}disableLogging(){for(let e of Object.keys(this.logLevelEnabledStatus))this.logLevelEnabledStatus[e]=!1;return this}enableLogging(){for(let e of Object.keys(this.logLevelEnabledStatus))this.logLevelEnabledStatus[e]=!0;return this}muteContext(){return this._config.muteContext=!0,this}unMuteContext(){return this._config.muteContext=!1,this}muteMetadata(){return this._config.muteMetadata=!0,this}unMuteMetadata(){return this._config.muteMetadata=!1,this}enableIndividualLevel(e){let t=e;return t in this.logLevelEnabledStatus&&(this.logLevelEnabledStatus[t]=!0),this}disableIndividualLevel(e){let t=e;return t in this.logLevelEnabledStatus&&(this.logLevelEnabledStatus[t]=!1),this}setLevel(e){let t=v[e];for(let i of Object.values(n)){let o=i,l=v[i];this.logLevelEnabledStatus[o]=l>=t}return this}isLevelEnabled(e){let t=e;return this.logLevelEnabledStatus[t]}formatContext(e){let{contextFieldName:t,muteContext:i}=this._config;return e&&Object.keys(e).length>0&&!i?t?{[t]:a({},e)}:a({},e):{}}formatMetadata(e=null){let{metadataFieldName:t,muteMetadata:i}=this._config;return e&&!i?t?{[t]:a({},e)}:a({},e):{}}getLoggerInstance(e){let t=this.idToTransport[e];if(t)return t.getLoggerInstance()}_formatMessage(e=[]){let{prefix:t}=this._config;t&&typeof e[0]=="string"&&(e[0]=`${t} ${e[0]}`)}_formatLog({logLevel:e,params:t=[],metadata:i=null,err:o,context:l=null}){var P;let{errorSerializer:d,errorFieldInMetadata:O,muteContext:A,contextFieldName:x,metadataFieldName:f,errorFieldName:w}=this._config,m=l!==null?l:this.contextManager.getContext(),c=!!i||(A?!1:l!==null?Object.keys(l).length>0:this.contextManager.hasContextData()),g={};if(c)if(x&&x===f){let L=this.formatContext(m)[x],b=this.formatMetadata(i)[f];g={[x]:a(a({},L),b)}}else g=a(a({},this.formatContext(m)),this.formatMetadata(i));if(o){let L=d?d(o):o;O&&i&&f?g!=null&&g[f]?g[f][w]=L:g=M(a({},g),{[f]:{[w]:L}}):O&&!i&&f?g=M(a({},g),{[f]:{[w]:L}}):g=M(a({},g),{[w]:L}),c=!0}if(this.pluginManager.hasPlugins(u.onBeforeDataOut)&&(g=this.pluginManager.runOnBeforeDataOut({data:c?g:void 0,logLevel:e,error:o,metadata:i,context:m},this),g&&!c&&(c=!0)),this.pluginManager.hasPlugins(u.onBeforeMessageOut)&&(t=this.pluginManager.runOnBeforeMessageOut({messages:[...t],logLevel:e},this)),this.hasMultipleTransports){let L=this._config.transport.filter(b=>b.enabled).map(async b=>{if(!(this.pluginManager.hasPlugins(u.shouldSendToLogger)&&!this.pluginManager.runShouldSendToLogger({messages:[...t],data:c?g:void 0,logLevel:e,transportId:b.id,error:o,metadata:i,context:m},this)))return b._sendToLogger({logLevel:e,messages:[...t],data:c?g:void 0,hasData:c,error:o,metadata:i,context:m})});Promise.all(L).catch(b=>{this._config.consoleDebug&&console.error("[LogLayer] Error executing transports:",b)})}else{if(!((P=this.singleTransport)!=null&&P.enabled)||this.pluginManager.hasPlugins(u.shouldSendToLogger)&&!this.pluginManager.runShouldSendToLogger({messages:[...t],data:c?g:void 0,logLevel:e,transportId:this.singleTransport.id,error:o,metadata:i,context:m},this))return;this.singleTransport._sendToLogger({logLevel:e,messages:[...t],data:c?g:void 0,hasData:c,error:o,metadata:i,context:m})}}};function H(){let r={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}};return new R({transport:r})}function _(r){return r!=null?r:H()}var y=require("@kumori/kdsl-lsp/module/registry/manager.js"),p=require("@kumori/kdsl-lsp/util/result.js");async function Q(r){let e=_(r.logger),t=new y.RegistryManager,i={selector:r.selector,version:r.version,indexUrl:r.url};try{return t.add(i),e.info(`Registry '${r.selector}' added at ${r.url}`),(0,p.Ok)(void 0)}catch(o){return(0,p.Err)([`Failed to add registry: ${o}`])}}async function W(r={}){let e=_(r.logger),t=new y.RegistryManager;try{let i=t.list();return e.info("Configured Registries:"),(0,p.Ok)(i)}catch(i){return(0,p.Err)([`Failed to list registries: ${i}`])}}async function X(r){let e=_(r.logger),t=new y.RegistryManager;try{return t.remove(r.name),e.info(`Registry '${r.name}' removed`),(0,p.Ok)(void 0)}catch(i){return(0,p.Err)([`Failed to remove registry: ${i}`])}}0&&(module.exports={registryAdd,registryList,registryRemove});