likec4 1.57.0 → 1.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__app__/codegen/react.mjs +7 -8
- package/__app__/codegen/webcomponent.mjs +70 -881
- package/__app__/src/aichat/index.mjs +8 -1
- package/__app__/src/chunks/AIChat.mjs +959 -0
- package/__app__/src/chunks/DiagramActorProvider.mjs +7638 -0
- package/__app__/src/chunks/LikeC4Styles.mjs +1866 -0
- package/__app__/src/chunks/Markdown.mjs +146 -0
- package/__app__/src/chunks/NavigationPanel.mjs +61 -0
- package/__app__/src/chunks/ProjectsOverview.mjs +540 -0
- package/__app__/src/chunks/adhoc-editor.mjs +3386 -0
- package/__app__/src/chunks/es.mjs +439 -0
- package/__app__/src/chunks/hooks.mjs +145 -0
- package/__app__/src/chunks/libs/@dagrejs/dagre.mjs +1894 -0
- package/__app__/src/chunks/libs/@floating-ui.mjs +2218 -0
- package/__app__/src/chunks/libs/@mantine.mjs +12070 -0
- package/__app__/src/chunks/libs/@tabler/icons-react.mjs +252 -0
- package/__app__/src/chunks/libs/@tanstack-ai.mjs +1768 -0
- package/__app__/src/chunks/libs/@tanstack.mjs +2718 -0
- package/__app__/src/chunks/libs/@xstate/react.mjs +1982 -0
- package/__app__/src/chunks/libs/@xyflow/react.mjs +5256 -0
- package/__app__/src/chunks/libs/bezier-js.mjs +1003 -0
- package/__app__/src/chunks/libs/d3.mjs +2842 -0
- package/__app__/src/chunks/libs/fast-equals.mjs +268 -0
- package/__app__/src/chunks/libs/framer.mjs +5872 -0
- package/__app__/src/chunks/libs/remeda.mjs +642 -0
- package/__app__/src/chunks/libs/zod.mjs +3170 -0
- package/__app__/src/chunks/rolldown-runtime.mjs +23 -0
- package/__app__/src/chunks/styled-system.mjs +1040 -0
- package/__app__/src/fonts.css +1 -1
- package/__app__/src/main.mjs +14816 -14
- package/__app__/src/style.css +1 -1
- package/dist/chunks/enableServer.mjs +1 -1
- package/dist/chunks/filenames.mjs +2 -2
- package/dist/chunks/index2.d.mts +1877 -734
- package/dist/chunks/libs/@chevrotain/gast.mjs +1 -1
- package/dist/chunks/libs/@logtape/logtape.mjs +4 -3
- package/dist/chunks/libs/chevrotain-allstar.mjs +2 -2
- package/dist/chunks/libs/chevrotain.mjs +25 -25
- package/dist/chunks/libs/langium.mjs +1 -1
- package/dist/chunks/libs/merge-error-cause.mjs +1 -1
- package/dist/chunks/libs/pretty-ms.mjs +1 -1
- package/dist/chunks/libs/remeda.mjs +1 -1
- package/dist/chunks/libs/ufo.mjs +1 -1
- package/dist/chunks/libs/unstorage.mjs +1 -1
- package/dist/chunks/libs/which.mjs +1 -1
- package/dist/chunks/libs/zod.mjs +65 -0
- package/dist/chunks/node.mjs +73 -62
- package/dist/chunks/{plugin.mjs → vite-plugin.mjs} +41 -41
- package/dist/cli/index.mjs +184 -144
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/model/index.d.mts +1 -1
- package/dist/vite-plugin/index.mjs +1 -1
- package/dist/vite-plugin/internal/index.d.mts +52 -57
- package/dist/vite-plugin/internal/index.mjs +946 -1
- package/package.json +46 -47
- package/react/index.d.mts +92 -23
- package/react/index.mjs +44551 -42605
- package/__app__/chunks/AIChat2.mjs +0 -2
- package/__app__/chunks/DiagramActorProvider.mjs +0 -10
- package/__app__/chunks/EmbedPage.mjs +0 -1
- package/__app__/chunks/ExportPage.mjs +0 -2
- package/__app__/chunks/LikeC4Diagram.mjs +0 -19
- package/__app__/chunks/LikeC4Styles.mjs +0 -48
- package/__app__/chunks/Markdown.mjs +0 -1
- package/__app__/chunks/NavigationPanel.mjs +0 -1
- package/__app__/chunks/ViewReact.mjs +0 -1
- package/__app__/chunks/adhoc-editor.mjs +0 -1
- package/__app__/chunks/aichat.mjs +0 -1
- package/__app__/chunks/box.mjs +0 -1
- package/__app__/chunks/create-style-context.mjs +0 -1
- package/__app__/chunks/css.mjs +0 -1
- package/__app__/chunks/factory.mjs +0 -1
- package/__app__/chunks/hooks.mjs +0 -1
- package/__app__/chunks/hstack.mjs +0 -1
- package/__app__/chunks/libs/@dagrejs/dagre.mjs +0 -1
- package/__app__/chunks/libs/@floating-ui/core.mjs +0 -1
- package/__app__/chunks/libs/@floating-ui/dom.mjs +0 -1
- package/__app__/chunks/libs/@floating-ui/react.mjs +0 -1
- package/__app__/chunks/libs/@mantine/core.mjs +0 -41
- package/__app__/chunks/libs/@mantine/hooks.mjs +0 -1
- package/__app__/chunks/libs/@nanostores/react.mjs +0 -1
- package/__app__/chunks/libs/@react-hookz/web.mjs +0 -1
- package/__app__/chunks/libs/@tabler/icons-react.mjs +0 -358
- package/__app__/chunks/libs/@tanstack/ai-client.mjs +0 -2
- package/__app__/chunks/libs/@tanstack/ai-react-ui.mjs +0 -1
- package/__app__/chunks/libs/@tanstack/ai-react.mjs +0 -1
- package/__app__/chunks/libs/@tanstack/ai.mjs +0 -2
- package/__app__/chunks/libs/@tanstack/history.mjs +0 -1
- package/__app__/chunks/libs/@tanstack/react-router.mjs +0 -3
- package/__app__/chunks/libs/@tanstack/router-core.mjs +0 -1
- package/__app__/chunks/libs/@xstate/react.mjs +0 -1
- package/__app__/chunks/libs/@xstate/store.mjs +0 -1
- package/__app__/chunks/libs/@xyflow/react.mjs +0 -7
- package/__app__/chunks/libs/@zag-js/anatomy.mjs +0 -1
- package/__app__/chunks/libs/@zag-js/collection.mjs +0 -1
- package/__app__/chunks/libs/@zag-js/core.mjs +0 -1
- package/__app__/chunks/libs/@zag-js/react.mjs +0 -1
- package/__app__/chunks/libs/@zag-js/tree-view.mjs +0 -1
- package/__app__/chunks/libs/bezier-js.mjs +0 -1
- package/__app__/chunks/libs/copy-anything.mjs +0 -1
- package/__app__/chunks/libs/d3-path.mjs +0 -1
- package/__app__/chunks/libs/d3-shape.mjs +0 -1
- package/__app__/chunks/libs/fast-equals.mjs +0 -1
- package/__app__/chunks/libs/framer-motion.mjs +0 -9
- package/__app__/chunks/libs/html-to-image.mjs +0 -2
- package/__app__/chunks/libs/motion-dom.mjs +0 -1
- package/__app__/chunks/libs/nanostores.mjs +0 -1
- package/__app__/chunks/libs/react-error-boundary.mjs +0 -1
- package/__app__/chunks/libs/react-resizable-panels.mjs +0 -1
- package/__app__/chunks/libs/remeda.mjs +0 -1
- package/__app__/chunks/libs/superjson.mjs +0 -1
- package/__app__/chunks/libs/zod.mjs +0 -64
- package/__app__/chunks/rolldown-runtime.mjs +0 -1
- package/__app__/chunks/styles.css.mjs +0 -1
- package/__app__/chunks/txt.mjs +0 -1
- package/__app__/chunks/useLikeC4Project.mjs +0 -1
- package/__app__/src/pages/AdHocViewEditor.mjs +0 -1
- package/__app__/src/pages/EmbedPage.mjs +0 -1
- package/__app__/src/pages/ExportPage.mjs +0 -1
- package/__app__/src/pages/ProjectsOverview.mjs +0 -1
- package/__app__/src/pages/ViewAsD2.mjs +0 -1
- package/__app__/src/pages/ViewAsDot.mjs +0 -1
- package/__app__/src/pages/ViewAsMmd.mjs +0 -1
- package/__app__/src/pages/ViewAsPuml.mjs +0 -1
- package/__app__/src/pages/ViewEditor.mjs +0 -1
- package/__app__/src/pages/ViewReact.mjs +0 -1
- package/dist/chunks/libs/@chevrotain/utils.mjs +0 -1
- package/dist/chunks/libs/@hono/mcp.mjs +0 -70
- package/dist/chunks/libs/@hono/node-server.mjs +0 -1
- package/dist/chunks/libs/@logtape/logtape.d.mts +0 -1023
- package/dist/chunks/libs/@modelcontextprotocol/sdk.mjs +0 -12
- package/dist/chunks/libs/ajv.mjs +0 -1
- package/dist/chunks/libs/ansi-align.mjs +0 -2
- package/dist/chunks/libs/ansi-regex.mjs +0 -1
- package/dist/chunks/libs/ansi-styles.mjs +0 -1
- package/dist/chunks/libs/atomically.mjs +0 -1
- package/dist/chunks/libs/boxen.mjs +0 -22
- package/dist/chunks/libs/conf.mjs +0 -1
- package/dist/chunks/libs/defu.mjs +0 -1
- package/dist/chunks/libs/destr.mjs +0 -1
- package/dist/chunks/libs/find-up-simple.mjs +0 -1
- package/dist/chunks/libs/get-port.mjs +0 -1
- package/dist/chunks/libs/hono.mjs +0 -1
- package/dist/chunks/libs/is-docker.mjs +0 -1
- package/dist/chunks/libs/is-error-instance.mjs +0 -1
- package/dist/chunks/libs/is-inside-container.mjs +0 -1
- package/dist/chunks/libs/is-plain-obj.mjs +0 -1
- package/dist/chunks/libs/isexe.mjs +0 -1
- package/dist/chunks/libs/ky.mjs +0 -3
- package/dist/chunks/libs/p-debounce.mjs +0 -1
- package/dist/chunks/libs/p-limit.mjs +0 -1
- package/dist/chunks/libs/p-timeout.mjs +0 -1
- package/dist/chunks/libs/package-up.mjs +0 -1
- package/dist/chunks/libs/parse-ms.mjs +0 -1
- package/dist/chunks/libs/safe-stringify.mjs +0 -1
- package/dist/chunks/libs/strip-indent.mjs +0 -1
- package/dist/chunks/libs/tinyrainbow.mjs +0 -1
- package/dist/chunks/libs/ts-graphviz.mjs +0 -1
- package/dist/chunks/libs/unctx.mjs +0 -1
- package/dist/chunks/libs/vscode-languageserver.mjs +0 -1
- package/dist/chunks/libs/word-wrap.mjs +0 -12
- package/dist/vite-plugin/internal/chunks/libs/@nanostores/react.mjs +0 -1
- package/dist/vite-plugin/internal/chunks/libs/birpc.mjs +0 -1
- package/dist/vite-plugin/internal/chunks/libs/fast-equals.mjs +0 -1
- package/dist/vite-plugin/internal/chunks/libs/nanostores.mjs +0 -1
- package/dist/vite-plugin/internal/chunks/libs/remeda.mjs +0 -1
- package/dist/vite-plugin/internal/chunks/rolldown-runtime.mjs +0 -1
package/dist/cli/index.mjs
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{c as e,i as t}from"../chunks/rolldown-runtime.mjs";import{a as
|
|
3
|
-
`).trimStart()}function elementIdToUnion(e){let t=
|
|
2
|
+
import{c as e,i as t,t as n}from"../chunks/rolldown-runtime.mjs";import{a as r,c as i,f as a,g as s,h as c,i as l,l as u,m as f,n as p,o as m,p as h,r as g,s as v,u as y}from"../chunks/node.mjs";import{H as b,U as x,a as ee,n as te,o as ne,r as re,t as ie,v as ae}from"../chunks/libs/langium.mjs";import{c as oe,l as se,o as ce,r as le,s as ue}from"../chunks/libs/ufo.mjs";import{t as de}from"../chunks/libs/json5.mjs";import{A as fe,B as pe,C as S,D as me,I as he,L as ge,M as _e,N as ve,O as ye,P as be,R as xe,S as C,T as Se,_ as w,a as Ce,b as T,c as E,d as we,g as D,h as Te,i as Ee,j as De,k as Oe,l as O,m as k,n as ke,o as Ae,p as je,r as Me,s as Ne,u as Pe,v as Fe,w as Ie,y as Le,z as Re}from"../chunks/libs/zod.mjs";import{C as ze,M as Be,Q as Ve,X as He,Y as Ue,d as We,et as Ge,m as Ke,nt as qe,o as Je,q as Ye,r as Xe,t as Ze,u as Qe,w as $e,x as et,y as tt}from"../chunks/libs/remeda.mjs";import{t as nt}from"../chunks/libs/pretty-ms.mjs";import{t as rt}from"../chunks/libs/picomatch.mjs";import{a as it,c as at,i as ot,l as st,n as ct,o as ut,r as dt,s as ft,t as pt}from"../chunks/vite-plugin.mjs";import{n as mt,t as ht}from"../chunks/libs/package-manager-detector.mjs";import{LikeC4Model as _t}from"../model/index.mjs";import vt from"node:module";import{isDeepStrictEqual as yt,promisify as bt}from"node:util";import A,{basename as xt,dirname as St,extname as Ct,isAbsolute as wt,join as Tt,relative as Et,resolve as j,sep as Dt}from"node:path";import{hasProp as Ot,invariant as kt,nonexhaustive as At}from"@likec4/core";import{compareNatural as jt,ifilter as Mt,invariant as Nt,isSameHierarchy as Pt,sortNaturalByFqn as Ft}from"@likec4/core/utils";import{isDeploymentElementModel as It,isDeploymentNodeModel as Lt,isDeploymentRelationModel as Rt,isElementModel as zt,isLikeC4ViewModel as Bt,isRelationModel as Vt,modelConnection as Ht}from"@likec4/core/model";import Ut from"nano-spawn";import Wt,{tmpdir as Gt}from"node:os";import M,{copyFileSync as Kt,existsSync as qt,readFileSync as Jt,readdirSync as Yt,rmSync as Xt,statSync as Zt,writeFileSync as Qt}from"node:fs";import{copyFile as $t,cp as en,mkdir as tn,mkdtemp as nn,readFile as rn,readdir as an,realpath as on,rm as sn,stat as cn,writeFile as ln}from"node:fs/promises";import un from"node:crypto";import dn from"node:net";import{fileURLToPath as fn,pathToFileURL as pn}from"node:url";import{env as mn,isCI as hn,isDevelopment as gn,isTest as _n,nodeENV as vn}from"std-env";import N,{argv as yn,cwd as bn,exit as xn,hrtime as Sn,stdout as Cn}from"node:process";import wn from"yargs";import{hideBin as Tn}from"yargs/helpers";import En from"node:tty";import{build as Dn,createServer as On,preview as kn}from"vite";import{viteSingleFile as An}from"vite-plugin-singlefile";import jn from"node:assert";import Mn from"@vitejs/plugin-react";import{setTimeout as Nn}from"node:timers/promises";import{createServer as Pn}from"node:http";import{Http2ServerRequest as Fn,constants as In}from"node:http2";import{Readable as Ln}from"node:stream";function toUnion(e){return Be(e)?`never`:(typeof e==`object`&&!Array.isArray(e)&&(e=et(e)),Ge(e,Xe(),Je(jt),tt(e=>` | ${JSON.stringify(e)}`)).join(`
|
|
3
|
+
`).trimStart())}function elementIdToUnion(e){let t=Ge(e,Ze(),He(e=>!!e&&ze(e.id)),Ft,tt(e=>` | ${JSON.stringify(e.id)}`));return t.length===0?`never`:t.join(`
|
|
4
4
|
`).trimStart()}function generateAux(e,t={}){let{useCorePackage:n=!1}=t;return`
|
|
5
5
|
import type { Aux, SpecAux } from '${n?`@likec4/core/types`:`likec4/model`}';
|
|
6
6
|
|
|
7
7
|
export type $Specs = SpecAux<
|
|
8
8
|
// Element kinds
|
|
9
|
-
${toUnion(
|
|
9
|
+
${toUnion(e.specification.elements)},
|
|
10
10
|
// Deployment kinds
|
|
11
|
-
${toUnion(
|
|
11
|
+
${toUnion(e.specification.deployments)},
|
|
12
12
|
// Relationship kinds
|
|
13
|
-
${toUnion(
|
|
13
|
+
${toUnion(e.specification.relationships)},
|
|
14
14
|
// Tags
|
|
15
|
-
${toUnion(
|
|
15
|
+
${toUnion(e.specification.tags)},
|
|
16
16
|
// Metadata keys
|
|
17
|
-
${toUnion(e.specification.metadataKeys
|
|
17
|
+
${toUnion(e.specification.metadataKeys)}
|
|
18
18
|
>
|
|
19
19
|
|
|
20
20
|
export type $Aux = Aux<
|
|
@@ -24,7 +24,7 @@ export type $Aux = Aux<
|
|
|
24
24
|
// Deployments
|
|
25
25
|
${elementIdToUnion(e.$data.deployments.elements)},
|
|
26
26
|
// Views
|
|
27
|
-
${toUnion(
|
|
27
|
+
${toUnion(e.$data.views)},
|
|
28
28
|
// Project ID
|
|
29
29
|
${JSON.stringify(e.projectId)},
|
|
30
30
|
$Specs
|
|
@@ -52,10 +52,10 @@ export type $MetadataKey = $Aux['MetadataKey']
|
|
|
52
52
|
import { LikeC4Model } from '${r?`@likec4/core`:`likec4`}/model'
|
|
53
53
|
${n}
|
|
54
54
|
|
|
55
|
-
export const likec4model: LikeC4Model<$Aux> = new LikeC4Model(${
|
|
55
|
+
export const likec4model: LikeC4Model<$Aux> = new LikeC4Model(${de.stringify(e.$data,{space:2,quote:`'`})} as any) as any
|
|
56
56
|
|
|
57
57
|
/* prettier-ignore-end */
|
|
58
|
-
`.trimStart()}function generateViewId(e){return
|
|
58
|
+
`.trimStart()}function generateViewId(e){return ie(e,e=>ne`${de.stringify(e.id)}`,{separator:` | `})}function generateViewsDataTs(e){let t=Array.from(e),n=new te;return n.appendTemplate`
|
|
59
59
|
/******************************************************************************
|
|
60
60
|
* This file was generated
|
|
61
61
|
* DO NOT EDIT MANUALLY!
|
|
@@ -66,10 +66,10 @@ export const likec4model: LikeC4Model<$Aux> = new LikeC4Model(${E.stringify(e.$d
|
|
|
66
66
|
// @ts-nocheck
|
|
67
67
|
|
|
68
68
|
import type { DiagramView } from 'likec4'
|
|
69
|
-
`.append(
|
|
69
|
+
`.append(re,re),t.length===0?(n.append(`export {}`,re),ee(n)):(n.appendTemplate`
|
|
70
70
|
export type LikeC4ViewId = ${generateViewId(t)};
|
|
71
71
|
export const LikeC4Views = {
|
|
72
|
-
`.indent({indentation:2,indentedChildren(e){e.appendNewLineIf(t.length>1).append(
|
|
72
|
+
`.indent({indentation:2,indentedChildren(e){e.appendNewLineIf(t.length>1).append(ie(t,e=>ne`${de.stringify(e.id)}: (${de.stringify(e)} as unknown) as DiagramView`,{separator:`,`,appendNewLineIfNotEmpty:!0}))}}).append(`} as const satisfies Record<LikeC4ViewId, DiagramView>`,re,re).appendTemplate`
|
|
73
73
|
export type LikeC4Views = typeof LikeC4Views
|
|
74
74
|
|
|
75
75
|
export function isLikeC4ViewId(value: unknown): value is LikeC4ViewId {
|
|
@@ -81,7 +81,7 @@ export const likec4model: LikeC4Model<$Aux> = new LikeC4Model(${E.stringify(e.$d
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
/* prettier-ignore-end */
|
|
84
|
-
`.append(
|
|
84
|
+
`.append(re),ee(n))}function generateReactTypes(e,t={}){let{useCorePackage:n=!1}=t;Nt(!e.isParsed(),`can not generate react types for parsed model`);let r=generateAux(e,t);return`
|
|
85
85
|
/* prettier-ignore-start */
|
|
86
86
|
/* eslint-disable */
|
|
87
87
|
|
|
@@ -137,10 +137,41 @@ export {
|
|
|
137
137
|
ReactLikeC4
|
|
138
138
|
}
|
|
139
139
|
/* prettier-ignore-end */
|
|
140
|
-
`.trimStart()}var Zt=`likec4`,Qt=`1.57.0`;const q=s.getChild(`cli`);function createLikeC4Logger(e){let t=s.getChild(e);return{info(e){t.info(e)},debug(e,...n){n.length===0?t.debug(e):t.debug(e,{args:n})},warn(e){if(e instanceof Error){t.warn(`${C.red(e.name+` `+e.message)}`,{msg:e});return}if(typeof e==`string`){t.warn(e);return}t.warn`${e}`},warnOnce(e){t.warn(e)},error(e,n){let r=n?.error??e;if(r instanceof Error){if(e===r){t.error(`${C.red(r.name+` `+r.message)}`,{error:r});return}t.error(C.red(e),{error:r});return}if(typeof e==`string`){t.error(C.red(e));return}t.error`${e}`},clearScreen:function(e){},hasErrorLogged:function(e){return!1},hasWarned:!1}}function inMillis(e){let[t,n]=Bt(e),r=t*1e3+n/1e6;return{ms:r,pretty:ve(r)}}function startTimer(e){let t=Bt();return{stopAndLog(n=`done in `){n=C.green(`${n}${inMillis(t).pretty}`),(e||q).info(n)}}}function boxen(e,t){console.log(Ne(e,{padding:1,margin:1,dimBorder:!0,...t}))}const $t=createLikeC4Logger(`vite`),en=z(At(import.meta.url));function findPkgRoot(){let e=Pe({cwd:en});if(!e)throw Error(`likec4 package folder not found`);return z(e)}function viteAppRoot(){let e=[H(findPkgRoot(),`__app__`),H(en,`../__app__`),H(en,`../../__app__`),H(en,`../../dist/__app__`)],t=ce(e,W);if(!t)throw s.error(`likec4 app root does not exist, tried:\n${e.join(`
|
|
141
|
-
|
|
142
|
-
`)
|
|
143
|
-
`))}catch{}}function _usingCtx(){var e=typeof SuppressedError==`function`?SuppressedError:function(e,t){var n=Error();return n.name=`SuppressedError`,n.error=e,n.suppressed=t,n},t={},n=[];function using(e,t){if(t!=null){if(Object(t)!==t)throw TypeError(`using declarations can only be used with objects, functions, null, or undefined.`);if(e)var r=t[Symbol.asyncDispose||Symbol.for(`Symbol.asyncDispose`)];if(r===void 0&&(r=t[Symbol.dispose||Symbol.for(`Symbol.dispose`)],e))var i=r;if(typeof r!=`function`)throw TypeError(`Object is not disposable.`);i&&(r=function o(){try{i.call(t)}catch(e){return Promise.reject(e)}}),n.push({v:t,d:r,a:e})}else e&&n.push({d:t,a:e});return t}return{e:t,u:using.bind(null,!1),a:using.bind(null,!0),d:function d(){var r,i=this.e,a=0;function next(){for(;r=n.pop();)try{if(!r.a&&a===1)return a=0,n.push(r),Promise.resolve().then(next);if(r.d){var e=r.d.call(r.v);if(r.a)return a|=2,Promise.resolve(e).then(next,err)}else a|=1}catch(e){return err(e)}if(a===1)return i===t?Promise.resolve():Promise.reject(i);if(i!==t)throw i}function err(n){return i=i===t?n:new e(n,i),next()}return next()}}}const buildCmd=e=>e.command({command:`build [path]`,aliases:[`bundle`],describe:`Build a static website`,builder:e=>e.positional(`path`,J).option(`output`,{alias:`o`,type:`string`,desc:`output directory for production build`,normalize:!0,coerce:H}).option(`base`,cn).option(`use-hash-history`,rn).option(`use-dot`,Y).option(`webcomponent-prefix`,an).option(`title`,on).option(`output-single-file`,ln).option(`public`,un).option(`theme`,sn).example(`${C.green(`$0 build -o ./build ./src`)}`,C.gray(`Search for likec4 files in 'src' and output static site to 'build'`)).example(`${C.green(`$0 build --theme dark -o ./build ./src`)}`,C.gray(`Build with dark color scheme as default`)).example(`${C.green(`$0 build --public ./assets -o ./build ./src`)}`,C.gray(`Copy files from 'assets' to the output directory as-is`)),handler:async e=>{try{var t=_usingCtx();let n={useHashHistory:e[`use-hash-history`]??!1,useDotBin:e[`use-dot`],webcomponentPrefix:e[`webcomponent-prefix`],outputSingleFile:e[`output-single-file`]??!1};await ensureReact();let r=createLikeC4Logger(`c4:build`),i=t.a(await c(e.path,{graphviz:e[`use-dot`]?`binary`:`wasm`,watch:!1})),a=e.output??H(i.workspace,`dist`),s=H(a,`assets`);await viteBuild({base:e.base,useHashHistory:n.outputSingleFile||n.useHashHistory,customLogger:r,webcomponentPrefix:n.webcomponentPrefix,title:e.title,theme:e.theme,languageServices:i,likec4AssetsDir:s,outputDir:a,outputSingleFile:n.outputSingleFile,userPublicDir:e.public}),showSupportUsMessage()}catch(e){t.e=e}finally{await t.d()}}});var Sn=e(Fe(),1);const Cn=`check-update`;async function notifyAvailableUpdate(){if(Nt||Ft||It===Cn)return;let e=yn(),t=e.get(`lastUpdateCheck`);if(!t){await checkAvailableUpdate(!1);return}let n=e.get(`latestVersion`);if(oe(n)||oe(t)||t+864e5<Date.now())try{ht(`likec4`,[`check-update`],{stdio:`ignore`,timeout:5e3,preferLocal:!0,detached:!0,env:{NODE_ENV:Cn}}).catch(()=>{})}catch{}n&&(0,Sn.gt)(n,vn.version)&&boxen([`Update available: `,C.dim(vn.version),C.reset(` → `),C.green(n)].join(``))}async function checkAvailableUpdate(e=!0){try{let t=yn();t.set({lastUpdateCheck:Date.now()});let n=await fetchLatestVersion();U(n,`No version found in latest npm`),t.set({lastUpdateCheck:Date.now(),latestVersion:n}),(0,Sn.gt)(n,vn.version)?boxen([`Update available: `,C.dim(vn.version),C.reset(` → `),C.green(n)].join(``)):e&&boxen(C.dim(`Up to date: `)+` `+C.green(vn.version))}catch(e){q.warning(u(e))}}async function fetchLatestVersion(){return(await Ue(`https://registry.npmjs.org/likec4/latest`,{headers:{accept:`application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*`},timeout:5e3,keepalive:!0}).json()).version}const checkUpdateCmd=e=>e.command({command:`check-update`,describe:`Check for updates`,handler:async()=>{await checkAvailableUpdate()}});function ensureProjectId(e,t){if(!t)return e.languageServices.projectsManager.ensureProjectId();let n=H(t);if(n===e.workspace)return e.languageServices.projectsManager.ensureProjectId();if(W(n)&&xt(n).isDirectory()){q.debug`Project path exists: ${n}`;let t=_.file(n.endsWith(et)?n:n+et),r=e.languageServices.projects().find(e=>e.folder.fsPath===t.fsPath);if(r)return q.debug`Found project ${r.id} at path: ${n}`,r.id;q.debug`No project registered at path: ${n}`}return e.languageServices.projectsManager.ensureProjectId(t)}function ensureProject(e,t){let n=ensureProjectId(e,t),r=e.languageServices.projectsManager.getProject(n);return e.languageServices.projectsManager.defaultProjectId=n,{projectId:n,projectFolder:r.folderUri.fsPath,config:r.config}}const wn=q.getChild(`generator`);async function customHandler({name:e,path:t,useDotBin:n,project:r}){try{var i=_usingCtx();let a=startTimer(wn),s=i.a(await c(t,{graphviz:n?`binary`:`wasm`,watch:!1})),{projectId:l,config:u}=ensureProject(s,r);r&&wn.info(`${C.dim(`project`)} ${C.green(l)}`);let f=u.generators?.[e];if(!f)throw wn.error(C.red(`generator ${e} does not exist in project config`)),Error(`generator ${e} does not exist in project config`);wn.info(`${C.dim(`generator`)} ${C.green(e)}`),await runCustomGenerator({likec4:s,model:await s.layoutedModel(l),generator:f,logger:wn.getChild(e)}),a.stopAndLog()}catch(e){i.e=e}finally{await i.d()}}async function runCustomGenerator({likec4:e,model:t,generator:n,logger:r}){let i=e.languageServices,a=new Set,s=i.project(t.project.id),c=t.project.id;r.debug(`${C.dim(`running for project:`)} ${C.green(s.id)}`),await Promise.resolve().then(()=>n({likec4model:t,ctx:{workspace:e.languageServices.workspaceUri,project:s,locate:e=>{let t=null;switch(!0){case dt(e):t=i.locate({element:e.id,projectId:c});break;case ft(e):t=i.locate({view:e.id,projectId:c});break;case ct(e):t=i.locate({deployment:e.id,projectId:c});break;case pt(e):case ut(e):t=i.locate({relation:e.id,projectId:c});break;default:nt(e)}if(!t)throw r.error(`Cannot locate ${e.id}`,{target:e}),Error(`Cannot locate ${e.id}`);let n=_.parse(t.uri);return{range:t.range,document:n,relativePath:g.relative(s.folder,n),folder:g.dirname(n).fsPath,filename:g.basename(n)}},write:async({path:e,content:t})=>{let n;n=Array.isArray(e)?H(s.folder.fsPath,...e):_.isUri(e)?e.fsPath:H(s.folder.fsPath,`${e}`);let i=z(n);a.has(i)||(W(i)||(r.debug(`${C.dim(`create directory`)} ${i}`),await G(i,{recursive:!0})),a.add(i)),r.debug(`${C.dim(`write`)} ${n}`),await K(n,t)},abort:e=>{throw r.error(e||`Generator aborted`),Error(e||`Generator aborted`)}}}))}async function singleFileCodegenAction(e,t,n){t??=H(e.workspace,`likec4.generated.ts`),Qe(t)!==`.ts`&&(t+=`.ts`),await G(z(t),{recursive:!0});let r=generateViewsDataTs([...await e.diagrams()]);await K(t,r),n.info(`${C.dim(`generated`)} ${V(process.cwd(),t)}`)}async function dotCodegenAction(e,t,n){await G(t,{recursive:!0}),n.info(`${C.dim(`format`)} ${C.green(`dot`)}`),n.info(`${C.dim(`outdir`)} ${t}`);let r=new Set,i=await e.computedModel(),a=me(i.$data.views),s=0;for(let c of a)try{let a=await e.viewsService.layouter.dot({view:c,styles:i.$styles}),l=`.`;c.sourcePath&&(l=z(c.sourcePath)),l=H(t,l),r.has(l)||(await G(l,{recursive:!0}),r.add(l));let u=H(l,c.id+`.dot`);await K(u,a),n.info(`${C.dim(`generated`)} ${V(process.cwd(),u)}`),s++}catch(e){q.error(`error while generating ${c.id}`,{error:e})}s>0&&n.info(`${C.dim(`total`)} ${s} files`)}async function multipleFilesCodegenAction(e,t,n,r){await G(n,{recursive:!0}),r.info(`${C.dim(`format`)} ${C.green(t)}`),r.info(`${C.dim(`outdir`)} ${n}`);let i,a;switch(t){case`d2`:i=`.d2`,a=we;break;case`mermaid`:i=`.mmd`,a=ke;break;case`plantuml`:i=`.puml`,a=De;break;default:nt(t)}let s=new Set,c=await e.layoutedModel(),l=0;for(let e of c.views()){let t=e.$view;try{let c=`.`;t.sourcePath&&(c=z(t.sourcePath)),c=H(n,c),s.has(c)||(await G(c,{recursive:!0}),s.add(c));let u=H(c,t.id+i);await K(u,a(e)),r.info(`${C.dim(`generated`)} ${V(process.cwd(),u)}`),l++}catch(e){r.error(`error while generating ${t.id}`,{error:e})}}l>0&&r.info(`${C.dim(`total`)} ${l} files`)}async function legacyHandler({path:e,useDotBin:t,...n}){let r=createLikeC4Logger(`c4:codegen`),i=startTimer(r),a=await c(e,{graphviz:t?`binary`:`wasm`,watch:!1});if(a.ensureSingleProject(),(await a.viewsService.computedViews()).length===0)throw r.warn(`no views found`),process.exitCode=1,Error(`no views found`);switch(n.format){case`views`:await singleFileCodegenAction(a,n.outfile,r);break;case`dot`:await dotCodegenAction(a,n.outdir??e,r);break;case`d2`:case`mermaid`:case`plantuml`:await multipleFilesCodegenAction(a,n.format,n.outdir??e,r);break;default:nt(n)}i.stopAndLog()}const Tn=z(At(import.meta.url));function readVersion(){try{let e=JSON.parse(vt(B(Tn,`..`,`package.json`),`utf8`));if(e.version)return e.version}catch{}try{let e=JSON.parse(vt(B(Tn,`..`,`..`,`package.json`),`utf8`));if(e.version)return e.version}catch{}return`0.1.0`}const En=readVersion(),Dn=`leanix`,On=new Set([`factSheetTypes`,`relationTypes`,`metadataToFields`]);function isPlainObjectRecordOfStrings(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;for(let t of Object.values(e))if(typeof t!=`string`)return!1;return!0}function parseLeanixMappingInput(e){if(e==null)return e;if(typeof e!=`object`||Array.isArray(e))throw Error(`LeanIX mapping must be a plain object (not an array or primitive)`);let t=e;for(let e of Object.keys(t))if(!On.has(e))throw Error(`LeanIX mapping has unknown key "${e}". Allowed: factSheetTypes, relationTypes, metadataToFields`);if(t.factSheetTypes!==void 0&&!isPlainObjectRecordOfStrings(t.factSheetTypes))throw Error(`LeanIX mapping "factSheetTypes" must be an object with string keys and string values`);if(t.relationTypes!==void 0&&!isPlainObjectRecordOfStrings(t.relationTypes))throw Error(`LeanIX mapping "relationTypes" must be an object with string keys and string values`);if(t.metadataToFields!==void 0&&!isPlainObjectRecordOfStrings(t.metadataToFields))throw Error(`LeanIX mapping "metadataToFields" must be an object with string keys and string values`);return e}const kn={factSheetTypes:{system:`Application`,container:`ITComponent`,component:`ITComponent`,actor:`Provider`},relationTypes:{default:`depends on`},metadataToFields:{title:`name`,description:`description`,technology:`technology`}};function mergeWithDefault(e){let t=parseLeanixMappingInput(e),n={factSheetTypes:{...kn.factSheetTypes},relationTypes:{...kn.relationTypes},metadataToFields:{...kn.metadataToFields}};return t?{factSheetTypes:{...n.factSheetTypes,...t.factSheetTypes},relationTypes:{...n.relationTypes,...t.relationTypes},metadataToFields:{...n.metadataToFields,...t.metadataToFields}}:n}function getFactSheetType(e,t){return t.factSheetTypes[e]??t.factSheetTypes.default??`Application`}function getRelationType(e,t){let n=e??`default`;return t.relationTypes[n]??t.relationTypes.default??`depends on`}const An={manifestVersion:`1.0`,bridgeVersion:En,mappingProfile:`default`};function buildManifestEntities(e){let t={};for(let n of e.elements())t[n.id]={canonicalId:n.id,external:{}};return t}function buildManifestViews(e){let t={};for(let n of e.views())t[n.id]={viewId:n.id,external:{}};return t}function buildManifestRelations(e){let t=[];for(let n of e.relationships())t.push({relationId:n.id,sourceFqn:n.source.id,targetFqn:n.target.id,compositeKey:`${n.source.id}|${n.target.id}|${n.id}`,external:{}});return t}function toBridgeManifest(e,t={}){let n={...An,...t,generatedAt:t.generatedAt??new Date().toISOString()};return{manifestVersion:n.manifestVersion,generatedAt:n.generatedAt,bridgeVersion:n.bridgeVersion,mappingProfile:n.mappingProfile,projectId:e.projectId,entities:buildManifestEntities(e),views:buildManifestViews(e),relations:buildManifestRelations(e)}}function buildFactSheetsFromModel(e,t){let n=[];for(let r of e.elements()){let e=getFactSheetType(r.kind,t),i=r.getMetadata(),a=typeof i.description==`string`?i.description:void 0,s=r.technology??(typeof i.technology==`string`?i.technology:void 0);n.push({type:e,likec4Id:r.id,name:r.title,...a!==void 0&&{description:a},...s!==void 0&&{technology:s},...r.tags.length>0&&{tags:[...r.tags]},...Object.keys(i).length>0&&{metadata:{...i}}})}return n.sort((e,t)=>e.likec4Id.localeCompare(t.likec4Id)),n}function buildRelationsFromModel(e,t){let n=[];for(let r of e.relationships()){let e=r.title??r.kind;n.push({type:getRelationType(r.kind,t),likec4RelationId:r.id,sourceLikec4Id:r.source.id,targetLikec4Id:r.target.id,...e!=null&&e!==``&&{title:String(e)}})}return n.sort((e,t)=>e.likec4RelationId.localeCompare(t.likec4RelationId)),n}function toLeanixInventoryDryRun(e,t={}){let n=mergeWithDefault(t.mapping),r=t.generatedAt??new Date().toISOString(),i=t.mappingProfile??(t.mapping?`custom`:`default`);return{generatedAt:r,projectId:e.projectId,mappingProfile:i,factSheets:buildFactSheetsFromModel(e,n),relations:buildRelationsFromModel(e,n)}}function buildCoherenceErrorMessage(e,t){let n=[];return e.projectId!==t.projectId&&n.push(`projectId (manifest: ${e.projectId}, leanixDryRun: ${t.projectId})`),e.mappingProfile!==t.mappingProfile&&n.push(`mappingProfile (manifest: ${e.mappingProfile}, leanixDryRun: ${t.mappingProfile})`),`Manifest and LeanIX dry-run must belong to the same run. Mismatch: ${n.join(`; `)}`}function buildBridgeReport(e,t){if(e.projectId!==t.projectId||e.mappingProfile!==t.mappingProfile)throw Error(buildCoherenceErrorMessage(e,t));return{generatedAt:e.generatedAt,projectId:e.projectId,manifestVersion:e.manifestVersion,bridgeVersion:e.bridgeVersion,mappingProfile:e.mappingProfile,counts:{entities:Object.keys(e.entities).length,views:Object.keys(e.views).length,relations:e.relations.length,factSheets:t.factSheets.length,leanixRelations:t.relations.length},artifacts:{manifest:`manifest.json`,leanixDryRun:`leanix-dry-run.json`}}}var LeanixApiError=class extends Error{statusCode;graphqlErrors;constructor(e,t,n){super(e),this.statusCode=t,this.graphqlErrors=n,this.name=`LeanixApiError`}};function sleep(e){return new Promise(t=>setTimeout(t,e))}var LeanixApiClient=class{baseUrl;apiToken;requestDelayMs;lastRequestTime=0;rateLimitLock=Promise.resolve();constructor(e){this.apiToken=e.apiToken,this.baseUrl=(e.baseUrl??`https://app.leanix.net`).replace(/\/$/,``),this.requestDelayMs=e.requestDelayMs??200}async graphql(e,t){let run=async()=>{let n=Date.now()-this.lastRequestTime;n<this.requestDelayMs&&await sleep(this.requestDelayMs-n),this.lastRequestTime=Date.now();let r=`${this.baseUrl}/services/pathfinder/v1/graphql`,i;try{i=await fetch(r,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${this.apiToken}`},body:JSON.stringify({query:e,variables:t})})}catch(e){throw new LeanixApiError(`GraphQL request failed: ${r} POST - ${e instanceof Error?e.message:String(e)}`)}let a;try{a=await i.json()}catch(e){let t=e instanceof Error?e.message:String(e);throw new LeanixApiError(`Invalid JSON response: ${r} ${i.status} ${i.statusText} - ${t}`,i.status)}if(!i.ok)throw new LeanixApiError(a.errors?.[0]?.message??`HTTP ${i.status} ${i.statusText}`,i.status,a.errors);if(a.errors&&a.errors.length>0)throw new LeanixApiError(a.errors.map(e=>e.message).join(`; `),i.status,a.errors);if(a.data===void 0)throw new LeanixApiError(`GraphQL response had no data and no errors`);return a.data},n=this.rateLimitLock,r;this.rateLimitLock=new Promise(e=>{r=e}),await n;try{return await run()}finally{r()}}};async function findFactSheetByNameAndType(e,t,n){let r=(await e.graphql(`
|
|
140
|
+
`.trimStart()}var Rn=`likec4`,zn=`1.58.0`;function ansiRegex({onlyFirst:e=!1}={}){let t=[`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))`,`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))`].join(`|`);return new RegExp(t,e?void 0:`g`)}const Bn=ansiRegex();function stripAnsi(e){if(typeof e!=`string`)throw TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(Bn,``)}function isAmbiguous(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 isFullWidth(e){return e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510}function isWide(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===94193||e>=94208&&e<=100343||e>=100352&&e<=101589||e>=101631&&e<=101640||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<=128727||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<=129673||e>=129679&&e<=129734||e>=129742&&e<=129756||e>=129759&&e<=129769||e>=129776&&e<=129784||e>=131072&&e<=196605||e>=196608&&e<=262141}function validate(e){if(!Number.isSafeInteger(e))throw TypeError(`Expected a code point, got \`${typeof e}\`.`)}function eastAsianWidth(e,{ambiguousAsWide:t=!1}={}){return validate(e),isFullWidth(e)||isWide(e)||t&&isAmbiguous(e)?2:1}var Vn=t(()=>/[#*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\uDC70\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-\uDED7\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\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\uDD3D\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-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\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]|\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\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]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\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,`default`);const Hn=new Intl.Segmenter,Un=/^\p{Default_Ignorable_Code_Point}$/u;function stringWidth(e,t={}){if(typeof e!=`string`||e.length===0)return 0;let{ambiguousIsNarrow:n=!0,countAnsiEscapeCodes:r=!1}=t;if(r||(e=stripAnsi(e)),e.length===0)return 0;let i=0,a={ambiguousAsWide:!n};for(let{segment:t}of Hn.segment(e)){let e=t.codePointAt(0);if(!(e<=31||e>=127&&e<=159)&&!(e>=8203&&e<=8207||e===65279)&&!(e>=768&&e<=879||e>=6832&&e<=6911||e>=7616&&e<=7679||e>=8400&&e<=8447||e>=65056&&e<=65071)&&!(e>=55296&&e<=57343)&&!(e>=65024&&e<=65039)&&!Un.test(t)){if(Vn().test(t)){i+=2;continue}i+=eastAsianWidth(e,a)}}return i}const Wn=t((e=0)=>t=>`\u001B[${t+e}m`,`wrapAnsi16`),Gn=t((e=0)=>t=>`\u001B[${38+e};5;${t}m`,`wrapAnsi256`),Kn=t((e=0)=>(t,n,r)=>`\u001B[${38+e};2;${t};${n};${r}m`,`wrapAnsi16m`),P={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]}};Object.keys(P.modifier);const qn=Object.keys(P.color),Jn=Object.keys(P.bgColor);[...qn,...Jn];function assembleStyles$1(){let e=new Map;for(let[t,n]of Object.entries(P)){for(let[t,r]of Object.entries(n))P[t]={open:`\u001B[${r[0]}m`,close:`\u001B[${r[1]}m`},n[t]=P[t],e.set(r[0],r[1]);Object.defineProperty(P,t,{value:n,enumerable:!1})}return Object.defineProperty(P,"codes",{value:e,enumerable:!1}),P.color.close=`\x1B[39m`,P.bgColor.close=`\x1B[49m`,P.color.ansi=Wn(),P.color.ansi256=Gn(),P.color.ansi16m=Kn(),P.bgColor.ansi=Wn(10),P.bgColor.ansi256=Gn(10),P.bgColor.ansi16m=Kn(10),Object.defineProperties(P,{rgbToAnsi256:{value(e,t,n){return e===t&&t===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[n]=t;n.length===3&&(n=[...n].map(e=>e+e).join(``));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:e=>P.rgbToAnsi256(...P.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,n,r;if(e>=232)t=((e-232)*10+8)/255,n=t,r=t;else{e-=16;let i=e%36;t=Math.floor(e/36)/5,n=Math.floor(i/6)/5,r=i%6/5}let i=Math.max(t,n,r)*2;if(i===0)return 30;let a=30+(Math.round(r)<<2|Math.round(n)<<1|Math.round(t));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,n)=>P.ansi256ToAnsi(P.rgbToAnsi256(e,t,n)),enumerable:!1},hexToAnsi:{value:e=>P.ansi256ToAnsi(P.hexToAnsi256(e)),enumerable:!1}}),P}t(assembleStyles$1,`assembleStyles`);const Yn=assembleStyles$1();function hasFlag(e,t=globalThis.Deno?globalThis.Deno.args:N.argv){let n=e.startsWith(`-`)?``:e.length===1?`-`:`--`,r=t.indexOf(n+e),i=t.indexOf(`--`);return r!==-1&&(i===-1||r<i)}const{env:F}=N;let Xn;hasFlag(`no-color`)||hasFlag(`no-colors`)||hasFlag(`color=false`)||hasFlag(`color=never`)?Xn=0:(hasFlag(`color`)||hasFlag(`colors`)||hasFlag(`color=true`)||hasFlag(`color=always`))&&(Xn=1);function envForceColor(){if(`FORCE_COLOR`in F)return F.FORCE_COLOR===`true`?1:F.FORCE_COLOR===`false`?0:F.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(F.FORCE_COLOR,10),3)}function translateLevel(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function _supportsColor(e,{streamIsTTY:t,sniffFlags:n=!0}={}){let r=envForceColor();r!==void 0&&(Xn=r);let i=n?Xn:r;if(i===0)return 0;if(n){if(hasFlag(`color=16m`)||hasFlag(`color=full`)||hasFlag(`color=truecolor`))return 3;if(hasFlag(`color=256`))return 2}if(`TF_BUILD`in F&&`AGENT_NAME`in F)return 1;if(e&&!t&&i===void 0)return 0;let a=i||0;if(F.TERM===`dumb`)return a;if(N.platform===`win32`){let e=Wt.release().split(`.`);return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if(`CI`in F)return[`GITHUB_ACTIONS`,`GITEA_ACTIONS`,`CIRCLECI`].some(e=>e in F)?3:[`TRAVIS`,`APPVEYOR`,`GITLAB_CI`,`BUILDKITE`,`DRONE`].some(e=>e in F)||F.CI_NAME===`codeship`?1:a;if(`TEAMCITY_VERSION`in F)return+!!/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(F.TEAMCITY_VERSION);if(F.COLORTERM===`truecolor`||F.TERM===`xterm-kitty`)return 3;if(`TERM_PROGRAM`in F){let e=Number.parseInt((F.TERM_PROGRAM_VERSION||``).split(`.`)[0],10);switch(F.TERM_PROGRAM){case`iTerm.app`:return e>=3?3:2;case`Apple_Terminal`:return 2}}return/-256(color)?$/i.test(F.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(F.TERM)||`COLORTERM`in F?1:a}function createSupportsColor(e,t={}){return translateLevel(_supportsColor(e,{streamIsTTY:e&&e.isTTY,...t}))}const Zn={stdout:createSupportsColor({isTTY:En.isatty(1)}),stderr:createSupportsColor({isTTY:En.isatty(2)})};function stringReplaceAll(e,t,n){let r=e.indexOf(t);if(r===-1)return e;let i=t.length,a=0,s=``;do s+=e.slice(a,r)+t+n,a=r+i,r=e.indexOf(t,a);while(r!==-1);return s+=e.slice(a),s}function stringEncaseCRLFWithFirstIndex(e,t,n,r){let i=0,a=``;do{let s=e[r-1]===`\r`;a+=e.slice(i,s?r-1:r)+t+(s?`\r
|
|
141
|
+
`:`
|
|
142
|
+
`)+n,i=r+1,r=e.indexOf(`
|
|
143
|
+
`,i)}while(r!==-1);return a+=e.slice(i),a}const{stdout:Qn,stderr:$n}=Zn,er=Symbol(`GENERATOR`),tr=Symbol(`STYLER`),nr=Symbol(`IS_EMPTY`),rr=[`ansi`,`ansi`,`ansi256`,`ansi16m`],ir=Object.create(null),applyOptions=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let n=Qn?Qn.level:0;e.level=t.level===void 0?n:t.level},chalkFactory=e=>{let chalk=(...e)=>e.join(` `);return applyOptions(chalk,e),Object.setPrototypeOf(chalk,createChalk.prototype),chalk};function createChalk(e){return chalkFactory(e)}Object.setPrototypeOf(createChalk.prototype,Function.prototype);for(let[e,t]of Object.entries(Yn))ir[e]={get(){let n=createBuilder(this,createStyler(t.open,t.close,this[tr]),this[nr]);return Object.defineProperty(this,e,{value:n}),n}};ir.visible={get(){let e=createBuilder(this,this[tr],!0);return Object.defineProperty(this,"visible",{value:e}),e}};const getModelAnsi=(e,t,n,...r)=>e===`rgb`?t===`ansi16m`?Yn[n].ansi16m(...r):t===`ansi256`?Yn[n].ansi256(Yn.rgbToAnsi256(...r)):Yn[n].ansi(Yn.rgbToAnsi(...r)):e===`hex`?getModelAnsi(`rgb`,t,n,...Yn.hexToRgb(...r)):Yn[n][e](...r);for(let e of[`rgb`,`hex`,`ansi256`]){ir[e]={get(){let{level:t}=this;return function(...n){let r=createStyler(getModelAnsi(e,rr[t],`color`,...n),Yn.color.close,this[tr]);return createBuilder(this,r,this[nr])}}};let t=`bg`+e[0].toUpperCase()+e.slice(1);ir[t]={get(){let{level:t}=this;return function(...n){let r=createStyler(getModelAnsi(e,rr[t],`bgColor`,...n),Yn.bgColor.close,this[tr]);return createBuilder(this,r,this[nr])}}}}const ar=Object.defineProperties(()=>{},{...ir,level:{enumerable:!0,get(){return this[er].level},set(e){this[er].level=e}}}),createStyler=(e,t,n)=>{let r,i;return n===void 0?(r=e,i=t):(r=n.openAll+e,i=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:i,parent:n}},createBuilder=(e,t,n)=>{let builder=(...e)=>applyStyle(builder,e.length===1?``+e[0]:e.join(` `));return Object.setPrototypeOf(builder,ar),builder[er]=e,builder[tr]=t,builder[nr]=n,builder},applyStyle=(e,t)=>{if(e.level<=0||!t)return e[nr]?``:t;let n=e[tr];if(n===void 0)return t;let{openAll:r,closeAll:i}=n;if(t.includes(`\x1B`))for(;n!==void 0;)t=stringReplaceAll(t,n.close,n.open),n=n.parent;let a=t.indexOf(`
|
|
144
|
+
`);return a!==-1&&(t=stringEncaseCRLFWithFirstIndex(t,i,r,a)),r+t+i};Object.defineProperties(createChalk.prototype,ir);const sr=createChalk();createChalk({level:$n?$n.level:0});function widestLine(e){let t=0;for(let n of e.split(`
|
|
145
|
+
`))t=Math.max(t,stringWidth(n));return t}var cr=n(((e,t)=>{t.exports={single:{topLeft:`┌`,top:`─`,topRight:`┐`,right:`│`,bottomRight:`┘`,bottom:`─`,bottomLeft:`└`,left:`│`},double:{topLeft:`╔`,top:`═`,topRight:`╗`,right:`║`,bottomRight:`╝`,bottom:`═`,bottomLeft:`╚`,left:`║`},round:{topLeft:`╭`,top:`─`,topRight:`╮`,right:`│`,bottomRight:`╯`,bottom:`─`,bottomLeft:`╰`,left:`│`},bold:{topLeft:`┏`,top:`━`,topRight:`┓`,right:`┃`,bottomRight:`┛`,bottom:`━`,bottomLeft:`┗`,left:`┃`},singleDouble:{topLeft:`╓`,top:`─`,topRight:`╖`,right:`║`,bottomRight:`╜`,bottom:`─`,bottomLeft:`╙`,left:`║`},doubleSingle:{topLeft:`╒`,top:`═`,topRight:`╕`,right:`│`,bottomRight:`╛`,bottom:`═`,bottomLeft:`╘`,left:`│`},classic:{topLeft:`+`,top:`-`,topRight:`+`,right:`|`,bottomRight:`+`,bottom:`-`,bottomLeft:`+`,left:`|`},arrow:{topLeft:`↘`,top:`↓`,topRight:`↙`,right:`←`,bottomRight:`↖`,bottom:`↑`,bottomLeft:`↗`,left:`→`}}})),lr=e(n(((e,t)=>{let n=cr();t.exports=n,t.exports.default=n}))(),1);const ur=/[\p{Lu}]/u,dr=/[\p{Ll}]/u,fr=/^[\p{Lu}](?![\p{Lu}])/gu,pr=/([\p{Alpha}\p{N}_]|$)/u,mr=/[_.\- ]+/,hr=RegExp(`^`+mr.source),gr=new RegExp(mr.source+pr.source,`gu`),_r=RegExp(`\\d+`+pr.source,`gu`),preserveCamelCase=(e,t,n,r)=>{let i=!1,a=!1,s=!1,c=!1;for(let l=0;l<e.length;l++){let u=e[l];c=l>2?e[l-3]===`-`:!0,i&&ur.test(u)?(e=e.slice(0,l)+`-`+e.slice(l),i=!1,s=a,a=!0,l++):a&&s&&dr.test(u)&&(!c||r)?(e=e.slice(0,l-1)+`-`+e.slice(l-1),s=a,a=!1,i=!0):(i=t(u)===u&&n(u)!==u,s=a,a=n(u)===u&&t(u)!==u)}return e},preserveConsecutiveUppercase=(e,t)=>(fr.lastIndex=0,e.replaceAll(fr,e=>t(e))),postProcess=(e,t)=>(gr.lastIndex=0,_r.lastIndex=0,e.replaceAll(_r,(n,r,i)=>[`_`,`-`].includes(e.charAt(i+n.length))?n:t(n)).replaceAll(gr,(e,n)=>t(n)));function camelCase(e,t){if(!(typeof e==`string`||Array.isArray(e)))throw TypeError("Expected the input to be `string | string[]`");if(t={pascalCase:!1,preserveConsecutiveUppercase:!1,...t},e=Array.isArray(e)?e.map(e=>e.trim()).filter(e=>e.length).join(`-`):e.trim(),e.length===0)return``;let n=t.locale===!1?e=>e.toLowerCase():e=>e.toLocaleLowerCase(t.locale),r=t.locale===!1?e=>e.toUpperCase():e=>e.toLocaleUpperCase(t.locale);return e.length===1?mr.test(e)?``:t.pascalCase?r(e):n(e):(e!==n(e)&&(e=preserveCamelCase(e,n,r,t.preserveConsecutiveUppercase)),e=e.replace(hr,``),e=t.preserveConsecutiveUppercase?preserveConsecutiveUppercase(e,n):n(e),t.pascalCase&&(e=r(e.charAt(0))+e.slice(1)),postProcess(e,r))}var vr=n(((e,t)=>{t.exports=({onlyFirst:e=!1}={})=>{let t=[`[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)`,`(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))`].join(`|`);return new RegExp(t,e?void 0:`g`)}})),yr=n(((e,t)=>{let n=vr();t.exports=e=>typeof e==`string`?e.replace(n(),``):e})),br=n(((e,t)=>{let isFullwidthCodePoint=e=>Number.isNaN(e)?!1:e>=4352&&(e<=4447||e===9001||e===9002||11904<=e&&e<=12871&&e!==12351||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141);t.exports=isFullwidthCodePoint,t.exports.default=isFullwidthCodePoint})),xr=n(((e,t)=>{t.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}})),Sr=n(((e,t)=>{let n=yr(),r=br(),i=xr(),stringWidth=e=>{if(typeof e!=`string`||e.length===0||(e=n(e),e.length===0))return 0;e=e.replace(i(),` `);let t=0;for(let n=0;n<e.length;n++){let i=e.codePointAt(n);i<=31||i>=127&&i<=159||i>=768&&i<=879||(i>65535&&n++,t+=r(i)?2:1)}return t};t.exports=stringWidth,t.exports.default=stringWidth})),Cr=e(n(((e,t)=>{let n=Sr();function ansiAlign(e,t){if(!e)return e;t||={};let r=t.align||`center`;if(r===`left`)return e;let i=t.split||`
|
|
146
|
+
`,a=t.pad||` `,s=r===`right`?fullDiff:halfDiff,c=!1;Array.isArray(e)||(c=!0,e=String(e).split(i));let l,u=0;return e=e.map(function(e){return e=String(e),l=n(e),u=Math.max(l,u),{str:e,width:l}}).map(function(e){return Array(s(u,e.width)+1).join(a)+e.str}),c?e.join(i):e}ansiAlign.left=function left(e){return ansiAlign(e,{align:`left`})},ansiAlign.center=function center(e){return ansiAlign(e,{align:`center`})},ansiAlign.right=function right(e){return ansiAlign(e,{align:`right`})},t.exports=ansiAlign;function halfDiff(e,t){return Math.floor((e-t)/2)}function fullDiff(e,t){return e-t}}))(),1);const wrapAnsi16=(e=0)=>t=>`\u001B[${t+e}m`,wrapAnsi256=(e=0)=>t=>`\u001B[${38+e};5;${t}m`,wrapAnsi16m=(e=0)=>(t,n,r)=>`\u001B[${38+e};2;${t};${n};${r}m`,I={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]}};Object.keys(I.modifier);const wr=Object.keys(I.color),Tr=Object.keys(I.bgColor);[...wr,...Tr];function assembleStyles(){let e=new Map;for(let[t,n]of Object.entries(I)){for(let[t,r]of Object.entries(n))I[t]={open:`\u001B[${r[0]}m`,close:`\u001B[${r[1]}m`},n[t]=I[t],e.set(r[0],r[1]);Object.defineProperty(I,t,{value:n,enumerable:!1})}return Object.defineProperty(I,"codes",{value:e,enumerable:!1}),I.color.close=`\x1B[39m`,I.bgColor.close=`\x1B[49m`,I.color.ansi=wrapAnsi16(),I.color.ansi256=wrapAnsi256(),I.color.ansi16m=wrapAnsi16m(),I.bgColor.ansi=wrapAnsi16(10),I.bgColor.ansi256=wrapAnsi256(10),I.bgColor.ansi16m=wrapAnsi16m(10),Object.defineProperties(I,{rgbToAnsi256:{value:(e,t,n)=>e===t&&t===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(n/255*5),enumerable:!1},hexToRgb:{value:e=>{let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[n]=t;n.length===3&&(n=[...n].map(e=>e+e).join(``));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:e=>I.rgbToAnsi256(...I.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value:e=>{if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,n,r;if(e>=232)t=((e-232)*10+8)/255,n=t,r=t;else{e-=16;let i=e%36;t=Math.floor(e/36)/5,n=Math.floor(i/6)/5,r=i%6/5}let i=Math.max(t,n,r)*2;if(i===0)return 30;let a=30+(Math.round(r)<<2|Math.round(n)<<1|Math.round(t));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,n)=>I.ansi256ToAnsi(I.rgbToAnsi256(e,t,n)),enumerable:!1},hexToAnsi:{value:e=>I.ansi256ToAnsi(I.hexToAnsi256(e)),enumerable:!1}}),I}const Er=assembleStyles(),Dr=new Set([`\x1B`,``]),Or=`]8;;`,wrapAnsiCode=e=>`${Dr.values().next().value}[${e}m`,wrapAnsiHyperlink=e=>`${Dr.values().next().value}${Or}${e}`,wordLengths=e=>e.split(` `).map(e=>stringWidth(e)),wrapWord=(e,t,n)=>{let r=[...t],i=!1,a=!1,s=stringWidth(stripAnsi(e.at(-1)));for(let[t,c]of r.entries()){let l=stringWidth(c);if(s+l<=n?e[e.length-1]+=c:(e.push(c),s=0),Dr.has(c)&&(i=!0,a=r.slice(t+1,t+1+4).join(``)===Or),i){a?c===`\x07`&&(i=!1,a=!1):c===`m`&&(i=!1);continue}s+=l,s===n&&t<r.length-1&&(e.push(``),s=0)}!s&&e.at(-1).length>0&&e.length>1&&(e[e.length-2]+=e.pop())},stringVisibleTrimSpacesRight=e=>{let t=e.split(` `),n=t.length;for(;n>0&&!(stringWidth(t[n-1])>0);)n--;return n===t.length?e:t.slice(0,n).join(` `)+t.slice(n).join(``)},exec=(e,t,n={})=>{if(n.trim!==!1&&e.trim()===``)return``;let r=``,i,a,s=wordLengths(e),c=[``];for(let[r,i]of e.split(` `).entries()){n.trim!==!1&&(c[c.length-1]=c.at(-1).trimStart());let e=stringWidth(c.at(-1));if(r!==0&&(e>=t&&(n.wordWrap===!1||n.trim===!1)&&(c.push(``),e=0),(e>0||n.trim===!1)&&(c[c.length-1]+=` `,e++)),n.hard&&s[r]>t){let n=t-e,a=1+Math.floor((s[r]-n-1)/t);Math.floor((s[r]-1)/t)<a&&c.push(``),wrapWord(c,i,t);continue}if(e+s[r]>t&&e>0&&s[r]>0){if(n.wordWrap===!1&&e<t){wrapWord(c,i,t);continue}c.push(``)}if(e+s[r]>t&&n.wordWrap===!1){wrapWord(c,i,t);continue}c[c.length-1]+=i}n.trim!==!1&&(c=c.map(e=>stringVisibleTrimSpacesRight(e)));let l=c.join(`
|
|
147
|
+
`),u=[...l],f=0;for(let[e,t]of u.entries()){if(r+=t,Dr.has(t)){let{groups:e}=RegExp(`(?:\\[(?<code>\\d+)m|\\${Or}(?<uri>.*))`).exec(l.slice(f))||{groups:{}};if(e.code!==void 0){let t=Number.parseFloat(e.code);i=t===39?void 0:t}else e.uri!==void 0&&(a=e.uri.length===0?void 0:e.uri)}let n=Er.codes.get(Number(i));u[e+1]===`
|
|
148
|
+
`?(a&&(r+=wrapAnsiHyperlink(``)),i&&n&&(r+=wrapAnsiCode(n))):t===`
|
|
149
|
+
`&&(i&&n&&(r+=wrapAnsiCode(i)),a&&(r+=wrapAnsiHyperlink(a))),f+=t.length}return r};function wrapAnsi(e,t,n){return String(e).normalize().replaceAll(`\r
|
|
150
|
+
`,`
|
|
151
|
+
`).split(`
|
|
152
|
+
`).map(e=>exec(e,t,n)).join(`
|
|
153
|
+
`)}const kr=`none`,terminalColumns=()=>{let{env:e,stdout:t,stderr:n}=N;return t?.columns?t.columns:n?.columns?n.columns:e.COLUMNS?Number.parseInt(e.COLUMNS,10):80},getObject=e=>typeof e==`number`?{top:e,right:e*3,bottom:e,left:e*3}:{top:0,right:0,bottom:0,left:0,...e},getBorderWidth=e=>e===kr?0:2,getBorderChars=e=>{let t=[`topLeft`,`topRight`,`bottomRight`,`bottomLeft`,`left`,`right`,`top`,`bottom`],n;if(e===kr){e={};for(let n of t)e[n]=``}if(typeof e==`string`){if(n=lr.default[e],!n)throw TypeError(`Invalid border style: ${e}`)}else{typeof e?.vertical==`string`&&(e.left=e.vertical,e.right=e.vertical),typeof e?.horizontal==`string`&&(e.top=e.horizontal,e.bottom=e.horizontal);for(let n of t)if(e[n]===null||typeof e[n]!=`string`)throw TypeError(`Invalid border style: ${n}`);n=e}return n},makeTitle=(e,t,n)=>{let r=``,i=stringWidth(e);switch(n){case`left`:r=e+t.slice(i);break;case`right`:r=t.slice(i)+e;break;default:t=t.slice(i),t.length%2==1?(t=t.slice(Math.floor(t.length/2)),r=t.slice(1)+e+t):(t=t.slice(t.length/2),r=t+e+t);break}return r},makeContentText=(e,{padding:t,width:n,textAlignment:r,height:i})=>{e=(0,Cr.default)(e,{align:r});let a=e.split(`
|
|
154
|
+
`),s=widestLine(e),c=n-t.left-t.right;if(s>c){let e=[];for(let t of a){let n=(0,Cr.default)(wrapAnsi(t,c,{hard:!0}),{align:r}).split(`
|
|
155
|
+
`),i=Math.max(...n.map(e=>stringWidth(e)));for(let t of n){let n;switch(r){case`center`:n=` `.repeat((c-i)/2)+t;break;case`right`:n=` `.repeat(c-i)+t;break;default:n=t;break}e.push(n)}}a=e}r===`center`&&s<c?a=a.map(e=>` `.repeat((c-s)/2)+e):r===`right`&&s<c&&(a=a.map(e=>` `.repeat(c-s)+e));let l=` `.repeat(t.left),u=` `.repeat(t.right);return a=a.map(e=>{let t=l+e+u;return t+` `.repeat(n-stringWidth(t))}),t.top>0&&(a=[...Array.from({length:t.top}).fill(` `.repeat(n)),...a]),t.bottom>0&&(a=[...a,...Array.from({length:t.bottom}).fill(` `.repeat(n))]),i&&a.length>i?a=a.slice(0,i):i&&a.length<i&&(a=[...a,...Array.from({length:i-a.length}).fill(` `.repeat(n))]),a.join(`
|
|
156
|
+
`)},boxContent=(e,t,n)=>{let colorizeBorder=e=>{let t=n.borderColor?getColorFunction(n.borderColor)(e):e;return n.dimBorder?sr.dim(t):t},colorizeContent=e=>n.backgroundColor?getBGColorFunction(n.backgroundColor)(e):e,r=getBorderChars(n.borderStyle),i=terminalColumns(),a=` `.repeat(n.margin.left);if(n.float===`center`){let e=Math.max((i-t-getBorderWidth(n.borderStyle))/2,0);a=` `.repeat(e)}else if(n.float===`right`){let e=Math.max(i-t-n.margin.right-getBorderWidth(n.borderStyle),0);a=` `.repeat(e)}let s=``;n.margin.top&&(s+=`
|
|
157
|
+
`.repeat(n.margin.top)),(n.borderStyle!==kr||n.title)&&(s+=colorizeBorder(a+r.topLeft+(n.title?makeTitle(n.title,r.top.repeat(t),n.titleAlignment):r.top.repeat(t))+r.topRight)+`
|
|
158
|
+
`);let c=e.split(`
|
|
159
|
+
`);return s+=c.map(e=>a+colorizeBorder(r.left)+colorizeContent(e)+colorizeBorder(r.right)).join(`
|
|
160
|
+
`),n.borderStyle!==kr&&(s+=`
|
|
161
|
+
`+colorizeBorder(a+r.bottomLeft+r.bottom.repeat(t)+r.bottomRight)),n.margin.bottom&&(s+=`
|
|
162
|
+
`.repeat(n.margin.bottom)),s},sanitizeOptions=e=>{if(e.fullscreen&&N?.stdout){let t=[N.stdout.columns,N.stdout.rows];typeof e.fullscreen==`function`&&(t=e.fullscreen(...t)),e.width||=t[0],e.height||=t[1]}return e.width&&=Math.max(1,e.width-getBorderWidth(e.borderStyle)),e.height&&=Math.max(1,e.height-getBorderWidth(e.borderStyle)),e},formatTitle=(e,t)=>t===kr?e:` ${e} `,determineDimensions=(e,t)=>{t=sanitizeOptions(t);let n=t.width!==void 0,r=terminalColumns(),i=getBorderWidth(t.borderStyle),a=r-t.margin.left-t.margin.right-i,s=widestLine(wrapAnsi(e,r-i,{hard:!0,trim:!1}))+t.padding.left+t.padding.right;if(t.title&&n?(t.title=t.title.slice(0,Math.max(0,t.width-2)),t.title&&=formatTitle(t.title,t.borderStyle)):t.title&&(t.title=t.title.slice(0,Math.max(0,a-2)),t.title&&(t.title=formatTitle(t.title,t.borderStyle),stringWidth(t.title)>s&&(t.width=stringWidth(t.title)))),t.width||=s,!n){if(t.margin.left&&t.margin.right&&t.width>a){let e=(r-t.width-i)/(t.margin.left+t.margin.right);t.margin.left=Math.max(0,Math.floor(t.margin.left*e)),t.margin.right=Math.max(0,Math.floor(t.margin.right*e))}t.width=Math.min(t.width,r-i-t.margin.left-t.margin.right)}return t.width-(t.padding.left+t.padding.right)<=0&&(t.padding.left=0,t.padding.right=0),t.height&&t.height-(t.padding.top+t.padding.bottom)<=0&&(t.padding.top=0,t.padding.bottom=0),t},isHex=e=>e.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=e=>typeof e==`string`&&(sr[e]??isHex(e)),getColorFunction=e=>isHex(e)?sr.hex(e):sr[e],getBGColorFunction=e=>isHex(e)?sr.bgHex(e):sr[camelCase([`bg`,e])];function boxen$1(e,t){if(t={padding:0,borderStyle:`single`,dimBorder:!1,textAlignment:`left`,float:`left`,titleAlignment:`left`,...t},t.align&&(t.textAlignment=t.align),t.borderColor&&!isColorValid(t.borderColor))throw Error(`${t.borderColor} is not a valid borderColor`);if(t.backgroundColor&&!isColorValid(t.backgroundColor))throw Error(`${t.backgroundColor} is not a valid backgroundColor`);return t.padding=getObject(t.padding),t.margin=getObject(t.margin),t=determineDimensions(e,t),e=makeContentText(e,t),boxContent(e,t.width,t)}t(boxen$1,`boxen`);const Ar=a.getChild(`cli`);function createLikeC4Logger(e){let t=a.getChild(e);return{info(e){t.info(e)},debug(e,...n){n.length===0?t.debug(e):t.debug(e,{args:n})},warn(e){if(e instanceof Error){t.warn(`${i.red(e.name+` `+e.message)}`,{msg:e});return}if(typeof e==`string`){t.warn(e);return}t.warn`${e}`},warnOnce(e){t.warn(e)},error(e,n){let r=n?.error??e;if(r instanceof Error){if(e===r){t.error(`${i.red(r.name+` `+r.message)}`,{error:r});return}t.error(i.red(e),{error:r});return}if(typeof e==`string`){t.error(i.red(e));return}t.error`${e}`},clearScreen:function(e){},hasErrorLogged:function(e){return!1},hasWarned:!1}}function inMillis(e){let[t,n]=Sn(e),r=t*1e3+n/1e6;return{ms:r,pretty:nt(r)}}function startTimer(e){let t=Sn();return{stopAndLog(n=`done in `){n=i.green(`${n}${inMillis(t).pretty}`),(e||Ar).info(n)}}}function boxen(e,t){console.log(boxen$1(e,{padding:1,margin:1,dimBorder:!0,...t}))}const toPath=e=>e instanceof URL?fn(e):e;function findUpSync(e,{cwd:t=N.cwd(),type:n=`file`,stopAt:r}={}){let i=A.resolve(toPath(t)??``),{root:a}=A.parse(i);for(r=A.resolve(i,toPath(r)??a);i&&i!==r&&i!==a;){let t=A.isAbsolute(e)?e:A.join(i,e);try{let e=M.statSync(t,{throwIfNoEntry:!1});if(n===`file`&&e?.isFile()||n===`directory`&&e?.isDirectory())return t}catch{}i=A.dirname(i)}}function packageUpSync({cwd:e=N.cwd()}={}){return findUpSync(`package.json`,{cwd:e})}const jr=createLikeC4Logger(`vite`),Mr=St(fn(import.meta.url));function findPkgRoot(){let e=packageUpSync({cwd:Mr});if(!e)throw Error(`likec4 package folder not found`);return St(e)}function viteAppRoot(){let e=[j(findPkgRoot(),`__app__`),j(Mr,`../__app__`),j(Mr,`../../__app__`),j(Mr,`../../dist/__app__`)],t=Ue(e,qt);if(!t)throw a.error(`likec4 app root does not exist, tried:\n${e.join(`
|
|
163
|
+
`)}`),Error(`likec4 app root does not exist`);return t}async function mkTempPublicDir(){let e=await nn(Tt(Gt(),`.likec4-public-`));return await ln(Tt(e,`likec4-views.js`),`// generated by likec4
|
|
164
|
+
`),e}function relativeToCwd(e){return Et(bn(),e)}async function copyUserPublicDir(e,t){if(!qt(e))throw Error(`--public directory does not exist: ${e}`);if(!Zt(e).isDirectory())throw Error(`--public path is not a directory: ${e}`);let n=await an(e);return await en(e,t,{recursive:!0,errorOnExist:!1}),n}function viteAliases(){let e=findPkgRoot();return{"likec4/react":j(e,`react/index.mjs`),"likec4/model":j(e,`dist/model/index.mjs`),"likec4/vite-plugin/internal":j(e,`dist/vite-plugin/internal/index.mjs`)}}const viteConfig=async({languageServices:e,likec4AssetsDir:t,...n})=>{let r=n.customLogger??jr,a=viteAppRoot();r.info(`${i.cyan(`likec4 app root`)} ${i.dim(relativeToCwd(a))}`);let s=n.outputDir??j(e.workspace,`dist`);r.info(i.cyan(`outDir`)+` `+i.dim(relativeToCwd(s)));let c=`/`;n.base&&(c=se(n.base),!le(c)&&c!==`./`&&(c=ue(c))),c!==`/`&&r.info(`${i.green(`app base url`)} ${i.dim(c)}`);let l=n.webcomponentPrefix??`likec4`,u=n.title??`LikeC4`,f=n.outputSingleFile??!1;return{isDev:gn,likec4AssetsDir:t,webcomponentPrefix:l,title:u,root:a,languageServices:e,clearScreen:!1,base:c,resolve:{alias:{...viteAliases(),"likec4/previews":t}},configFile:!1,mode:`production`,define:{"process.env.NODE_ENV":`"production"`},build:{outDir:s,emptyOutDir:!1,sourcemap:!1,minify:!0,copyPublicDir:!0,chunkSizeWarningLimit:2*1024,...!f&&{rolldownOptions:{input:[j(a,`index.html`),j(a,`src`,`main.mjs`),j(a,`src`,`fonts.css`),j(a,`src`,`style.css`)]}}},customLogger:r,plugins:[pt({languageServices:e.languageServices,appConfig:{webcomponentPrefix:l,pageTitle:u,useHashHistory:n.useHashHistory,theme:n.theme}}),f?An():void 0]}};function viteWebcomponentConfig({languageServices:e,outDir:t,base:n,webcomponentPrefix:r=`likec4`,filename:a=`likec4-views.js`}){let s=createLikeC4Logger([`vite`,`webcomponent`]),c=viteAppRoot();return s.info(i.cyan(`outDir`)+` `+i.dim(t)),{root:c,clearScreen:!1,base:n,configFile:!1,publicDir:!1,mode:`production`,resolve:{alias:viteAliases()},define:{"process.env.NODE_ENV":`"production"`},build:{outDir:t,emptyOutDir:!1,sourcemap:!1,minify:!0,assetsInlineLimit:500*1024,chunkSizeWarningLimit:3*1024,lib:{entry:`codegen/webcomponent.mjs`,fileName(e,t){return a},formats:[`iife`],name:`LikeC4Views`}},customLogger:s,plugins:[pt({ai:`disabled`,languageServices:e.languageServices,appConfig:{webcomponentPrefix:r}})]}}const Nr=[`favicon.ico`,`robots.txt`];function removeAllButPreserved(e,t){let n=new Set(t);for(let t of Yt(e).filter(e=>!n.has(e)))Xt(j(e,t),{recursive:!0})}const Pr={".svg":`image/svg+xml`,".ico":`image/x-icon`,".png":`image/png`,".gif":`image/gif`,".jpg":`image/jpeg`,".jpeg":`image/jpeg`};function inlineSingleFileFavicon(e){let t=j(e,`index.html`);if(!qt(t))return;let n=Jt(t,`utf8`),r=/<link\b[^>]*\brel=(["'])icon\1[^>]*>/i.exec(n)?.[0];if(!r)return;let i=/\bhref=(["'])([^"']*)\1/i,a=i.exec(r)?.[2];if(!a||a.startsWith(`data:`)||/^(https?:)?\/\//i.test(a))return;let s=j(e,a.replace(/^\.?\//,``));if(!qt(s))return;let c=`data:${Pr[Ct(s).toLowerCase()]??`application/octet-stream`};base64,${Jt(s).toString(`base64`)}`,l=r.replace(i,(e,t)=>`href=${t}${c}${t}`);Qt(t,n.replace(r,l))}async function viteBuild({buildWebcomponent:e=!0,webcomponentPrefix:t=`likec4`,title:n,languageServices:r,likec4AssetsDir:a,outputSingleFile:s,userPublicDir:c,...l}){a??=await nn(Tt(Gt(),`.likec4-assets-`));let u=await viteConfig({...l,languageServices:r,likec4AssetsDir:a,webcomponentPrefix:t,title:n,outputSingleFile:s}),f=!qt(u.build.outDir)||Yt(u.build.outDir).length===0,p=await mkTempPublicDir(),m=c?await copyUserPublicDir(c,p):[];for(let e of Nr){let t=j(u.root,e);qt(t)&&Kt(t,j(p,e))}let h=r.languageServices.projects();if(h.length===1){let e=await r.viewsService.computedViews(),t=await r.diagrams();if(t.length===0)throw process.exitCode=1,Error(`no views found`);t.length===e.length?u.customLogger.info(`${i.dim(`workspace:`)} ${i.green(`✓ all views layouted`)}`):u.customLogger.warn(`${i.dim(`workspace:`)} ${i.yellow(`✗ layouted ${t.length} of ${e.length} views`)}`),t.forEach(e=>{(e.hasLayoutDrift||e.drifts&&e.drifts.length>0)&&u.customLogger.warn(i.dim(`view`)+` `+i.red(e.id)+` `+i.yellow(`is out of date, layout drift detected`))});let n=h[0].config.landingPage;if(n&&(`include`in n||`exclude`in n)){let e=`include`in n?n.include:n.exclude;t.some(t=>e.some(e=>e.startsWith(`#`)?t.tags?.some(t=>t===e.slice(1)):t.id===e))||u.customLogger.warn(i.dim(`landingPage:`)+` `+i.yellow(`no views match the configured filter`))}}else for(let e of h){let t=await r.viewsService.computedViews(e.id);t.length===0?u.customLogger.warn(`${i.dim(`project:`)} ${e.id} ${i.yellow(`✗ no views found`)}`):u.customLogger.info(`${i.dim(`project:`)} ${e.id} ${i.green(`${t.length} views`)}`);let n=await r.diagrams(e.id),a=e.config.landingPage;if(a&&(`include`in a||`exclude`in a)){let t=`include`in a?a.include:a.exclude;n.some(e=>t.some(t=>t.startsWith(`#`)?e.tags?.some(e=>e===t.slice(1)):e.id===t))||u.customLogger.warn(`${i.dim(`project:`)} ${e.id} ${i.yellow(`landingPage: no views match the configured filter`)}`)}}if(e&&!s&&await Dn(viteWebcomponentConfig({webcomponentPrefix:t,languageServices:r,outDir:p,base:u.base})),await Dn({...u,publicDir:p}),s){if(!f){u.customLogger.warn(i.yellow(`outDir was not empty, skipping cleanup`));return}inlineSingleFileFavicon(u.build.outDir),removeAllButPreserved(u.build.outDir,[`index.html`,...m])}let g=j(u.build.outDir,`index.html`);qt(g)&&Kt(g,j(u.build.outDir,`404.html`))}let Fr;function hasDockerEnv(){try{return M.statSync(`/.dockerenv`),!0}catch{return!1}}function hasDockerCGroup(){try{return M.readFileSync(`/proc/self/cgroup`,`utf8`).includes(`docker`)}catch{return!1}}function isDocker(){return Fr===void 0&&(Fr=hasDockerEnv()||hasDockerCGroup()),Fr}let Ir;const hasContainerEnv=()=>{try{return M.statSync(`/run/.containerenv`),!0}catch{return!1}};function isInsideContainer(){return Ir===void 0&&(Ir=hasContainerEnv()||isDocker()),Ir}var HTTPError=class extends Error{response;request;options;constructor(e,t,n){let r=`${e.status||e.status===0?e.status:``} ${e.statusText??``}`.trim(),i=r?`status code ${r}`:`an unknown error`;super(`Request failed with ${i}: ${t.method} ${t.url}`),this.name=`HTTPError`,this.response=e,this.request=t,this.options=n}},NonError=class extends Error{name=`NonError`;value;constructor(e){let t=`Non-error value was thrown`;try{typeof e==`string`?t=e:e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`&&(t=e.message)}catch{}super(t),this.value=e}},ForceRetryError=class extends Error{name=`ForceRetryError`;customDelay;code;customRequest;constructor(e){let t=e?.cause?e.cause instanceof Error?e.cause:new NonError(e.cause):void 0;super(e?.code?`Forced retry: ${e.code}`:`Forced retry`,t?{cause:t}:void 0),this.customDelay=e?.delay,this.code=e?.code,this.customRequest=e?.request}};const Lr=(()=>{let e=!1,t=!1,n=typeof globalThis.ReadableStream==`function`,r=typeof globalThis.Request==`function`;if(n&&r)try{t=new globalThis.Request(`https://empty.invalid`,{body:new globalThis.ReadableStream,method:`POST`,get duplex(){return e=!0,`half`}}).headers.has(`Content-Type`)}catch(e){if(e instanceof Error&&e.message===`unsupported BodyInit type`)return!1;throw e}return e&&!t})(),Rr=typeof globalThis.AbortController==`function`,zr=typeof globalThis.AbortSignal==`function`&&typeof globalThis.AbortSignal.any==`function`,Br=typeof globalThis.ReadableStream==`function`,Vr=typeof globalThis.FormData==`function`,Hr=[`get`,`post`,`put`,`patch`,`head`,`delete`],Ur={json:`application/json`,text:`text/*`,formData:`multipart/form-data`,arrayBuffer:`*/*`,blob:`*/*`,bytes:`*/*`},Wr=2147483647,Gr=new TextEncoder().encode(`------WebKitFormBoundaryaxpyiPgbbPti10Rw`).length,Kr=Symbol(`stop`);var RetryMarker=class{options;constructor(e){this.options=e}};const retry=e=>new RetryMarker(e),qr={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,prefixUrl:!0,retry:!0,timeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0,context:!0},Jr={next:!0},Yr={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,duplex:!0},getBodySize=e=>{if(!e)return 0;if(e instanceof FormData){let t=0;for(let[n,r]of e)t+=Gr,t+=new TextEncoder().encode(`Content-Disposition: form-data; name="${n}"`).length,t+=typeof r==`string`?new TextEncoder().encode(r).length:r.size;return t}if(e instanceof Blob)return e.size;if(e instanceof ArrayBuffer)return e.byteLength;if(typeof e==`string`)return new TextEncoder().encode(e).length;if(e instanceof URLSearchParams)return new TextEncoder().encode(e.toString()).length;if(`byteLength`in e)return e.byteLength;if(typeof e==`object`&&e)try{let t=JSON.stringify(e);return new TextEncoder().encode(t).length}catch{return 0}return 0},withProgress=(e,t,n)=>{let r,i=0;return e.pipeThrough(new TransformStream({transform(e,a){if(a.enqueue(e),r){i+=r.byteLength;let e=t===0?0:i/t;e>=1&&(e=1-2**-52),n?.({percent:e,totalBytes:Math.max(t,i),transferredBytes:i},r)}r=e},flush(){r&&(i+=r.byteLength,n?.({percent:1,totalBytes:Math.max(t,i),transferredBytes:i},r))}}))},streamResponse=(e,t)=>{if(!e.body)return e;if(e.status===204)return new Response(null,{status:e.status,statusText:e.statusText,headers:e.headers});let n=Math.max(0,Number(e.headers.get(`content-length`))||0);return new Response(withProgress(e.body,n,t),{status:e.status,statusText:e.statusText,headers:e.headers})},streamRequest=(e,t,n)=>{if(!e.body)return e;let r=getBodySize(n??e.body);return new Request(e,{duplex:`half`,body:withProgress(e.body,r,t)})},Xr=t(e=>typeof e==`object`&&!!e,`isObject`),validateAndMerge=(...e)=>{for(let t of e)if((!Xr(t)||Array.isArray(t))&&t!==void 0)throw TypeError("The `options` argument must be an object");return deepMerge({},...e)},mergeHeaders=(e={},t={})=>{let n=new globalThis.Headers(e),r=t instanceof globalThis.Headers,i=new globalThis.Headers(t);for(let[e,t]of i.entries())r&&t===`undefined`||t===void 0?n.delete(e):n.set(e,t);return n};function newHookValue(e,t,n){return Object.hasOwn(t,n)&&t[n]===void 0?[]:deepMerge(e[n]??[],t[n]??[])}const mergeHooks=(e={},t={})=>({beforeRequest:newHookValue(e,t,`beforeRequest`),beforeRetry:newHookValue(e,t,`beforeRetry`),afterResponse:newHookValue(e,t,`afterResponse`),beforeError:newHookValue(e,t,`beforeError`)}),appendSearchParameters=(e,t)=>{let n=new URLSearchParams;for(let r of[e,t])if(r!==void 0)if(r instanceof URLSearchParams)for(let[e,t]of r.entries())n.append(e,t);else if(Array.isArray(r))for(let e of r){if(!Array.isArray(e)||e.length!==2)throw TypeError(`Array search parameters must be provided in [[key, value], ...] format`);n.append(String(e[0]),String(e[1]))}else if(Xr(r))for(let[e,t]of Object.entries(r))t!==void 0&&n.append(e,String(t));else{let e=new URLSearchParams(r);for(let[t,r]of e.entries())n.append(t,r)}return n},deepMerge=(...e)=>{let t={},n={},r={},i,a=[];for(let s of e)if(Array.isArray(s))Array.isArray(t)||(t=[]),t=[...t,...s];else if(Xr(s)){for(let[e,n]of Object.entries(s)){if(e===`signal`&&n instanceof globalThis.AbortSignal){a.push(n);continue}if(e===`context`){if(n!=null&&(!Xr(n)||Array.isArray(n)))throw TypeError("The `context` option must be an object");t={...t,context:n==null?{}:{...t.context,...n}};continue}if(e===`searchParams`){i=n==null?void 0:i===void 0?n:appendSearchParameters(i,n);continue}Xr(n)&&e in t&&(n=deepMerge(t[e],n)),t={...t,[e]:n}}Xr(s.hooks)&&(r=mergeHooks(r,s.hooks),t.hooks=r),Xr(s.headers)&&(n=mergeHeaders(n,s.headers),t.headers=n)}return i!==void 0&&(t.searchParams=i),a.length>0&&(a.length===1?t.signal=a[0]:zr?t.signal=AbortSignal.any(a):t.signal=a.at(-1)),t},normalizeRequestMethod=e=>Hr.includes(e)?e.toUpperCase():e,Zr={limit:2,methods:[`get`,`put`,`head`,`delete`,`options`,`trace`],statusCodes:[408,413,429,500,502,503,504],afterStatusCodes:[413,429,503],maxRetryAfter:1/0,backoffLimit:1/0,delay:e=>.3*2**(e-1)*1e3,jitter:void 0,retryOnTimeout:!1},normalizeRetryOptions=(e={})=>{if(typeof e==`number`)return{...Zr,limit:e};if(e.methods&&!Array.isArray(e.methods))throw Error(`retry.methods must be an array`);if(e.methods&&=e.methods.map(e=>e.toLowerCase()),e.statusCodes&&!Array.isArray(e.statusCodes))throw Error(`retry.statusCodes must be an array`);let t=Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0));return{...Zr,...t}};var TimeoutError=class extends Error{request;constructor(e){super(`Request timed out: ${e.method} ${e.url}`),this.name=`TimeoutError`,this.request=e}};async function timeout$1(e,t,n,r){return new Promise((i,a)=>{let s=setTimeout(()=>{n&&n.abort(),a(new TimeoutError(e))},r.timeout);r.fetch(e,t).then(i).catch(a).then(()=>{clearTimeout(s)})})}t(timeout$1,`timeout`);async function delay$1(e,{signal:t}){return new Promise((n,r)=>{t&&(t.throwIfAborted(),t.addEventListener(`abort`,abortHandler,{once:!0}));function abortHandler(){clearTimeout(i),r(t.reason)}let i=setTimeout(()=>{t?.removeEventListener(`abort`,abortHandler),n()},e)})}t(delay$1,`delay`);const findUnknownOptions=(e,t)=>{let n={};for(let r in t)Object.hasOwn(t,r)&&!(r in Yr)&&!(r in qr)&&(!(r in e)||r in Jr)&&(n[r]=t[r]);return n},hasSearchParameters=e=>e===void 0?!1:Array.isArray(e)?e.length>0:e instanceof URLSearchParams?e.size>0:typeof e==`object`?Object.keys(e).length>0:typeof e==`string`?e.trim().length>0:!!e;function isHTTPError(e){return e instanceof HTTPError||e?.name===HTTPError.name}function isTimeoutError(e){return e instanceof TimeoutError||e?.name===TimeoutError.name}var Qr=class Ky{static create(e,t){let n=new Ky(e,t),function_=async()=>{if(typeof n.#i.timeout==`number`&&n.#i.timeout>2147483647)throw RangeError(`The \`timeout\` option cannot be greater than ${Wr}`);await Promise.resolve();let e=await n.#m();for(let t of n.#i.hooks.afterResponse){let r=n.#u(e.clone()),i;try{i=await t(n.request,n.#h(),r,{retryCount:n.#n})}catch(t){throw n.#f(r),n.#f(e),t}if(i instanceof RetryMarker)throw n.#f(r),n.#f(e),new ForceRetryError(i.options);let a=i instanceof globalThis.Response?i:e;r!==a&&n.#f(r),e!==a&&n.#f(e),e=a}if(n.#u(e),!e.ok&&(typeof n.#i.throwHttpErrors==`function`?n.#i.throwHttpErrors(e.status):n.#i.throwHttpErrors)){let t=new HTTPError(e,n.request,n.#h());for(let e of n.#i.hooks.beforeError)t=await e(t,{retryCount:n.#n});throw t}if(n.#i.onDownloadProgress){if(typeof n.#i.onDownloadProgress!=`function`)throw TypeError("The `onDownloadProgress` option must be a function");if(!Br)throw Error("Streams are not supported in your environment. `ReadableStream` is missing.");let t=e.clone();return n.#f(e),streamResponse(t,n.#i.onDownloadProgress)}return e},r=n.#p(function_).finally(()=>{let e=n.#a;n.#d(e?.body??void 0),n.#d(n.request.body??void 0)});for(let[e,i]of Object.entries(Ur))e===`bytes`&&typeof globalThis.Response?.prototype?.bytes!=`function`||(r[e]=async()=>{n.request.headers.set(`accept`,n.request.headers.get(`accept`)||i);let a=await r;if(e===`json`){if(a.status===204)return``;let e=await a.text();return e===``?``:t.parseJson?t.parseJson(e):JSON.parse(e)}return a[e]()});return r}static#e(e){return e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof URLSearchParams)?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):e}request;#t;#n=0;#r;#i;#a;#o;#s;constructor(e,t={}){if(this.#r=e,this.#i={...t,headers:mergeHeaders(this.#r.headers,t.headers),hooks:mergeHooks({beforeRequest:[],beforeRetry:[],beforeError:[],afterResponse:[]},t.hooks),method:normalizeRequestMethod(t.method??this.#r.method??`GET`),prefixUrl:String(t.prefixUrl||``),retry:normalizeRetryOptions(t.retry),throwHttpErrors:t.throwHttpErrors??!0,timeout:t.timeout??1e4,fetch:t.fetch??globalThis.fetch.bind(globalThis),context:t.context??{}},typeof this.#r!=`string`&&!(this.#r instanceof URL||this.#r instanceof globalThis.Request))throw TypeError("`input` must be a string, URL, or Request");if(this.#i.prefixUrl&&typeof this.#r==`string`){if(this.#r.startsWith(`/`))throw Error("`input` must not begin with a slash when using `prefixUrl`");this.#i.prefixUrl.endsWith(`/`)||(this.#i.prefixUrl+=`/`),this.#r=this.#i.prefixUrl+this.#r}Rr&&zr&&(this.#o=this.#i.signal??this.#r.signal,this.#t=new globalThis.AbortController,this.#i.signal=this.#o?AbortSignal.any([this.#o,this.#t.signal]):this.#t.signal),Lr&&(this.#i.duplex=`half`),this.#i.json!==void 0&&(this.#i.body=this.#i.stringifyJson?.(this.#i.json)??JSON.stringify(this.#i.json),this.#i.headers.set(`content-type`,this.#i.headers.get(`content-type`)??`application/json`));let n=t.headers&&new globalThis.Headers(t.headers).has(`content-type`);if(this.#r instanceof globalThis.Request&&(Vr&&this.#i.body instanceof globalThis.FormData||this.#i.body instanceof URLSearchParams)&&!n&&this.#i.headers.delete(`content-type`),this.request=new globalThis.Request(this.#r,this.#i),hasSearchParameters(this.#i.searchParams)){let e=`?`+(typeof this.#i.searchParams==`string`?this.#i.searchParams.replace(/^\?/,``):new URLSearchParams(Ky.#e(this.#i.searchParams)).toString()),t=this.request.url.replace(/(?:\?.*?)?(?=#|$)/,e);this.request=new globalThis.Request(t,this.#i)}if(this.#i.onUploadProgress){if(typeof this.#i.onUploadProgress!=`function`)throw TypeError("The `onUploadProgress` option must be a function");if(!Lr)throw Error("Request streams are not supported in your environment. The `duplex` option for `Request` is not available.");this.request=this.#_(this.request,this.#i.body??void 0)}}#c(){let e=this.#i.retry.delay(this.#n),t=e;this.#i.retry.jitter===!0?t=Math.random()*e:typeof this.#i.retry.jitter==`function`&&(t=this.#i.retry.jitter(e),(!Number.isFinite(t)||t<0)&&(t=e));let n=this.#i.retry.backoffLimit??1/0;return Math.min(n,t)}async#l(e){if(this.#n++,this.#n>this.#i.retry.limit)throw e;let t=e instanceof Error?e:new NonError(e);if(t instanceof ForceRetryError)return t.customDelay??this.#c();if(!this.#i.retry.methods.includes(this.request.method.toLowerCase()))throw e;if(this.#i.retry.shouldRetry!==void 0){let n=await this.#i.retry.shouldRetry({error:t,retryCount:this.#n});if(n===!1)throw e;if(n===!0)return this.#c()}if(isTimeoutError(e)&&!this.#i.retry.retryOnTimeout)throw e;if(isHTTPError(e)){if(!this.#i.retry.statusCodes.includes(e.response.status))throw e;let t=e.response.headers.get(`Retry-After`)??e.response.headers.get(`RateLimit-Reset`)??e.response.headers.get(`X-RateLimit-Retry-After`)??e.response.headers.get(`X-RateLimit-Reset`)??e.response.headers.get(`X-Rate-Limit-Reset`);if(t&&this.#i.retry.afterStatusCodes.includes(e.response.status)){let e=Number(t)*1e3;Number.isNaN(e)?e=Date.parse(t)-Date.now():e>=Date.parse(`2024-01-01`)&&(e-=Date.now());let n=this.#i.retry.maxRetryAfter??e;return e<n?e:n}if(e.response.status===413)throw e}return this.#c()}#u(e){return this.#i.parseJson&&(e.json=async()=>this.#i.parseJson(await e.text())),e}#d(e){e&&e.cancel().catch(()=>void 0)}#f(e){this.#d(e.body??void 0)}async#p(e){try{return await e()}catch(t){let n=Math.min(await this.#l(t),Wr);if(this.#n<1)throw t;if(await delay$1(n,this.#o?{signal:this.#o}:{}),t instanceof ForceRetryError&&t.customRequest){let e=this.#i.signal?new globalThis.Request(t.customRequest,{signal:this.#i.signal}):new globalThis.Request(t.customRequest);this.#g(e)}for(let e of this.#i.hooks.beforeRetry){let n=await e({request:this.request,options:this.#h(),error:t,retryCount:this.#n});if(n instanceof globalThis.Request){this.#g(n);break}if(n instanceof globalThis.Response)return n;if(n===Kr)return}return this.#p(e)}}async#m(){this.#t?.signal.aborted&&(this.#t=new globalThis.AbortController,this.#i.signal=this.#o?AbortSignal.any([this.#o,this.#t.signal]):this.#t.signal,this.request=new globalThis.Request(this.request,{signal:this.#i.signal}));for(let e of this.#i.hooks.beforeRequest){let t=await e(this.request,this.#h(),{retryCount:this.#n});if(t instanceof Response)return t;if(t instanceof globalThis.Request){this.#g(t);break}}let e=findUnknownOptions(this.request,this.#i);return this.#a=this.request,this.request=this.#a.clone(),this.#i.timeout===!1?this.#i.fetch(this.#a,e):timeout$1(this.#a,e,this.#t,this.#i)}#h(){if(!this.#s){let{hooks:e,...t}=this.#i;this.#s=Object.freeze(t)}return this.#s}#g(e){this.#s=void 0,this.request=this.#_(e)}#_(e,t){return!this.#i.onUploadProgress||!e.body?e:streamRequest(e,this.#i.onUploadProgress,t??this.#i.body??void 0)}};
|
|
165
|
+
/*! MIT License © Sindre Sorhus */
|
|
166
|
+
const createInstance=e=>{let ky=(t,n)=>Qr.create(t,validateAndMerge(e,n));for(let t of Hr)ky[t]=(n,r)=>Qr.create(n,validateAndMerge(e,r,{method:t}));return ky.create=e=>createInstance(validateAndMerge(e)),ky.extend=t=>(typeof t==`function`&&(t=t(e??{})),createInstance(validateAndMerge(e,t))),ky.stop=Kr,ky.retry=retry,ky},$r=createInstance();var ei=n(((e,t)=>{t.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:2**53-1||9007199254740991,RELEASE_TYPES:[`major`,`premajor`,`minor`,`preminor`,`patch`,`prepatch`,`prerelease`],SEMVER_SPEC_VERSION:`2.0.0`,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}})),ti=n(((e,t)=>{t.exports=typeof process==`object`&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error(`SEMVER`,...e):()=>{}})),ni=n(((e,t)=>{let{MAX_SAFE_COMPONENT_LENGTH:n,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:i}=ei(),a=ti();e=t.exports={};let s=e.re=[],c=e.safeRe=[],l=e.src=[],u=e.safeSrc=[],f=e.t={},p=0,m=`[a-zA-Z0-9-]`,h=[[`\\s`,1],[`\\d`,i],[m,r]],makeSafeRegex=e=>{for(let[t,n]of h)e=e.split(`${t}*`).join(`${t}{0,${n}}`).split(`${t}+`).join(`${t}{1,${n}}`);return e},createToken=(e,t,n)=>{let r=makeSafeRegex(t),i=p++;a(e,i,t),f[e]=i,l[i]=t,u[i]=r,s[i]=new RegExp(t,n?`g`:void 0),c[i]=new RegExp(r,n?`g`:void 0)};createToken(`NUMERICIDENTIFIER`,`0|[1-9]\\d*`),createToken(`NUMERICIDENTIFIERLOOSE`,`\\d+`),createToken(`NONNUMERICIDENTIFIER`,`\\d*[a-zA-Z-]${m}*`),createToken(`MAINVERSION`,`(${l[f.NUMERICIDENTIFIER]})\\.(${l[f.NUMERICIDENTIFIER]})\\.(${l[f.NUMERICIDENTIFIER]})`),createToken(`MAINVERSIONLOOSE`,`(${l[f.NUMERICIDENTIFIERLOOSE]})\\.(${l[f.NUMERICIDENTIFIERLOOSE]})\\.(${l[f.NUMERICIDENTIFIERLOOSE]})`),createToken(`PRERELEASEIDENTIFIER`,`(?:${l[f.NONNUMERICIDENTIFIER]}|${l[f.NUMERICIDENTIFIER]})`),createToken(`PRERELEASEIDENTIFIERLOOSE`,`(?:${l[f.NONNUMERICIDENTIFIER]}|${l[f.NUMERICIDENTIFIERLOOSE]})`),createToken(`PRERELEASE`,`(?:-(${l[f.PRERELEASEIDENTIFIER]}(?:\\.${l[f.PRERELEASEIDENTIFIER]})*))`),createToken(`PRERELEASELOOSE`,`(?:-?(${l[f.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[f.PRERELEASEIDENTIFIERLOOSE]})*))`),createToken(`BUILDIDENTIFIER`,`${m}+`),createToken(`BUILD`,`(?:\\+(${l[f.BUILDIDENTIFIER]}(?:\\.${l[f.BUILDIDENTIFIER]})*))`),createToken(`FULLPLAIN`,`v?${l[f.MAINVERSION]}${l[f.PRERELEASE]}?${l[f.BUILD]}?`),createToken(`FULL`,`^${l[f.FULLPLAIN]}$`),createToken(`LOOSEPLAIN`,`[v=\\s]*${l[f.MAINVERSIONLOOSE]}${l[f.PRERELEASELOOSE]}?${l[f.BUILD]}?`),createToken(`LOOSE`,`^${l[f.LOOSEPLAIN]}$`),createToken(`GTLT`,`((?:<|>)?=?)`),createToken(`XRANGEIDENTIFIERLOOSE`,`${l[f.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),createToken(`XRANGEIDENTIFIER`,`${l[f.NUMERICIDENTIFIER]}|x|X|\\*`),createToken(`XRANGEPLAIN`,`[v=\\s]*(${l[f.XRANGEIDENTIFIER]})(?:\\.(${l[f.XRANGEIDENTIFIER]})(?:\\.(${l[f.XRANGEIDENTIFIER]})(?:${l[f.PRERELEASE]})?${l[f.BUILD]}?)?)?`),createToken(`XRANGEPLAINLOOSE`,`[v=\\s]*(${l[f.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[f.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[f.XRANGEIDENTIFIERLOOSE]})(?:${l[f.PRERELEASELOOSE]})?${l[f.BUILD]}?)?)?`),createToken(`XRANGE`,`^${l[f.GTLT]}\\s*${l[f.XRANGEPLAIN]}$`),createToken(`XRANGELOOSE`,`^${l[f.GTLT]}\\s*${l[f.XRANGEPLAINLOOSE]}$`),createToken(`COERCEPLAIN`,`(^|[^\\d])(\\d{1,${n}})(?:\\.(\\d{1,${n}}))?(?:\\.(\\d{1,${n}}))?`),createToken(`COERCE`,`${l[f.COERCEPLAIN]}(?:$|[^\\d])`),createToken(`COERCEFULL`,l[f.COERCEPLAIN]+`(?:${l[f.PRERELEASE]})?(?:${l[f.BUILD]})?(?:$|[^\\d])`),createToken(`COERCERTL`,l[f.COERCE],!0),createToken(`COERCERTLFULL`,l[f.COERCEFULL],!0),createToken(`LONETILDE`,`(?:~>?)`),createToken(`TILDETRIM`,`(\\s*)${l[f.LONETILDE]}\\s+`,!0),e.tildeTrimReplace=`$1~`,createToken(`TILDE`,`^${l[f.LONETILDE]}${l[f.XRANGEPLAIN]}$`),createToken(`TILDELOOSE`,`^${l[f.LONETILDE]}${l[f.XRANGEPLAINLOOSE]}$`),createToken(`LONECARET`,`(?:\\^)`),createToken(`CARETTRIM`,`(\\s*)${l[f.LONECARET]}\\s+`,!0),e.caretTrimReplace=`$1^`,createToken(`CARET`,`^${l[f.LONECARET]}${l[f.XRANGEPLAIN]}$`),createToken(`CARETLOOSE`,`^${l[f.LONECARET]}${l[f.XRANGEPLAINLOOSE]}$`),createToken(`COMPARATORLOOSE`,`^${l[f.GTLT]}\\s*(${l[f.LOOSEPLAIN]})$|^$`),createToken(`COMPARATOR`,`^${l[f.GTLT]}\\s*(${l[f.FULLPLAIN]})$|^$`),createToken(`COMPARATORTRIM`,`(\\s*)${l[f.GTLT]}\\s*(${l[f.LOOSEPLAIN]}|${l[f.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace=`$1$2$3`,createToken(`HYPHENRANGE`,`^\\s*(${l[f.XRANGEPLAIN]})\\s+-\\s+(${l[f.XRANGEPLAIN]})\\s*$`),createToken(`HYPHENRANGELOOSE`,`^\\s*(${l[f.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[f.XRANGEPLAINLOOSE]})\\s*$`),createToken(`STAR`,`(<|>)?=?\\s*\\*`),createToken(`GTE0`,`^\\s*>=\\s*0\\.0\\.0\\s*$`),createToken(`GTE0PRE`,`^\\s*>=\\s*0\\.0\\.0-0\\s*$`)})),ri=n(((e,t)=>{let n=Object.freeze({loose:!0}),r=Object.freeze({}),parseOptions=e=>e?typeof e==`object`?e:n:r;t.exports=parseOptions})),ii=n(((e,t)=>{let n=/^[0-9]+$/,compareIdentifiers=(e,t)=>{if(typeof e==`number`&&typeof t==`number`)return e===t?0:e<t?-1:1;let r=n.test(e),i=n.test(t);return r&&i&&(e=+e,t=+t),e===t?0:r&&!i?-1:i&&!r?1:e<t?-1:1},rcompareIdentifiers=(e,t)=>compareIdentifiers(t,e);t.exports={compareIdentifiers,rcompareIdentifiers}})),ai=n(((e,t)=>{let n=ti(),{MAX_LENGTH:r,MAX_SAFE_INTEGER:i}=ei(),{safeRe:a,t:s}=ni(),c=ri(),{compareIdentifiers:l}=ii();t.exports=class SemVer{constructor(e,t){if(t=c(t),e instanceof SemVer){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!=`string`)throw TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>r)throw TypeError(`version is longer than ${r} characters`);n(`SemVer`,e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let l=e.trim().match(t.loose?a[s.LOOSE]:a[s.FULL]);if(!l)throw TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+l[1],this.minor=+l[2],this.patch=+l[3],this.major>i||this.major<0)throw TypeError(`Invalid major version`);if(this.minor>i||this.minor<0)throw TypeError(`Invalid minor version`);if(this.patch>i||this.patch<0)throw TypeError(`Invalid patch version`);l[4]?this.prerelease=l[4].split(`.`).map(e=>{if(/^[0-9]+$/.test(e)){let t=+e;if(t>=0&&t<i)return t}return e}):this.prerelease=[],this.build=l[5]?l[5].split(`.`):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(`.`)}`),this.version}toString(){return this.version}compare(e){if(n(`SemVer.compare`,this.version,this.options,e),!(e instanceof SemVer)){if(typeof e==`string`&&e===this.version)return 0;e=new SemVer(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof SemVer||(e=new SemVer(e,this.options)),this.major<e.major?-1:this.major>e.major?1:this.minor<e.minor?-1:this.minor>e.minor?1:this.patch<e.patch?-1:+(this.patch>e.patch)}comparePre(e){if(e instanceof SemVer||(e=new SemVer(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{let r=this.prerelease[t],i=e.prerelease[t];if(n(`prerelease compare`,t,r,i),r===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(r===void 0)return-1;if(r===i)continue;return l(r,i)}while(++t)}compareBuild(e){e instanceof SemVer||(e=new SemVer(e,this.options));let t=0;do{let r=this.build[t],i=e.build[t];if(n(`build compare`,t,r,i),r===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(r===void 0)return-1;if(r===i)continue;return l(r,i)}while(++t)}inc(e,t,n){if(e.startsWith(`pre`)){if(!t&&n===!1)throw Error(`invalid increment argument: identifier is empty`);if(t){let e=`-${t}`.match(this.options.loose?a[s.PRERELEASELOOSE]:a[s.PRERELEASE]);if(!e||e[1]!==t)throw Error(`invalid identifier: ${t}`)}}switch(e){case`premajor`:this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(`pre`,t,n);break;case`preminor`:this.prerelease.length=0,this.patch=0,this.minor++,this.inc(`pre`,t,n);break;case`prepatch`:this.prerelease.length=0,this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`prerelease`:this.prerelease.length===0&&this.inc(`patch`,t,n),this.inc(`pre`,t,n);break;case`release`:if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case`major`:(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case`minor`:(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case`patch`:this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case`pre`:{let e=+!!Number(n);if(this.prerelease.length===0)this.prerelease=[e];else{let r=this.prerelease.length;for(;--r>=0;)typeof this.prerelease[r]==`number`&&(this.prerelease[r]++,r=-2);if(r===-1){if(t===this.prerelease.join(`.`)&&n===!1)throw Error(`invalid increment argument: identifier already exists`);this.prerelease.push(e)}}if(t){let r=[t,e];n===!1&&(r=[t]),l(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=r):this.prerelease=r}break}default:throw Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(`.`)}`),this}}})),oi=n(((e,t)=>{let n=ai(),parse=(e,t,r=!1)=>{if(e instanceof n)return e;try{return new n(e,t)}catch(e){if(!r)return null;throw e}};t.exports=parse})),si=n(((e,t)=>{let n=oi(),valid=(e,t)=>{let r=n(e,t);return r?r.version:null};t.exports=valid})),ci=n(((e,t)=>{let n=oi(),clean=(e,t)=>{let r=n(e.trim().replace(/^[=v]+/,``),t);return r?r.version:null};t.exports=clean})),li=n(((e,t)=>{let n=ai(),inc=(e,t,r,i,a)=>{typeof r==`string`&&(a=i,i=r,r=void 0);try{return new n(e instanceof n?e.version:e,r).inc(t,i,a).version}catch{return null}};t.exports=inc})),ui=n(((e,t)=>{let n=oi(),diff=(e,t)=>{let r=n(e,null,!0),i=n(t,null,!0),a=r.compare(i);if(a===0)return null;let s=a>0,c=s?r:i,l=s?i:r,u=!!c.prerelease.length;if(l.prerelease.length&&!u){if(!l.patch&&!l.minor)return`major`;if(l.compareMain(c)===0)return l.minor&&!l.patch?`minor`:`patch`}let f=u?`pre`:``;return r.major===i.major?r.minor===i.minor?r.patch===i.patch?`prerelease`:f+`patch`:f+`minor`:f+`major`};t.exports=diff})),di=n(((e,t)=>{let n=ai(),major=(e,t)=>new n(e,t).major;t.exports=major})),fi=n(((e,t)=>{let n=ai(),minor=(e,t)=>new n(e,t).minor;t.exports=minor})),pi=n(((e,t)=>{let n=ai(),patch=(e,t)=>new n(e,t).patch;t.exports=patch})),mi=n(((e,t)=>{let n=oi(),prerelease=(e,t)=>{let r=n(e,t);return r&&r.prerelease.length?r.prerelease:null};t.exports=prerelease})),hi=n(((e,t)=>{let n=ai(),compare=(e,t,r)=>new n(e,r).compare(new n(t,r));t.exports=compare})),gi=n(((e,t)=>{let n=hi(),rcompare=(e,t,r)=>n(t,e,r);t.exports=rcompare})),_i=n(((e,t)=>{let n=hi(),compareLoose=(e,t)=>n(e,t,!0);t.exports=compareLoose})),vi=n(((e,t)=>{let n=ai(),compareBuild=(e,t,r)=>{let i=new n(e,r),a=new n(t,r);return i.compare(a)||i.compareBuild(a)};t.exports=compareBuild})),yi=n(((e,t)=>{let n=vi(),sort=(e,t)=>e.sort((e,r)=>n(e,r,t));t.exports=sort})),bi=n(((e,t)=>{let n=vi(),rsort=(e,t)=>e.sort((e,r)=>n(r,e,t));t.exports=rsort})),xi=n(((e,t)=>{let n=hi(),gt=(e,t,r)=>n(e,t,r)>0;t.exports=gt})),Si=n(((e,t)=>{let n=hi(),lt=(e,t,r)=>n(e,t,r)<0;t.exports=lt})),Ci=n(((e,t)=>{let n=hi(),eq=(e,t,r)=>n(e,t,r)===0;t.exports=eq})),wi=n(((e,t)=>{let n=hi(),neq=(e,t,r)=>n(e,t,r)!==0;t.exports=neq})),Ti=n(((e,t)=>{let n=hi(),gte=(e,t,r)=>n(e,t,r)>=0;t.exports=gte})),Ei=n(((e,t)=>{let n=hi(),lte=(e,t,r)=>n(e,t,r)<=0;t.exports=lte})),Di=n(((e,t)=>{let n=Ci(),r=wi(),i=xi(),a=Ti(),s=Si(),c=Ei(),cmp=(e,t,l,u)=>{switch(t){case`===`:return typeof e==`object`&&(e=e.version),typeof l==`object`&&(l=l.version),e===l;case`!==`:return typeof e==`object`&&(e=e.version),typeof l==`object`&&(l=l.version),e!==l;case``:case`=`:case`==`:return n(e,l,u);case`!=`:return r(e,l,u);case`>`:return i(e,l,u);case`>=`:return a(e,l,u);case`<`:return s(e,l,u);case`<=`:return c(e,l,u);default:throw TypeError(`Invalid operator: ${t}`)}};t.exports=cmp})),Oi=n(((e,t)=>{let n=ai(),r=oi(),{safeRe:i,t:a}=ni(),coerce=(e,t)=>{if(e instanceof n)return e;if(typeof e==`number`&&(e=String(e)),typeof e!=`string`)return null;t||={};let s=null;if(!t.rtl)s=e.match(t.includePrerelease?i[a.COERCEFULL]:i[a.COERCE]);else{let n=t.includePrerelease?i[a.COERCERTLFULL]:i[a.COERCERTL],r;for(;(r=n.exec(e))&&(!s||s.index+s[0].length!==e.length);)(!s||r.index+r[0].length!==s.index+s[0].length)&&(s=r),n.lastIndex=r.index+r[1].length+r[2].length;n.lastIndex=-1}if(s===null)return null;let c=s[2];return r(`${c}.${s[3]||`0`}.${s[4]||`0`}${t.includePrerelease&&s[5]?`-${s[5]}`:``}${t.includePrerelease&&s[6]?`+${s[6]}`:``}`,t)};t.exports=coerce})),ki=n(((e,t)=>{let n=oi(),r=ei(),i=ai(),truncate=(e,t,n)=>{if(!r.RELEASE_TYPES.includes(t))return null;let i=cloneInputVersion(e,n);return i&&doTruncation(i,t)},cloneInputVersion=(e,t)=>n(e instanceof i?e.version:e,t),doTruncation=(e,t)=>{if(isPrerelease(t))return e.version;switch(e.prerelease=[],t){case`major`:e.minor=0,e.patch=0;break;case`minor`:e.patch=0;break}return e.format()},isPrerelease=e=>e.startsWith(`pre`);t.exports=truncate})),Ai=n(((e,t)=>{var LRUCache=class{constructor(){this.max=1e3,this.map=new Map}get(e){let t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){let e=this.map.keys().next().value;this.delete(e)}this.map.set(e,t)}return this}};t.exports=LRUCache})),ji=n(((e,t)=>{let n=/\s+/g;t.exports=class Range{constructor(e,t){if(t=i(t),e instanceof Range)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new Range(e.raw,t);if(e instanceof a)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().replace(n,` `),this.set=this.raw.split(`||`).map(e=>this.parseRange(e.trim())).filter(e=>e.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let e=this.set[0];if(this.set=this.set.filter(e=>!isNullSet(e[0])),this.set.length===0)this.set=[e];else if(this.set.length>1){for(let e of this.set)if(e.length===1&&isAny(e[0])){this.set=[e];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted=``;for(let e=0;e<this.set.length;e++){e>0&&(this.formatted+=`||`);let t=this.set[e];for(let e=0;e<t.length;e++)e>0&&(this.formatted+=` `),this.formatted+=t[e].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){e=e.replace(y,``);let t=((this.options.includePrerelease&&g)|(this.options.loose&&v))+`:`+e,n=r.get(t);if(n)return n;let i=this.options.loose,c=i?l[f.HYPHENRANGELOOSE]:l[f.HYPHENRANGE];e=e.replace(c,hyphenReplace(this.options.includePrerelease)),s(`hyphen replace`,e),e=e.replace(l[f.COMPARATORTRIM],p),s(`comparator trim`,e),e=e.replace(l[f.TILDETRIM],m),s(`tilde trim`,e),e=e.replace(l[f.CARETTRIM],h),s(`caret trim`,e);let u=e.split(` `).map(e=>parseComparator(e,this.options)).join(` `).split(/\s+/).map(e=>replaceGTE0(e,this.options));i&&(u=u.filter(e=>(s(`loose invalid filter`,e,this.options),!!e.match(l[f.COMPARATORLOOSE])))),s(`range list`,u);let b=new Map,x=u.map(e=>new a(e,this.options));for(let e of x){if(isNullSet(e))return[e];b.set(e.value,e)}b.size>1&&b.has(``)&&b.delete(``);let ee=[...b.values()];return r.set(t,ee),ee}intersects(e,t){if(!(e instanceof Range))throw TypeError(`a Range is required`);return this.set.some(n=>isSatisfiable(n,t)&&e.set.some(e=>isSatisfiable(e,t)&&n.every(n=>e.every(e=>n.intersects(e,t)))))}test(e){if(!e)return!1;if(typeof e==`string`)try{e=new c(e,this.options)}catch{return!1}for(let t=0;t<this.set.length;t++)if(testSet(this.set[t],e,this.options))return!0;return!1}};let r=new(Ai()),i=ri(),a=Mi(),s=ti(),c=ai(),{safeRe:l,src:u,t:f,comparatorTrimReplace:p,tildeTrimReplace:m,caretTrimReplace:h}=ni(),{FLAG_INCLUDE_PRERELEASE:g,FLAG_LOOSE:v}=ei(),y=new RegExp(u[f.BUILD],`g`),isNullSet=e=>e.value===`<0.0.0-0`,isAny=e=>e.value===``,isSatisfiable=(e,t)=>{let n=!0,r=e.slice(),i=r.pop();for(;n&&r.length;)n=r.every(e=>i.intersects(e,t)),i=r.pop();return n},parseComparator=(e,t)=>(e=e.replace(l[f.BUILD],``),s(`comp`,e,t),e=replaceCarets(e,t),s(`caret`,e),e=replaceTildes(e,t),s(`tildes`,e),e=replaceXRanges(e,t),s(`xrange`,e),e=replaceStars(e,t),s(`stars`,e),e),isX=e=>!e||e.toLowerCase()===`x`||e===`*`,replaceTildes=(e,t)=>e.trim().split(/\s+/).map(e=>replaceTilde(e,t)).join(` `),replaceTilde=(e,t)=>{let n=t.loose?l[f.TILDELOOSE]:l[f.TILDE];return e.replace(n,(t,n,r,i,a)=>{s(`tilde`,e,t,n,r,i,a);let c;return isX(n)?c=``:isX(r)?c=`>=${n}.0.0 <${+n+1}.0.0-0`:isX(i)?c=`>=${n}.${r}.0 <${n}.${+r+1}.0-0`:a?(s(`replaceTilde pr`,a),c=`>=${n}.${r}.${i}-${a} <${n}.${+r+1}.0-0`):c=`>=${n}.${r}.${i} <${n}.${+r+1}.0-0`,s(`tilde return`,c),c})},replaceCarets=(e,t)=>e.trim().split(/\s+/).map(e=>replaceCaret(e,t)).join(` `),replaceCaret=(e,t)=>{s(`caret`,e,t);let n=t.loose?l[f.CARETLOOSE]:l[f.CARET],r=t.includePrerelease?`-0`:``;return e.replace(n,(t,n,i,a,c)=>{s(`caret`,e,t,n,i,a,c);let l;return isX(n)?l=``:isX(i)?l=`>=${n}.0.0${r} <${+n+1}.0.0-0`:isX(a)?l=n===`0`?`>=${n}.${i}.0${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.0${r} <${+n+1}.0.0-0`:c?(s(`replaceCaret pr`,c),l=n===`0`?i===`0`?`>=${n}.${i}.${a}-${c} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}-${c} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a}-${c} <${+n+1}.0.0-0`):(s(`no pr`),l=n===`0`?i===`0`?`>=${n}.${i}.${a}${r} <${n}.${i}.${+a+1}-0`:`>=${n}.${i}.${a}${r} <${n}.${+i+1}.0-0`:`>=${n}.${i}.${a} <${+n+1}.0.0-0`),s(`caret return`,l),l})},replaceXRanges=(e,t)=>(s(`replaceXRanges`,e,t),e.split(/\s+/).map(e=>replaceXRange(e,t)).join(` `)),replaceXRange=(e,t)=>{e=e.trim();let n=t.loose?l[f.XRANGELOOSE]:l[f.XRANGE];return e.replace(n,(n,r,i,a,c,l)=>{s(`xRange`,e,n,r,i,a,c,l);let u=isX(i),f=u||isX(a),p=f||isX(c),m=p;return r===`=`&&m&&(r=``),l=t.includePrerelease?`-0`:``,u?n=r===`>`||r===`<`?`<0.0.0-0`:`*`:r&&m?(f&&(a=0),c=0,r===`>`?(r=`>=`,f?(i=+i+1,a=0,c=0):(a=+a+1,c=0)):r===`<=`&&(r=`<`,f?i=+i+1:a=+a+1),r===`<`&&(l=`-0`),n=`${r+i}.${a}.${c}${l}`):f?n=`>=${i}.0.0${l} <${+i+1}.0.0-0`:p&&(n=`>=${i}.${a}.0${l} <${i}.${+a+1}.0-0`),s(`xRange return`,n),n})},replaceStars=(e,t)=>(s(`replaceStars`,e,t),e.trim().replace(l[f.STAR],``)),replaceGTE0=(e,t)=>(s(`replaceGTE0`,e,t),e.trim().replace(l[t.includePrerelease?f.GTE0PRE:f.GTE0],``)),hyphenReplace=e=>(t,n,r,i,a,s,c,l,u,f,p,m)=>(n=isX(r)?``:isX(i)?`>=${r}.0.0${e?`-0`:``}`:isX(a)?`>=${r}.${i}.0${e?`-0`:``}`:s?`>=${n}`:`>=${n}${e?`-0`:``}`,l=isX(u)?``:isX(f)?`<${+u+1}.0.0-0`:isX(p)?`<${u}.${+f+1}.0-0`:m?`<=${u}.${f}.${p}-${m}`:e?`<${u}.${f}.${+p+1}-0`:`<=${l}`,`${n} ${l}`.trim()),testSet=(e,t,n)=>{for(let n=0;n<e.length;n++)if(!e[n].test(t))return!1;if(t.prerelease.length&&!n.includePrerelease){for(let n=0;n<e.length;n++)if(s(e[n].semver),e[n].semver!==a.ANY&&e[n].semver.prerelease.length>0){let r=e[n].semver;if(r.major===t.major&&r.minor===t.minor&&r.patch===t.patch)return!0}return!1}return!0}})),Mi=n(((e,t)=>{let n=Symbol(`SemVer ANY`);t.exports=class Comparator{static get ANY(){return n}constructor(e,t){if(t=r(t),e instanceof Comparator){if(e.loose===!!t.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(` `),c(`comparator`,e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===n?this.value=``:this.value=this.operator+this.semver.version,c(`comp`,this)}parse(e){let t=this.options.loose?i[a.COMPARATORLOOSE]:i[a.COMPARATOR],r=e.match(t);if(!r)throw TypeError(`Invalid comparator: ${e}`);this.operator=r[1]===void 0?``:r[1],this.operator===`=`&&(this.operator=``),r[2]?this.semver=new l(r[2],this.options.loose):this.semver=n}toString(){return this.value}test(e){if(c(`Comparator.test`,e,this.options.loose),this.semver===n||e===n)return!0;if(typeof e==`string`)try{e=new l(e,this.options)}catch{return!1}return s(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof Comparator))throw TypeError(`a Comparator is required`);return this.operator===``?this.value===``?!0:new u(e.value,t).test(this.value):e.operator===``?e.value===``?!0:new u(this.value,t).test(e.semver):(t=r(t),t.includePrerelease&&(this.value===`<0.0.0-0`||e.value===`<0.0.0-0`)||!t.includePrerelease&&(this.value.startsWith(`<0.0.0`)||e.value.startsWith(`<0.0.0`))?!1:!!(this.operator.startsWith(`>`)&&e.operator.startsWith(`>`)||this.operator.startsWith(`<`)&&e.operator.startsWith(`<`)||this.semver.version===e.semver.version&&this.operator.includes(`=`)&&e.operator.includes(`=`)||s(this.semver,`<`,e.semver,t)&&this.operator.startsWith(`>`)&&e.operator.startsWith(`<`)||s(this.semver,`>`,e.semver,t)&&this.operator.startsWith(`<`)&&e.operator.startsWith(`>`)))}};let r=ri(),{safeRe:i,t:a}=ni(),s=Di(),c=ti(),l=ai(),u=ji()})),Ni=n(((e,t)=>{let n=ji(),satisfies=(e,t,r)=>{try{t=new n(t,r)}catch{return!1}return t.test(e)};t.exports=satisfies})),Pi=n(((e,t)=>{let n=ji(),toComparators=(e,t)=>new n(e,t).set.map(e=>e.map(e=>e.value).join(` `).trim().split(` `));t.exports=toComparators})),Fi=n(((e,t)=>{let n=ai(),r=ji(),maxSatisfying=(e,t,i)=>{let a=null,s=null,c=null;try{c=new r(t,i)}catch{return null}return e.forEach(e=>{c.test(e)&&(!a||s.compare(e)===-1)&&(a=e,s=new n(a,i))}),a};t.exports=maxSatisfying})),Ii=n(((e,t)=>{let n=ai(),r=ji(),minSatisfying=(e,t,i)=>{let a=null,s=null,c=null;try{c=new r(t,i)}catch{return null}return e.forEach(e=>{c.test(e)&&(!a||s.compare(e)===1)&&(a=e,s=new n(a,i))}),a};t.exports=minSatisfying})),Li=n(((e,t)=>{let n=ai(),r=ji(),i=xi(),minVersion=(e,t)=>{e=new r(e,t);let a=new n(`0.0.0`);if(e.test(a)||(a=new n(`0.0.0-0`),e.test(a)))return a;a=null;for(let t=0;t<e.set.length;++t){let r=e.set[t],s=null;r.forEach(e=>{let t=new n(e.semver.version);switch(e.operator){case`>`:t.prerelease.length===0?t.patch++:t.prerelease.push(0),t.raw=t.format();case``:case`>=`:(!s||i(t,s))&&(s=t);break;case`<`:case`<=`:break;default:throw Error(`Unexpected operation: ${e.operator}`)}}),s&&(!a||i(a,s))&&(a=s)}return a&&e.test(a)?a:null};t.exports=minVersion})),Ri=n(((e,t)=>{let n=ji(),validRange=(e,t)=>{try{return new n(e,t).range||`*`}catch{return null}};t.exports=validRange})),zi=n(((e,t)=>{let n=ai(),r=Mi(),{ANY:i}=r,a=ji(),s=Ni(),c=xi(),l=Si(),u=Ei(),f=Ti(),outside=(e,t,p,m)=>{e=new n(e,m),t=new a(t,m);let h,g,v,y,b;switch(p){case`>`:h=c,g=u,v=l,y=`>`,b=`>=`;break;case`<`:h=l,g=f,v=c,y=`<`,b=`<=`;break;default:throw TypeError(`Must provide a hilo val of "<" or ">"`)}if(s(e,t,m))return!1;for(let n=0;n<t.set.length;++n){let a=t.set[n],s=null,c=null;if(a.forEach(e=>{e.semver===i&&(e=new r(`>=0.0.0`)),s||=e,c||=e,h(e.semver,s.semver,m)?s=e:v(e.semver,c.semver,m)&&(c=e)}),s.operator===y||s.operator===b||(!c.operator||c.operator===y)&&g(e,c.semver)||c.operator===b&&v(e,c.semver))return!1}return!0};t.exports=outside})),Bi=n(((e,t)=>{let n=zi(),gtr=(e,t,r)=>n(e,t,`>`,r);t.exports=gtr})),Vi=n(((e,t)=>{let n=zi(),ltr=(e,t,r)=>n(e,t,`<`,r);t.exports=ltr})),Hi=n(((e,t)=>{let n=ji(),intersects=(e,t,r)=>(e=new n(e,r),t=new n(t,r),e.intersects(t,r));t.exports=intersects})),Ui=n(((e,t)=>{let n=Ni(),r=hi();t.exports=(e,t,i)=>{let a=[],s=null,c=null,l=e.sort((e,t)=>r(e,t,i));for(let e of l)n(e,t,i)?(c=e,s||=e):(c&&a.push([s,c]),c=null,s=null);s&&a.push([s,null]);let u=[];for(let[e,t]of a)e===t?u.push(e):!t&&e===l[0]?u.push(`*`):t?e===l[0]?u.push(`<=${t}`):u.push(`${e} - ${t}`):u.push(`>=${e}`);let f=u.join(` || `),p=typeof t.raw==`string`?t.raw:String(t);return f.length<p.length?f:t}})),Wi=n(((e,t)=>{let n=ji(),r=Mi(),{ANY:i}=r,a=Ni(),s=hi(),subset=(e,t,r={})=>{if(e===t)return!0;e=new n(e,r),t=new n(t,r);let i=!1;OUTER:for(let n of e.set){for(let e of t.set){let t=simpleSubset(n,e,r);if(i||=t!==null,t)continue OUTER}if(i)return!1}return!0},c=[new r(`>=0.0.0-0`)],l=[new r(`>=0.0.0`)],simpleSubset=(e,t,n)=>{if(e===t)return!0;if(e.length===1&&e[0].semver===i){if(t.length===1&&t[0].semver===i)return!0;e=n.includePrerelease?c:l}if(t.length===1&&t[0].semver===i){if(n.includePrerelease)return!0;t=l}let r=new Set,u,f;for(let t of e)t.operator===`>`||t.operator===`>=`?u=higherGT(u,t,n):t.operator===`<`||t.operator===`<=`?f=lowerLT(f,t,n):r.add(t.semver);if(r.size>1)return null;let p;if(u&&f&&(p=s(u.semver,f.semver,n),p>0||p===0&&(u.operator!==`>=`||f.operator!==`<=`)))return null;for(let e of r){if(u&&!a(e,String(u),n)||f&&!a(e,String(f),n))return null;for(let r of t)if(!a(e,String(r),n))return!1;return!0}let m,h,g,v,y=f&&!n.includePrerelease&&f.semver.prerelease.length?f.semver:!1,b=u&&!n.includePrerelease&&u.semver.prerelease.length?u.semver:!1;y&&y.prerelease.length===1&&f.operator===`<`&&y.prerelease[0]===0&&(y=!1);for(let e of t){if(v=v||e.operator===`>`||e.operator===`>=`,g=g||e.operator===`<`||e.operator===`<=`,u){if(b&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===b.major&&e.semver.minor===b.minor&&e.semver.patch===b.patch&&(b=!1),e.operator===`>`||e.operator===`>=`){if(m=higherGT(u,e,n),m===e&&m!==u)return!1}else if(u.operator===`>=`&&!e.test(u.semver))return!1}if(f){if(y&&e.semver.prerelease&&e.semver.prerelease.length&&e.semver.major===y.major&&e.semver.minor===y.minor&&e.semver.patch===y.patch&&(y=!1),e.operator===`<`||e.operator===`<=`){if(h=lowerLT(f,e,n),h===e&&h!==f)return!1}else if(f.operator===`<=`&&!e.test(f.semver))return!1}if(!e.operator&&(f||u)&&p!==0)return!1}return!(u&&g&&!f&&p!==0||f&&v&&!u&&p!==0||b||y)},higherGT=(e,t,n)=>{if(!e)return t;let r=s(e.semver,t.semver,n);return r>0?e:r<0||t.operator===`>`&&e.operator===`>=`?t:e},lowerLT=(e,t,n)=>{if(!e)return t;let r=s(e.semver,t.semver,n);return r<0?e:r>0||t.operator===`<`&&e.operator===`<=`?t:e};t.exports=subset})),Gi=e(n(((e,t)=>{let n=ni(),r=ei(),i=ai(),a=ii();t.exports={parse:oi(),valid:si(),clean:ci(),inc:li(),diff:ui(),major:di(),minor:fi(),patch:pi(),prerelease:mi(),compare:hi(),rcompare:gi(),compareLoose:_i(),compareBuild:vi(),sort:yi(),rsort:bi(),gt:xi(),lt:Si(),eq:Ci(),neq:wi(),gte:Ti(),lte:Ei(),cmp:Di(),coerce:Oi(),truncate:ki(),Comparator:Mi(),Range:ji(),satisfies:Ni(),toComparators:Pi(),maxSatisfying:Fi(),minSatisfying:Ii(),minVersion:Li(),validRange:Ri(),outside:zi(),gtr:Bi(),ltr:Vi(),intersects:Hi(),simplifyRange:Ui(),subset:Wi(),SemVer:i,re:n.re,src:n.src,tokens:n.t,SEMVER_SPEC_VERSION:r.SEMVER_SPEC_VERSION,RELEASE_TYPES:r.RELEASE_TYPES,compareIdentifiers:a.compareIdentifiers,rcompareIdentifiers:a.rcompareIdentifiers}}))(),1);const isObject=e=>{let t=typeof e;return e!==null&&(t===`object`||t===`function`)},Ki=new Set([`__proto__`,`prototype`,`constructor`]),qi=1e6,isDigit=e=>e>=`0`&&e<=`9`;function shouldCoerceToNumber(e){if(e===`0`)return!0;if(/^[1-9]\d*$/.test(e)){let t=Number.parseInt(e,10);return t<=2**53-1&&t<=qi}return!1}function processSegment(e,t){return Ki.has(e)?!1:(e&&shouldCoerceToNumber(e)?t.push(Number.parseInt(e,10)):t.push(e),!0)}function parsePath(e){if(typeof e!=`string`)throw TypeError(`Expected a string, got ${typeof e}`);let t=[],n=``,r=`start`,i=!1,a=0;for(let s of e){if(a++,i){n+=s,i=!1;continue}if(s===`\\`){if(r===`index`)throw Error(`Invalid character '${s}' in an index at position ${a}`);if(r===`indexEnd`)throw Error(`Invalid character '${s}' after an index at position ${a}`);i=!0,r=r===`start`?`property`:r;continue}switch(s){case`.`:if(r===`index`)throw Error(`Invalid character '${s}' in an index at position ${a}`);if(r===`indexEnd`){r=`property`;break}if(!processSegment(n,t))return[];n=``,r=`property`;break;case`[`:if(r===`index`)throw Error(`Invalid character '${s}' in an index at position ${a}`);if(r===`indexEnd`){r=`index`;break}if(r===`property`||r===`start`){if((n||r===`property`)&&!processSegment(n,t))return[];n=``}r=`index`;break;case`]`:if(r===`index`){if(n===``)n=(t.pop()||``)+`[]`,r=`property`;else{let e=Number.parseInt(n,10);!Number.isNaN(e)&&Number.isFinite(e)&&e>=0&&e<=2**53-1&&e<=qi&&n===String(e)?t.push(e):t.push(n),n=``,r=`indexEnd`}break}if(r===`indexEnd`)throw Error(`Invalid character '${s}' after an index at position ${a}`);n+=s;break;default:if(r===`index`&&!isDigit(s))throw Error(`Invalid character '${s}' in an index at position ${a}`);if(r===`indexEnd`)throw Error(`Invalid character '${s}' after an index at position ${a}`);r===`start`&&(r=`property`),n+=s}}switch(i&&(n+=`\\`),r){case`property`:if(!processSegment(n,t))return[];break;case`index`:throw Error(`Index was not closed`);case`start`:t.push(``);break}return t}function normalizePath(e){if(typeof e==`string`)return parsePath(e);if(Array.isArray(e)){let t=[];for(let[n,r]of e.entries()){if(typeof r!=`string`&&typeof r!=`number`)throw TypeError(`Expected a string or number for path segment at index ${n}, got ${typeof r}`);if(typeof r==`number`&&!Number.isFinite(r))throw TypeError(`Path segment at index ${n} must be a finite number, got ${r}`);if(Ki.has(r))return[];typeof r==`string`&&shouldCoerceToNumber(r)?t.push(Number.parseInt(r,10)):t.push(r)}return t}return[]}function getProperty(e,t,n){if(!isObject(e)||typeof t!=`string`&&!Array.isArray(t))return n===void 0?e:n;let r=normalizePath(t);if(r.length===0)return n;for(let t=0;t<r.length;t++){let i=r[t];if(e=e[i],e==null){if(t!==r.length-1)return n;break}}return e===void 0?n:e}function setProperty(e,t,n){if(!isObject(e)||typeof t!=`string`&&!Array.isArray(t))return e;let r=e,i=normalizePath(t);if(i.length===0)return e;for(let t=0;t<i.length;t++){let r=i[t];if(t===i.length-1)e[r]=n;else if(!isObject(e[r])){let n=typeof i[t+1]==`number`;e[r]=n?[]:{}}e=e[r]}return r}function deleteProperty(e,t){if(!isObject(e)||typeof t!=`string`&&!Array.isArray(t))return!1;let n=normalizePath(t);if(n.length===0)return!1;for(let t=0;t<n.length;t++){let r=n[t];if(t===n.length-1)return Object.hasOwn(e,r)?(delete e[r],!0):!1;if(e=e[r],!isObject(e))return!1}}function hasProperty(e,t){if(!isObject(e)||typeof t!=`string`&&!Array.isArray(t))return!1;let n=normalizePath(t);if(n.length===0)return!1;for(let t of n){if(!isObject(e)||!(t in e))return!1;e=e[t]}return!0}const Ji=Wt.homedir(),Yi=Wt.tmpdir(),{env:Xi}=N,macos=e=>{let t=A.join(Ji,`Library`);return{data:A.join(t,`Application Support`,e),config:A.join(t,`Preferences`,e),cache:A.join(t,`Caches`,e),log:A.join(t,`Logs`,e),temp:A.join(Yi,e)}},windows=e=>{let t=Xi.APPDATA||A.join(Ji,`AppData`,`Roaming`),n=Xi.LOCALAPPDATA||A.join(Ji,`AppData`,`Local`);return{data:A.join(n,e,`Data`),config:A.join(t,e,`Config`),cache:A.join(n,e,`Cache`),log:A.join(n,e,`Log`),temp:A.join(Yi,e)}},linux=e=>{let t=A.basename(Ji);return{data:A.join(Xi.XDG_DATA_HOME||A.join(Ji,`.local`,`share`),e),config:A.join(Xi.XDG_CONFIG_HOME||A.join(Ji,`.config`),e),cache:A.join(Xi.XDG_CACHE_HOME||A.join(Ji,`.cache`),e),log:A.join(Xi.XDG_STATE_HOME||A.join(Ji,`.local`,`state`),e),temp:A.join(Yi,t,e)}};function envPaths(e,{suffix:t=`nodejs`}={}){if(typeof e!=`string`)throw TypeError(`Expected a string, got ${typeof e}`);return t&&(e+=`-${t}`),N.platform===`darwin`?macos(e):N.platform===`win32`?windows(e):linux(e)}const attemptifyAsync=(e,t)=>function attemptified(...n){return e.apply(void 0,n).catch(t)},attemptifySync=(e,t)=>function attemptified(...n){try{return e.apply(void 0,n)}catch(e){return t(e)}},Zi=N.getuid?!N.getuid():!1,NOOP=()=>void 0,L={isChangeErrorOk:e=>{if(!L.isNodeError(e))return!1;let{code:t}=e;return t===`ENOSYS`||!Zi&&(t===`EINVAL`||t===`EPERM`)},isNodeError:e=>e instanceof Error,isRetriableError:e=>{if(!L.isNodeError(e))return!1;let{code:t}=e;return t===`EMFILE`||t===`ENFILE`||t===`EAGAIN`||t===`EBUSY`||t===`EACCESS`||t===`EACCES`||t===`EACCS`||t===`EPERM`},onChangeError:e=>{if(!L.isNodeError(e)||!L.isChangeErrorOk(e))throw e}};var RetryfyQueue=class{constructor(){this.interval=25,this.intervalId=void 0,this.limit=1e4,this.queueActive=new Set,this.queueWaiting=new Set,this.init=()=>{this.intervalId||=setInterval(this.tick,this.interval)},this.reset=()=>{this.intervalId&&(clearInterval(this.intervalId),delete this.intervalId)},this.add=e=>{this.queueWaiting.add(e),this.queueActive.size<this.limit/2?this.tick():this.init()},this.remove=e=>{this.queueWaiting.delete(e),this.queueActive.delete(e)},this.schedule=()=>new Promise(e=>{let cleanup=()=>this.remove(resolver),resolver=()=>e(cleanup);this.add(resolver)}),this.tick=()=>{if(!(this.queueActive.size>=this.limit)){if(!this.queueWaiting.size)return this.reset();for(let e of this.queueWaiting){if(this.queueActive.size>=this.limit)break;this.queueWaiting.delete(e),this.queueActive.add(e),e()}}}}},Qi=new RetryfyQueue;const retryifyAsync=(e,t)=>function retrified(n){return function attempt(...r){return Qi.schedule().then(i=>{let onResolve=e=>(i(),e),onReject=e=>{if(i(),Date.now()>=n)throw e;if(t(e)){let e=Math.round(100*Math.random());return new Promise(t=>setTimeout(t,e)).then(()=>attempt.apply(void 0,r))}throw e};return e.apply(void 0,r).then(onResolve,onReject)})}},retryifySync=(e,t)=>function retrified(n){return function attempt(...r){try{return e.apply(void 0,r)}catch(e){if(Date.now()>n)throw e;if(t(e))return attempt.apply(void 0,r);throw e}}},$i={attempt:{chmod:attemptifyAsync(bt(M.chmod),L.onChangeError),chown:attemptifyAsync(bt(M.chown),L.onChangeError),close:attemptifyAsync(bt(M.close),NOOP),fsync:attemptifyAsync(bt(M.fsync),NOOP),mkdir:attemptifyAsync(bt(M.mkdir),NOOP),realpath:attemptifyAsync(bt(M.realpath),NOOP),stat:attemptifyAsync(bt(M.stat),NOOP),unlink:attemptifyAsync(bt(M.unlink),NOOP),chmodSync:attemptifySync(M.chmodSync,L.onChangeError),chownSync:attemptifySync(M.chownSync,L.onChangeError),closeSync:attemptifySync(M.closeSync,NOOP),existsSync:attemptifySync(M.existsSync,NOOP),fsyncSync:attemptifySync(M.fsync,NOOP),mkdirSync:attemptifySync(M.mkdirSync,NOOP),realpathSync:attemptifySync(M.realpathSync,NOOP),statSync:attemptifySync(M.statSync,NOOP),unlinkSync:attemptifySync(M.unlinkSync,NOOP)},retry:{close:retryifyAsync(bt(M.close),L.isRetriableError),fsync:retryifyAsync(bt(M.fsync),L.isRetriableError),open:retryifyAsync(bt(M.open),L.isRetriableError),readFile:retryifyAsync(bt(M.readFile),L.isRetriableError),rename:retryifyAsync(bt(M.rename),L.isRetriableError),stat:retryifyAsync(bt(M.stat),L.isRetriableError),write:retryifyAsync(bt(M.write),L.isRetriableError),writeFile:retryifyAsync(bt(M.writeFile),L.isRetriableError),closeSync:retryifySync(M.closeSync,L.isRetriableError),fsyncSync:retryifySync(M.fsyncSync,L.isRetriableError),openSync:retryifySync(M.openSync,L.isRetriableError),readFileSync:retryifySync(M.readFileSync,L.isRetriableError),renameSync:retryifySync(M.renameSync,L.isRetriableError),statSync:retryifySync(M.statSync,L.isRetriableError),writeSync:retryifySync(M.writeSync,L.isRetriableError),writeFileSync:retryifySync(M.writeFileSync,L.isRetriableError)}},ea={},ta=Wt.userInfo().uid,na=Wt.userInfo().gid,ra=!!N.getuid;N.getuid&&N.getuid();const isException=e=>e instanceof Error&&`code`in e,ia=t(e=>typeof e==`string`,`isString`),isUndefined=e=>e===void 0,aa=N.platform===`linux`,oa=N.platform===`win32`,sa=[`SIGABRT`,`SIGALRM`,`SIGHUP`,`SIGINT`,`SIGTERM`];oa||sa.push(`SIGVTALRM`,`SIGXCPU`,`SIGXFSZ`,`SIGUSR2`,`SIGTRAP`,`SIGSYS`,`SIGQUIT`,`SIGIOT`),aa&&sa.push(`SIGIO`,`SIGPOLL`,`SIGPWR`,`SIGSTKFLT`,`SIGUNUSED`);var Interceptor=class{constructor(){this.callbacks=new Set,this.exited=!1,this.exit=e=>{if(!this.exited){this.exited=!0;for(let e of this.callbacks)e();e&&(oa&&e!==`SIGINT`&&e!==`SIGTERM`&&e!==`SIGKILL`?N.kill(N.pid,`SIGTERM`):N.kill(N.pid,e))}},this.hook=()=>{N.once(`exit`,()=>this.exit());for(let e of sa)try{N.once(e,()=>this.exit(e))}catch{}},this.register=e=>(this.callbacks.add(e),()=>{this.callbacks.delete(e)}),this.hook()}};const ca=new Interceptor().register,la={store:{},create:e=>{let t=`000000${Math.floor(Math.random()*16777215).toString(16)}`.slice(-6);return`${e}${`.tmp-${Date.now().toString().slice(-10)}${t}`}`},get:(e,t,n=!0)=>{let r=la.truncate(t(e));if(r in la.store)return la.get(e,t,n);la.store[r]=n;let disposer=()=>delete la.store[r];return[r,disposer]},purge:e=>{la.store[e]&&(delete la.store[e],$i.attempt.unlink(e))},purgeSync:e=>{la.store[e]&&(delete la.store[e],$i.attempt.unlinkSync(e))},purgeSyncAll:()=>{for(let e in la.store)la.purgeSync(e)},truncate:e=>{let t=A.basename(e);if(t.length<=128)return e;let n=/^(\.?)(.*?)((?:\.[^.]+)?(?:\.tmp-\d{10}[a-f0-9]{6})?)$/.exec(t);if(!n)return e;let r=t.length-128;return`${e.slice(0,-t.length)}${n[1]}${n[2].slice(0,-r)}${n[3]}`}};ca(la.purgeSyncAll);function writeFileSync$1(e,t,n=ea){if(ia(n))return writeFileSync$1(e,t,{encoding:n});let r=Date.now()+((n.timeout??1e3)||-1),i=null,a=null,s=null;try{let c=$i.attempt.realpathSync(e),l=!!c;e=c||e,[a,i]=la.get(e,n.tmpCreate||la.create,n.tmpPurge!==!1);let u=ra&&isUndefined(n.chown),f=isUndefined(n.mode);if(l&&(u||f)){let t=$i.attempt.statSync(e);t&&(n={...n},u&&(n.chown={uid:t.uid,gid:t.gid}),f&&(n.mode=t.mode))}if(!l){let t=A.dirname(e);$i.attempt.mkdirSync(t,{mode:511,recursive:!0})}s=$i.retry.openSync(r)(a,`w`,n.mode||438),n.tmpCreated&&n.tmpCreated(a),ia(t)?$i.retry.writeSync(r)(s,t,0,n.encoding||`utf8`):isUndefined(t)||$i.retry.writeSync(r)(s,t,0,t.length,0),n.fsync!==!1&&(n.fsyncWait===!1?$i.attempt.fsync(s):$i.retry.fsyncSync(r)(s)),$i.retry.closeSync(r)(s),s=null,n.chown&&(n.chown.uid!==ta||n.chown.gid!==na)&&$i.attempt.chownSync(a,n.chown.uid,n.chown.gid),n.mode&&n.mode!==438&&$i.attempt.chmodSync(a,n.mode);try{$i.retry.renameSync(r)(a,e)}catch(t){if(!isException(t)||t.code!==`ENAMETOOLONG`)throw t;$i.retry.renameSync(r)(a,la.truncate(e))}i(),a=null}finally{s&&$i.attempt.closeSync(s),a&&la.purge(a)}}t(writeFileSync$1,`writeFileSync`);var ua=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.regexpCode=e.getEsmExportName=e.getProperty=e.safeStringify=e.stringify=e.strConcat=e.addCodeArg=e.str=e._=e.nil=e._Code=e.Name=e.IDENTIFIER=e._CodeOrName=void 0;var _CodeOrName=class{};e._CodeOrName=_CodeOrName,e.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var Name=class extends _CodeOrName{constructor(t){if(super(),!e.IDENTIFIER.test(t))throw Error(`CodeGen: name must be a valid identifier`);this.str=t}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};e.Name=Name;var _Code=class extends _CodeOrName{constructor(e){super(),this._items=typeof e==`string`?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return e===``||e===`""`}get str(){return this._str??=this._items.reduce((e,t)=>`${e}${t}`,``)}get names(){return this._names??=this._items.reduce((e,t)=>(t instanceof Name&&(e[t.str]=(e[t.str]||0)+1),e),{})}};e._Code=_Code,e.nil=new _Code(``);function _(e,...t){let n=[e[0]],r=0;for(;r<t.length;)addCodeArg(n,t[r]),n.push(e[++r]);return new _Code(n)}e._=_;let t=new _Code(`+`);function str(e,...n){let r=[safeStringify(e[0])],i=0;for(;i<n.length;)r.push(t),addCodeArg(r,n[i]),r.push(t,safeStringify(e[++i]));return optimize(r),new _Code(r)}e.str=str;function addCodeArg(e,t){t instanceof _Code?e.push(...t._items):t instanceof Name?e.push(t):e.push(interpolate(t))}e.addCodeArg=addCodeArg;function optimize(e){let n=1;for(;n<e.length-1;){if(e[n]===t){let t=mergeExprItems(e[n-1],e[n+1]);if(t!==void 0){e.splice(n-1,3,t);continue}e[n++]=`+`}n++}}function mergeExprItems(e,t){if(t===`""`)return e;if(e===`""`)return t;if(typeof e==`string`)return t instanceof Name||e[e.length-1]!==`"`?void 0:typeof t==`string`?t[0]===`"`?e.slice(0,-1)+t.slice(1):void 0:`${e.slice(0,-1)}${t}"`;if(typeof t==`string`&&t[0]===`"`&&!(e instanceof Name))return`"${e}${t.slice(1)}`}function strConcat(e,t){return t.emptyStr()?e:e.emptyStr()?t:str`${e}${t}`}e.strConcat=strConcat;function interpolate(e){return typeof e==`number`||typeof e==`boolean`||e===null?e:safeStringify(Array.isArray(e)?e.join(`,`):e)}function stringify(e){return new _Code(safeStringify(e))}e.stringify=stringify;function safeStringify(e){return JSON.stringify(e).replace(/\u2028/g,`\\u2028`).replace(/\u2029/g,`\\u2029`)}e.safeStringify=safeStringify;function getProperty(t){return typeof t==`string`&&e.IDENTIFIER.test(t)?new _Code(`.${t}`):_`[${t}]`}e.getProperty=getProperty;function getEsmExportName(t){if(typeof t==`string`&&e.IDENTIFIER.test(t))return new _Code(`${t}`);throw Error(`CodeGen: invalid export name: ${t}, use explicit $id name mapping`)}e.getEsmExportName=getEsmExportName;function regexpCode(e){return new _Code(e.toString())}e.regexpCode=regexpCode})),da=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.ValueScope=e.ValueScopeName=e.Scope=e.varKinds=e.UsedValueState=void 0;let t=ua();var ValueError=class extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`),this.value=e.value}},n;(function(e){e[e.Started=0]=`Started`,e[e.Completed=1]=`Completed`})(n||(e.UsedValueState=n={})),e.varKinds={const:new t.Name(`const`),let:new t.Name(`let`),var:new t.Name(`var`)};var Scope=class{constructor({prefixes:e,parent:t}={}){this._names={},this._prefixes=e,this._parent=t}toName(e){return e instanceof t.Name?e:this.name(e)}name(e){return new t.Name(this._newName(e))}_newName(e){let t=this._names[e]||this._nameGroup(e);return`${e}${t.index++}`}_nameGroup(e){if((this._parent?._prefixes)?.has(e)||this._prefixes&&!this._prefixes.has(e))throw Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}};e.Scope=Scope;var ValueScopeName=class extends t.Name{constructor(e,t){super(t),this.prefix=e}setValue(e,{property:n,itemIndex:r}){this.value=e,this.scopePath=(0,t._)`.${new t.Name(n)}[${r}]`}};e.ValueScopeName=ValueScopeName;let r=(0,t._)`\n`;var ValueScope=class extends Scope{constructor(e){super(e),this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?r:t.nil}}get(){return this._scope}name(e){return new ValueScopeName(e,this._newName(e))}value(e,t){if(t.ref===void 0)throw Error(`CodeGen: ref must be passed in value`);let n=this.toName(e),{prefix:r}=n,i=t.key??t.ref,a=this._values[r];if(a){let e=a.get(i);if(e)return e}else a=this._values[r]=new Map;a.set(i,n);let s=this._scope[r]||(this._scope[r]=[]),c=s.length;return s[c]=t.ref,n.setValue(t,{property:r,itemIndex:c}),n}getValue(e,t){let n=this._values[e];if(n)return n.get(t)}scopeRefs(e,n=this._values){return this._reduceValues(n,n=>{if(n.scopePath===void 0)throw Error(`CodeGen: name "${n}" has no value`);return(0,t._)`${e}${n.scopePath}`})}scopeCode(e=this._values,t,n){return this._reduceValues(e,e=>{if(e.value===void 0)throw Error(`CodeGen: name "${e}" has no value`);return e.value.code},t,n)}_reduceValues(r,i,a={},s){let c=t.nil;for(let l in r){let u=r[l];if(!u)continue;let f=a[l]=a[l]||new Map;u.forEach(r=>{if(f.has(r))return;f.set(r,n.Started);let a=i(r);if(a){let n=this.opts.es5?e.varKinds.var:e.varKinds.const;c=(0,t._)`${c}${n} ${r} = ${a};${this.opts._n}`}else if(a=s?.(r))c=(0,t._)`${c}${a}${this.opts._n}`;else throw new ValueError(r);f.set(r,n.Completed)})}return c}};e.ValueScope=ValueScope})),R=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.or=e.and=e.not=e.CodeGen=e.operators=e.varKinds=e.ValueScopeName=e.ValueScope=e.Scope=e.Name=e.regexpCode=e.stringify=e.getProperty=e.nil=e.strConcat=e.str=e._=void 0;let t=ua(),n=da();var r=ua();Object.defineProperty(e,"_",{enumerable:!0,get:function(){return r._}}),Object.defineProperty(e,"str",{enumerable:!0,get:function(){return r.str}}),Object.defineProperty(e,"strConcat",{enumerable:!0,get:function(){return r.strConcat}}),Object.defineProperty(e,"nil",{enumerable:!0,get:function(){return r.nil}}),Object.defineProperty(e,"getProperty",{enumerable:!0,get:function(){return r.getProperty}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return r.stringify}}),Object.defineProperty(e,"regexpCode",{enumerable:!0,get:function(){return r.regexpCode}}),Object.defineProperty(e,"Name",{enumerable:!0,get:function(){return r.Name}});var i=da();Object.defineProperty(e,"Scope",{enumerable:!0,get:function(){return i.Scope}}),Object.defineProperty(e,"ValueScope",{enumerable:!0,get:function(){return i.ValueScope}}),Object.defineProperty(e,"ValueScopeName",{enumerable:!0,get:function(){return i.ValueScopeName}}),Object.defineProperty(e,"varKinds",{enumerable:!0,get:function(){return i.varKinds}}),e.operators={GT:new t._Code(`>`),GTE:new t._Code(`>=`),LT:new t._Code(`<`),LTE:new t._Code(`<=`),EQ:new t._Code(`===`),NEQ:new t._Code(`!==`),NOT:new t._Code(`!`),OR:new t._Code(`||`),AND:new t._Code(`&&`),ADD:new t._Code(`+`)};var Node=class{optimizeNodes(){return this}optimizeNames(e,t){return this}},Def=class extends Node{constructor(e,t,n){super(),this.varKind=e,this.name=t,this.rhs=n}render({es5:e,_n:t}){let r=e?n.varKinds.var:this.varKind,i=this.rhs===void 0?``:` = ${this.rhs}`;return`${r} ${this.name}${i};`+t}optimizeNames(e,t){if(e[this.name.str])return this.rhs&&=optimizeExpr(this.rhs,e,t),this}get names(){return this.rhs instanceof t._CodeOrName?this.rhs.names:{}}},Assign=class extends Node{constructor(e,t,n){super(),this.lhs=e,this.rhs=t,this.sideEffects=n}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,n){if(!(this.lhs instanceof t.Name&&!e[this.lhs.str]&&!this.sideEffects))return this.rhs=optimizeExpr(this.rhs,e,n),this}get names(){return addExprNames(this.lhs instanceof t.Name?{}:{...this.lhs.names},this.rhs)}},AssignOp=class extends Assign{constructor(e,t,n,r){super(e,n,r),this.op=t}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}},Label=class extends Node{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}},Break=class extends Node{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:``};`+e}},Throw=class extends Node{constructor(e){super(),this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}},AnyCode=class extends Node{constructor(e){super(),this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,t){return this.code=optimizeExpr(this.code,e,t),this}get names(){return this.code instanceof t._CodeOrName?this.code.names:{}}},ParentNode=class extends Node{constructor(e=[]){super(),this.nodes=e}render(e){return this.nodes.reduce((t,n)=>t+n.render(e),``)}optimizeNodes(){let{nodes:e}=this,t=e.length;for(;t--;){let n=e[t].optimizeNodes();Array.isArray(n)?e.splice(t,1,...n):n?e[t]=n:e.splice(t,1)}return e.length>0?this:void 0}optimizeNames(e,t){let{nodes:n}=this,r=n.length;for(;r--;){let i=n[r];i.optimizeNames(e,t)||(subtractNames(e,i.names),n.splice(r,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((e,t)=>addNames(e,t.names),{})}},BlockNode=class extends ParentNode{render(e){return`{`+e._n+super.render(e)+`}`+e._n}},Root=class extends ParentNode{},Else=class extends BlockNode{};Else.kind=`else`;var a=class If extends BlockNode{constructor(e,t){super(t),this.condition=e}render(e){let t=`if(${this.condition})`+super.render(e);return this.else&&(t+=`else `+this.else.render(e)),t}optimizeNodes(){super.optimizeNodes();let e=this.condition;if(e===!0)return this.nodes;let t=this.else;if(t){let e=t.optimizeNodes();t=this.else=Array.isArray(e)?new Else(e):e}if(t)return e===!1?t instanceof If?t:t.nodes:this.nodes.length?this:new If(not(e),t instanceof If?[t]:t.nodes);if(!(e===!1||!this.nodes.length))return this}optimizeNames(e,t){if(this.else=this.else?.optimizeNames(e,t),super.optimizeNames(e,t)||this.else)return this.condition=optimizeExpr(this.condition,e,t),this}get names(){let e=super.names;return addExprNames(e,this.condition),this.else&&addNames(e,this.else.names),e}};a.kind=`if`;var For=class extends BlockNode{};For.kind=`for`;var ForLoop=class extends For{constructor(e){super(),this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iteration=optimizeExpr(this.iteration,e,t),this}get names(){return addNames(super.names,this.iteration.names)}},ForRange=class extends For{constructor(e,t,n,r){super(),this.varKind=e,this.name=t,this.from=n,this.to=r}render(e){let t=e.es5?n.varKinds.var:this.varKind,{name:r,from:i,to:a}=this;return`for(${t} ${r}=${i}; ${r}<${a}; ${r}++)`+super.render(e)}get names(){return addExprNames(addExprNames(super.names,this.from),this.to)}},ForIter=class extends For{constructor(e,t,n,r){super(),this.loop=e,this.varKind=t,this.name=n,this.iterable=r}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iterable=optimizeExpr(this.iterable,e,t),this}get names(){return addNames(super.names,this.iterable.names)}},Func=class extends BlockNode{constructor(e,t,n){super(),this.name=e,this.args=t,this.async=n}render(e){return`${this.async?`async `:``}function ${this.name}(${this.args})`+super.render(e)}};Func.kind=`func`;var Return=class extends ParentNode{render(e){return`return `+super.render(e)}};Return.kind=`return`;var Try=class extends BlockNode{render(e){let t=`try`+super.render(e);return this.catch&&(t+=this.catch.render(e)),this.finally&&(t+=this.finally.render(e)),t}optimizeNodes(){var e,t;return super.optimizeNodes(),(e=this.catch)==null||e.optimizeNodes(),(t=this.finally)==null||t.optimizeNodes(),this}optimizeNames(e,t){var n,r;return super.optimizeNames(e,t),(n=this.catch)==null||n.optimizeNames(e,t),(r=this.finally)==null||r.optimizeNames(e,t),this}get names(){let e=super.names;return this.catch&&addNames(e,this.catch.names),this.finally&&addNames(e,this.finally.names),e}},Catch=class extends BlockNode{constructor(e){super(),this.error=e}render(e){return`catch(${this.error})`+super.render(e)}};Catch.kind=`catch`;var Finally=class extends BlockNode{render(e){return`finally`+super.render(e)}};Finally.kind=`finally`;var CodeGen=class{constructor(e,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...t,_n:t.lines?`
|
|
167
|
+
`:``},this._extScope=e,this._scope=new n.Scope({parent:e}),this._nodes=[new Root]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,t){let n=this._extScope.value(e,t);return(this._values[n.prefix]||(this._values[n.prefix]=new Set)).add(n),n}getScopeValue(e,t){return this._extScope.getValue(e,t)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,t,n,r){let i=this._scope.toName(t);return n!==void 0&&r&&(this._constants[i.str]=n),this._leafNode(new Def(e,i,n)),i}const(e,t,r){return this._def(n.varKinds.const,e,t,r)}let(e,t,r){return this._def(n.varKinds.let,e,t,r)}var(e,t,r){return this._def(n.varKinds.var,e,t,r)}assign(e,t,n){return this._leafNode(new Assign(e,t,n))}add(t,n){return this._leafNode(new AssignOp(t,e.operators.ADD,n))}code(e){return typeof e==`function`?e():e!==t.nil&&this._leafNode(new AnyCode(e)),this}object(...e){let n=[`{`];for(let[r,i]of e)n.length>1&&n.push(`,`),n.push(r),(r!==i||this.opts.es5)&&(n.push(`:`),(0,t.addCodeArg)(n,i));return n.push(`}`),new t._Code(n)}if(e,t,n){if(this._blockNode(new a(e)),t&&n)this.code(t).else().code(n).endIf();else if(t)this.code(t).endIf();else if(n)throw Error(`CodeGen: "else" body without "then" body`);return this}elseIf(e){return this._elseNode(new a(e))}else(){return this._elseNode(new Else)}endIf(){return this._endBlockNode(a,Else)}_for(e,t){return this._blockNode(e),t&&this.code(t).endFor(),this}for(e,t){return this._for(new ForLoop(e),t)}forRange(e,t,r,i,a=this.opts.es5?n.varKinds.var:n.varKinds.let){let s=this._scope.toName(e);return this._for(new ForRange(a,s,t,r),()=>i(s))}forOf(e,r,i,a=n.varKinds.const){let s=this._scope.toName(e);if(this.opts.es5){let e=r instanceof t.Name?r:this.var(`_arr`,r);return this.forRange(`_i`,0,(0,t._)`${e}.length`,n=>{this.var(s,(0,t._)`${e}[${n}]`),i(s)})}return this._for(new ForIter(`of`,a,s,r),()=>i(s))}forIn(e,r,i,a=this.opts.es5?n.varKinds.var:n.varKinds.const){if(this.opts.ownProperties)return this.forOf(e,(0,t._)`Object.keys(${r})`,i);let s=this._scope.toName(e);return this._for(new ForIter(`in`,a,s,r),()=>i(s))}endFor(){return this._endBlockNode(For)}label(e){return this._leafNode(new Label(e))}break(e){return this._leafNode(new Break(e))}return(e){let t=new Return;if(this._blockNode(t),this.code(e),t.nodes.length!==1)throw Error(`CodeGen: "return" should have one node`);return this._endBlockNode(Return)}try(e,t,n){if(!t&&!n)throw Error(`CodeGen: "try" without "catch" and "finally"`);let r=new Try;if(this._blockNode(r),this.code(e),t){let e=this.name(`e`);this._currNode=r.catch=new Catch(e),t(e)}return n&&(this._currNode=r.finally=new Finally,this.code(n)),this._endBlockNode(Catch,Finally)}throw(e){return this._leafNode(new Throw(e))}block(e,t){return this._blockStarts.push(this._nodes.length),e&&this.code(e).endBlock(t),this}endBlock(e){let t=this._blockStarts.pop();if(t===void 0)throw Error(`CodeGen: not in self-balancing block`);let n=this._nodes.length-t;if(n<0||e!==void 0&&n!==e)throw Error(`CodeGen: wrong number of nodes: ${n} vs ${e} expected`);return this._nodes.length=t,this}func(e,n=t.nil,r,i){return this._blockNode(new Func(e,n,r)),i&&this.code(i).endFunc(),this}endFunc(){return this._endBlockNode(Func)}optimize(e=1){for(;e-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,t){let n=this._currNode;if(n instanceof e||t&&n instanceof t)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${t?`${e.kind}/${t.kind}`:e.kind}"`)}_elseNode(e){let t=this._currNode;if(!(t instanceof a))throw Error(`CodeGen: "else" without "if"`);return this._currNode=t.else=e,this}get _root(){return this._nodes[0]}get _currNode(){let e=this._nodes;return e[e.length-1]}set _currNode(e){let t=this._nodes;t[t.length-1]=e}};e.CodeGen=CodeGen;function addNames(e,t){for(let n in t)e[n]=(e[n]||0)+(t[n]||0);return e}function addExprNames(e,n){return n instanceof t._CodeOrName?addNames(e,n.names):e}function optimizeExpr(e,n,r){if(e instanceof t.Name)return replaceName(e);if(!canOptimize(e))return e;return new t._Code(e._items.reduce((e,n)=>(n instanceof t.Name&&(n=replaceName(n)),n instanceof t._Code?e.push(...n._items):e.push(n),e),[]));function replaceName(e){let t=r[e.str];return t===void 0||n[e.str]!==1?e:(delete n[e.str],t)}function canOptimize(e){return e instanceof t._Code&&e._items.some(e=>e instanceof t.Name&&n[e.str]===1&&r[e.str]!==void 0)}}function subtractNames(e,t){for(let n in t)e[n]=(e[n]||0)-(t[n]||0)}function not(e){return typeof e==`boolean`||typeof e==`number`||e===null?!e:(0,t._)`!${par(e)}`}e.not=not;let s=mappend(e.operators.AND);function and(...e){return e.reduce(s)}e.and=and;let c=mappend(e.operators.OR);function or(...e){return e.reduce(c)}e.or=or;function mappend(e){return(n,r)=>n===t.nil?r:r===t.nil?n:(0,t._)`${par(n)} ${e} ${par(r)}`}function par(e){return e instanceof t.Name?e:(0,t._)`(${e})`}})),z=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.checkStrictMode=e.getErrorPath=e.Type=e.useFunc=e.setEvaluated=e.evaluatedPropsToName=e.mergeEvaluated=e.eachItem=e.unescapeJsonPointer=e.escapeJsonPointer=e.escapeFragment=e.unescapeFragment=e.schemaRefOrVal=e.schemaHasRulesButRef=e.schemaHasRules=e.checkUnknownRules=e.alwaysValidSchema=e.toHash=void 0;let t=R(),n=ua();function toHash(e){let t={};for(let n of e)t[n]=!0;return t}e.toHash=toHash;function alwaysValidSchema(e,t){return typeof t==`boolean`?t:Object.keys(t).length===0?!0:(checkUnknownRules(e,t),!schemaHasRules(t,e.self.RULES.all))}e.alwaysValidSchema=alwaysValidSchema;function checkUnknownRules(e,t=e.schema){let{opts:n,self:r}=e;if(!n.strictSchema||typeof t==`boolean`)return;let i=r.RULES.keywords;for(let n in t)i[n]||checkStrictMode(e,`unknown keyword: "${n}"`)}e.checkUnknownRules=checkUnknownRules;function schemaHasRules(e,t){if(typeof e==`boolean`)return!e;for(let n in e)if(t[n])return!0;return!1}e.schemaHasRules=schemaHasRules;function schemaHasRulesButRef(e,t){if(typeof e==`boolean`)return!e;for(let n in e)if(n!==`$ref`&&t.all[n])return!0;return!1}e.schemaHasRulesButRef=schemaHasRulesButRef;function schemaRefOrVal({topSchemaRef:e,schemaPath:n},r,i,a){if(!a){if(typeof r==`number`||typeof r==`boolean`)return r;if(typeof r==`string`)return(0,t._)`${r}`}return(0,t._)`${e}${n}${(0,t.getProperty)(i)}`}e.schemaRefOrVal=schemaRefOrVal;function unescapeFragment(e){return unescapeJsonPointer(decodeURIComponent(e))}e.unescapeFragment=unescapeFragment;function escapeFragment(e){return encodeURIComponent(escapeJsonPointer(e))}e.escapeFragment=escapeFragment;function escapeJsonPointer(e){return typeof e==`number`?`${e}`:e.replace(/~/g,`~0`).replace(/\//g,`~1`)}e.escapeJsonPointer=escapeJsonPointer;function unescapeJsonPointer(e){return e.replace(/~1/g,`/`).replace(/~0/g,`~`)}e.unescapeJsonPointer=unescapeJsonPointer;function eachItem(e,t){if(Array.isArray(e))for(let n of e)t(n);else t(e)}e.eachItem=eachItem;function makeMergeEvaluated({mergeNames:e,mergeToName:n,mergeValues:r,resultToName:i}){return(a,s,c,l)=>{let u=c===void 0?s:c instanceof t.Name?(s instanceof t.Name?e(a,s,c):n(a,s,c),c):s instanceof t.Name?(n(a,c,s),s):r(s,c);return l===t.Name&&!(u instanceof t.Name)?i(a,u):u}}e.mergeEvaluated={props:makeMergeEvaluated({mergeNames:(e,n,r)=>e.if((0,t._)`${r} !== true && ${n} !== undefined`,()=>{e.if((0,t._)`${n} === true`,()=>e.assign(r,!0),()=>e.assign(r,(0,t._)`${r} || {}`).code((0,t._)`Object.assign(${r}, ${n})`))}),mergeToName:(e,n,r)=>e.if((0,t._)`${r} !== true`,()=>{n===!0?e.assign(r,!0):(e.assign(r,(0,t._)`${r} || {}`),setEvaluated(e,r,n))}),mergeValues:(e,t)=>e===!0?!0:{...e,...t},resultToName:evaluatedPropsToName}),items:makeMergeEvaluated({mergeNames:(e,n,r)=>e.if((0,t._)`${r} !== true && ${n} !== undefined`,()=>e.assign(r,(0,t._)`${n} === true ? true : ${r} > ${n} ? ${r} : ${n}`)),mergeToName:(e,n,r)=>e.if((0,t._)`${r} !== true`,()=>e.assign(r,n===!0?!0:(0,t._)`${r} > ${n} ? ${r} : ${n}`)),mergeValues:(e,t)=>e===!0?!0:Math.max(e,t),resultToName:(e,t)=>e.var(`items`,t)})};function evaluatedPropsToName(e,n){if(n===!0)return e.var(`props`,!0);let r=e.var(`props`,(0,t._)`{}`);return n!==void 0&&setEvaluated(e,r,n),r}e.evaluatedPropsToName=evaluatedPropsToName;function setEvaluated(e,n,r){Object.keys(r).forEach(r=>e.assign((0,t._)`${n}${(0,t.getProperty)(r)}`,!0))}e.setEvaluated=setEvaluated;let r={};function useFunc(e,t){return e.scopeValue(`func`,{ref:t,code:r[t.code]||(r[t.code]=new n._Code(t.code))})}e.useFunc=useFunc;var i;(function(e){e[e.Num=0]=`Num`,e[e.Str=1]=`Str`})(i||(e.Type=i={}));function getErrorPath(e,n,r){if(e instanceof t.Name){let a=n===i.Num;return r?a?(0,t._)`"[" + ${e} + "]"`:(0,t._)`"['" + ${e} + "']"`:a?(0,t._)`"/" + ${e}`:(0,t._)`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,t.getProperty)(e).toString():`/`+escapeJsonPointer(e)}e.getErrorPath=getErrorPath;function checkStrictMode(e,t,n=e.opts.strictSchema){if(n){if(t=`strict mode: ${t}`,n===!0)throw Error(t);e.self.logger.warn(t)}}e.checkStrictMode=checkStrictMode})),fa=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R();e.default={data:new t.Name(`data`),valCxt:new t.Name(`valCxt`),instancePath:new t.Name(`instancePath`),parentData:new t.Name(`parentData`),parentDataProperty:new t.Name(`parentDataProperty`),rootData:new t.Name(`rootData`),dynamicAnchors:new t.Name(`dynamicAnchors`),vErrors:new t.Name(`vErrors`),errors:new t.Name(`errors`),this:new t.Name(`this`),self:new t.Name(`self`),scope:new t.Name(`scope`),json:new t.Name(`json`),jsonPos:new t.Name(`jsonPos`),jsonLen:new t.Name(`jsonLen`),jsonPart:new t.Name(`jsonPart`)}})),pa=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.extendErrors=e.resetErrorsCount=e.reportExtraError=e.reportError=e.keyword$DataError=e.keywordError=void 0;let t=R(),n=z(),r=fa();e.keywordError={message:({keyword:e})=>(0,t.str)`must pass "${e}" keyword validation`},e.keyword$DataError={message:({keyword:e,schemaType:n})=>n?(0,t.str)`"${e}" keyword must be ${n} ($data)`:(0,t.str)`"${e}" keyword is invalid ($data)`};function reportError(n,r=e.keywordError,i,a){let{it:s}=n,{gen:c,compositeRule:l,allErrors:u}=s,f=errorObjectCode(n,r,i);a??(l||u)?addError(c,f):returnErrors(s,(0,t._)`[${f}]`)}e.reportError=reportError;function reportExtraError(t,n=e.keywordError,i){let{it:a}=t,{gen:s,compositeRule:c,allErrors:l}=a;addError(s,errorObjectCode(t,n,i)),c||l||returnErrors(a,r.default.vErrors)}e.reportExtraError=reportExtraError;function resetErrorsCount(e,n){e.assign(r.default.errors,n),e.if((0,t._)`${r.default.vErrors} !== null`,()=>e.if(n,()=>e.assign((0,t._)`${r.default.vErrors}.length`,n),()=>e.assign(r.default.vErrors,null)))}e.resetErrorsCount=resetErrorsCount;function extendErrors({gen:e,keyword:n,schemaValue:i,data:a,errsCount:s,it:c}){if(s===void 0)throw Error(`ajv implementation error`);let l=e.name(`err`);e.forRange(`i`,s,r.default.errors,s=>{e.const(l,(0,t._)`${r.default.vErrors}[${s}]`),e.if((0,t._)`${l}.instancePath === undefined`,()=>e.assign((0,t._)`${l}.instancePath`,(0,t.strConcat)(r.default.instancePath,c.errorPath))),e.assign((0,t._)`${l}.schemaPath`,(0,t.str)`${c.errSchemaPath}/${n}`),c.opts.verbose&&(e.assign((0,t._)`${l}.schema`,i),e.assign((0,t._)`${l}.data`,a))})}e.extendErrors=extendErrors;function addError(e,n){let i=e.const(`err`,n);e.if((0,t._)`${r.default.vErrors} === null`,()=>e.assign(r.default.vErrors,(0,t._)`[${i}]`),(0,t._)`${r.default.vErrors}.push(${i})`),e.code((0,t._)`${r.default.errors}++`)}function returnErrors(e,n){let{gen:r,validateName:i,schemaEnv:a}=e;a.$async?r.throw((0,t._)`new ${e.ValidationError}(${n})`):(r.assign((0,t._)`${i}.errors`,n),r.return(!1))}let i={keyword:new t.Name(`keyword`),schemaPath:new t.Name(`schemaPath`),params:new t.Name(`params`),propertyName:new t.Name(`propertyName`),message:new t.Name(`message`),schema:new t.Name(`schema`),parentSchema:new t.Name(`parentSchema`)};function errorObjectCode(e,n,r){let{createErrors:i}=e.it;return i===!1?(0,t._)`{}`:errorObject(e,n,r)}function errorObject(e,t,n={}){let{gen:r,it:i}=e,a=[errorInstancePath(i,n),errorSchemaPath(e,n)];return extraErrorProps(e,t,a),r.object(...a)}function errorInstancePath({errorPath:e},{instancePath:i}){let a=i?(0,t.str)`${e}${(0,n.getErrorPath)(i,n.Type.Str)}`:e;return[r.default.instancePath,(0,t.strConcat)(r.default.instancePath,a)]}function errorSchemaPath({keyword:e,it:{errSchemaPath:r}},{schemaPath:a,parentSchema:s}){let c=s?r:(0,t.str)`${r}/${e}`;return a&&(c=(0,t.str)`${c}${(0,n.getErrorPath)(a,n.Type.Str)}`),[i.schemaPath,c]}function extraErrorProps(e,{params:n,message:a},s){let{keyword:c,data:l,schemaValue:u,it:f}=e,{opts:p,propertyName:m,topSchemaRef:h,schemaPath:g}=f;s.push([i.keyword,c],[i.params,typeof n==`function`?n(e):n||(0,t._)`{}`]),p.messages&&s.push([i.message,typeof a==`function`?a(e):a]),p.verbose&&s.push([i.schema,u],[i.parentSchema,(0,t._)`${h}${g}`],[r.default.data,l]),m&&s.push([i.propertyName,m])}})),ma=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.boolOrEmptySchema=e.topBoolOrEmptySchema=void 0;let t=pa(),n=R(),r=fa(),i={message:`boolean schema is false`};function topBoolOrEmptySchema(e){let{gen:t,schema:i,validateName:a}=e;i===!1?falseSchemaError(e,!1):typeof i==`object`&&i.$async===!0?t.return(r.default.data):(t.assign((0,n._)`${a}.errors`,null),t.return(!0))}e.topBoolOrEmptySchema=topBoolOrEmptySchema;function boolOrEmptySchema(e,t){let{gen:n,schema:r}=e;r===!1?(n.var(t,!1),falseSchemaError(e)):n.var(t,!0)}e.boolOrEmptySchema=boolOrEmptySchema;function falseSchemaError(e,n){let{gen:r,data:a}=e,s={gen:r,keyword:`false schema`,data:a,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};(0,t.reportError)(s,i,void 0,n)}})),ha=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.getRules=e.isJSONType=void 0;let t=new Set([`string`,`number`,`integer`,`boolean`,`null`,`object`,`array`]);function isJSONType(e){return typeof e==`string`&&t.has(e)}e.isJSONType=isJSONType;function getRules(){let e={number:{type:`number`,rules:[]},string:{type:`string`,rules:[]},array:{type:`array`,rules:[]},object:{type:`object`,rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}e.getRules=getRules})),ga=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.shouldUseRule=e.shouldUseGroup=e.schemaHasRulesForType=void 0;function schemaHasRulesForType({schema:e,self:t},n){let r=t.RULES.types[n];return r&&r!==!0&&shouldUseGroup(e,r)}e.schemaHasRulesForType=schemaHasRulesForType;function shouldUseGroup(e,t){return t.rules.some(t=>shouldUseRule(e,t))}e.shouldUseGroup=shouldUseGroup;function shouldUseRule(e,t){return e[t.keyword]!==void 0||t.definition.implements?.some(t=>e[t]!==void 0)}e.shouldUseRule=shouldUseRule})),_a=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.reportTypeError=e.checkDataTypes=e.checkDataType=e.coerceAndCheckDataType=e.getJSONTypes=e.getSchemaTypes=e.DataType=void 0;let t=ha(),n=ga(),r=pa(),i=R(),a=z();var s;(function(e){e[e.Correct=0]=`Correct`,e[e.Wrong=1]=`Wrong`})(s||(e.DataType=s={}));function getSchemaTypes(e){let t=getJSONTypes(e.type);if(t.includes(`null`)){if(e.nullable===!1)throw Error(`type: null contradicts nullable: false`)}else{if(!t.length&&e.nullable!==void 0)throw Error(`"nullable" cannot be used without "type"`);e.nullable===!0&&t.push(`null`)}return t}e.getSchemaTypes=getSchemaTypes;function getJSONTypes(e){let n=Array.isArray(e)?e:e?[e]:[];if(n.every(t.isJSONType))return n;throw Error(`type must be JSONType or JSONType[]: `+n.join(`,`))}e.getJSONTypes=getJSONTypes;function coerceAndCheckDataType(e,t){let{gen:r,data:i,opts:a}=e,c=coerceToTypes(t,a.coerceTypes),l=t.length>0&&!(c.length===0&&t.length===1&&(0,n.schemaHasRulesForType)(e,t[0]));if(l){let n=checkDataTypes(t,i,a.strictNumbers,s.Wrong);r.if(n,()=>{c.length?coerceData(e,t,c):reportTypeError(e)})}return l}e.coerceAndCheckDataType=coerceAndCheckDataType;let c=new Set([`string`,`number`,`integer`,`boolean`,`null`]);function coerceToTypes(e,t){return t?e.filter(e=>c.has(e)||t===`array`&&e===`array`):[]}function coerceData(e,t,n){let{gen:r,data:a,opts:s}=e,l=r.let(`dataType`,(0,i._)`typeof ${a}`),u=r.let(`coerced`,(0,i._)`undefined`);s.coerceTypes===`array`&&r.if((0,i._)`${l} == 'object' && Array.isArray(${a}) && ${a}.length == 1`,()=>r.assign(a,(0,i._)`${a}[0]`).assign(l,(0,i._)`typeof ${a}`).if(checkDataTypes(t,a,s.strictNumbers),()=>r.assign(u,a))),r.if((0,i._)`${u} !== undefined`);for(let e of n)(c.has(e)||e===`array`&&s.coerceTypes===`array`)&&coerceSpecificType(e);r.else(),reportTypeError(e),r.endIf(),r.if((0,i._)`${u} !== undefined`,()=>{r.assign(a,u),assignParentData(e,u)});function coerceSpecificType(e){switch(e){case`string`:r.elseIf((0,i._)`${l} == "number" || ${l} == "boolean"`).assign(u,(0,i._)`"" + ${a}`).elseIf((0,i._)`${a} === null`).assign(u,(0,i._)`""`);return;case`number`:r.elseIf((0,i._)`${l} == "boolean" || ${a} === null
|
|
168
|
+
|| (${l} == "string" && ${a} && ${a} == +${a})`).assign(u,(0,i._)`+${a}`);return;case`integer`:r.elseIf((0,i._)`${l} === "boolean" || ${a} === null
|
|
169
|
+
|| (${l} === "string" && ${a} && ${a} == +${a} && !(${a} % 1))`).assign(u,(0,i._)`+${a}`);return;case`boolean`:r.elseIf((0,i._)`${a} === "false" || ${a} === 0 || ${a} === null`).assign(u,!1).elseIf((0,i._)`${a} === "true" || ${a} === 1`).assign(u,!0);return;case`null`:r.elseIf((0,i._)`${a} === "" || ${a} === 0 || ${a} === false`),r.assign(u,null);return;case`array`:r.elseIf((0,i._)`${l} === "string" || ${l} === "number"
|
|
170
|
+
|| ${l} === "boolean" || ${a} === null`).assign(u,(0,i._)`[${a}]`)}}}function assignParentData({gen:e,parentData:t,parentDataProperty:n},r){e.if((0,i._)`${t} !== undefined`,()=>e.assign((0,i._)`${t}[${n}]`,r))}function checkDataType(e,t,n,r=s.Correct){let a=r===s.Correct?i.operators.EQ:i.operators.NEQ,c;switch(e){case`null`:return(0,i._)`${t} ${a} null`;case`array`:c=(0,i._)`Array.isArray(${t})`;break;case`object`:c=(0,i._)`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case`integer`:c=numCond((0,i._)`!(${t} % 1) && !isNaN(${t})`);break;case`number`:c=numCond();break;default:return(0,i._)`typeof ${t} ${a} ${e}`}return r===s.Correct?c:(0,i.not)(c);function numCond(e=i.nil){return(0,i.and)((0,i._)`typeof ${t} == "number"`,e,n?(0,i._)`isFinite(${t})`:i.nil)}}e.checkDataType=checkDataType;function checkDataTypes(e,t,n,r){if(e.length===1)return checkDataType(e[0],t,n,r);let s,c=(0,a.toHash)(e);if(c.array&&c.object){let e=(0,i._)`typeof ${t} != "object"`;s=c.null?e:(0,i._)`!${t} || ${e}`,delete c.null,delete c.array,delete c.object}else s=i.nil;c.number&&delete c.integer;for(let e in c)s=(0,i.and)(s,checkDataType(e,t,n,r));return s}e.checkDataTypes=checkDataTypes;let l={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>typeof e==`string`?(0,i._)`{type: ${e}}`:(0,i._)`{type: ${t}}`};function reportTypeError(e){let t=getTypeErrorContext(e);(0,r.reportError)(t,l)}e.reportTypeError=reportTypeError;function getTypeErrorContext(e){let{gen:t,data:n,schema:r}=e,i=(0,a.schemaRefOrVal)(e,r,`type`);return{gen:t,keyword:`type`,data:n,schema:r.type,schemaCode:i,schemaValue:i,parentSchema:r,params:{},it:e}}})),va=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.assignDefaults=void 0;let t=R(),n=z();function assignDefaults(e,t){let{properties:n,items:r}=e.schema;if(t===`object`&&n)for(let t in n)assignDefault(e,t,n[t].default);else t===`array`&&Array.isArray(r)&&r.forEach((t,n)=>assignDefault(e,n,t.default))}e.assignDefaults=assignDefaults;function assignDefault(e,r,i){let{gen:a,compositeRule:s,data:c,opts:l}=e;if(i===void 0)return;let u=(0,t._)`${c}${(0,t.getProperty)(r)}`;if(s){(0,n.checkStrictMode)(e,`default is ignored for: ${u}`);return}let f=(0,t._)`${u} === undefined`;l.useDefaults===`empty`&&(f=(0,t._)`${f} || ${u} === null || ${u} === ""`),a.if(f,(0,t._)`${u} = ${(0,t.stringify)(i)}`)}})),ya=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.validateUnion=e.validateArray=e.usePattern=e.callValidateCode=e.schemaProperties=e.allSchemaProperties=e.noPropertyInData=e.propertyInData=e.isOwnProperty=e.hasPropFunc=e.reportMissingProp=e.checkMissingProp=e.checkReportMissingProp=void 0;let t=R(),n=z(),r=fa(),i=z();function checkReportMissingProp(e,n){let{gen:r,data:i,it:a}=e;r.if(noPropertyInData(r,i,n,a.opts.ownProperties),()=>{e.setParams({missingProperty:(0,t._)`${n}`},!0),e.error()})}e.checkReportMissingProp=checkReportMissingProp;function checkMissingProp({gen:e,data:n,it:{opts:r}},i,a){return(0,t.or)(...i.map(i=>(0,t.and)(noPropertyInData(e,n,i,r.ownProperties),(0,t._)`${a} = ${i}`)))}e.checkMissingProp=checkMissingProp;function reportMissingProp(e,t){e.setParams({missingProperty:t},!0),e.error()}e.reportMissingProp=reportMissingProp;function hasPropFunc(e){return e.scopeValue(`func`,{ref:Object.prototype.hasOwnProperty,code:(0,t._)`Object.prototype.hasOwnProperty`})}e.hasPropFunc=hasPropFunc;function isOwnProperty(e,n,r){return(0,t._)`${hasPropFunc(e)}.call(${n}, ${r})`}e.isOwnProperty=isOwnProperty;function propertyInData(e,n,r,i){let a=(0,t._)`${n}${(0,t.getProperty)(r)} !== undefined`;return i?(0,t._)`${a} && ${isOwnProperty(e,n,r)}`:a}e.propertyInData=propertyInData;function noPropertyInData(e,n,r,i){let a=(0,t._)`${n}${(0,t.getProperty)(r)} === undefined`;return i?(0,t.or)(a,(0,t.not)(isOwnProperty(e,n,r))):a}e.noPropertyInData=noPropertyInData;function allSchemaProperties(e){return e?Object.keys(e).filter(e=>e!==`__proto__`):[]}e.allSchemaProperties=allSchemaProperties;function schemaProperties(e,t){return allSchemaProperties(t).filter(r=>!(0,n.alwaysValidSchema)(e,t[r]))}e.schemaProperties=schemaProperties;function callValidateCode({schemaCode:e,data:n,it:{gen:i,topSchemaRef:a,schemaPath:s,errorPath:c},it:l},u,f,p){let m=p?(0,t._)`${e}, ${n}, ${a}${s}`:n,h=[[r.default.instancePath,(0,t.strConcat)(r.default.instancePath,c)],[r.default.parentData,l.parentData],[r.default.parentDataProperty,l.parentDataProperty],[r.default.rootData,r.default.rootData]];l.opts.dynamicRef&&h.push([r.default.dynamicAnchors,r.default.dynamicAnchors]);let g=(0,t._)`${m}, ${i.object(...h)}`;return f===t.nil?(0,t._)`${u}(${g})`:(0,t._)`${u}.call(${f}, ${g})`}e.callValidateCode=callValidateCode;let a=(0,t._)`new RegExp`;function usePattern({gen:e,it:{opts:n}},r){let s=n.unicodeRegExp?`u`:``,{regExp:c}=n.code,l=c(r,s);return e.scopeValue(`pattern`,{key:l.toString(),ref:l,code:(0,t._)`${c.code===`new RegExp`?a:(0,i.useFunc)(e,c)}(${r}, ${s})`})}e.usePattern=usePattern;function validateArray(e){let{gen:r,data:i,keyword:a,it:s}=e,c=r.name(`valid`);if(s.allErrors){let e=r.let(`valid`,!0);return validateItems(()=>r.assign(e,!1)),e}return r.var(c,!0),validateItems(()=>r.break()),c;function validateItems(s){let l=r.const(`len`,(0,t._)`${i}.length`);r.forRange(`i`,0,l,i=>{e.subschema({keyword:a,dataProp:i,dataPropType:n.Type.Num},c),r.if((0,t.not)(c),s)})}}e.validateArray=validateArray;function validateUnion(e){let{gen:r,schema:i,keyword:a,it:s}=e;if(!Array.isArray(i))throw Error(`ajv implementation error`);if(i.some(e=>(0,n.alwaysValidSchema)(s,e))&&!s.opts.unevaluated)return;let c=r.let(`valid`,!1),l=r.name(`_valid`);r.block(()=>i.forEach((n,i)=>{let s=e.subschema({keyword:a,schemaProp:i,compositeRule:!0},l);r.assign(c,(0,t._)`${c} || ${l}`),e.mergeValidEvaluated(s,l)||r.if((0,t.not)(c))})),e.result(c,()=>e.reset(),()=>e.error(!0))}e.validateUnion=validateUnion})),ba=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.validateKeywordUsage=e.validSchemaType=e.funcKeywordCode=e.macroKeywordCode=void 0;let t=R(),n=fa(),r=ya(),i=pa();function macroKeywordCode(e,n){let{gen:r,keyword:i,schema:a,parentSchema:s,it:c}=e,l=n.macro.call(c.self,a,s,c),u=useKeyword(r,i,l);c.opts.validateSchema!==!1&&c.self.validateSchema(l,!0);let f=r.name(`valid`);e.subschema({schema:l,schemaPath:t.nil,errSchemaPath:`${c.errSchemaPath}/${i}`,topSchemaRef:u,compositeRule:!0},f),e.pass(f,()=>e.error(!0))}e.macroKeywordCode=macroKeywordCode;function funcKeywordCode(e,i){let{gen:a,keyword:s,schema:c,parentSchema:l,$data:u,it:f}=e;checkAsyncKeyword(f,i);let p=useKeyword(a,s,!u&&i.compile?i.compile.call(f.self,c,l,f):i.validate),m=a.let(`valid`);e.block$data(m,validateKeyword),e.ok(i.valid??m);function validateKeyword(){if(i.errors===!1)assignValid(),i.modifying&&modifyData(e),reportErrs(()=>e.error());else{let t=i.async?validateAsync():validateSync();i.modifying&&modifyData(e),reportErrs(()=>addErrs(e,t))}}function validateAsync(){let e=a.let(`ruleErrs`,null);return a.try(()=>assignValid((0,t._)`await `),n=>a.assign(m,!1).if((0,t._)`${n} instanceof ${f.ValidationError}`,()=>a.assign(e,(0,t._)`${n}.errors`),()=>a.throw(n))),e}function validateSync(){let e=(0,t._)`${p}.errors`;return a.assign(e,null),assignValid(t.nil),e}function assignValid(s=i.async?(0,t._)`await `:t.nil){let c=f.opts.passContext?n.default.this:n.default.self,l=!(`compile`in i&&!u||i.schema===!1);a.assign(m,(0,t._)`${s}${(0,r.callValidateCode)(e,p,c,l)}`,i.modifying)}function reportErrs(e){a.if((0,t.not)(i.valid??m),e)}}e.funcKeywordCode=funcKeywordCode;function modifyData(e){let{gen:n,data:r,it:i}=e;n.if(i.parentData,()=>n.assign(r,(0,t._)`${i.parentData}[${i.parentDataProperty}]`))}function addErrs(e,r){let{gen:a}=e;a.if((0,t._)`Array.isArray(${r})`,()=>{a.assign(n.default.vErrors,(0,t._)`${n.default.vErrors} === null ? ${r} : ${n.default.vErrors}.concat(${r})`).assign(n.default.errors,(0,t._)`${n.default.vErrors}.length`),(0,i.extendErrors)(e)},()=>e.error())}function checkAsyncKeyword({schemaEnv:e},t){if(t.async&&!e.$async)throw Error(`async keyword in sync schema`)}function useKeyword(e,n,r){if(r===void 0)throw Error(`keyword "${n}" failed to compile`);return e.scopeValue(`keyword`,typeof r==`function`?{ref:r}:{ref:r,code:(0,t.stringify)(r)})}function validSchemaType(e,t,n=!1){return!t.length||t.some(t=>t===`array`?Array.isArray(e):t===`object`?e&&typeof e==`object`&&!Array.isArray(e):typeof e==t||n&&e===void 0)}e.validSchemaType=validSchemaType;function validateKeywordUsage({schema:e,opts:t,self:n,errSchemaPath:r},i,a){if(Array.isArray(i.keyword)?!i.keyword.includes(a):i.keyword!==a)throw Error(`ajv implementation error`);let s=i.dependencies;if(s?.some(t=>!Object.prototype.hasOwnProperty.call(e,t)))throw Error(`parent schema must have dependencies of ${a}: ${s.join(`,`)}`);if(i.validateSchema&&!i.validateSchema(e[a])){let e=`keyword "${a}" value is invalid at path "${r}": `+n.errorsText(i.validateSchema.errors);if(t.validateSchema===`log`)n.logger.error(e);else throw Error(e)}}e.validateKeywordUsage=validateKeywordUsage})),xa=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.extendSubschemaMode=e.extendSubschemaData=e.getSubschema=void 0;let t=R(),n=z();function getSubschema(e,{keyword:r,schemaProp:i,schema:a,schemaPath:s,errSchemaPath:c,topSchemaRef:l}){if(r!==void 0&&a!==void 0)throw Error(`both "keyword" and "schema" passed, only one allowed`);if(r!==void 0){let a=e.schema[r];return i===void 0?{schema:a,schemaPath:(0,t._)`${e.schemaPath}${(0,t.getProperty)(r)}`,errSchemaPath:`${e.errSchemaPath}/${r}`}:{schema:a[i],schemaPath:(0,t._)`${e.schemaPath}${(0,t.getProperty)(r)}${(0,t.getProperty)(i)}`,errSchemaPath:`${e.errSchemaPath}/${r}/${(0,n.escapeFragment)(i)}`}}if(a!==void 0){if(s===void 0||c===void 0||l===void 0)throw Error(`"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"`);return{schema:a,schemaPath:s,topSchemaRef:l,errSchemaPath:c}}throw Error(`either "keyword" or "schema" must be passed`)}e.getSubschema=getSubschema;function extendSubschemaData(e,r,{dataProp:i,dataPropType:a,data:s,dataTypes:c,propertyName:l}){if(s!==void 0&&i!==void 0)throw Error(`both "data" and "dataProp" passed, only one allowed`);let{gen:u}=r;if(i!==void 0){let{errorPath:s,dataPathArr:c,opts:l}=r;dataContextProps(u.let(`data`,(0,t._)`${r.data}${(0,t.getProperty)(i)}`,!0)),e.errorPath=(0,t.str)`${s}${(0,n.getErrorPath)(i,a,l.jsPropertySyntax)}`,e.parentDataProperty=(0,t._)`${i}`,e.dataPathArr=[...c,e.parentDataProperty]}s!==void 0&&(dataContextProps(s instanceof t.Name?s:u.let(`data`,s,!0)),l!==void 0&&(e.propertyName=l)),c&&(e.dataTypes=c);function dataContextProps(t){e.data=t,e.dataLevel=r.dataLevel+1,e.dataTypes=[],r.definedProperties=new Set,e.parentData=r.data,e.dataNames=[...r.dataNames,t]}}e.extendSubschemaData=extendSubschemaData;function extendSubschemaMode(e,{jtdDiscriminator:t,jtdMetadata:n,compositeRule:r,createErrors:i,allErrors:a}){r!==void 0&&(e.compositeRule=r),i!==void 0&&(e.createErrors=i),a!==void 0&&(e.allErrors=a),e.jtdDiscriminator=t,e.jtdMetadata=n}e.extendSubschemaMode=extendSubschemaMode})),Sa=n(((e,t)=>{t.exports=function equal(e,t){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var n,r,i;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!equal(e[r],t[r]))return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){var a=i[r];if(!equal(e[a],t[a]))return!1}return!0}return e!==e&&t!==t}})),Ca=n(((e,t)=>{var n=t.exports=function(e,t,n){typeof t==`function`&&(n=t,t={}),n=t.cb||n;var r=typeof n==`function`?n:n.pre||function(){},i=n.post||function(){};_traverse(t,r,i,e,``,e)};n.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0},n.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0},n.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0},n.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function _traverse(e,t,r,i,a,s,c,l,u,f){if(i&&typeof i==`object`&&!Array.isArray(i)){for(var p in t(i,a,s,c,l,u,f),i){var m=i[p];if(Array.isArray(m)){if(p in n.arrayKeywords)for(var h=0;h<m.length;h++)_traverse(e,t,r,m[h],a+`/`+p+`/`+h,s,a,p,i,h)}else if(p in n.propsKeywords){if(m&&typeof m==`object`)for(var g in m)_traverse(e,t,r,m[g],a+`/`+p+`/`+escapeJsonPtr(g),s,a,p,i,g)}else (p in n.keywords||e.allKeys&&!(p in n.skipKeywords))&&_traverse(e,t,r,m,a+`/`+p,s,a,p,i)}r(i,a,s,c,l,u,f)}}function escapeJsonPtr(e){return e.replace(/~/g,`~0`).replace(/\//g,`~1`)}})),wa=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.getSchemaRefs=e.resolveUrl=e.normalizeId=e._getFullPath=e.getFullPath=e.inlineRef=void 0;let t=z(),n=Sa(),r=Ca(),i=new Set([`type`,`format`,`pattern`,`maxLength`,`minLength`,`maxProperties`,`minProperties`,`maxItems`,`minItems`,`maximum`,`minimum`,`uniqueItems`,`multipleOf`,`required`,`enum`,`const`]);function inlineRef(e,t=!0){return typeof e==`boolean`?!0:t===!0?!hasRef(e):t?countKeys(e)<=t:!1}e.inlineRef=inlineRef;let a=new Set([`$ref`,`$recursiveRef`,`$recursiveAnchor`,`$dynamicRef`,`$dynamicAnchor`]);function hasRef(e){for(let t in e){if(a.has(t))return!0;let n=e[t];if(Array.isArray(n)&&n.some(hasRef)||typeof n==`object`&&hasRef(n))return!0}return!1}function countKeys(e){let n=0;for(let r in e)if(r===`$ref`||(n++,!i.has(r)&&(typeof e[r]==`object`&&(0,t.eachItem)(e[r],e=>n+=countKeys(e)),n===1/0)))return 1/0;return n}function getFullPath(e,t=``,n){return n!==!1&&(t=normalizeId(t)),_getFullPath(e,e.parse(t))}e.getFullPath=getFullPath;function _getFullPath(e,t){return e.serialize(t).split(`#`)[0]+`#`}e._getFullPath=_getFullPath;let s=/#\/?$/;function normalizeId(e){return e?e.replace(s,``):``}e.normalizeId=normalizeId;function resolveUrl(e,t,n){return n=normalizeId(n),e.resolve(t,n)}e.resolveUrl=resolveUrl;let c=/^[a-z_][-a-z0-9._]*$/i;function getSchemaRefs(e,t){if(typeof e==`boolean`)return{};let{schemaId:i,uriResolver:a}=this.opts,s=normalizeId(e[i]||t),l={"":s},u=getFullPath(a,s,!1),f={},p=new Set;return r(e,{allKeys:!0},(e,t,n,r)=>{if(r===void 0)return;let a=u+t,s=l[r];typeof e[i]==`string`&&(s=addRef.call(this,e[i])),addAnchor.call(this,e.$anchor),addAnchor.call(this,e.$dynamicAnchor),l[t]=s;function addRef(t){let n=this.opts.uriResolver.resolve;if(t=normalizeId(s?n(s,t):t),p.has(t))throw ambiguos(t);p.add(t);let r=this.refs[t];return typeof r==`string`&&(r=this.refs[r]),typeof r==`object`?checkAmbiguosRef(e,r.schema,t):t!==normalizeId(a)&&(t[0]===`#`?(checkAmbiguosRef(e,f[t],t),f[t]=e):this.refs[t]=a),t}function addAnchor(e){if(typeof e==`string`){if(!c.test(e))throw Error(`invalid anchor "${e}"`);addRef.call(this,`#${e}`)}}}),f;function checkAmbiguosRef(e,t,r){if(t!==void 0&&!n(e,t))throw ambiguos(r)}function ambiguos(e){return Error(`reference "${e}" resolves to more than one schema`)}}e.getSchemaRefs=getSchemaRefs})),Ta=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.getData=e.KeywordCxt=e.validateFunctionCode=void 0;let t=ma(),n=_a(),r=ga(),i=_a(),a=va(),s=ba(),c=xa(),l=R(),u=fa(),f=wa(),p=z(),m=pa();function validateFunctionCode(e){if(isSchemaObj(e)&&(checkKeywords(e),schemaCxtHasRules(e))){topSchemaObjCode(e);return}validateFunction(e,()=>(0,t.topBoolOrEmptySchema)(e))}e.validateFunctionCode=validateFunctionCode;function validateFunction({gen:e,validateName:t,schema:n,schemaEnv:r,opts:i},a){i.code.es5?e.func(t,(0,l._)`${u.default.data}, ${u.default.valCxt}`,r.$async,()=>{e.code((0,l._)`"use strict"; ${funcSourceUrl(n,i)}`),destructureValCxtES5(e,i),e.code(a)}):e.func(t,(0,l._)`${u.default.data}, ${destructureValCxt(i)}`,r.$async,()=>e.code(funcSourceUrl(n,i)).code(a))}function destructureValCxt(e){return(0,l._)`{${u.default.instancePath}="", ${u.default.parentData}, ${u.default.parentDataProperty}, ${u.default.rootData}=${u.default.data}${e.dynamicRef?(0,l._)`, ${u.default.dynamicAnchors}={}`:l.nil}}={}`}function destructureValCxtES5(e,t){e.if(u.default.valCxt,()=>{e.var(u.default.instancePath,(0,l._)`${u.default.valCxt}.${u.default.instancePath}`),e.var(u.default.parentData,(0,l._)`${u.default.valCxt}.${u.default.parentData}`),e.var(u.default.parentDataProperty,(0,l._)`${u.default.valCxt}.${u.default.parentDataProperty}`),e.var(u.default.rootData,(0,l._)`${u.default.valCxt}.${u.default.rootData}`),t.dynamicRef&&e.var(u.default.dynamicAnchors,(0,l._)`${u.default.valCxt}.${u.default.dynamicAnchors}`)},()=>{e.var(u.default.instancePath,(0,l._)`""`),e.var(u.default.parentData,(0,l._)`undefined`),e.var(u.default.parentDataProperty,(0,l._)`undefined`),e.var(u.default.rootData,u.default.data),t.dynamicRef&&e.var(u.default.dynamicAnchors,(0,l._)`{}`)})}function topSchemaObjCode(e){let{schema:t,opts:n,gen:r}=e;validateFunction(e,()=>{n.$comment&&t.$comment&&commentKeyword(e),checkNoDefault(e),r.let(u.default.vErrors,null),r.let(u.default.errors,0),n.unevaluated&&resetEvaluated(e),typeAndKeywords(e),returnResults(e)})}function resetEvaluated(e){let{gen:t,validateName:n}=e;e.evaluated=t.const(`evaluated`,(0,l._)`${n}.evaluated`),t.if((0,l._)`${e.evaluated}.dynamicProps`,()=>t.assign((0,l._)`${e.evaluated}.props`,(0,l._)`undefined`)),t.if((0,l._)`${e.evaluated}.dynamicItems`,()=>t.assign((0,l._)`${e.evaluated}.items`,(0,l._)`undefined`))}function funcSourceUrl(e,t){let n=typeof e==`object`&&e[t.schemaId];return n&&(t.code.source||t.code.process)?(0,l._)`/*# sourceURL=${n} */`:l.nil}function subschemaCode(e,n){if(isSchemaObj(e)&&(checkKeywords(e),schemaCxtHasRules(e))){subSchemaObjCode(e,n);return}(0,t.boolOrEmptySchema)(e,n)}function schemaCxtHasRules({schema:e,self:t}){if(typeof e==`boolean`)return!e;for(let n in e)if(t.RULES.all[n])return!0;return!1}function isSchemaObj(e){return typeof e.schema!=`boolean`}function subSchemaObjCode(e,t){let{schema:n,gen:r,opts:i}=e;i.$comment&&n.$comment&&commentKeyword(e),updateContext(e),checkAsyncSchema(e);let a=r.const(`_errs`,u.default.errors);typeAndKeywords(e,a),r.var(t,(0,l._)`${a} === ${u.default.errors}`)}function checkKeywords(e){(0,p.checkUnknownRules)(e),checkRefsAndKeywords(e)}function typeAndKeywords(e,t){if(e.opts.jtd)return schemaKeywords(e,[],!1,t);let r=(0,n.getSchemaTypes)(e.schema);schemaKeywords(e,r,!(0,n.coerceAndCheckDataType)(e,r),t)}function checkRefsAndKeywords(e){let{schema:t,errSchemaPath:n,opts:r,self:i}=e;t.$ref&&r.ignoreKeywordsWithRef&&(0,p.schemaHasRulesButRef)(t,i.RULES)&&i.logger.warn(`$ref: keywords ignored in schema at path "${n}"`)}function checkNoDefault(e){let{schema:t,opts:n}=e;t.default!==void 0&&n.useDefaults&&n.strictSchema&&(0,p.checkStrictMode)(e,`default is ignored in the schema root`)}function updateContext(e){let t=e.schema[e.opts.schemaId];t&&(e.baseId=(0,f.resolveUrl)(e.opts.uriResolver,e.baseId,t))}function checkAsyncSchema(e){if(e.schema.$async&&!e.schemaEnv.$async)throw Error(`async schema in sync schema`)}function commentKeyword({gen:e,schemaEnv:t,schema:n,errSchemaPath:r,opts:i}){let a=n.$comment;if(i.$comment===!0)e.code((0,l._)`${u.default.self}.logger.log(${a})`);else if(typeof i.$comment==`function`){let n=(0,l.str)`${r}/$comment`,i=e.scopeValue(`root`,{ref:t.root});e.code((0,l._)`${u.default.self}.opts.$comment(${a}, ${n}, ${i}.schema)`)}}function returnResults(e){let{gen:t,schemaEnv:n,validateName:r,ValidationError:i,opts:a}=e;n.$async?t.if((0,l._)`${u.default.errors} === 0`,()=>t.return(u.default.data),()=>t.throw((0,l._)`new ${i}(${u.default.vErrors})`)):(t.assign((0,l._)`${r}.errors`,u.default.vErrors),a.unevaluated&&assignEvaluated(e),t.return((0,l._)`${u.default.errors} === 0`))}function assignEvaluated({gen:e,evaluated:t,props:n,items:r}){n instanceof l.Name&&e.assign((0,l._)`${t}.props`,n),r instanceof l.Name&&e.assign((0,l._)`${t}.items`,r)}function schemaKeywords(e,t,n,a){let{gen:s,schema:c,data:f,allErrors:m,opts:h,self:g}=e,{RULES:v}=g;if(c.$ref&&(h.ignoreKeywordsWithRef||!(0,p.schemaHasRulesButRef)(c,v))){s.block(()=>keywordCode(e,`$ref`,v.all.$ref.definition));return}h.jtd||checkStrictTypes(e,t),s.block(()=>{for(let e of v.rules)groupKeywords(e);groupKeywords(v.post)});function groupKeywords(p){(0,r.shouldUseGroup)(c,p)&&(p.type?(s.if((0,i.checkDataType)(p.type,f,h.strictNumbers)),iterateKeywords(e,p),t.length===1&&t[0]===p.type&&n&&(s.else(),(0,i.reportTypeError)(e)),s.endIf()):iterateKeywords(e,p),m||s.if((0,l._)`${u.default.errors} === ${a||0}`))}}function iterateKeywords(e,t){let{gen:n,schema:i,opts:{useDefaults:s}}=e;s&&(0,a.assignDefaults)(e,t.type),n.block(()=>{for(let n of t.rules)(0,r.shouldUseRule)(i,n)&&keywordCode(e,n.keyword,n.definition,t.type)})}function checkStrictTypes(e,t){e.schemaEnv.meta||!e.opts.strictTypes||(checkContextTypes(e,t),e.opts.allowUnionTypes||checkMultipleTypes(e,t),checkKeywordTypes(e,e.dataTypes))}function checkContextTypes(e,t){if(t.length){if(!e.dataTypes.length){e.dataTypes=t;return}t.forEach(t=>{includesType(e.dataTypes,t)||strictTypesError(e,`type "${t}" not allowed by context "${e.dataTypes.join(`,`)}"`)}),narrowSchemaTypes(e,t)}}function checkMultipleTypes(e,t){t.length>1&&!(t.length===2&&t.includes(`null`))&&strictTypesError(e,`use allowUnionTypes to allow union type keyword`)}function checkKeywordTypes(e,t){let n=e.self.RULES.all;for(let i in n){let a=n[i];if(typeof a==`object`&&(0,r.shouldUseRule)(e.schema,a)){let{type:n}=a.definition;n.length&&!n.some(e=>hasApplicableType(t,e))&&strictTypesError(e,`missing type "${n.join(`,`)}" for keyword "${i}"`)}}}function hasApplicableType(e,t){return e.includes(t)||t===`number`&&e.includes(`integer`)}function includesType(e,t){return e.includes(t)||t===`integer`&&e.includes(`number`)}function narrowSchemaTypes(e,t){let n=[];for(let r of e.dataTypes)includesType(t,r)?n.push(r):t.includes(`integer`)&&r===`number`&&n.push(`integer`);e.dataTypes=n}function strictTypesError(e,t){let n=e.schemaEnv.baseId+e.errSchemaPath;t+=` at "${n}" (strictTypes)`,(0,p.checkStrictMode)(e,t,e.opts.strictTypes)}var KeywordCxt=class{constructor(e,t,n){if((0,s.validateKeywordUsage)(e,t,n),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=n,this.data=e.data,this.schema=e.schema[n],this.$data=t.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,p.schemaRefOrVal)(e,this.schema,n,this.$data),this.schemaType=t.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=t,this.$data)this.schemaCode=e.gen.const(`vSchema`,getData(this.$data,e));else if(this.schemaCode=this.schemaValue,!(0,s.validSchemaType)(this.schema,t.schemaType,t.allowUndefined))throw Error(`${n} value must be ${JSON.stringify(t.schemaType)}`);(`code`in t?t.trackErrors:t.errors!==!1)&&(this.errsCount=e.gen.const(`_errs`,u.default.errors))}result(e,t,n){this.failResult((0,l.not)(e),t,n)}failResult(e,t,n){this.gen.if(e),n?n():this.error(),t?(this.gen.else(),t(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(e,t){this.failResult((0,l.not)(e),void 0,t)}fail(e){if(e===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(e),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);let{schemaCode:t}=this;this.fail((0,l._)`${t} !== undefined && (${(0,l.or)(this.invalid$data(),e)})`)}error(e,t,n){if(t){this.setParams(t),this._error(e,n),this.setParams({});return}this._error(e,n)}_error(e,t){(e?m.reportExtraError:m.reportError)(this,this.def.error,t)}$dataError(){(0,m.reportError)(this,this.def.$dataError||m.keyword$DataError)}reset(){if(this.errsCount===void 0)throw Error(`add "trackErrors" to keyword definition`);(0,m.resetErrorsCount)(this.gen,this.errsCount)}ok(e){this.allErrors||this.gen.if(e)}setParams(e,t){t?Object.assign(this.params,e):this.params=e}block$data(e,t,n=l.nil){this.gen.block(()=>{this.check$data(e,n),t()})}check$data(e=l.nil,t=l.nil){if(!this.$data)return;let{gen:n,schemaCode:r,schemaType:i,def:a}=this;n.if((0,l.or)((0,l._)`${r} === undefined`,t)),e!==l.nil&&n.assign(e,!0),(i.length||a.validateSchema)&&(n.elseIf(this.invalid$data()),this.$dataError(),e!==l.nil&&n.assign(e,!1)),n.else()}invalid$data(){let{gen:e,schemaCode:t,schemaType:n,def:r,it:a}=this;return(0,l.or)(wrong$DataType(),invalid$DataSchema());function wrong$DataType(){if(n.length){if(!(t instanceof l.Name))throw Error(`ajv implementation error`);let e=Array.isArray(n)?n:[n];return(0,l._)`${(0,i.checkDataTypes)(e,t,a.opts.strictNumbers,i.DataType.Wrong)}`}return l.nil}function invalid$DataSchema(){if(r.validateSchema){let n=e.scopeValue(`validate$data`,{ref:r.validateSchema});return(0,l._)`!${n}(${t})`}return l.nil}}subschema(e,t){let n=(0,c.getSubschema)(this.it,e);(0,c.extendSubschemaData)(n,this.it,e),(0,c.extendSubschemaMode)(n,e);let r={...this.it,...n,items:void 0,props:void 0};return subschemaCode(r,t),r}mergeEvaluated(e,t){let{it:n,gen:r}=this;n.opts.unevaluated&&(n.props!==!0&&e.props!==void 0&&(n.props=p.mergeEvaluated.props(r,e.props,n.props,t)),n.items!==!0&&e.items!==void 0&&(n.items=p.mergeEvaluated.items(r,e.items,n.items,t)))}mergeValidEvaluated(e,t){let{it:n,gen:r}=this;if(n.opts.unevaluated&&(n.props!==!0||n.items!==!0))return r.if(t,()=>this.mergeEvaluated(e,l.Name)),!0}};e.KeywordCxt=KeywordCxt;function keywordCode(e,t,n,r){let i=new KeywordCxt(e,n,t);`code`in n?n.code(i,r):i.$data&&n.validate?(0,s.funcKeywordCode)(i,n):`macro`in n?(0,s.macroKeywordCode)(i,n):(n.compile||n.validate)&&(0,s.funcKeywordCode)(i,n)}let h=/^\/(?:[^~]|~0|~1)*$/,g=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function getData(e,{dataLevel:t,dataNames:n,dataPathArr:r}){let i,a;if(e===``)return u.default.rootData;if(e[0]===`/`){if(!h.test(e))throw Error(`Invalid JSON-pointer: ${e}`);i=e,a=u.default.rootData}else{let s=g.exec(e);if(!s)throw Error(`Invalid JSON-pointer: ${e}`);let c=+s[1];if(i=s[2],i===`#`){if(c>=t)throw Error(errorMsg(`property/index`,c));return r[t-c]}if(c>t)throw Error(errorMsg(`data`,c));if(a=n[t-c],!i)return a}let s=a,c=i.split(`/`);for(let e of c)e&&(a=(0,l._)`${a}${(0,l.getProperty)((0,p.unescapeJsonPointer)(e))}`,s=(0,l._)`${s} && ${a}`);return s;function errorMsg(e,n){return`Cannot access ${e} ${n} levels up, current level is ${t}`}}e.getData=getData})),Ea=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});var ValidationError=class extends Error{constructor(e){super(`validation failed`),this.errors=e,this.ajv=this.validation=!0}};e.default=ValidationError})),Da=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=wa();var MissingRefError=class extends Error{constructor(e,n,r,i){super(i||`can't resolve reference ${r} from id ${n}`),this.missingRef=(0,t.resolveUrl)(e,n,r),this.missingSchema=(0,t.normalizeId)((0,t.getFullPath)(e,this.missingRef))}};e.default=MissingRefError})),Oa=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.resolveSchema=e.getCompilingSchema=e.resolveRef=e.compileSchema=e.SchemaEnv=void 0;let t=R(),n=Ea(),r=fa(),i=wa(),a=z(),s=Ta();var SchemaEnv=class{constructor(e){this.refs={},this.dynamicAnchors={};let t;typeof e.schema==`object`&&(t=e.schema),this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=e.baseId??(0,i.normalizeId)(t?.[e.schemaId||`$id`]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=t?.$async,this.refs={}}};e.SchemaEnv=SchemaEnv;function compileSchema(e){let a=getCompilingSchema.call(this,e);if(a)return a;let c=(0,i.getFullPath)(this.opts.uriResolver,e.root.baseId),{es5:l,lines:u}=this.opts.code,{ownProperties:f}=this.opts,p=new t.CodeGen(this.scope,{es5:l,lines:u,ownProperties:f}),m;e.$async&&(m=p.scopeValue(`Error`,{ref:n.default,code:(0,t._)`require("ajv/dist/runtime/validation_error").default`}));let h=p.scopeName(`validate`);e.validateName=h;let g={gen:p,allErrors:this.opts.allErrors,data:r.default.data,parentData:r.default.parentData,parentDataProperty:r.default.parentDataProperty,dataNames:[r.default.data],dataPathArr:[t.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:p.scopeValue(`schema`,this.opts.code.source===!0?{ref:e.schema,code:(0,t.stringify)(e.schema)}:{ref:e.schema}),validateName:h,ValidationError:m,schema:e.schema,schemaEnv:e,rootId:c,baseId:e.baseId||c,schemaPath:t.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?``:`#`),errorPath:(0,t._)`""`,opts:this.opts,self:this},v;try{this._compilations.add(e),(0,s.validateFunctionCode)(g),p.optimize(this.opts.code.optimize);let n=p.toString();v=`${p.scopeRefs(r.default.scope)}return ${n}`,this.opts.code.process&&(v=this.opts.code.process(v,e));let i=Function(`${r.default.self}`,`${r.default.scope}`,v)(this,this.scope.get());if(this.scope.value(h,{ref:i}),i.errors=null,i.schema=e.schema,i.schemaEnv=e,e.$async&&(i.$async=!0),this.opts.code.source===!0&&(i.source={validateName:h,validateCode:n,scopeValues:p._values}),this.opts.unevaluated){let{props:e,items:n}=g;i.evaluated={props:e instanceof t.Name?void 0:e,items:n instanceof t.Name?void 0:n,dynamicProps:e instanceof t.Name,dynamicItems:n instanceof t.Name},i.source&&(i.source.evaluated=(0,t.stringify)(i.evaluated))}return e.validate=i,e}catch(t){throw delete e.validate,delete e.validateName,v&&this.logger.error(`Error compiling schema, function code:`,v),t}finally{this._compilations.delete(e)}}e.compileSchema=compileSchema;function resolveRef(e,t,n){n=(0,i.resolveUrl)(this.opts.uriResolver,t,n);let r=e.refs[n];if(r)return r;let a=resolve.call(this,e,n);if(a===void 0){let r=e.localRefs?.[n],{schemaId:i}=this.opts;r&&(a=new SchemaEnv({schema:r,schemaId:i,root:e,baseId:t}))}if(a!==void 0)return e.refs[n]=inlineOrCompile.call(this,a)}e.resolveRef=resolveRef;function inlineOrCompile(e){return(0,i.inlineRef)(e.schema,this.opts.inlineRefs)?e.schema:e.validate?e:compileSchema.call(this,e)}function getCompilingSchema(e){for(let t of this._compilations)if(sameSchemaEnv(t,e))return t}e.getCompilingSchema=getCompilingSchema;function sameSchemaEnv(e,t){return e.schema===t.schema&&e.root===t.root&&e.baseId===t.baseId}function resolve(e,t){let n;for(;typeof(n=this.refs[t])==`string`;)t=n;return n||this.schemas[t]||resolveSchema.call(this,e,t)}function resolveSchema(e,t){let n=this.opts.uriResolver.parse(t),r=(0,i._getFullPath)(this.opts.uriResolver,n),a=(0,i.getFullPath)(this.opts.uriResolver,e.baseId,void 0);if(Object.keys(e.schema).length>0&&r===a)return getJsonPointer.call(this,n,e);let s=(0,i.normalizeId)(r),c=this.refs[s]||this.schemas[s];if(typeof c==`string`){let t=resolveSchema.call(this,e,c);return typeof t?.schema==`object`?getJsonPointer.call(this,n,t):void 0}if(typeof c?.schema==`object`){if(c.validate||compileSchema.call(this,c),s===(0,i.normalizeId)(t)){let{schema:t}=c,{schemaId:n}=this.opts,r=t[n];return r&&(a=(0,i.resolveUrl)(this.opts.uriResolver,a,r)),new SchemaEnv({schema:t,schemaId:n,root:e,baseId:a})}return getJsonPointer.call(this,n,c)}}e.resolveSchema=resolveSchema;let c=new Set([`properties`,`patternProperties`,`enum`,`dependencies`,`definitions`]);function getJsonPointer(e,{baseId:t,schema:n,root:r}){if(e.fragment?.[0]!==`/`)return;for(let r of e.fragment.slice(1).split(`/`)){if(typeof n==`boolean`)return;let e=n[(0,a.unescapeFragment)(r)];if(e===void 0)return;n=e;let s=typeof n==`object`&&n[this.opts.schemaId];!c.has(r)&&s&&(t=(0,i.resolveUrl)(this.opts.uriResolver,t,s))}let s;if(typeof n!=`boolean`&&n.$ref&&!(0,a.schemaHasRulesButRef)(n,this.RULES)){let e=(0,i.resolveUrl)(this.opts.uriResolver,t,n.$ref);s=resolveSchema.call(this,r,e)}let{schemaId:l}=this.opts;if(s||=new SchemaEnv({schema:n,schemaId:l,root:r,baseId:t}),s.schema!==s.root.schema)return s}})),ka=n(((e,t)=>{t.exports={$id:`https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#`,description:`Meta-schema for $data reference (JSON AnySchema extension proposal)`,type:`object`,required:[`$data`],properties:{$data:{type:`string`,anyOf:[{format:`relative-json-pointer`},{format:`json-pointer`}]}},additionalProperties:!1}})),Aa=n(((e,t)=>{let n=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),r=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);function stringArrayToHexStripped(e){let t=``,n=0,r=0;for(r=0;r<e.length;r++)if(n=e[r].charCodeAt(0),n!==48){if(!(n>=48&&n<=57||n>=65&&n<=70||n>=97&&n<=102))return``;t+=e[r];break}for(r+=1;r<e.length;r++){if(n=e[r].charCodeAt(0),!(n>=48&&n<=57||n>=65&&n<=70||n>=97&&n<=102))return``;t+=e[r]}return t}let i=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function consumeIsZone(e){return e.length=0,!0}function consumeHextets(e,t,n){if(e.length){let r=stringArrayToHexStripped(e);if(r!==``)t.push(r);else return n.error=!0,!1;e.length=0}return!0}function getIPV6(e){let t=0,n={error:!1,address:``,zone:``},r=[],i=[],a=!1,s=!1,c=consumeHextets;for(let l=0;l<e.length;l++){let u=e[l];if(!(u===`[`||u===`]`))if(u===`:`){if(a===!0&&(s=!0),!c(i,r,n))break;if(++t>7){n.error=!0;break}l>0&&e[l-1]===`:`&&(a=!0),r.push(`:`);continue}else if(u===`%`){if(!c(i,r,n))break;c=consumeIsZone}else{i.push(u);continue}}return i.length&&(c===consumeIsZone?n.zone=i.join(``):s?r.push(i.join(``)):r.push(stringArrayToHexStripped(i))),n.address=r.join(``),n}function normalizeIPv6(e){if(findToken(e,`:`)<2)return{host:e,isIPV6:!1};let t=getIPV6(e);if(t.error)return{host:e,isIPV6:!1};{let e=t.address,n=t.address;return t.zone&&(e+=`%`+t.zone,n+=`%25`+t.zone),{host:e,isIPV6:!0,escapedHost:n}}}function findToken(e,t){let n=0;for(let r=0;r<e.length;r++)e[r]===t&&n++;return n}function removeDotSegments(e){let t=e,n=[],r=-1,i=0;for(;i=t.length;){if(i===1){if(t===`.`)break;if(t===`/`){n.push(`/`);break}else{n.push(t);break}}else if(i===2){if(t[0]===`.`){if(t[1]===`.`)break;if(t[1]===`/`){t=t.slice(2);continue}}else if(t[0]===`/`&&(t[1]===`.`||t[1]===`/`)){n.push(`/`);break}}else if(i===3&&t===`/..`){n.length!==0&&n.pop(),n.push(`/`);break}if(t[0]===`.`){if(t[1]===`.`){if(t[2]===`/`){t=t.slice(3);continue}}else if(t[1]===`/`){t=t.slice(2);continue}}else if(t[0]===`/`&&t[1]===`.`){if(t[2]===`/`){t=t.slice(2);continue}else if(t[2]===`.`&&t[3]===`/`){t=t.slice(3),n.length!==0&&n.pop();continue}}if((r=t.indexOf(`/`,1))===-1){n.push(t);break}else n.push(t.slice(0,r)),t=t.slice(r)}return n.join(``)}function normalizeComponentEncoding(e,t){let n=t===!0?unescape:escape;return e.scheme!==void 0&&(e.scheme=n(e.scheme)),e.userinfo!==void 0&&(e.userinfo=n(e.userinfo)),e.host!==void 0&&(e.host=n(e.host)),e.path!==void 0&&(e.path=n(e.path)),e.query!==void 0&&(e.query=n(e.query)),e.fragment!==void 0&&(e.fragment=n(e.fragment)),e}function recomposeAuthority(e){let t=[];if(e.userinfo!==void 0&&(t.push(e.userinfo),t.push(`@`)),e.host!==void 0){let n=unescape(e.host);if(!r(n)){let t=normalizeIPv6(n);n=t.isIPV6===!0?`[${t.escapedHost}]`:e.host}t.push(n)}return(typeof e.port==`number`||typeof e.port==`string`)&&(t.push(`:`),t.push(String(e.port))),t.length?t.join(``):void 0}t.exports={nonSimpleDomain:i,recomposeAuthority,normalizeComponentEncoding,removeDotSegments,isIPv4:r,isUUID:n,normalizeIPv6,stringArrayToHexStripped}})),ja=n(((e,t)=>{let{isUUID:n}=Aa(),r=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,i=[`http`,`https`,`ws`,`wss`,`urn`,`urn:uuid`];function isValidSchemeName(e){return i.indexOf(e)!==-1}function wsIsSecure(e){return e.secure===!0?!0:e.secure===!1?!1:e.scheme?e.scheme.length===3&&(e.scheme[0]===`w`||e.scheme[0]===`W`)&&(e.scheme[1]===`s`||e.scheme[1]===`S`)&&(e.scheme[2]===`s`||e.scheme[2]===`S`):!1}function httpParse(e){return e.host||(e.error=e.error||`HTTP URIs must have a host.`),e}function httpSerialize(e){let t=String(e.scheme).toLowerCase()===`https`;return(e.port===(t?443:80)||e.port===``)&&(e.port=void 0),e.path||=`/`,e}function wsParse(e){return e.secure=wsIsSecure(e),e.resourceName=(e.path||`/`)+(e.query?`?`+e.query:``),e.path=void 0,e.query=void 0,e}function wsSerialize(e){if((e.port===(wsIsSecure(e)?443:80)||e.port===``)&&(e.port=void 0),typeof e.secure==`boolean`&&(e.scheme=e.secure?`wss`:`ws`,e.secure=void 0),e.resourceName){let[t,n]=e.resourceName.split(`?`);e.path=t&&t!==`/`?t:void 0,e.query=n,e.resourceName=void 0}return e.fragment=void 0,e}function urnParse(e,t){if(!e.path)return e.error=`URN can not be parsed`,e;let n=e.path.match(r);if(n){let r=t.scheme||e.scheme||`urn`;e.nid=n[1].toLowerCase(),e.nss=n[2];let i=getSchemeHandler(`${r}:${t.nid||e.nid}`);e.path=void 0,i&&(e=i.parse(e,t))}else e.error=e.error||`URN can not be parsed.`;return e}function urnSerialize(e,t){if(e.nid===void 0)throw Error(`URN without nid cannot be serialized`);let n=t.scheme||e.scheme||`urn`,r=e.nid.toLowerCase(),i=getSchemeHandler(`${n}:${t.nid||r}`);i&&(e=i.serialize(e,t));let a=e,s=e.nss;return a.path=`${r||t.nid}:${s}`,t.skipEscape=!0,a}function urnuuidParse(e,t){let r=e;return r.uuid=r.nss,r.nss=void 0,!t.tolerant&&(!r.uuid||!n(r.uuid))&&(r.error=r.error||`UUID is not valid.`),r}function urnuuidSerialize(e){let t=e;return t.nss=(e.uuid||``).toLowerCase(),t}let a={scheme:`http`,domainHost:!0,parse:httpParse,serialize:httpSerialize},s={scheme:`https`,domainHost:a.domainHost,parse:httpParse,serialize:httpSerialize},c={scheme:`ws`,domainHost:!0,parse:wsParse,serialize:wsSerialize},l={http:a,https:s,ws:c,wss:{scheme:`wss`,domainHost:c.domainHost,parse:c.parse,serialize:c.serialize},urn:{scheme:`urn`,parse:urnParse,serialize:urnSerialize,skipNormalize:!0},"urn:uuid":{scheme:`urn:uuid`,parse:urnuuidParse,serialize:urnuuidSerialize,skipNormalize:!0}};Object.setPrototypeOf(l,null);function getSchemeHandler(e){return e&&(l[e]||l[e.toLowerCase()])||void 0}t.exports={wsIsSecure,SCHEMES:l,isValidSchemeName,getSchemeHandler}})),Ma=n(((e,t)=>{let{normalizeIPv6:n,removeDotSegments:r,recomposeAuthority:i,normalizeComponentEncoding:a,isIPv4:s,nonSimpleDomain:c}=Aa(),{SCHEMES:l,getSchemeHandler:u}=ja();function normalize(e,t){return typeof e==`string`?e=serialize(parse(e,t),t):typeof e==`object`&&(e=parse(serialize(e,t),t)),e}function resolve(e,t,n){let r=n?Object.assign({scheme:`null`},n):{scheme:`null`},i=resolveComponent(parse(e,r),parse(t,r),r,!0);return r.skipEscape=!0,serialize(i,r)}function resolveComponent(e,t,n,i){let a={};return i||(e=parse(serialize(e,n),n),t=parse(serialize(t,n),n)),n||={},!n.tolerant&&t.scheme?(a.scheme=t.scheme,a.userinfo=t.userinfo,a.host=t.host,a.port=t.port,a.path=r(t.path||``),a.query=t.query):(t.userinfo!==void 0||t.host!==void 0||t.port!==void 0?(a.userinfo=t.userinfo,a.host=t.host,a.port=t.port,a.path=r(t.path||``),a.query=t.query):(t.path?(t.path[0]===`/`?a.path=r(t.path):((e.userinfo!==void 0||e.host!==void 0||e.port!==void 0)&&!e.path?a.path=`/`+t.path:e.path?a.path=e.path.slice(0,e.path.lastIndexOf(`/`)+1)+t.path:a.path=t.path,a.path=r(a.path)),a.query=t.query):(a.path=e.path,t.query===void 0?a.query=e.query:a.query=t.query),a.userinfo=e.userinfo,a.host=e.host,a.port=e.port),a.scheme=e.scheme),a.fragment=t.fragment,a}function equal(e,t,n){return typeof e==`string`?(e=unescape(e),e=serialize(a(parse(e,n),!0),{...n,skipEscape:!0})):typeof e==`object`&&(e=serialize(a(e,!0),{...n,skipEscape:!0})),typeof t==`string`?(t=unescape(t),t=serialize(a(parse(t,n),!0),{...n,skipEscape:!0})):typeof t==`object`&&(t=serialize(a(t,!0),{...n,skipEscape:!0})),e.toLowerCase()===t.toLowerCase()}function serialize(e,t){let n={host:e.host,scheme:e.scheme,userinfo:e.userinfo,port:e.port,path:e.path,query:e.query,nid:e.nid,nss:e.nss,uuid:e.uuid,fragment:e.fragment,reference:e.reference,resourceName:e.resourceName,secure:e.secure,error:``},a=Object.assign({},t),s=[],c=u(a.scheme||n.scheme);c&&c.serialize&&c.serialize(n,a),n.path!==void 0&&(a.skipEscape?n.path=unescape(n.path):(n.path=escape(n.path),n.scheme!==void 0&&(n.path=n.path.split(`%3A`).join(`:`)))),a.reference!==`suffix`&&n.scheme&&s.push(n.scheme,`:`);let l=i(n);if(l!==void 0&&(a.reference!==`suffix`&&s.push(`//`),s.push(l),n.path&&n.path[0]!==`/`&&s.push(`/`)),n.path!==void 0){let e=n.path;!a.absolutePath&&(!c||!c.absolutePath)&&(e=r(e)),l===void 0&&e[0]===`/`&&e[1]===`/`&&(e=`/%2F`+e.slice(2)),s.push(e)}return n.query!==void 0&&s.push(`?`,n.query),n.fragment!==void 0&&s.push(`#`,n.fragment),s.join(``)}let f=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function parse(e,t){let r=Object.assign({},t),i={scheme:void 0,userinfo:void 0,host:``,port:void 0,path:``,query:void 0,fragment:void 0},a=!1;r.reference===`suffix`&&(e=r.scheme?r.scheme+`:`+e:`//`+e);let l=e.match(f);if(l){if(i.scheme=l[1],i.userinfo=l[3],i.host=l[4],i.port=parseInt(l[5],10),i.path=l[6]||``,i.query=l[7],i.fragment=l[8],isNaN(i.port)&&(i.port=l[5]),i.host)if(s(i.host)===!1){let e=n(i.host);i.host=e.host.toLowerCase(),a=e.isIPV6}else a=!0;i.scheme===void 0&&i.userinfo===void 0&&i.host===void 0&&i.port===void 0&&i.query===void 0&&!i.path?i.reference=`same-document`:i.scheme===void 0?i.reference=`relative`:i.fragment===void 0?i.reference=`absolute`:i.reference=`uri`,r.reference&&r.reference!==`suffix`&&r.reference!==i.reference&&(i.error=i.error||`URI is not a `+r.reference+` reference.`);let t=u(r.scheme||i.scheme);if(!r.unicodeSupport&&(!t||!t.unicodeSupport)&&i.host&&(r.domainHost||t&&t.domainHost)&&a===!1&&c(i.host))try{i.host=URL.domainToASCII(i.host.toLowerCase())}catch(e){i.error=i.error||`Host's domain name can not be converted to ASCII: `+e}(!t||t&&!t.skipNormalize)&&(e.indexOf(`%`)!==-1&&(i.scheme!==void 0&&(i.scheme=unescape(i.scheme)),i.host!==void 0&&(i.host=unescape(i.host))),i.path&&=escape(unescape(i.path)),i.fragment&&=encodeURI(decodeURIComponent(i.fragment))),t&&t.parse&&t.parse(i,r)}else i.error=i.error||`URI can not be parsed.`;return i}let p={SCHEMES:l,normalize,resolve,resolveComponent,equal,serialize,parse};t.exports=p,t.exports.default=p,t.exports.fastUri=p})),Na=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=Ma();t.code=`require("ajv/dist/runtime/uri").default`,e.default=t})),Pa=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=void 0;var t=Ta();Object.defineProperty(e,"KeywordCxt",{enumerable:!0,get:function(){return t.KeywordCxt}});var n=R();Object.defineProperty(e,"_",{enumerable:!0,get:function(){return n._}}),Object.defineProperty(e,"str",{enumerable:!0,get:function(){return n.str}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return n.stringify}}),Object.defineProperty(e,"nil",{enumerable:!0,get:function(){return n.nil}}),Object.defineProperty(e,"Name",{enumerable:!0,get:function(){return n.Name}}),Object.defineProperty(e,"CodeGen",{enumerable:!0,get:function(){return n.CodeGen}});let r=Ea(),i=Da(),a=ha(),s=Oa(),c=R(),l=wa(),u=_a(),f=z(),p=ka(),m=Na(),defaultRegExp=(e,t)=>new RegExp(e,t);defaultRegExp.code=`new RegExp`;let h=[`removeAdditional`,`useDefaults`,`coerceTypes`],g=new Set([`validate`,`serialize`,`parse`,`wrapper`,`root`,`schema`,`keyword`,`pattern`,`formats`,`validate$data`,`func`,`obj`,`Error`]),v={errorDataPath:``,format:"`validateFormats: false` can be used instead.",nullable:`"nullable" keyword is supported by default.`,jsonPointers:`Deprecated jsPropertySyntax can be used instead.`,extendRefs:`Deprecated ignoreKeywordsWithRef can be used instead.`,missingRefs:`Pass empty schema with $id that should be ignored to ajv.addSchema.`,processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:`"uniqueItems" keyword is always validated.`,unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:`Map is used as cache, schema object as key.`,serialize:`Map is used as cache, schema object as key.`,ajvErrors:`It is default now.`},y={ignoreKeywordsWithRef:``,jsPropertySyntax:``,unicode:`"minLength"/"maxLength" account for unicode characters by default.`};function requiredOptions(e){let t=e.strict,n=e.code?.optimize,r=n===!0||n===void 0?1:n||0,i=e.code?.regExp??defaultRegExp,a=e.uriResolver??m.default;return{strictSchema:e.strictSchema??t??!0,strictNumbers:e.strictNumbers??t??!0,strictTypes:e.strictTypes??t??`log`,strictTuples:e.strictTuples??t??`log`,strictRequired:e.strictRequired??t??!1,code:e.code?{...e.code,optimize:r,regExp:i}:{optimize:r,regExp:i},loopRequired:e.loopRequired??200,loopEnum:e.loopEnum??200,meta:e.meta??!0,messages:e.messages??!0,inlineRefs:e.inlineRefs??!0,schemaId:e.schemaId??`$id`,addUsedSchema:e.addUsedSchema??!0,validateSchema:e.validateSchema??!0,validateFormats:e.validateFormats??!0,unicodeRegExp:e.unicodeRegExp??!0,int32range:e.int32range??!0,uriResolver:a}}var Ajv=class{constructor(e={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...requiredOptions(e)};let{es5:t,lines:n}=this.opts.code;this.scope=new c.ValueScope({scope:{},prefixes:g,es5:t,lines:n}),this.logger=getLogger(e.logger);let r=e.validateFormats;e.validateFormats=!1,this.RULES=(0,a.getRules)(),checkOptions.call(this,v,e,`NOT SUPPORTED`),checkOptions.call(this,y,e,`DEPRECATED`,`warn`),this._metaOpts=getMetaSchemaOptions.call(this),e.formats&&addInitialFormats.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords&&addInitialKeywords.call(this,e.keywords),typeof e.meta==`object`&&this.addMetaSchema(e.meta),addInitialSchemas.call(this),e.validateFormats=r}_addVocabularies(){this.addKeyword(`$async`)}_addDefaultMetaSchema(){let{$data:e,meta:t,schemaId:n}=this.opts,r=p;n===`id`&&(r={...p},r.id=r.$id,delete r.$id),t&&e&&this.addMetaSchema(r,r[n],!1)}defaultMeta(){let{meta:e,schemaId:t}=this.opts;return this.opts.defaultMeta=typeof e==`object`?e[t]||e:void 0}validate(e,t){let n;if(typeof e==`string`){if(n=this.getSchema(e),!n)throw Error(`no schema with key or ref "${e}"`)}else n=this.compile(e);let r=n(t);return`$async`in n||(this.errors=n.errors),r}compile(e,t){let n=this._addSchema(e,t);return n.validate||this._compileSchemaEnv(n)}compileAsync(e,t){if(typeof this.opts.loadSchema!=`function`)throw Error(`options.loadSchema should be a function`);let{loadSchema:n}=this.opts;return runCompileAsync.call(this,e,t);async function runCompileAsync(e,t){await loadMetaSchema.call(this,e.$schema);let n=this._addSchema(e,t);return n.validate||_compileAsync.call(this,n)}async function loadMetaSchema(e){e&&!this.getSchema(e)&&await runCompileAsync.call(this,{$ref:e},!0)}async function _compileAsync(e){try{return this._compileSchemaEnv(e)}catch(t){if(!(t instanceof i.default))throw t;return checkLoaded.call(this,t),await loadMissingSchema.call(this,t.missingSchema),_compileAsync.call(this,e)}}function checkLoaded({missingSchema:e,missingRef:t}){if(this.refs[e])throw Error(`AnySchema ${e} is loaded but ${t} cannot be resolved`)}async function loadMissingSchema(e){let n=await _loadSchema.call(this,e);this.refs[e]||await loadMetaSchema.call(this,n.$schema),this.refs[e]||this.addSchema(n,e,t)}async function _loadSchema(e){let t=this._loading[e];if(t)return t;try{return await(this._loading[e]=n(e))}finally{delete this._loading[e]}}}addSchema(e,t,n,r=this.opts.validateSchema){if(Array.isArray(e)){for(let t of e)this.addSchema(t,void 0,n,r);return this}let i;if(typeof e==`object`){let{schemaId:t}=this.opts;if(i=e[t],i!==void 0&&typeof i!=`string`)throw Error(`schema ${t} must be string`)}return t=(0,l.normalizeId)(t||i),this._checkUnique(t),this.schemas[t]=this._addSchema(e,n,t,r,!0),this}addMetaSchema(e,t,n=this.opts.validateSchema){return this.addSchema(e,t,!0,n),this}validateSchema(e,t){if(typeof e==`boolean`)return!0;let n;if(n=e.$schema,n!==void 0&&typeof n!=`string`)throw Error(`$schema must be a string`);if(n=n||this.opts.defaultMeta||this.defaultMeta(),!n)return this.logger.warn(`meta-schema not available`),this.errors=null,!0;let r=this.validate(n,e);if(!r&&t){let e=`schema is invalid: `+this.errorsText();if(this.opts.validateSchema===`log`)this.logger.error(e);else throw Error(e)}return r}getSchema(e){let t;for(;typeof(t=getSchEnv.call(this,e))==`string`;)e=t;if(t===void 0){let{schemaId:n}=this.opts,r=new s.SchemaEnv({schema:{},schemaId:n});if(t=s.resolveSchema.call(this,r,e),!t)return;this.refs[e]=t}return t.validate||this._compileSchemaEnv(t)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case`undefined`:return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case`string`:{let t=getSchEnv.call(this,e);return typeof t==`object`&&this._cache.delete(t.schema),delete this.schemas[e],delete this.refs[e],this}case`object`:{let t=e;this._cache.delete(t);let n=e[this.opts.schemaId];return n&&(n=(0,l.normalizeId)(n),delete this.schemas[n],delete this.refs[n]),this}default:throw Error(`ajv.removeSchema: invalid parameter`)}}addVocabulary(e){for(let t of e)this.addKeyword(t);return this}addKeyword(e,t){let n;if(typeof e==`string`)n=e,typeof t==`object`&&(this.logger.warn(`these parameters are deprecated, see docs for addKeyword`),t.keyword=n);else if(typeof e==`object`&&t===void 0){if(t=e,n=t.keyword,Array.isArray(n)&&!n.length)throw Error(`addKeywords: keyword must be string or non-empty array`)}else throw Error(`invalid addKeywords parameters`);if(checkKeyword.call(this,n,t),!t)return(0,f.eachItem)(n,e=>addRule.call(this,e)),this;keywordMetaschema.call(this,t);let r={...t,type:(0,u.getJSONTypes)(t.type),schemaType:(0,u.getJSONTypes)(t.schemaType)};return(0,f.eachItem)(n,r.type.length===0?e=>addRule.call(this,e,r):e=>r.type.forEach(t=>addRule.call(this,e,r,t))),this}getKeyword(e){let t=this.RULES.all[e];return typeof t==`object`?t.definition:!!t}removeKeyword(e){let{RULES:t}=this;delete t.keywords[e],delete t.all[e];for(let n of t.rules){let t=n.rules.findIndex(t=>t.keyword===e);t>=0&&n.rules.splice(t,1)}return this}addFormat(e,t){return typeof t==`string`&&(t=new RegExp(t)),this.formats[e]=t,this}errorsText(e=this.errors,{separator:t=`, `,dataVar:n=`data`}={}){return!e||e.length===0?`No errors`:e.map(e=>`${n}${e.instancePath} ${e.message}`).reduce((e,n)=>e+t+n)}$dataMetaSchema(e,t){let n=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(let r of t){let t=r.split(`/`).slice(1),i=e;for(let e of t)i=i[e];for(let e in n){let t=n[e];if(typeof t!=`object`)continue;let{$data:r}=t.definition,a=i[e];r&&a&&(i[e]=schemaOrData(a))}}return e}_removeAllSchemas(e,t){for(let n in e){let r=e[n];(!t||t.test(n))&&(typeof r==`string`?delete e[n]:r&&!r.meta&&(this._cache.delete(r.schema),delete e[n]))}}_addSchema(e,t,n,r=this.opts.validateSchema,i=this.opts.addUsedSchema){let a,{schemaId:c}=this.opts;if(typeof e==`object`)a=e[c];else if(this.opts.jtd)throw Error(`schema must be object`);else if(typeof e!=`boolean`)throw Error(`schema must be object or boolean`);let u=this._cache.get(e);if(u!==void 0)return u;n=(0,l.normalizeId)(a||n);let f=l.getSchemaRefs.call(this,e,n);return u=new s.SchemaEnv({schema:e,schemaId:c,meta:t,baseId:n,localRefs:f}),this._cache.set(u.schema,u),i&&!n.startsWith(`#`)&&(n&&this._checkUnique(n),this.refs[n]=u),r&&this.validateSchema(e,!0),u}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta?this._compileMetaSchema(e):s.compileSchema.call(this,e),!e.validate)throw Error(`ajv implementation error`);return e.validate}_compileMetaSchema(e){let t=this.opts;this.opts=this._metaOpts;try{s.compileSchema.call(this,e)}finally{this.opts=t}}};Ajv.ValidationError=r.default,Ajv.MissingRefError=i.default,e.default=Ajv;function checkOptions(e,t,n,r=`error`){for(let i in e){let a=i;a in t&&this.logger[r](`${n}: option ${i}. ${e[a]}`)}}function getSchEnv(e){return e=(0,l.normalizeId)(e),this.schemas[e]||this.refs[e]}function addInitialSchemas(){let e=this.opts.schemas;if(e)if(Array.isArray(e))this.addSchema(e);else for(let t in e)this.addSchema(e[t],t)}function addInitialFormats(){for(let e in this.opts.formats){let t=this.opts.formats[e];t&&this.addFormat(e,t)}}function addInitialKeywords(e){if(Array.isArray(e)){this.addVocabulary(e);return}this.logger.warn(`keywords option as map is deprecated, pass array`);for(let t in e){let n=e[t];n.keyword||=t,this.addKeyword(n)}}function getMetaSchemaOptions(){let e={...this.opts};for(let t of h)delete e[t];return e}let b={log(){},warn(){},error(){}};function getLogger(e){if(e===!1)return b;if(e===void 0)return console;if(e.log&&e.warn&&e.error)return e;throw Error(`logger must implement log, warn and error methods`)}let x=/^[a-z_$][a-z0-9_$:-]*$/i;function checkKeyword(e,t){let{RULES:n}=this;if((0,f.eachItem)(e,e=>{if(n.keywords[e])throw Error(`Keyword ${e} is already defined`);if(!x.test(e))throw Error(`Keyword ${e} has invalid name`)}),t&&t.$data&&!(`code`in t||`validate`in t))throw Error(`$data keyword must have "code" or "validate" function`)}function addRule(e,t,n){var r;let i=t?.post;if(n&&i)throw Error(`keyword with "post" flag cannot have "type"`);let{RULES:a}=this,s=i?a.post:a.rules.find(({type:e})=>e===n);if(s||(s={type:n,rules:[]},a.rules.push(s)),a.keywords[e]=!0,!t)return;let c={keyword:e,definition:{...t,type:(0,u.getJSONTypes)(t.type),schemaType:(0,u.getJSONTypes)(t.schemaType)}};t.before?addBeforeRule.call(this,s,c,t.before):s.rules.push(c),a.all[e]=c,(r=t.implements)==null||r.forEach(e=>this.addKeyword(e))}function addBeforeRule(e,t,n){let r=e.rules.findIndex(e=>e.keyword===n);r>=0?e.rules.splice(r,0,t):(e.rules.push(t),this.logger.warn(`rule ${n} is not defined`))}function keywordMetaschema(e){let{metaSchema:t}=e;t!==void 0&&(e.$data&&this.opts.$data&&(t=schemaOrData(t)),e.validateSchema=this.compile(t,!0))}let ee={$ref:`https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#`};function schemaOrData(e){return{anyOf:[e,ee]}}})),Fa=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default={keyword:`id`,code(){throw Error(`NOT SUPPORTED: keyword "id", use "$id" for schema ID`)}}})),Ia=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.callRef=e.getValidate=void 0;let t=Da(),n=ya(),r=R(),i=fa(),a=Oa(),s=z(),c={keyword:`$ref`,schemaType:`string`,code(e){let{gen:n,schema:i,it:s}=e,{baseId:c,schemaEnv:l,validateName:u,opts:f,self:p}=s,{root:m}=l;if((i===`#`||i===`#/`)&&c===m.baseId)return callRootRef();let h=a.resolveRef.call(p,m,c,i);if(h===void 0)throw new t.default(s.opts.uriResolver,c,i);if(h instanceof a.SchemaEnv)return callValidate(h);return inlineRefSchema(h);function callRootRef(){if(l===m)return callRef(e,u,l,l.$async);let t=n.scopeValue(`root`,{ref:m});return callRef(e,(0,r._)`${t}.validate`,m,m.$async)}function callValidate(t){callRef(e,getValidate(e,t),t,t.$async)}function inlineRefSchema(t){let a=n.scopeValue(`schema`,f.code.source===!0?{ref:t,code:(0,r.stringify)(t)}:{ref:t}),s=n.name(`valid`),c=e.subschema({schema:t,dataTypes:[],schemaPath:r.nil,topSchemaRef:a,errSchemaPath:i},s);e.mergeEvaluated(c),e.ok(s)}}};function getValidate(e,t){let{gen:n}=e;return t.validate?n.scopeValue(`validate`,{ref:t.validate}):(0,r._)`${n.scopeValue(`wrapper`,{ref:t})}.validate`}e.getValidate=getValidate;function callRef(e,t,a,c){let{gen:l,it:u}=e,{allErrors:f,schemaEnv:p,opts:m}=u,h=m.passContext?i.default.this:r.nil;c?callAsyncRef():callSyncRef();function callAsyncRef(){if(!p.$async)throw Error(`async schema referenced by sync schema`);let i=l.let(`valid`);l.try(()=>{l.code((0,r._)`await ${(0,n.callValidateCode)(e,t,h)}`),addEvaluatedFrom(t),f||l.assign(i,!0)},e=>{l.if((0,r._)`!(${e} instanceof ${u.ValidationError})`,()=>l.throw(e)),addErrorsFrom(e),f||l.assign(i,!1)}),e.ok(i)}function callSyncRef(){e.result((0,n.callValidateCode)(e,t,h),()=>addEvaluatedFrom(t),()=>addErrorsFrom(t))}function addErrorsFrom(e){let t=(0,r._)`${e}.errors`;l.assign(i.default.vErrors,(0,r._)`${i.default.vErrors} === null ? ${t} : ${i.default.vErrors}.concat(${t})`),l.assign(i.default.errors,(0,r._)`${i.default.vErrors}.length`)}function addEvaluatedFrom(e){if(!u.opts.unevaluated)return;let t=a?.validate?.evaluated;if(u.props!==!0)if(t&&!t.dynamicProps)t.props!==void 0&&(u.props=s.mergeEvaluated.props(l,t.props,u.props));else{let t=l.var(`props`,(0,r._)`${e}.evaluated.props`);u.props=s.mergeEvaluated.props(l,t,u.props,r.Name)}if(u.items!==!0)if(t&&!t.dynamicItems)t.items!==void 0&&(u.items=s.mergeEvaluated.items(l,t.items,u.items));else{let t=l.var(`items`,(0,r._)`${e}.evaluated.items`);u.items=s.mergeEvaluated.items(l,t,u.items,r.Name)}}}e.callRef=callRef,e.default=c})),La=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=Fa(),n=Ia();e.default=[`$schema`,`$id`,`$defs`,`$vocabulary`,{keyword:`$comment`},`definitions`,t.default,n.default]})),Ra=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R(),n=t.operators,r={maximum:{okStr:`<=`,ok:n.LTE,fail:n.GT},minimum:{okStr:`>=`,ok:n.GTE,fail:n.LT},exclusiveMaximum:{okStr:`<`,ok:n.LT,fail:n.GTE},exclusiveMinimum:{okStr:`>`,ok:n.GT,fail:n.LTE}};e.default={keyword:Object.keys(r),type:`number`,schemaType:`number`,$data:!0,error:{message:({keyword:e,schemaCode:n})=>(0,t.str)`must be ${r[e].okStr} ${n}`,params:({keyword:e,schemaCode:n})=>(0,t._)`{comparison: ${r[e].okStr}, limit: ${n}}`},code(e){let{keyword:n,data:i,schemaCode:a}=e;e.fail$data((0,t._)`${i} ${r[n].fail} ${a} || isNaN(${i})`)}}})),za=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R();e.default={keyword:`multipleOf`,type:`number`,schemaType:`number`,$data:!0,error:{message:({schemaCode:e})=>(0,t.str)`must be multiple of ${e}`,params:({schemaCode:e})=>(0,t._)`{multipleOf: ${e}}`},code(e){let{gen:n,data:r,schemaCode:i,it:a}=e,s=a.opts.multipleOfPrecision,c=n.let(`res`),l=s?(0,t._)`Math.abs(Math.round(${c}) - ${c}) > 1e-${s}`:(0,t._)`${c} !== parseInt(${c})`;e.fail$data((0,t._)`(${i} === 0 || (${c} = ${r}/${i}, ${l}))`)}}})),Ba=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});function ucs2length(e){let t=e.length,n=0,r=0,i;for(;r<t;)n++,i=e.charCodeAt(r++),i>=55296&&i<=56319&&r<t&&(i=e.charCodeAt(r),(i&64512)==56320&&r++);return n}e.default=ucs2length,ucs2length.code=`require("ajv/dist/runtime/ucs2length").default`})),Va=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R(),n=z(),r=Ba();e.default={keyword:[`maxLength`,`minLength`],type:`string`,schemaType:`number`,$data:!0,error:{message({keyword:e,schemaCode:n}){let r=e===`maxLength`?`more`:`fewer`;return(0,t.str)`must NOT have ${r} than ${n} characters`},params:({schemaCode:e})=>(0,t._)`{limit: ${e}}`},code(e){let{keyword:i,data:a,schemaCode:s,it:c}=e,l=i===`maxLength`?t.operators.GT:t.operators.LT,u=c.opts.unicode===!1?(0,t._)`${a}.length`:(0,t._)`${(0,n.useFunc)(e.gen,r.default)}(${a})`;e.fail$data((0,t._)`${u} ${l} ${s}`)}}})),Ha=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=ya(),n=z(),r=R();e.default={keyword:`pattern`,type:`string`,schemaType:`string`,$data:!0,error:{message:({schemaCode:e})=>(0,r.str)`must match pattern "${e}"`,params:({schemaCode:e})=>(0,r._)`{pattern: ${e}}`},code(e){let{gen:i,data:a,$data:s,schema:c,schemaCode:l,it:u}=e,f=u.opts.unicodeRegExp?`u`:``;if(s){let{regExp:t}=u.opts.code,s=t.code===`new RegExp`?(0,r._)`new RegExp`:(0,n.useFunc)(i,t),c=i.let(`valid`);i.try(()=>i.assign(c,(0,r._)`${s}(${l}, ${f}).test(${a})`),()=>i.assign(c,!1)),e.fail$data((0,r._)`!${c}`)}else{let n=(0,t.usePattern)(e,c);e.fail$data((0,r._)`!${n}.test(${a})`)}}}})),Ua=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R();e.default={keyword:[`maxProperties`,`minProperties`],type:`object`,schemaType:`number`,$data:!0,error:{message({keyword:e,schemaCode:n}){let r=e===`maxProperties`?`more`:`fewer`;return(0,t.str)`must NOT have ${r} than ${n} properties`},params:({schemaCode:e})=>(0,t._)`{limit: ${e}}`},code(e){let{keyword:n,data:r,schemaCode:i}=e,a=n===`maxProperties`?t.operators.GT:t.operators.LT;e.fail$data((0,t._)`Object.keys(${r}).length ${a} ${i}`)}}})),Wa=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=ya(),n=R(),r=z();e.default={keyword:`required`,type:`object`,schemaType:`array`,$data:!0,error:{message:({params:{missingProperty:e}})=>(0,n.str)`must have required property '${e}'`,params:({params:{missingProperty:e}})=>(0,n._)`{missingProperty: ${e}}`},code(e){let{gen:i,schema:a,schemaCode:s,data:c,$data:l,it:u}=e,{opts:f}=u;if(!l&&a.length===0)return;let p=a.length>=f.loopRequired;if(u.allErrors?allErrorsMode():exitOnErrorMode(),f.strictRequired){let t=e.parentSchema.properties,{definedProperties:n}=e.it;for(let e of a)if(t?.[e]===void 0&&!n.has(e)){let t=`required property "${e}" is not defined at "${u.schemaEnv.baseId+u.errSchemaPath}" (strictRequired)`;(0,r.checkStrictMode)(u,t,u.opts.strictRequired)}}function allErrorsMode(){if(p||l)e.block$data(n.nil,loopAllRequired);else for(let n of a)(0,t.checkReportMissingProp)(e,n)}function exitOnErrorMode(){let n=i.let(`missing`);if(p||l){let t=i.let(`valid`,!0);e.block$data(t,()=>loopUntilMissing(n,t)),e.ok(t)}else i.if((0,t.checkMissingProp)(e,a,n)),(0,t.reportMissingProp)(e,n),i.else()}function loopAllRequired(){i.forOf(`prop`,s,n=>{e.setParams({missingProperty:n}),i.if((0,t.noPropertyInData)(i,c,n,f.ownProperties),()=>e.error())})}function loopUntilMissing(r,a){e.setParams({missingProperty:r}),i.forOf(r,s,()=>{i.assign(a,(0,t.propertyInData)(i,c,r,f.ownProperties)),i.if((0,n.not)(a),()=>{e.error(),i.break()})},n.nil)}}}})),Ga=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R();e.default={keyword:[`maxItems`,`minItems`],type:`array`,schemaType:`number`,$data:!0,error:{message({keyword:e,schemaCode:n}){let r=e===`maxItems`?`more`:`fewer`;return(0,t.str)`must NOT have ${r} than ${n} items`},params:({schemaCode:e})=>(0,t._)`{limit: ${e}}`},code(e){let{keyword:n,data:r,schemaCode:i}=e,a=n===`maxItems`?t.operators.GT:t.operators.LT;e.fail$data((0,t._)`${r}.length ${a} ${i}`)}}})),Ka=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=Sa();t.code=`require("ajv/dist/runtime/equal").default`,e.default=t})),qa=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=_a(),n=R(),r=z(),i=Ka();e.default={keyword:`uniqueItems`,type:`array`,schemaType:`boolean`,$data:!0,error:{message:({params:{i:e,j:t}})=>(0,n.str)`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>(0,n._)`{i: ${e}, j: ${t}}`},code(e){let{gen:a,data:s,$data:c,schema:l,parentSchema:u,schemaCode:f,it:p}=e;if(!c&&!l)return;let m=a.let(`valid`),h=u.items?(0,t.getSchemaTypes)(u.items):[];e.block$data(m,validateUniqueItems,(0,n._)`${f} === false`),e.ok(m);function validateUniqueItems(){let t=a.let(`i`,(0,n._)`${s}.length`),r=a.let(`j`);e.setParams({i:t,j:r}),a.assign(m,!0),a.if((0,n._)`${t} > 1`,()=>(canOptimize()?loopN:loopN2)(t,r))}function canOptimize(){return h.length>0&&!h.some(e=>e===`object`||e===`array`)}function loopN(r,i){let c=a.name(`item`),l=(0,t.checkDataTypes)(h,c,p.opts.strictNumbers,t.DataType.Wrong),u=a.const(`indices`,(0,n._)`{}`);a.for((0,n._)`;${r}--;`,()=>{a.let(c,(0,n._)`${s}[${r}]`),a.if(l,(0,n._)`continue`),h.length>1&&a.if((0,n._)`typeof ${c} == "string"`,(0,n._)`${c} += "_"`),a.if((0,n._)`typeof ${u}[${c}] == "number"`,()=>{a.assign(i,(0,n._)`${u}[${c}]`),e.error(),a.assign(m,!1).break()}).code((0,n._)`${u}[${c}] = ${r}`)})}function loopN2(t,c){let l=(0,r.useFunc)(a,i.default),u=a.name(`outer`);a.label(u).for((0,n._)`;${t}--;`,()=>a.for((0,n._)`${c} = ${t}; ${c}--;`,()=>a.if((0,n._)`${l}(${s}[${t}], ${s}[${c}])`,()=>{e.error(),a.assign(m,!1).break(u)})))}}}})),Ja=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R(),n=z(),r=Ka();e.default={keyword:`const`,$data:!0,error:{message:`must be equal to constant`,params:({schemaCode:e})=>(0,t._)`{allowedValue: ${e}}`},code(e){let{gen:i,data:a,$data:s,schemaCode:c,schema:l}=e;s||l&&typeof l==`object`?e.fail$data((0,t._)`!${(0,n.useFunc)(i,r.default)}(${a}, ${c})`):e.fail((0,t._)`${l} !== ${a}`)}}})),Ya=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R(),n=z(),r=Ka();e.default={keyword:`enum`,schemaType:`array`,$data:!0,error:{message:`must be equal to one of the allowed values`,params:({schemaCode:e})=>(0,t._)`{allowedValues: ${e}}`},code(e){let{gen:i,data:a,$data:s,schema:c,schemaCode:l,it:u}=e;if(!s&&c.length===0)throw Error(`enum must have non-empty array`);let f=c.length>=u.opts.loopEnum,p,getEql=()=>p??=(0,n.useFunc)(i,r.default),m;if(f||s)m=i.let(`valid`),e.block$data(m,loopEnum);else{if(!Array.isArray(c))throw Error(`ajv implementation error`);let e=i.const(`vSchema`,l);m=(0,t.or)(...c.map((t,n)=>equalCode(e,n)))}e.pass(m);function loopEnum(){i.assign(m,!1),i.forOf(`v`,l,e=>i.if((0,t._)`${getEql()}(${a}, ${e})`,()=>i.assign(m,!0).break()))}function equalCode(e,n){let r=c[n];return typeof r==`object`&&r?(0,t._)`${getEql()}(${a}, ${e}[${n}])`:(0,t._)`${a} === ${r}`}}}})),Xa=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=Ra(),n=za(),r=Va(),i=Ha(),a=Ua(),s=Wa(),c=Ga(),l=qa(),u=Ja(),f=Ya();e.default=[t.default,n.default,r.default,i.default,a.default,s.default,c.default,l.default,{keyword:`type`,schemaType:[`string`,`array`]},{keyword:`nullable`,schemaType:`boolean`},u.default,f.default]})),Za=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.validateAdditionalItems=void 0;let t=R(),n=z(),r={keyword:`additionalItems`,type:`array`,schemaType:[`boolean`,`object`],before:`uniqueItems`,error:{message:({params:{len:e}})=>(0,t.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,t._)`{limit: ${e}}`},code(e){let{parentSchema:t,it:r}=e,{items:i}=t;if(!Array.isArray(i)){(0,n.checkStrictMode)(r,`"additionalItems" is ignored when "items" is not an array of schemas`);return}validateAdditionalItems(e,i)}};function validateAdditionalItems(e,r){let{gen:i,schema:a,data:s,keyword:c,it:l}=e;l.items=!0;let u=i.const(`len`,(0,t._)`${s}.length`);if(a===!1)e.setParams({len:r.length}),e.pass((0,t._)`${u} <= ${r.length}`);else if(typeof a==`object`&&!(0,n.alwaysValidSchema)(l,a)){let n=i.var(`valid`,(0,t._)`${u} <= ${r.length}`);i.if((0,t.not)(n),()=>validateItems(n)),e.ok(n)}function validateItems(a){i.forRange(`i`,r.length,u,r=>{e.subschema({keyword:c,dataProp:r,dataPropType:n.Type.Num},a),l.allErrors||i.if((0,t.not)(a),()=>i.break())})}}e.validateAdditionalItems=validateAdditionalItems,e.default=r})),Qa=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.validateTuple=void 0;let t=R(),n=z(),r=ya(),i={keyword:`items`,type:`array`,schemaType:[`object`,`array`,`boolean`],before:`uniqueItems`,code(e){let{schema:t,it:i}=e;if(Array.isArray(t))return validateTuple(e,`additionalItems`,t);i.items=!0,!(0,n.alwaysValidSchema)(i,t)&&e.ok((0,r.validateArray)(e))}};function validateTuple(e,r,i=e.schema){let{gen:a,parentSchema:s,data:c,keyword:l,it:u}=e;checkStrictTuple(s),u.opts.unevaluated&&i.length&&u.items!==!0&&(u.items=n.mergeEvaluated.items(a,i.length,u.items));let f=a.name(`valid`),p=a.const(`len`,(0,t._)`${c}.length`);i.forEach((r,i)=>{(0,n.alwaysValidSchema)(u,r)||(a.if((0,t._)`${p} > ${i}`,()=>e.subschema({keyword:l,schemaProp:i,dataProp:i},f)),e.ok(f))});function checkStrictTuple(e){let{opts:t,errSchemaPath:a}=u,s=i.length,c=s===e.minItems&&(s===e.maxItems||e[r]===!1);if(t.strictTuples&&!c){let e=`"${l}" is ${s}-tuple, but minItems or maxItems/${r} are not specified or different at path "${a}"`;(0,n.checkStrictMode)(u,e,t.strictTuples)}}}e.validateTuple=validateTuple,e.default=i})),$a=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=Qa();e.default={keyword:`prefixItems`,type:`array`,schemaType:[`array`],before:`uniqueItems`,code:e=>(0,t.validateTuple)(e,`items`)}})),eo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R(),n=z(),r=ya(),i=Za();e.default={keyword:`items`,type:`array`,schemaType:[`object`,`boolean`],before:`uniqueItems`,error:{message:({params:{len:e}})=>(0,t.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,t._)`{limit: ${e}}`},code(e){let{schema:t,parentSchema:a,it:s}=e,{prefixItems:c}=a;s.items=!0,!(0,n.alwaysValidSchema)(s,t)&&(c?(0,i.validateAdditionalItems)(e,c):e.ok((0,r.validateArray)(e)))}}})),to=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R(),n=z();e.default={keyword:`contains`,type:`array`,schemaType:[`object`,`boolean`],before:`uniqueItems`,trackErrors:!0,error:{message:({params:{min:e,max:n}})=>n===void 0?(0,t.str)`must contain at least ${e} valid item(s)`:(0,t.str)`must contain at least ${e} and no more than ${n} valid item(s)`,params:({params:{min:e,max:n}})=>n===void 0?(0,t._)`{minContains: ${e}}`:(0,t._)`{minContains: ${e}, maxContains: ${n}}`},code(e){let{gen:r,schema:i,parentSchema:a,data:s,it:c}=e,l,u,{minContains:f,maxContains:p}=a;c.opts.next?(l=f===void 0?1:f,u=p):l=1;let m=r.const(`len`,(0,t._)`${s}.length`);if(e.setParams({min:l,max:u}),u===void 0&&l===0){(0,n.checkStrictMode)(c,`"minContains" == 0 without "maxContains": "contains" keyword ignored`);return}if(u!==void 0&&l>u){(0,n.checkStrictMode)(c,`"minContains" > "maxContains" is always invalid`),e.fail();return}if((0,n.alwaysValidSchema)(c,i)){let n=(0,t._)`${m} >= ${l}`;u!==void 0&&(n=(0,t._)`${n} && ${m} <= ${u}`),e.pass(n);return}c.items=!0;let h=r.name(`valid`);u===void 0&&l===1?validateItems(h,()=>r.if(h,()=>r.break())):l===0?(r.let(h,!0),u!==void 0&&r.if((0,t._)`${s}.length > 0`,validateItemsWithCount)):(r.let(h,!1),validateItemsWithCount()),e.result(h,()=>e.reset());function validateItemsWithCount(){let e=r.name(`_valid`),t=r.let(`count`,0);validateItems(e,()=>r.if(e,()=>checkLimits(t)))}function validateItems(t,i){r.forRange(`i`,0,m,r=>{e.subschema({keyword:`contains`,dataProp:r,dataPropType:n.Type.Num,compositeRule:!0},t),i()})}function checkLimits(e){r.code((0,t._)`${e}++`),u===void 0?r.if((0,t._)`${e} >= ${l}`,()=>r.assign(h,!0).break()):(r.if((0,t._)`${e} > ${u}`,()=>r.assign(h,!1).break()),l===1?r.assign(h,!0):r.if((0,t._)`${e} >= ${l}`,()=>r.assign(h,!0)))}}}})),no=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.validateSchemaDeps=e.validatePropertyDeps=e.error=void 0;let t=R(),n=z(),r=ya();e.error={message:({params:{property:e,depsCount:n,deps:r}})=>{let i=n===1?`property`:`properties`;return(0,t.str)`must have ${i} ${r} when property ${e} is present`},params:({params:{property:e,depsCount:n,deps:r,missingProperty:i}})=>(0,t._)`{property: ${e},
|
|
171
|
+
missingProperty: ${i},
|
|
172
|
+
depsCount: ${n},
|
|
173
|
+
deps: ${r}}`};let i={keyword:`dependencies`,type:`object`,schemaType:`object`,error:e.error,code(e){let[t,n]=splitDependencies(e);validatePropertyDeps(e,t),validateSchemaDeps(e,n)}};function splitDependencies({schema:e}){let t={},n={};for(let r in e){if(r===`__proto__`)continue;let i=Array.isArray(e[r])?t:n;i[r]=e[r]}return[t,n]}function validatePropertyDeps(e,n=e.schema){let{gen:i,data:a,it:s}=e;if(Object.keys(n).length===0)return;let c=i.let(`missing`);for(let l in n){let u=n[l];if(u.length===0)continue;let f=(0,r.propertyInData)(i,a,l,s.opts.ownProperties);e.setParams({property:l,depsCount:u.length,deps:u.join(`, `)}),s.allErrors?i.if(f,()=>{for(let t of u)(0,r.checkReportMissingProp)(e,t)}):(i.if((0,t._)`${f} && (${(0,r.checkMissingProp)(e,u,c)})`),(0,r.reportMissingProp)(e,c),i.else())}}e.validatePropertyDeps=validatePropertyDeps;function validateSchemaDeps(e,t=e.schema){let{gen:i,data:a,keyword:s,it:c}=e,l=i.name(`valid`);for(let u in t)(0,n.alwaysValidSchema)(c,t[u])||(i.if((0,r.propertyInData)(i,a,u,c.opts.ownProperties),()=>{let t=e.subschema({keyword:s,schemaProp:u},l);e.mergeValidEvaluated(t,l)},()=>i.var(l,!0)),e.ok(l))}e.validateSchemaDeps=validateSchemaDeps,e.default=i})),ro=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R(),n=z();e.default={keyword:`propertyNames`,type:`object`,schemaType:[`object`,`boolean`],error:{message:`property name must be valid`,params:({params:e})=>(0,t._)`{propertyName: ${e.propertyName}}`},code(e){let{gen:r,schema:i,data:a,it:s}=e;if((0,n.alwaysValidSchema)(s,i))return;let c=r.name(`valid`);r.forIn(`key`,a,n=>{e.setParams({propertyName:n}),e.subschema({keyword:`propertyNames`,data:n,dataTypes:[`string`],propertyName:n,compositeRule:!0},c),r.if((0,t.not)(c),()=>{e.error(!0),s.allErrors||r.break()})}),e.ok(c)}}})),io=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=ya(),n=R(),r=fa(),i=z();e.default={keyword:`additionalProperties`,type:[`object`],schemaType:[`boolean`,`object`],allowUndefined:!0,trackErrors:!0,error:{message:`must NOT have additional properties`,params:({params:e})=>(0,n._)`{additionalProperty: ${e.additionalProperty}}`},code(e){let{gen:a,schema:s,parentSchema:c,data:l,errsCount:u,it:f}=e;if(!u)throw Error(`ajv implementation error`);let{allErrors:p,opts:m}=f;if(f.props=!0,m.removeAdditional!==`all`&&(0,i.alwaysValidSchema)(f,s))return;let h=(0,t.allSchemaProperties)(c.properties),g=(0,t.allSchemaProperties)(c.patternProperties);checkAdditionalProperties(),e.ok((0,n._)`${u} === ${r.default.errors}`);function checkAdditionalProperties(){a.forIn(`key`,l,e=>{!h.length&&!g.length?additionalPropertyCode(e):a.if(isAdditional(e),()=>additionalPropertyCode(e))})}function isAdditional(r){let s;if(h.length>8){let e=(0,i.schemaRefOrVal)(f,c.properties,`properties`);s=(0,t.isOwnProperty)(a,e,r)}else s=h.length?(0,n.or)(...h.map(e=>(0,n._)`${r} === ${e}`)):n.nil;return g.length&&(s=(0,n.or)(s,...g.map(i=>(0,n._)`${(0,t.usePattern)(e,i)}.test(${r})`))),(0,n.not)(s)}function deleteAdditional(e){a.code((0,n._)`delete ${l}[${e}]`)}function additionalPropertyCode(t){if(m.removeAdditional===`all`||m.removeAdditional&&s===!1){deleteAdditional(t);return}if(s===!1){e.setParams({additionalProperty:t}),e.error(),p||a.break();return}if(typeof s==`object`&&!(0,i.alwaysValidSchema)(f,s)){let r=a.name(`valid`);m.removeAdditional===`failing`?(applyAdditionalSchema(t,r,!1),a.if((0,n.not)(r),()=>{e.reset(),deleteAdditional(t)})):(applyAdditionalSchema(t,r),p||a.if((0,n.not)(r),()=>a.break()))}}function applyAdditionalSchema(t,n,r){let a={keyword:`additionalProperties`,dataProp:t,dataPropType:i.Type.Str};r===!1&&Object.assign(a,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(a,n)}}}})),ao=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=Ta(),n=ya(),r=z(),i=io();e.default={keyword:`properties`,type:`object`,schemaType:`object`,code(e){let{gen:a,schema:s,parentSchema:c,data:l,it:u}=e;u.opts.removeAdditional===`all`&&c.additionalProperties===void 0&&i.default.code(new t.KeywordCxt(u,i.default,`additionalProperties`));let f=(0,n.allSchemaProperties)(s);for(let e of f)u.definedProperties.add(e);u.opts.unevaluated&&f.length&&u.props!==!0&&(u.props=r.mergeEvaluated.props(a,(0,r.toHash)(f),u.props));let p=f.filter(e=>!(0,r.alwaysValidSchema)(u,s[e]));if(p.length===0)return;let m=a.name(`valid`);for(let t of p)hasDefault(t)?applyPropertySchema(t):(a.if((0,n.propertyInData)(a,l,t,u.opts.ownProperties)),applyPropertySchema(t),u.allErrors||a.else().var(m,!0),a.endIf()),e.it.definedProperties.add(t),e.ok(m);function hasDefault(e){return u.opts.useDefaults&&!u.compositeRule&&s[e].default!==void 0}function applyPropertySchema(t){e.subschema({keyword:`properties`,schemaProp:t,dataProp:t},m)}}}})),oo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=ya(),n=R(),r=z(),i=z();e.default={keyword:`patternProperties`,type:`object`,schemaType:`object`,code(e){let{gen:a,schema:s,data:c,parentSchema:l,it:u}=e,{opts:f}=u,p=(0,t.allSchemaProperties)(s),m=p.filter(e=>(0,r.alwaysValidSchema)(u,s[e]));if(p.length===0||m.length===p.length&&(!u.opts.unevaluated||u.props===!0))return;let h=f.strictSchema&&!f.allowMatchingProperties&&l.properties,g=a.name(`valid`);u.props!==!0&&!(u.props instanceof n.Name)&&(u.props=(0,i.evaluatedPropsToName)(a,u.props));let{props:v}=u;validatePatternProperties();function validatePatternProperties(){for(let e of p)h&&checkMatchingProperties(e),u.allErrors?validateProperties(e):(a.var(g,!0),validateProperties(e),a.if(g))}function checkMatchingProperties(e){for(let t in h)new RegExp(e).test(t)&&(0,r.checkStrictMode)(u,`property ${t} matches pattern ${e} (use allowMatchingProperties)`)}function validateProperties(r){a.forIn(`key`,c,s=>{a.if((0,n._)`${(0,t.usePattern)(e,r)}.test(${s})`,()=>{let t=m.includes(r);t||e.subschema({keyword:`patternProperties`,schemaProp:r,dataProp:s,dataPropType:i.Type.Str},g),u.opts.unevaluated&&v!==!0?a.assign((0,n._)`${v}[${s}]`,!0):!t&&!u.allErrors&&a.if((0,n.not)(g),()=>a.break())})})}}}})),so=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=z();e.default={keyword:`not`,schemaType:[`object`,`boolean`],trackErrors:!0,code(e){let{gen:n,schema:r,it:i}=e;if((0,t.alwaysValidSchema)(i,r)){e.fail();return}let a=n.name(`valid`);e.subschema({keyword:`not`,compositeRule:!0,createErrors:!1,allErrors:!1},a),e.failResult(a,()=>e.reset(),()=>e.error())},error:{message:`must NOT be valid`}}})),co=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default={keyword:`anyOf`,schemaType:`array`,trackErrors:!0,code:ya().validateUnion,error:{message:`must match a schema in anyOf`}}})),lo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R(),n=z();e.default={keyword:`oneOf`,schemaType:`array`,trackErrors:!0,error:{message:`must match exactly one schema in oneOf`,params:({params:e})=>(0,t._)`{passingSchemas: ${e.passing}}`},code(e){let{gen:r,schema:i,parentSchema:a,it:s}=e;if(!Array.isArray(i))throw Error(`ajv implementation error`);if(s.opts.discriminator&&a.discriminator)return;let c=i,l=r.let(`valid`,!1),u=r.let(`passing`,null),f=r.name(`_valid`);e.setParams({passing:u}),r.block(validateOneOf),e.result(l,()=>e.reset(),()=>e.error(!0));function validateOneOf(){c.forEach((i,a)=>{let c;(0,n.alwaysValidSchema)(s,i)?r.var(f,!0):c=e.subschema({keyword:`oneOf`,schemaProp:a,compositeRule:!0},f),a>0&&r.if((0,t._)`${f} && ${l}`).assign(l,!1).assign(u,(0,t._)`[${u}, ${a}]`).else(),r.if(f,()=>{r.assign(l,!0),r.assign(u,a),c&&e.mergeEvaluated(c,t.Name)})})}}}})),uo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=z();e.default={keyword:`allOf`,schemaType:`array`,code(e){let{gen:n,schema:r,it:i}=e;if(!Array.isArray(r))throw Error(`ajv implementation error`);let a=n.name(`valid`);r.forEach((n,r)=>{if((0,t.alwaysValidSchema)(i,n))return;let s=e.subschema({keyword:`allOf`,schemaProp:r},a);e.ok(a),e.mergeEvaluated(s)})}}})),fo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R(),n=z(),r={keyword:`if`,schemaType:[`object`,`boolean`],trackErrors:!0,error:{message:({params:e})=>(0,t.str)`must match "${e.ifClause}" schema`,params:({params:e})=>(0,t._)`{failingKeyword: ${e.ifClause}}`},code(e){let{gen:r,parentSchema:i,it:a}=e;i.then===void 0&&i.else===void 0&&(0,n.checkStrictMode)(a,`"if" without "then" and "else" is ignored`);let s=hasSchema(a,`then`),c=hasSchema(a,`else`);if(!s&&!c)return;let l=r.let(`valid`,!0),u=r.name(`_valid`);if(validateIf(),e.reset(),s&&c){let t=r.let(`ifClause`);e.setParams({ifClause:t}),r.if(u,validateClause(`then`,t),validateClause(`else`,t))}else s?r.if(u,validateClause(`then`)):r.if((0,t.not)(u),validateClause(`else`));e.pass(l,()=>e.error(!0));function validateIf(){let t=e.subschema({keyword:`if`,compositeRule:!0,createErrors:!1,allErrors:!1},u);e.mergeEvaluated(t)}function validateClause(n,i){return()=>{let a=e.subschema({keyword:n},u);r.assign(l,u),e.mergeValidEvaluated(a,l),i?r.assign(i,(0,t._)`${n}`):e.setParams({ifClause:n})}}}};function hasSchema(e,t){let r=e.schema[t];return r!==void 0&&!(0,n.alwaysValidSchema)(e,r)}e.default=r})),po=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=z();e.default={keyword:[`then`,`else`],schemaType:[`object`,`boolean`],code({keyword:e,parentSchema:n,it:r}){n.if===void 0&&(0,t.checkStrictMode)(r,`"${e}" without "if" is ignored`)}}})),mo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=Za(),n=$a(),r=Qa(),i=eo(),a=to(),s=no(),c=ro(),l=io(),u=ao(),f=oo(),p=so(),m=co(),h=lo(),g=uo(),v=fo(),y=po();function getApplicator(e=!1){let b=[p.default,m.default,h.default,g.default,v.default,y.default,c.default,l.default,s.default,u.default,f.default];return e?b.push(n.default,i.default):b.push(t.default,r.default),b.push(a.default),b}e.default=getApplicator})),ho=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.dynamicAnchor=void 0;let t=R(),n=fa(),r=Oa(),i=Ia(),a={keyword:`$dynamicAnchor`,schemaType:`string`,code:e=>dynamicAnchor(e,e.schema)};function dynamicAnchor(e,r){let{gen:i,it:a}=e;a.schemaEnv.root.dynamicAnchors[r]=!0;let s=(0,t._)`${n.default.dynamicAnchors}${(0,t.getProperty)(r)}`,c=a.errSchemaPath===`#`?a.validateName:_getValidate(e);i.if((0,t._)`!${s}`,()=>i.assign(s,c))}e.dynamicAnchor=dynamicAnchor;function _getValidate(e){let{schemaEnv:t,schema:n,self:a}=e.it,{root:s,baseId:c,localRefs:l,meta:u}=t.root,{schemaId:f}=a.opts,p=new r.SchemaEnv({schema:n,schemaId:f,root:s,baseId:c,localRefs:l,meta:u});return r.compileSchema.call(a,p),(0,i.getValidate)(e,p)}e.default=a})),go=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.dynamicRef=void 0;let t=R(),n=fa(),r=Ia(),i={keyword:`$dynamicRef`,schemaType:`string`,code:e=>dynamicRef(e,e.schema)};function dynamicRef(e,i){let{gen:a,keyword:s,it:c}=e;if(i[0]!==`#`)throw Error(`"${s}" only supports hash fragment reference`);let l=i.slice(1);if(c.allErrors)_dynamicRef();else{let t=a.let(`valid`,!1);_dynamicRef(t),e.ok(t)}function _dynamicRef(e){if(c.schemaEnv.root.dynamicAnchors[l]){let r=a.let(`_v`,(0,t._)`${n.default.dynamicAnchors}${(0,t.getProperty)(l)}`);a.if(r,_callRef(r,e),_callRef(c.validateName,e))}else _callRef(c.validateName,e)()}function _callRef(t,n){return n?()=>a.block(()=>{(0,r.callRef)(e,t),a.let(n,!0)}):()=>(0,r.callRef)(e,t)}}e.dynamicRef=dynamicRef,e.default=i})),_o=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=ho(),n=z();e.default={keyword:`$recursiveAnchor`,schemaType:`boolean`,code(e){e.schema?(0,t.dynamicAnchor)(e,``):(0,n.checkStrictMode)(e.it,`$recursiveAnchor: false is ignored`)}}})),vo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=go();e.default={keyword:`$recursiveRef`,schemaType:`string`,code:e=>(0,t.dynamicRef)(e,e.schema)}})),yo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=ho(),n=go(),r=_o(),i=vo();e.default=[t.default,n.default,r.default,i.default]})),bo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=no();e.default={keyword:`dependentRequired`,type:`object`,schemaType:`object`,error:t.error,code:e=>(0,t.validatePropertyDeps)(e)}})),xo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=no();e.default={keyword:`dependentSchemas`,type:`object`,schemaType:`object`,code:e=>(0,t.validateSchemaDeps)(e)}})),So=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=z();e.default={keyword:[`maxContains`,`minContains`],type:`array`,schemaType:`number`,code({keyword:e,parentSchema:n,it:r}){n.contains===void 0&&(0,t.checkStrictMode)(r,`"${e}" without "contains" is ignored`)}}})),Co=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=bo(),n=xo(),r=So();e.default=[t.default,n.default,r.default]})),wo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R(),n=z(),r=fa();e.default={keyword:`unevaluatedProperties`,type:`object`,schemaType:[`boolean`,`object`],trackErrors:!0,error:{message:`must NOT have unevaluated properties`,params:({params:e})=>(0,t._)`{unevaluatedProperty: ${e.unevaluatedProperty}}`},code(e){let{gen:i,schema:a,data:s,errsCount:c,it:l}=e;if(!c)throw Error(`ajv implementation error`);let{allErrors:u,props:f}=l;f instanceof t.Name?i.if((0,t._)`${f} !== true`,()=>i.forIn(`key`,s,e=>i.if(unevaluatedDynamic(f,e),()=>unevaluatedPropCode(e)))):f!==!0&&i.forIn(`key`,s,e=>f===void 0?unevaluatedPropCode(e):i.if(unevaluatedStatic(f,e),()=>unevaluatedPropCode(e))),l.props=!0,e.ok((0,t._)`${c} === ${r.default.errors}`);function unevaluatedPropCode(r){if(a===!1){e.setParams({unevaluatedProperty:r}),e.error(),u||i.break();return}if(!(0,n.alwaysValidSchema)(l,a)){let a=i.name(`valid`);e.subschema({keyword:`unevaluatedProperties`,dataProp:r,dataPropType:n.Type.Str},a),u||i.if((0,t.not)(a),()=>i.break())}}function unevaluatedDynamic(e,n){return(0,t._)`!${e} || !${e}[${n}]`}function unevaluatedStatic(e,n){let r=[];for(let i in e)e[i]===!0&&r.push((0,t._)`${n} !== ${i}`);return(0,t.and)(...r)}}}})),To=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R(),n=z();e.default={keyword:`unevaluatedItems`,type:`array`,schemaType:[`boolean`,`object`],error:{message:({params:{len:e}})=>(0,t.str)`must NOT have more than ${e} items`,params:({params:{len:e}})=>(0,t._)`{limit: ${e}}`},code(e){let{gen:r,schema:i,data:a,it:s}=e,c=s.items||0;if(c===!0)return;let l=r.const(`len`,(0,t._)`${a}.length`);if(i===!1)e.setParams({len:c}),e.fail((0,t._)`${l} > ${c}`);else if(typeof i==`object`&&!(0,n.alwaysValidSchema)(s,i)){let n=r.var(`valid`,(0,t._)`${l} <= ${c}`);r.if((0,t.not)(n),()=>validateItems(n,c)),e.ok(n)}s.items=!0;function validateItems(i,a){r.forRange(`i`,a,l,a=>{e.subschema({keyword:`unevaluatedItems`,dataProp:a,dataPropType:n.Type.Num},i),s.allErrors||r.if((0,t.not)(i),()=>r.break())})}}}})),Eo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=wo(),n=To();e.default=[t.default,n.default]})),Do=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R();e.default={keyword:`format`,type:[`number`,`string`],schemaType:`string`,$data:!0,error:{message:({schemaCode:e})=>(0,t.str)`must match format "${e}"`,params:({schemaCode:e})=>(0,t._)`{format: ${e}}`},code(e,n){let{gen:r,data:i,$data:a,schema:s,schemaCode:c,it:l}=e,{opts:u,errSchemaPath:f,schemaEnv:p,self:m}=l;if(!u.validateFormats)return;a?validate$DataFormat():validateFormat();function validate$DataFormat(){let a=r.scopeValue(`formats`,{ref:m.formats,code:u.code.formats}),s=r.const(`fDef`,(0,t._)`${a}[${c}]`),l=r.let(`fType`),f=r.let(`format`);r.if((0,t._)`typeof ${s} == "object" && !(${s} instanceof RegExp)`,()=>r.assign(l,(0,t._)`${s}.type || "string"`).assign(f,(0,t._)`${s}.validate`),()=>r.assign(l,(0,t._)`"string"`).assign(f,s)),e.fail$data((0,t.or)(unknownFmt(),invalidFmt()));function unknownFmt(){return u.strictSchema===!1?t.nil:(0,t._)`${c} && !${f}`}function invalidFmt(){let e=p.$async?(0,t._)`(${s}.async ? await ${f}(${i}) : ${f}(${i}))`:(0,t._)`${f}(${i})`,r=(0,t._)`(typeof ${f} == "function" ? ${e} : ${f}.test(${i}))`;return(0,t._)`${f} && ${f} !== true && ${l} === ${n} && !${r}`}}function validateFormat(){let a=m.formats[s];if(!a){unknownFormat();return}if(a===!0)return;let[c,l,h]=getFormat(a);c===n&&e.pass(validCondition());function unknownFormat(){if(u.strictSchema===!1){m.logger.warn(unknownMsg());return}throw Error(unknownMsg());function unknownMsg(){return`unknown format "${s}" ignored in schema at path "${f}"`}}function getFormat(e){let n=e instanceof RegExp?(0,t.regexpCode)(e):u.code.formats?(0,t._)`${u.code.formats}${(0,t.getProperty)(s)}`:void 0,i=r.scopeValue(`formats`,{key:s,ref:e,code:n});return typeof e==`object`&&!(e instanceof RegExp)?[e.type||`string`,e.validate,(0,t._)`${i}.validate`]:[`string`,e,i]}function validCondition(){if(typeof a==`object`&&!(a instanceof RegExp)&&a.async){if(!p.$async)throw Error(`async format in sync schema`);return(0,t._)`await ${h}(${i})`}return typeof l==`function`?(0,t._)`${h}(${i})`:(0,t._)`${h}.test(${i})`}}}}})),Oo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.default=[Do().default]})),ko=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.contentVocabulary=e.metadataVocabulary=void 0,e.metadataVocabulary=[`title`,`description`,`default`,`deprecated`,`readOnly`,`writeOnly`,`examples`],e.contentVocabulary=[`contentMediaType`,`contentEncoding`,`contentSchema`]})),Ao=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=La(),n=Xa(),r=mo(),i=yo(),a=Co(),s=Eo(),c=Oo(),l=ko();e.default=[i.default,t.default,n.default,(0,r.default)(!0),c.default,l.metadataVocabulary,l.contentVocabulary,a.default,s.default]})),jo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.DiscrError=void 0;var t;(function(e){e.Tag=`tag`,e.Mapping=`mapping`})(t||(e.DiscrError=t={}))})),Mo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=R(),n=jo(),r=Oa(),i=Da(),a=z();e.default={keyword:`discriminator`,type:`object`,schemaType:`object`,error:{message:({params:{discrError:e,tagName:t}})=>e===n.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:n,tagName:r}})=>(0,t._)`{error: ${e}, tag: ${r}, tagValue: ${n}}`},code(e){let{gen:s,data:c,schema:l,parentSchema:u,it:f}=e,{oneOf:p}=u;if(!f.opts.discriminator)throw Error(`discriminator: requires discriminator option`);let m=l.propertyName;if(typeof m!=`string`)throw Error(`discriminator: requires propertyName`);if(l.mapping)throw Error(`discriminator: mapping is not supported`);if(!p)throw Error(`discriminator: requires oneOf keyword`);let h=s.let(`valid`,!1),g=s.const(`tag`,(0,t._)`${c}${(0,t.getProperty)(m)}`);s.if((0,t._)`typeof ${g} == "string"`,()=>validateMapping(),()=>e.error(!1,{discrError:n.DiscrError.Tag,tag:g,tagName:m})),e.ok(h);function validateMapping(){let r=getMapping();s.if(!1);for(let e in r)s.elseIf((0,t._)`${g} === ${e}`),s.assign(h,applyTagSchema(r[e]));s.else(),e.error(!1,{discrError:n.DiscrError.Mapping,tag:g,tagName:m}),s.endIf()}function applyTagSchema(n){let r=s.name(`valid`),i=e.subschema({keyword:`oneOf`,schemaProp:n},r);return e.mergeEvaluated(i,t.Name),r}function getMapping(){let e={},t=hasRequired(u),n=!0;for(let e=0;e<p.length;e++){let s=p[e];if(s?.$ref&&!(0,a.schemaHasRulesButRef)(s,f.self.RULES)){let e=s.$ref;if(s=r.resolveRef.call(f.self,f.schemaEnv.root,f.baseId,e),s instanceof r.SchemaEnv&&(s=s.schema),s===void 0)throw new i.default(f.opts.uriResolver,f.baseId,e)}let c=s?.properties?.[m];if(typeof c!=`object`)throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${m}"`);n&&=t||hasRequired(s),addMappings(c,e)}if(!n)throw Error(`discriminator: "${m}" must be required`);return e;function hasRequired({required:e}){return Array.isArray(e)&&e.includes(m)}function addMappings(e,t){if(e.const)addMapping(e.const,t);else if(e.enum)for(let n of e.enum)addMapping(n,t);else throw Error(`discriminator: "properties/${m}" must have "const" or "enum"`)}function addMapping(t,n){if(typeof t!=`string`||t in e)throw Error(`discriminator: "${m}" values must be unique strings`);e[t]=n}}}}})),No=n(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/schema`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:`meta`,title:`Core and Validation specifications meta-schema`,allOf:[{$ref:`meta/core`},{$ref:`meta/applicator`},{$ref:`meta/unevaluated`},{$ref:`meta/validation`},{$ref:`meta/meta-data`},{$ref:`meta/format-annotation`},{$ref:`meta/content`}],type:[`object`,`boolean`],$comment:`This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.`,properties:{definitions:{$comment:`"definitions" has been replaced by "$defs".`,type:`object`,additionalProperties:{$dynamicRef:`#meta`},deprecated:!0,default:{}},dependencies:{$comment:`"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.`,type:`object`,additionalProperties:{anyOf:[{$dynamicRef:`#meta`},{$ref:`meta/validation#/$defs/stringArray`}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:`"$recursiveAnchor" has been replaced by "$dynamicAnchor".`,$ref:`meta/core#/$defs/anchorString`,deprecated:!0},$recursiveRef:{$comment:`"$recursiveRef" has been replaced by "$dynamicRef".`,$ref:`meta/core#/$defs/uriReferenceString`,deprecated:!0}}}})),Po=n(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/applicator`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:`meta`,title:`Applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{prefixItems:{$ref:`#/$defs/schemaArray`},items:{$dynamicRef:`#meta`},contains:{$dynamicRef:`#meta`},additionalProperties:{$dynamicRef:`#meta`},properties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},patternProperties:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},propertyNames:{format:`regex`},default:{}},dependentSchemas:{type:`object`,additionalProperties:{$dynamicRef:`#meta`},default:{}},propertyNames:{$dynamicRef:`#meta`},if:{$dynamicRef:`#meta`},then:{$dynamicRef:`#meta`},else:{$dynamicRef:`#meta`},allOf:{$ref:`#/$defs/schemaArray`},anyOf:{$ref:`#/$defs/schemaArray`},oneOf:{$ref:`#/$defs/schemaArray`},not:{$dynamicRef:`#meta`}},$defs:{schemaArray:{type:`array`,minItems:1,items:{$dynamicRef:`#meta`}}}}})),Fo=n(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/unevaluated`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:`meta`,title:`Unevaluated applicator vocabulary meta-schema`,type:[`object`,`boolean`],properties:{unevaluatedItems:{$dynamicRef:`#meta`},unevaluatedProperties:{$dynamicRef:`#meta`}}}})),Io=n(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/content`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:`meta`,title:`Content vocabulary meta-schema`,type:[`object`,`boolean`],properties:{contentEncoding:{type:`string`},contentMediaType:{type:`string`},contentSchema:{$dynamicRef:`#meta`}}}})),Lo=n(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/core`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:`meta`,title:`Core vocabulary meta-schema`,type:[`object`,`boolean`],properties:{$id:{$ref:`#/$defs/uriReferenceString`,$comment:`Non-empty fragments not allowed.`,pattern:`^[^#]*#?$`},$schema:{$ref:`#/$defs/uriString`},$ref:{$ref:`#/$defs/uriReferenceString`},$anchor:{$ref:`#/$defs/anchorString`},$dynamicRef:{$ref:`#/$defs/uriReferenceString`},$dynamicAnchor:{$ref:`#/$defs/anchorString`},$vocabulary:{type:`object`,propertyNames:{$ref:`#/$defs/uriString`},additionalProperties:{type:`boolean`}},$comment:{type:`string`},$defs:{type:`object`,additionalProperties:{$dynamicRef:`#meta`}}},$defs:{anchorString:{type:`string`,pattern:`^[A-Za-z_][-A-Za-z0-9._]*$`},uriString:{type:`string`,format:`uri`},uriReferenceString:{type:`string`,format:`uri-reference`}}}})),Ro=n(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/format-annotation`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:`meta`,title:`Format vocabulary meta-schema for annotation results`,type:[`object`,`boolean`],properties:{format:{type:`string`}}}})),zo=n(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/meta-data`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:`meta`,title:`Meta-data vocabulary meta-schema`,type:[`object`,`boolean`],properties:{title:{type:`string`},description:{type:`string`},default:!0,deprecated:{type:`boolean`,default:!1},readOnly:{type:`boolean`,default:!1},writeOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0}}}})),Bo=n(((e,t)=>{t.exports={$schema:`https://json-schema.org/draft/2020-12/schema`,$id:`https://json-schema.org/draft/2020-12/meta/validation`,$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:`meta`,title:`Validation vocabulary meta-schema`,type:[`object`,`boolean`],properties:{type:{anyOf:[{$ref:`#/$defs/simpleTypes`},{type:`array`,items:{$ref:`#/$defs/simpleTypes`},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:`array`,items:!0},multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/$defs/nonNegativeInteger`},minLength:{$ref:`#/$defs/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},maxItems:{$ref:`#/$defs/nonNegativeInteger`},minItems:{$ref:`#/$defs/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},maxContains:{$ref:`#/$defs/nonNegativeInteger`},minContains:{$ref:`#/$defs/nonNegativeInteger`,default:1},maxProperties:{$ref:`#/$defs/nonNegativeInteger`},minProperties:{$ref:`#/$defs/nonNegativeIntegerDefault0`},required:{$ref:`#/$defs/stringArray`},dependentRequired:{type:`object`,additionalProperties:{$ref:`#/$defs/stringArray`}}},$defs:{nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{$ref:`#/$defs/nonNegativeInteger`,default:0},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}}}})),Vo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=No(),n=Po(),r=Fo(),i=Io(),a=Lo(),s=Ro(),c=zo(),l=Bo(),u=[`/properties`];function addMetaSchema2020(e){return[t,n,r,i,a,with$data(this,s),c,with$data(this,l)].forEach(e=>this.addMetaSchema(e,void 0,!1)),this;function with$data(t,n){return e?t.$dataMetaSchema(n,u):n}}e.default=addMetaSchema2020})),Ho=n(((e,t)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.MissingRefError=e.ValidationError=e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=e.Ajv2020=void 0;let n=Pa(),r=Ao(),i=Mo(),a=Vo(),s=`https://json-schema.org/draft/2020-12/schema`;var Ajv2020=class extends n.default{constructor(e={}){super({...e,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){super._addVocabularies(),r.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(i.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:e,meta:t}=this.opts;t&&(a.default.call(this,e),this.refs[`http://json-schema.org/schema`]=s)}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(s)?s:void 0)}};e.Ajv2020=Ajv2020,t.exports=e=Ajv2020,t.exports.Ajv2020=Ajv2020,Object.defineProperty(e,"__esModule",{value:!0}),e.default=Ajv2020;var c=Ta();Object.defineProperty(e,"KeywordCxt",{enumerable:!0,get:function(){return c.KeywordCxt}});var l=R();Object.defineProperty(e,"_",{enumerable:!0,get:function(){return l._}}),Object.defineProperty(e,"str",{enumerable:!0,get:function(){return l.str}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return l.stringify}}),Object.defineProperty(e,"nil",{enumerable:!0,get:function(){return l.nil}}),Object.defineProperty(e,"Name",{enumerable:!0,get:function(){return l.Name}}),Object.defineProperty(e,"CodeGen",{enumerable:!0,get:function(){return l.CodeGen}});var u=Ea();Object.defineProperty(e,"ValidationError",{enumerable:!0,get:function(){return u.default}});var f=Da();Object.defineProperty(e,"MissingRefError",{enumerable:!0,get:function(){return f.default}})})),Uo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.formatNames=e.fastFormats=e.fullFormats=void 0;function fmtDef(e,t){return{validate:e,compare:t}}e.fullFormats={date:fmtDef(date,compareDate),time:fmtDef(getTime(!0),compareTime),"date-time":fmtDef(getDateTime(!0),compareDateTime),"iso-time":fmtDef(getTime(),compareIsoTime),"iso-date-time":fmtDef(getDateTime(),compareIsoDateTime),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte,int32:{type:`number`,validate:validateInt32},int64:{type:`number`,validate:validateInt64},float:{type:`number`,validate:validateNumber},double:{type:`number`,validate:validateNumber},password:!0,binary:!0},e.fastFormats={...e.fullFormats,date:fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,compareDate),time:fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,compareTime),"date-time":fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,compareDateTime),"iso-time":fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,compareIsoTime),"iso-date-time":fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,compareIsoDateTime),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i},e.formatNames=Object.keys(e.fullFormats);function isLeapYear(e){return e%4==0&&(e%100!=0||e%400==0)}let t=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,n=[0,31,28,31,30,31,30,31,31,30,31,30,31];function date(e){let r=t.exec(e);if(!r)return!1;let i=+r[1],a=+r[2],s=+r[3];return a>=1&&a<=12&&s>=1&&s<=(a===2&&isLeapYear(i)?29:n[a])}function compareDate(e,t){if(e&&t)return e>t?1:e<t?-1:0}let r=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function getTime(e){return function time(t){let n=r.exec(t);if(!n)return!1;let i=+n[1],a=+n[2],s=+n[3],c=n[4],l=n[5]===`-`?-1:1,u=+(n[6]||0),f=+(n[7]||0);if(u>23||f>59||e&&!c)return!1;if(i<=23&&a<=59&&s<60)return!0;let p=a-f*l,m=i-u*l-+(p<0);return(m===23||m===-1)&&(p===59||p===-1)&&s<61}}function compareTime(e,t){if(!(e&&t))return;let n=new Date(`2020-01-01T`+e).valueOf(),r=new Date(`2020-01-01T`+t).valueOf();if(n&&r)return n-r}function compareIsoTime(e,t){if(!(e&&t))return;let n=r.exec(e),i=r.exec(t);if(n&&i)return e=n[1]+n[2]+n[3],t=i[1]+i[2]+i[3],e>t?1:e<t?-1:0}let i=/t|\s/i;function getDateTime(e){let t=getTime(e);return function date_time(e){let n=e.split(i);return n.length===2&&date(n[0])&&t(n[1])}}function compareDateTime(e,t){if(!(e&&t))return;let n=new Date(e).valueOf(),r=new Date(t).valueOf();if(n&&r)return n-r}function compareIsoDateTime(e,t){if(!(e&&t))return;let[n,r]=e.split(i),[a,s]=t.split(i),c=compareDate(n,a);if(c!==void 0)return c||compareTime(r,s)}let a=/\/|:/,s=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function uri(e){return a.test(e)&&s.test(e)}let c=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function byte(e){return c.lastIndex=0,c.test(e)}let l=-(2**31),u=2**31-1;function validateInt32(e){return Number.isInteger(e)&&e<=u&&e>=l}function validateInt64(e){return Number.isInteger(e)}function validateNumber(){return!0}let f=/[^\\]\\Z/;function regex(e){if(f.test(e))return!1;try{return new RegExp(e),!0}catch{return!1}}})),Wo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=La(),n=Xa(),r=mo(),i=Oo(),a=ko();e.default=[t.default,n.default,(0,r.default)(),i.default,a.metadataVocabulary,a.contentVocabulary]})),Go=n(((e,t)=>{t.exports={$schema:`http://json-schema.org/draft-07/schema#`,$id:`http://json-schema.org/draft-07/schema#`,title:`Core schema meta-schema`,definitions:{schemaArray:{type:`array`,minItems:1,items:{$ref:`#`}},nonNegativeInteger:{type:`integer`,minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:`#/definitions/nonNegativeInteger`},{default:0}]},simpleTypes:{enum:[`array`,`boolean`,`integer`,`null`,`number`,`object`,`string`]},stringArray:{type:`array`,items:{type:`string`},uniqueItems:!0,default:[]}},type:[`object`,`boolean`],properties:{$id:{type:`string`,format:`uri-reference`},$schema:{type:`string`,format:`uri`},$ref:{type:`string`,format:`uri-reference`},$comment:{type:`string`},title:{type:`string`},description:{type:`string`},default:!0,readOnly:{type:`boolean`,default:!1},examples:{type:`array`,items:!0},multipleOf:{type:`number`,exclusiveMinimum:0},maximum:{type:`number`},exclusiveMaximum:{type:`number`},minimum:{type:`number`},exclusiveMinimum:{type:`number`},maxLength:{$ref:`#/definitions/nonNegativeInteger`},minLength:{$ref:`#/definitions/nonNegativeIntegerDefault0`},pattern:{type:`string`,format:`regex`},additionalItems:{$ref:`#`},items:{anyOf:[{$ref:`#`},{$ref:`#/definitions/schemaArray`}],default:!0},maxItems:{$ref:`#/definitions/nonNegativeInteger`},minItems:{$ref:`#/definitions/nonNegativeIntegerDefault0`},uniqueItems:{type:`boolean`,default:!1},contains:{$ref:`#`},maxProperties:{$ref:`#/definitions/nonNegativeInteger`},minProperties:{$ref:`#/definitions/nonNegativeIntegerDefault0`},required:{$ref:`#/definitions/stringArray`},additionalProperties:{$ref:`#`},definitions:{type:`object`,additionalProperties:{$ref:`#`},default:{}},properties:{type:`object`,additionalProperties:{$ref:`#`},default:{}},patternProperties:{type:`object`,additionalProperties:{$ref:`#`},propertyNames:{format:`regex`},default:{}},dependencies:{type:`object`,additionalProperties:{anyOf:[{$ref:`#`},{$ref:`#/definitions/stringArray`}]}},propertyNames:{$ref:`#`},const:!0,enum:{type:`array`,items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:`#/definitions/simpleTypes`},{type:`array`,items:{$ref:`#/definitions/simpleTypes`},minItems:1,uniqueItems:!0}]},format:{type:`string`},contentMediaType:{type:`string`},contentEncoding:{type:`string`},if:{$ref:`#`},then:{$ref:`#`},else:{$ref:`#`},allOf:{$ref:`#/definitions/schemaArray`},anyOf:{$ref:`#/definitions/schemaArray`},oneOf:{$ref:`#/definitions/schemaArray`},not:{$ref:`#`}},default:!0}})),Ko=n(((e,t)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.MissingRefError=e.ValidationError=e.CodeGen=e.Name=e.nil=e.stringify=e.str=e._=e.KeywordCxt=e.Ajv=void 0;let n=Pa(),r=Wo(),i=Mo(),a=Go(),s=[`/properties`],c=`http://json-schema.org/draft-07/schema`;var Ajv=class extends n.default{_addVocabularies(){super._addVocabularies(),r.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(i.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(a,s):a;this.addMetaSchema(e,c,!1),this.refs[`http://json-schema.org/schema`]=c}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(c)?c:void 0)}};e.Ajv=Ajv,t.exports=e=Ajv,t.exports.Ajv=Ajv,Object.defineProperty(e,"__esModule",{value:!0}),e.default=Ajv;var l=Ta();Object.defineProperty(e,"KeywordCxt",{enumerable:!0,get:function(){return l.KeywordCxt}});var u=R();Object.defineProperty(e,"_",{enumerable:!0,get:function(){return u._}}),Object.defineProperty(e,"str",{enumerable:!0,get:function(){return u.str}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return u.stringify}}),Object.defineProperty(e,"nil",{enumerable:!0,get:function(){return u.nil}}),Object.defineProperty(e,"Name",{enumerable:!0,get:function(){return u.Name}}),Object.defineProperty(e,"CodeGen",{enumerable:!0,get:function(){return u.CodeGen}});var f=Ea();Object.defineProperty(e,"ValidationError",{enumerable:!0,get:function(){return f.default}});var p=Da();Object.defineProperty(e,"MissingRefError",{enumerable:!0,get:function(){return p.default}})})),qo=n((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.formatLimitDefinition=void 0;let t=Ko(),n=R(),r=n.operators,i={formatMaximum:{okStr:`<=`,ok:r.LTE,fail:r.GT},formatMinimum:{okStr:`>=`,ok:r.GTE,fail:r.LT},formatExclusiveMaximum:{okStr:`<`,ok:r.LT,fail:r.GTE},formatExclusiveMinimum:{okStr:`>`,ok:r.GT,fail:r.LTE}};e.formatLimitDefinition={keyword:Object.keys(i),type:`string`,schemaType:`string`,$data:!0,error:{message:({keyword:e,schemaCode:t})=>(0,n.str)`should be ${i[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>(0,n._)`{comparison: ${i[e].okStr}, limit: ${t}}`},code(e){let{gen:r,data:a,schemaCode:s,keyword:c,it:l}=e,{opts:u,self:f}=l;if(!u.validateFormats)return;let p=new t.KeywordCxt(l,f.RULES.all.format.definition,`format`);p.$data?validate$DataFormat():validateFormat();function validate$DataFormat(){let t=r.scopeValue(`formats`,{ref:f.formats,code:u.code.formats}),i=r.const(`fmt`,(0,n._)`${t}[${p.schemaCode}]`);e.fail$data((0,n.or)((0,n._)`typeof ${i} != "object"`,(0,n._)`${i} instanceof RegExp`,(0,n._)`typeof ${i}.compare != "function"`,compareCode(i)))}function validateFormat(){let t=p.schema,i=f.formats[t];if(!i||i===!0)return;if(typeof i!=`object`||i instanceof RegExp||typeof i.compare!=`function`)throw Error(`"${c}": format "${t}" does not define "compare" function`);let a=r.scopeValue(`formats`,{key:t,ref:i,code:u.code.formats?(0,n._)`${u.code.formats}${(0,n.getProperty)(t)}`:void 0});e.fail$data(compareCode(a))}function compareCode(e){return(0,n._)`${e}.compare(${a}, ${s}) ${i[c].fail} 0`}},dependencies:[`format`]};let formatLimitPlugin=t=>(t.addKeyword(e.formatLimitDefinition),t);e.default=formatLimitPlugin})),Jo=n(((e,t)=>{Object.defineProperty(e,"__esModule",{value:!0});let n=Uo(),r=qo(),i=R(),a=new i.Name(`fullFormats`),s=new i.Name(`fastFormats`),formatsPlugin=(e,t={keywords:!0})=>{if(Array.isArray(t))return addFormats(e,t,n.fullFormats,a),e;let[i,c]=t.mode===`fast`?[n.fastFormats,s]:[n.fullFormats,a];return addFormats(e,t.formats||n.formatNames,i,c),t.keywords&&(0,r.default)(e),e};formatsPlugin.get=(e,t=`full`)=>{let r=(t===`fast`?n.fastFormats:n.fullFormats)[e];if(!r)throw Error(`Unknown format "${e}"`);return r};function addFormats(e,t,n,r){var a;(a=e.opts.code).formats??(a.formats=(0,i._)`require("ajv-formats/dist/formats").${r}`);for(let r of t)e.addFormat(r,n[r])}t.exports=e=formatsPlugin,Object.defineProperty(e,"__esModule",{value:!0}),e.default=formatsPlugin})),Yo=Ho(),Xo=e(Jo(),1);const copyProperty=(e,t,n,r)=>{if(n===`length`||n===`prototype`||n===`arguments`||n===`caller`)return;let i=Object.getOwnPropertyDescriptor(e,n),a=Object.getOwnPropertyDescriptor(t,n);!canCopyProperty(i,a)&&r||Object.defineProperty(e,n,a)},canCopyProperty=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},changePrototype=(e,t)=>{let n=Object.getPrototypeOf(t);n!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,n)},wrappedToString=(e,t)=>`/* Wrapped ${e}*/\n${t}`,Zo=Object.getOwnPropertyDescriptor(Function.prototype,`toString`),Qo=Object.getOwnPropertyDescriptor(Function.prototype.toString,`name`),changeToString=(e,t,n)=>{let r=n===``?``:`with ${n.trim()}() `,i=wrappedToString.bind(null,r,t.toString());Object.defineProperty(i,"name",Qo);let{writable:a,enumerable:s,configurable:c}=Zo;Object.defineProperty(e,"toString",{value:i,writable:a,enumerable:s,configurable:c})};function mimicFunction(e,t,{ignoreNonConfigurable:n=!1}={}){let{name:r}=e;for(let r of Reflect.ownKeys(t))copyProperty(e,t,r,n);return changePrototype(e,t),changeToString(e,t,r),e}const debounceFunction=(e,t={})=>{if(typeof e!=`function`)throw TypeError(`Expected the first argument to be a function, got \`${typeof e}\``);let{wait:n=0,maxWait:r=1/0,before:i=!1,after:a=!0}=t;if(n<0||r<0)throw RangeError("`wait` and `maxWait` must not be negative.");if(!i&&!a)throw Error("Both `before` and `after` are false, function wouldn't be called.");let s,c,l,debouncedFunction=function(...t){let u=this,later=()=>{s=void 0,c&&=(clearTimeout(c),void 0),a&&(l=e.apply(u,t))},maxLater=()=>{c=void 0,s&&=(clearTimeout(s),void 0),a&&(l=e.apply(u,t))},f=i&&!s;return clearTimeout(s),s=setTimeout(later,n),r>0&&r!==1/0&&!c&&(c=setTimeout(maxLater,r)),f&&(l=e.apply(u,t)),l};return mimicFunction(debouncedFunction,e),debouncedFunction.cancel=()=>{s&&=(clearTimeout(s),void 0),c&&=(clearTimeout(c),void 0)},debouncedFunction},$o=Object.prototype.toString;function isType(e,t,n){return e?e.constructor===t?!0:$o.call(e)===n:!1}function isUint8Array(e){return isType(e,Uint8Array,`[object Uint8Array]`)}function isArrayBuffer(e){return isType(e,ArrayBuffer,`[object ArrayBuffer]`)}function isUint8ArrayOrArrayBuffer(e){return isUint8Array(e)||isArrayBuffer(e)}function assertUint8Array(e){if(!isUint8Array(e))throw TypeError(`Expected \`Uint8Array\`, got \`${typeof e}\``)}function assertUint8ArrayOrArrayBuffer(e){if(!isUint8ArrayOrArrayBuffer(e))throw TypeError(`Expected \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof e}\``)}function concatUint8Arrays(e,t){if(e.length===0)return new Uint8Array;t??=e.reduce((e,t)=>e+t.length,0);let n=new Uint8Array(t),r=0;for(let t of e)assertUint8Array(t),n.set(t,r),r+=t.length;return n}const es={utf8:new globalThis.TextDecoder(`utf8`)};function uint8ArrayToString(e,t=`utf8`){return assertUint8ArrayOrArrayBuffer(e),es[t]??=new globalThis.TextDecoder(t),es[t].decode(e)}function assertString(e){if(typeof e!=`string`)throw TypeError(`Expected \`string\`, got \`${typeof e}\``)}const ts=new globalThis.TextEncoder;function stringToUint8Array(e){return assertString(e),ts.encode(e)}Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));const ns=`aes-256-cbc`,rs=new Set([`aes-256-cbc`,`aes-256-gcm`,`aes-256-ctr`]),isSupportedEncryptionAlgorithm=e=>typeof e==`string`&&rs.has(e),createPlainObject=()=>Object.create(null),isExist=e=>e!==void 0,checkValueType=(e,t)=>{let n=new Set([`undefined`,`symbol`,`function`]),r=typeof t;if(n.has(r))throw TypeError(`Setting a value of type \`${r}\` for key \`${e}\` is not allowed as it's not supported by JSON`)},is=`__internal__`,as=`${is}.migrations.version`;var Conf=class{path;events;#e;#t;#n;#r;#i={};#a=!1;#o;#s;#c;constructor(e={}){let t=this.#l(e);this.#r=t,this.#u(t),this.#f(t),this.#p(t),this.events=new EventTarget,this.#t=t.encryptionKey,this.#n=t.encryptionAlgorithm??ns,this.path=this.#m(t),this.#h(t),t.watch&&this._watch()}get(e,t){if(this.#r.accessPropertiesByDotNotation)return this._get(e,t);let{store:n}=this;return e in n?n[e]:t}set(e,t){if(typeof e!=`string`&&typeof e!=`object`)throw TypeError(`Expected \`key\` to be of type \`string\` or \`object\`, got ${typeof e}`);if(typeof e!=`object`&&t===void 0)throw TypeError("Use `delete()` to clear values");if(this._containsReservedKey(e))throw TypeError(`Please don't use the ${is} key, as it's used to manage this module internal operations.`);let{store:n}=this,set=(e,t)=>{if(checkValueType(e,t),this.#r.accessPropertiesByDotNotation)setProperty(n,e,t);else{if(e===`__proto__`||e===`constructor`||e===`prototype`)return;n[e]=t}};if(typeof e==`object`){let t=e;for(let[e,n]of Object.entries(t))set(e,n)}else set(e,t);this.store=n}has(e){return this.#r.accessPropertiesByDotNotation?hasProperty(this.store,e):e in this.store}appendToArray(e,t){checkValueType(e,t);let n=this.#r.accessPropertiesByDotNotation?this._get(e,[]):e in this.store?this.store[e]:[];if(!Array.isArray(n))throw TypeError(`The key \`${e}\` is already set to a non-array value`);this.set(e,[...n,t])}reset(...e){for(let t of e)isExist(this.#i[t])&&this.set(t,this.#i[t])}delete(e){let{store:t}=this;this.#r.accessPropertiesByDotNotation?deleteProperty(t,e):delete t[e],this.store=t}clear(){let e=createPlainObject();for(let t of Object.keys(this.#i))isExist(this.#i[t])&&(checkValueType(t,this.#i[t]),this.#r.accessPropertiesByDotNotation?setProperty(e,t,this.#i[t]):e[t]=this.#i[t]);this.store=e}onDidChange(e,t){if(typeof e!=`string`)throw TypeError(`Expected \`key\` to be of type \`string\`, got ${typeof e}`);if(typeof t!=`function`)throw TypeError(`Expected \`callback\` to be of type \`function\`, got ${typeof t}`);return this._handleValueChange(()=>this.get(e),t)}onDidAnyChange(e){if(typeof e!=`function`)throw TypeError(`Expected \`callback\` to be of type \`function\`, got ${typeof e}`);return this._handleStoreChange(e)}get size(){return Object.keys(this.store).filter(e=>!this._isReservedKeyPath(e)).length}get store(){try{let e=M.readFileSync(this.path,this.#t?null:`utf8`),t=this._decryptData(e),parseStore=e=>{let t=this._deserialize(e);return this.#a||this._validate(t),Object.assign(createPlainObject(),t)};return parseStore(t)}catch(e){if(e?.code===`ENOENT`)return this._ensureDirectory(),createPlainObject();if(this.#r.clearInvalidConfig){let t=e;if(t.name===`SyntaxError`||t.message?.startsWith(`Config schema violation:`)||t.message===`Failed to decrypt config data.`)return createPlainObject()}throw e}}set store(e){if(this._ensureDirectory(),!hasProperty(e,is))try{let t=M.readFileSync(this.path,this.#t?null:`utf8`),n=this._decryptData(t),r=this._deserialize(n);hasProperty(r,is)&&setProperty(e,is,getProperty(r,is))}catch{}this.#a||this._validate(e),this._write(e),this.events.dispatchEvent(new Event(`change`))}*[Symbol.iterator](){for(let[e,t]of Object.entries(this.store))this._isReservedKeyPath(e)||(yield[e,t])}_closeWatcher(){this.#o&&=(this.#o.close(),void 0),this.#s&&=(M.unwatchFile(this.path),!1),this.#c=void 0}_decryptData(e){let t=this.#t;if(!t)return typeof e==`string`?e:uint8ArrayToString(e);let n=this.#n,r=n===`aes-256-gcm`?16:0,i=`:`.codePointAt(0),a=typeof e==`string`?e.codePointAt(16):e[16];if(!(i!==void 0&&a===i)){if(n===`aes-256-cbc`)return typeof e==`string`?e:uint8ArrayToString(e);throw Error(`Failed to decrypt config data.`)}let getEncryptedPayload=e=>{if(r===0)return{ciphertext:e};let t=e.length-r;if(t<0)throw Error(`Invalid authentication tag length.`);return{ciphertext:e.slice(0,t),authenticationTag:e.slice(t)}},s=e.slice(0,16),c=e.slice(17),l=typeof c==`string`?stringToUint8Array(c):c,decrypt=e=>{let{ciphertext:r,authenticationTag:i}=getEncryptedPayload(l),a=un.pbkdf2Sync(t,e,1e4,32,`sha512`),c=un.createDecipheriv(n,a,s);return i&&c.setAuthTag(i),uint8ArrayToString(concatUint8Arrays([c.update(r),c.final()]))};try{return decrypt(s)}catch{try{return decrypt(s.toString())}catch{}}if(n===`aes-256-cbc`)return typeof e==`string`?e:uint8ArrayToString(e);throw Error(`Failed to decrypt config data.`)}_handleStoreChange(e){let t=this.store,onChange=()=>{let n=t,r=this.store;yt(r,n)||(t=r,e.call(this,r,n))};return this.events.addEventListener(`change`,onChange),()=>{this.events.removeEventListener(`change`,onChange)}}_handleValueChange(e,t){let n=e(),onChange=()=>{let r=n,i=e();yt(i,r)||(n=i,t.call(this,i,r))};return this.events.addEventListener(`change`,onChange),()=>{this.events.removeEventListener(`change`,onChange)}}_deserialize=e=>JSON.parse(e);_serialize=e=>JSON.stringify(e,void 0,` `);_validate(e){if(!this.#e||this.#e(e)||!this.#e.errors)return;let t=this.#e.errors.map(({instancePath:e,message:t=``})=>`\`${e.slice(1)}\` ${t}`);throw Error(`Config schema violation: `+t.join(`; `))}_ensureDirectory(){M.mkdirSync(A.dirname(this.path),{recursive:!0})}_write(e){let t=this._serialize(e),n=this.#t;if(n){let e=un.randomBytes(16),r=un.pbkdf2Sync(n,e,1e4,32,`sha512`),i=un.createCipheriv(this.#n,r,e),a=concatUint8Arrays([i.update(stringToUint8Array(t)),i.final()]),s=[e,stringToUint8Array(`:`),a];this.#n===`aes-256-gcm`&&s.push(i.getAuthTag()),t=concatUint8Arrays(s)}if(N.env.SNAP)M.writeFileSync(this.path,t,{mode:this.#r.configFileMode});else try{writeFileSync$1(this.path,t,{mode:this.#r.configFileMode})}catch(e){if(e?.code===`EXDEV`){M.writeFileSync(this.path,t,{mode:this.#r.configFileMode});return}throw e}}_watch(){if(this._ensureDirectory(),M.existsSync(this.path)||this._write(createPlainObject()),N.platform===`win32`||N.platform===`darwin`){this.#c??=debounceFunction(()=>{this.events.dispatchEvent(new Event(`change`))},{wait:100});let e=A.dirname(this.path),t=A.basename(this.path);this.#o=M.watch(e,{persistent:!1,encoding:`utf8`},(e,n)=>{n&&n!==t||typeof this.#c==`function`&&this.#c()})}else this.#c??=debounceFunction(()=>{this.events.dispatchEvent(new Event(`change`))},{wait:1e3}),M.watchFile(this.path,{persistent:!1},(e,t)=>{typeof this.#c==`function`&&this.#c()}),this.#s=!0}_migrate(e,t,n){let r=this._get(as,`0.0.0`),i=Object.keys(e).filter(e=>this._shouldPerformMigration(e,r,t)),a=structuredClone(this.store);for(let s of i)try{n&&n(this,{fromVersion:r,toVersion:s,finalVersion:t,versions:i});let c=e[s];c?.(this),this._set(as,s),r=s,a=structuredClone(this.store)}catch(e){this.store=a;let t=e instanceof Error?e.message:String(e);throw Error(`Something went wrong during the migration! Changes applied to the store until this failed migration will be restored. ${t}`)}(this._isVersionInRangeFormat(r)||!Gi.default.eq(r,t))&&this._set(as,t)}_containsReservedKey(e){return typeof e==`string`?this._isReservedKeyPath(e):!e||typeof e!=`object`?!1:this._objectContainsReservedKey(e)}_objectContainsReservedKey(e){if(!e||typeof e!=`object`)return!1;for(let[t,n]of Object.entries(e))if(this._isReservedKeyPath(t)||this._objectContainsReservedKey(n))return!0;return!1}_isReservedKeyPath(e){return e===is||e.startsWith(`${is}.`)}_isVersionInRangeFormat(e){return Gi.default.clean(e)===null}_shouldPerformMigration(e,t,n){return this._isVersionInRangeFormat(e)?t!==`0.0.0`&&Gi.default.satisfies(t,e)?!1:Gi.default.satisfies(n,e):!(Gi.default.lte(e,t)||Gi.default.gt(e,n))}_get(e,t){return getProperty(this.store,e,t)}_set(e,t){let{store:n}=this;setProperty(n,e,t),this.store=n}#l(e){let t={configName:`config`,fileExtension:`json`,projectSuffix:`nodejs`,clearInvalidConfig:!1,accessPropertiesByDotNotation:!0,configFileMode:438,...e};if(t.encryptionAlgorithm??=ns,!isSupportedEncryptionAlgorithm(t.encryptionAlgorithm))throw TypeError(`The \`encryptionAlgorithm\` option must be one of: ${[...rs].join(`, `)}`);if(!t.cwd){if(!t.projectName)throw Error("Please specify the `projectName` option.");t.cwd=envPaths(t.projectName,{suffix:t.projectSuffix}).config}return typeof t.fileExtension==`string`&&(t.fileExtension=t.fileExtension.replace(/^\.+/,``)),t}#u(e){if(!(e.schema??e.ajvOptions??e.rootSchema))return;if(e.schema&&typeof e.schema!=`object`)throw TypeError("The `schema` option must be an object.");let t=Xo.default.default,n=new Yo.Ajv2020({allErrors:!0,useDefaults:!0,...e.ajvOptions});t(n);let r={...e.rootSchema,type:`object`,properties:e.schema};this.#e=n.compile(r),this.#d(e.schema)}#d(e){let t=Object.entries(e??{});for(let[e,n]of t){if(!n||typeof n!=`object`||!Object.hasOwn(n,`default`))continue;let{default:t}=n;t!==void 0&&(this.#i[e]=t)}}#f(e){e.defaults&&Object.assign(this.#i,e.defaults)}#p(e){e.serialize&&(this._serialize=e.serialize),e.deserialize&&(this._deserialize=e.deserialize)}#m(e){let t=typeof e.fileExtension==`string`?e.fileExtension:void 0,n=t?`.${t}`:``;return A.resolve(e.cwd,`${e.configName??`config`}${n}`)}#h(e){if(e.migrations){this.#g(e),this._validate(this.store);return}let t=this.store,n=Object.assign(createPlainObject(),e.defaults??{},t);this._validate(n);try{jn.deepEqual(t,n)}catch{this.store=n}}#g(e){let{migrations:t,projectVersion:n}=e;if(t){if(!n)throw Error("Please specify the `projectVersion` option.");this.#a=!0;try{let r=this.store,i=Object.assign(createPlainObject(),e.defaults??{},r);try{jn.deepEqual(r,i)}catch{this._write(i)}this._migrate(t,n,e.beforeEachMigration)}finally{this.#a=!1}}}};const os={name:Rn,version:zn},ss=Ke(()=>{try{return new Conf({projectName:Rn,clearInvalidConfig:!0,watch:!1})}catch(e){Ar.debug(`Failed to create config store`,{error:e});return}}),cs=`check-update`;async function notifyAvailableUpdate(){if(hn||_n||vn===cs||isInsideContainer())return;let e=ss();if(!e)return;let t=e.get(`lastUpdateCheck`),n=e.get(`latestVersion`);if(Be(n)||Be(t)||t+864e5<Date.now()){try{Ut(`likec4`,[`check-update`],{stdio:`ignore`,timeout:5e3,preferLocal:!0,detached:!0,env:{NODE_ENV:cs}}).catch(()=>{})}catch{}return}n&&(0,Gi.gt)(n,os.version)&&boxen([`Update available: `,i.dim(os.version),i.reset(` → `),i.green(n)].join(``))}async function checkAvailableUpdate(e=!0){try{let t=ss();t?.set({lastUpdateCheck:Date.now()});let n=await fetchLatestVersion();if(kt(n,`No version found in latest npm`),t?.set({lastUpdateCheck:Date.now(),latestVersion:n}),(0,Gi.gt)(n,os.version)){boxen([`Update available: `,i.dim(os.version),i.reset(` → `),i.green(n)].join(``));return}e&&boxen(i.dim(`Up to date: `)+` `+i.green(os.version))}catch(e){Ar.warning(s(e))}}async function fetchLatestVersion(){return(await $r(`https://registry.npmjs.org/likec4/latest`,{headers:{accept:`application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*`},timeout:5e3,keepalive:!0}).json()).version}function isInstalled(e){try{return!!vt.createRequire(import.meta.url).resolve(e)}catch(e){return Ar.debug(s(e)),!1}}async function ensureReact(){if(isInstalled(`react`)&&isInstalled(`react-dom`)){Ar.debug(`react already installed`);return}Ar.warn(`react not installed`);let e=await ht();e||(Ar.error`Package manager not detected, please install dependencies manually: ${`react`} ${`react-dom`}`,process.exit(1));let t=mt(e.agent,`add`,[`react`,`react-dom`]);t||(Ar.error`Please install dependencies manually: ${`react`} ${`react-dom`}`,process.exit(1));try{await Ut(t.command,t.args,{stdio:`inherit`})}catch(e){Ar.debug(s(e)),Ar.error`Please install dependencies manually: ${`react`} ${`react-dom`}`,process.exit(1)}}async function ensurePlaywright(){if(isInstalled(`playwright`)){Ar.debug(`playwright already installed`);return}Ar.warn(`playwright not installed`);let e=await ht();e||(Ar.error`Package manager not detected, please install dependencies manually: ${`playwright`}`,process.exit(1));let t=mt(e.agent,`add`,[`playwright`]);t||(Ar.error`Please install dependencies manually: ${`playwright`}`,process.exit(1));try{await Ut(t.command,t.args,{preferLocal:!0,stdio:`inherit`})}catch(e){Ar.debug(s(e)),Ar.error`Please install dependencies manually: ${`playwright`}`,process.exit(1)}}const B={type:`string`,desc:`<directory> with LikeC4 sources (default is current directory or 'LIKEC4_WORKSPACE' env)`,normalize:!0,default:mn.LIKEC4_WORKSPACE||`.`,coerce:j},ls={alias:`use-dot-bin`,boolean:!0,type:`boolean`,desc:isInsideContainer()?`enabled in container, disable by --no-use-dot`:`use graphviz binaries ("dot" should be on PATH)`,default:isInsideContainer()},us={boolean:!0,type:`boolean`,desc:"use `@likec4/core` package in types",default:!1},ds={boolean:!0,type:`boolean`,desc:`use hash history for navigation, e.g. "/#/view" instead of "/view"`},fs={alias:[`o`,`output`],string:!0,desc:`output directory`,normalize:!0,nargs:1,coerce:j},ps={alias:`w`,string:!0,desc:`prefix for Webcomponents, e.g "c4" generates <c4-view ../>`,default:`likec4`,nargs:1},ms={alias:`t`,string:!0,desc:`base title of the app pages (default is "LikeC4")`,default:`LikeC4`,nargs:1},hs={choices:[`light`,`dark`],desc:`default color scheme for the built website (default: auto, follows system preference)`,nargs:1},gs={alias:[`base-url`],string:!0,desc:`base url the app is being served from, e.g. "/" or "/pages/"`,nargs:1},_s={boolean:!0,desc:`outputs a single self-contained HTML file with all required resources inlined`},vs={alias:`public-dir`,string:!0,desc:`directory whose files are copied to the output as-is (Vite publicDir, e.g. images linked from views)`,normalize:!0,nargs:1,coerce:j},ys={array:!0,string:!0,desc:`hostname allowed to respond to (Vite server.allowedHosts); can be repeated. Defaults to allowing all hosts.`,requiresArg:!0},bs={alias:`l`,string:!0,...isInsideContainer()?{desc:`listen 0.0.0.0 by default in container`,default:`0.0.0.0`}:{desc:`ip address of the network interface to listen on`},nargs:1},xs={number:!0,desc:`port number for the dev server (default is 5173, or PORT environment variable)`,nargs:1},Ss={number:!0,desc:`port number for the HMR WebSocket server (default is auto-discovered from 24678-24690, or HMR_PORT environment variable)`,nargs:1},Cs={alias:`p`,string:!0,desc:`select LikeC4 project by name (e.g. "my-project") or by path`,nargs:1},ws={hidden:!0,nargs:1,desc:`force log level`,choices:[`trace`,`debug`,`info`,`warning`,`error`],conflicts:[`verbose`]},Ts={boolean:!0,desc:`verbose logging`,conflicts:[`log-level`]},Es=gn?`trace`:`debug`,Ds=1e3*60,Os=Ds*60*24*7;function showSupportUsMessage(){if(!(hn||_n))try{let e=Date.now(),t=ss();if(!t)return;let n=t.get(`lastSupportUsMessage`);if(!n){t.set(`lastSupportUsMessage`,e-Os+5*Ds);return}if(n+Os>e)return;t.set(`lastSupportUsMessage`,e),boxen([i.dim(`If you are working in a commercial environment`),i.dim(`consider supporting the project`),``,i.dim(`How to get more?`)+` `+i.underline(`https://likec4.dev/sponsor/`)].join(`
|
|
174
|
+
`))}catch{}}function _usingCtx(){var e=typeof SuppressedError==`function`?SuppressedError:function(e,t){var n=Error();return n.name=`SuppressedError`,n.error=e,n.suppressed=t,n},t={},n=[];function using(e,t){if(t!=null){if(Object(t)!==t)throw TypeError(`using declarations can only be used with objects, functions, null, or undefined.`);if(e)var r=t[Symbol.asyncDispose||Symbol.for(`Symbol.asyncDispose`)];if(r===void 0&&(r=t[Symbol.dispose||Symbol.for(`Symbol.dispose`)],e))var i=r;if(typeof r!=`function`)throw TypeError(`Object is not disposable.`);i&&(r=function o(){try{i.call(t)}catch(e){return Promise.reject(e)}}),n.push({v:t,d:r,a:e})}else e&&n.push({d:t,a:e});return t}return{e:t,u:using.bind(null,!1),a:using.bind(null,!0),d:function d(){var r,i=this.e,a=0;function next(){for(;r=n.pop();)try{if(!r.a&&a===1)return a=0,n.push(r),Promise.resolve().then(next);if(r.d){var e=r.d.call(r.v);if(r.a)return a|=2,Promise.resolve(e).then(next,err)}else a|=1}catch(e){return err(e)}if(a===1)return i===t?Promise.resolve():Promise.reject(i);if(i!==t)throw i}function err(n){return i=i===t?n:new e(n,i),next()}return next()}}}const buildCmd=e=>e.command({command:`build [path]`,aliases:[`bundle`],describe:`Build a static website`,builder:e=>e.positional(`path`,B).option(`output`,{alias:`o`,type:`string`,desc:`output directory for production build`,normalize:!0,coerce:j}).option(`base`,gs).option(`use-hash-history`,ds).option(`use-dot`,ls).option(`webcomponent-prefix`,ps).option(`build-webcomponent`,{type:`boolean`,default:!0,describe:`enable/disable webcomponent build`}).option(`title`,ms).option(`output-single-file`,_s).option(`public`,vs).option(`theme`,hs).example(`${i.green(`$0 build -o ./build ./src`)}`,i.gray(`Search for likec4 files in 'src' and output static site to 'build'`)).example(`${i.green(`$0 build --theme dark -o ./build ./src`)}`,i.gray(`Build with dark color scheme as default`)).example(`${i.green(`$0 build --public ./assets -o ./build ./src`)}`,i.gray(`Copy files from 'assets' to the output directory as-is`)),handler:async e=>{try{var t=_usingCtx();let n={useHashHistory:e[`use-hash-history`]??!1,useDotBin:e[`use-dot`],webcomponentPrefix:e[`webcomponent-prefix`],buildWebcomponent:e[`build-webcomponent`],outputSingleFile:e[`output-single-file`]??!1};await notifyAvailableUpdate(),await ensureReact();let r=createLikeC4Logger(`c4:build`),i=t.a(await p(e.path,{graphviz:e[`use-dot`]?`binary`:`wasm`,watch:!1})),a=e.output??j(i.workspace,`dist`),s=j(a,`assets`);await viteBuild({base:e.base,useHashHistory:n.outputSingleFile||n.useHashHistory,customLogger:r,webcomponentPrefix:n.webcomponentPrefix,buildWebcomponent:n.buildWebcomponent,title:e.title,theme:e.theme,languageServices:i,likec4AssetsDir:s,outputDir:a,outputSingleFile:n.outputSingleFile,userPublicDir:e.public}),showSupportUsMessage()}catch(e){t.e=e}finally{await t.d()}}}),checkUpdateCmd=e=>e.command({command:`check-update`,describe:`Check for updates`,handler:async()=>{await checkAvailableUpdate()}});function ensureProjectId(e,t){if(!t)return e.languageServices.projectsManager.ensureProjectId();let n=j(t);if(n===e.workspace)return e.languageServices.projectsManager.ensureProjectId();if(qt(n)&&Zt(n).isDirectory()){Ar.debug`Project path exists: ${n}`;let t=x.file(n.endsWith(Dt)?n:n+Dt),r=e.languageServices.projects().find(e=>e.folder.fsPath===t.fsPath);if(r)return Ar.debug`Found project ${r.id} at path: ${n}`,r.id;Ar.debug`No project registered at path: ${n}`}return e.languageServices.projectsManager.ensureProjectId(t)}function ensureProject(e,t){let n=ensureProjectId(e,t),r=e.languageServices.projectsManager.getProject(n);return e.languageServices.projectsManager.defaultProjectId=n,{projectId:n,projectFolder:r.folderUri.fsPath,config:r.config}}const ks=Ar.getChild(`generator`);async function customHandler({name:e,path:t,useDotBin:n,project:r}){try{var a=_usingCtx();let s=startTimer(ks),c=a.a(await p(t,{graphviz:n?`binary`:`wasm`,watch:!1})),{projectId:l,config:u}=ensureProject(c,r);r&&ks.info(`${i.dim(`project`)} ${i.green(l)}`);let f=u.generators?.[e];if(!f)throw ks.error(i.red(`generator ${e} does not exist in project config`)),Error(`generator ${e} does not exist in project config`);ks.info(`${i.dim(`generator`)} ${i.green(e)}`),await runCustomGenerator({likec4:c,model:await c.layoutedModel(l),generator:f,logger:ks.getChild(e)}),s.stopAndLog()}catch(e){a.e=e}finally{await a.d()}}async function runCustomGenerator({likec4:e,model:t,generator:n,logger:r}){let a=e.languageServices,s=new Set,c=a.project(t.project.id),l=t.project.id;r.debug(`${i.dim(`running for project:`)} ${i.green(c.id)}`),await Promise.resolve().then(()=>n({likec4model:t,ctx:{workspace:e.languageServices.workspaceUri,project:c,locate:e=>{let t=null;switch(!0){case zt(e):t=a.locate({element:e.id,projectId:l});break;case Bt(e):t=a.locate({view:e.id,projectId:l});break;case It(e):t=a.locate({deployment:e.id,projectId:l});break;case Vt(e):case Rt(e):t=a.locate({relation:e.id,projectId:l});break;default:At(e)}if(!t)throw r.error(`Cannot locate ${e.id}`,{target:e}),Error(`Cannot locate ${e.id}`);let n=x.parse(t.uri);return{range:t.range,document:n,relativePath:b.relative(c.folder,n),folder:b.dirname(n).fsPath,filename:b.basename(n)}},write:async({path:e,content:t})=>{let n;n=Array.isArray(e)?j(c.folder.fsPath,...e):x.isUri(e)?e.fsPath:j(c.folder.fsPath,`${e}`);let a=St(n);s.has(a)||(qt(a)||(r.debug(`${i.dim(`create directory`)} ${a}`),await tn(a,{recursive:!0})),s.add(a)),r.debug(`${i.dim(`write`)} ${n}`),await ln(n,t)},abort:e=>{throw r.error(e||`Generator aborted`),Error(e||`Generator aborted`)}}}))}async function singleFileCodegenAction(e,t,n){t??=j(e.workspace,`likec4.generated.ts`),Ct(t)!==`.ts`&&(t+=`.ts`),await tn(St(t),{recursive:!0});let r=generateViewsDataTs([...await e.diagrams()]);await ln(t,r),n.info(`${i.dim(`generated`)} ${Et(process.cwd(),t)}`)}async function dotCodegenAction(e,t,n){await tn(t,{recursive:!0}),n.info(`${i.dim(`format`)} ${i.green(`dot`)}`),n.info(`${i.dim(`outdir`)} ${t}`);let r=new Set,a=await e.computedModel(),s=Ze(a.$data.views),c=0;for(let l of s)try{let s=await e.viewsService.layouter.dot({view:l,styles:a.$styles}),u=`.`;l.sourcePath&&(u=St(l.sourcePath)),u=j(t,u),r.has(u)||(await tn(u,{recursive:!0}),r.add(u));let f=j(u,l.id+`.dot`);await ln(f,s),n.info(`${i.dim(`generated`)} ${Et(process.cwd(),f)}`),c++}catch(e){Ar.error(`error while generating ${l.id}`,{error:e})}c>0&&n.info(`${i.dim(`total`)} ${c} files`)}async function multipleFilesCodegenAction(e,t,n,r){await tn(n,{recursive:!0}),r.info(`${i.dim(`format`)} ${i.green(t)}`),r.info(`${i.dim(`outdir`)} ${n}`);let a,s;switch(t){case`d2`:a=`.d2`,s=at;break;case`mermaid`:a=`.mmd`,s=dt;break;case`plantuml`:a=`.puml`,s=ct;break;default:At(t)}let c=new Set,l=await e.layoutedModel(),u=0;for(let e of l.views()){let t=e.$view;try{let l=`.`;t.sourcePath&&(l=St(t.sourcePath)),l=j(n,l),c.has(l)||(await tn(l,{recursive:!0}),c.add(l));let f=j(l,t.id+a);await ln(f,s(e)),r.info(`${i.dim(`generated`)} ${Et(process.cwd(),f)}`),u++}catch(e){r.error(`error while generating ${t.id}`,{error:e})}}u>0&&r.info(`${i.dim(`total`)} ${u} files`)}async function legacyHandler({path:e,useDotBin:t,...n}){let r=createLikeC4Logger(`c4:codegen`),i=startTimer(r),a=await p(e,{graphviz:t?`binary`:`wasm`,watch:!1});if(a.ensureSingleProject(),(await a.viewsService.computedViews()).length===0)throw r.warn(`no views found`),process.exitCode=1,Error(`no views found`);switch(n.format){case`views`:await singleFileCodegenAction(a,n.outfile,r);break;case`dot`:await dotCodegenAction(a,n.outdir??e,r);break;case`d2`:case`mermaid`:case`plantuml`:await multipleFilesCodegenAction(a,n.format,n.outdir??e,r);break;default:At(n)}i.stopAndLog()}const As=St(fn(import.meta.url));function readVersion(){try{let e=JSON.parse(Jt(Tt(As,`..`,`package.json`),`utf8`));if(e.version)return e.version}catch{}try{let e=JSON.parse(Jt(Tt(As,`..`,`..`,`package.json`),`utf8`));if(e.version)return e.version}catch{}return`0.1.0`}const js=readVersion(),Ms=`leanix`,Ns=new Set([`factSheetTypes`,`relationTypes`,`metadataToFields`]);function isPlainObjectRecordOfStrings(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;for(let t of Object.values(e))if(typeof t!=`string`)return!1;return!0}function parseLeanixMappingInput(e){if(e==null)return e;if(typeof e!=`object`||Array.isArray(e))throw Error(`LeanIX mapping must be a plain object (not an array or primitive)`);let t=e;for(let e of Object.keys(t))if(!Ns.has(e))throw Error(`LeanIX mapping has unknown key "${e}". Allowed: factSheetTypes, relationTypes, metadataToFields`);if(t.factSheetTypes!==void 0&&!isPlainObjectRecordOfStrings(t.factSheetTypes))throw Error(`LeanIX mapping "factSheetTypes" must be an object with string keys and string values`);if(t.relationTypes!==void 0&&!isPlainObjectRecordOfStrings(t.relationTypes))throw Error(`LeanIX mapping "relationTypes" must be an object with string keys and string values`);if(t.metadataToFields!==void 0&&!isPlainObjectRecordOfStrings(t.metadataToFields))throw Error(`LeanIX mapping "metadataToFields" must be an object with string keys and string values`);return e}const Ps={factSheetTypes:{system:`Application`,container:`ITComponent`,component:`ITComponent`,actor:`Provider`},relationTypes:{default:`depends on`},metadataToFields:{title:`name`,description:`description`,technology:`technology`}};function mergeWithDefault(e){let t=parseLeanixMappingInput(e),n={factSheetTypes:{...Ps.factSheetTypes},relationTypes:{...Ps.relationTypes},metadataToFields:{...Ps.metadataToFields}};return t?{factSheetTypes:{...n.factSheetTypes,...t.factSheetTypes},relationTypes:{...n.relationTypes,...t.relationTypes},metadataToFields:{...n.metadataToFields,...t.metadataToFields}}:n}function getFactSheetType(e,t){return t.factSheetTypes[e]??t.factSheetTypes.default??`Application`}function getRelationType(e,t){let n=e??`default`;return t.relationTypes[n]??t.relationTypes.default??`depends on`}const Fs={manifestVersion:`1.0`,bridgeVersion:js,mappingProfile:`default`};function buildManifestEntities(e){let t={};for(let n of e.elements())t[n.id]={canonicalId:n.id,external:{}};return t}function buildManifestViews(e){let t={};for(let n of e.views())t[n.id]={viewId:n.id,external:{}};return t}function buildManifestRelations(e){let t=[];for(let n of e.relationships())t.push({relationId:n.id,sourceFqn:n.source.id,targetFqn:n.target.id,compositeKey:`${n.source.id}|${n.target.id}|${n.id}`,external:{}});return t}function toBridgeManifest(e,t={}){let n={...Fs,...t,generatedAt:t.generatedAt??new Date().toISOString()};return{manifestVersion:n.manifestVersion,generatedAt:n.generatedAt,bridgeVersion:n.bridgeVersion,mappingProfile:n.mappingProfile,projectId:e.projectId,entities:buildManifestEntities(e),views:buildManifestViews(e),relations:buildManifestRelations(e)}}function buildFactSheetsFromModel(e,t){let n=[];for(let r of e.elements()){let e=getFactSheetType(r.kind,t),i=r.getMetadata(),a=typeof i.description==`string`?i.description:void 0,s=r.technology??(typeof i.technology==`string`?i.technology:void 0);n.push({type:e,likec4Id:r.id,name:r.title,...a!==void 0&&{description:a},...s!==void 0&&{technology:s},...r.tags.length>0&&{tags:[...r.tags]},...Object.keys(i).length>0&&{metadata:{...i}}})}return n.sort((e,t)=>e.likec4Id.localeCompare(t.likec4Id)),n}function buildRelationsFromModel(e,t){let n=[];for(let r of e.relationships()){let e=r.title??r.kind;n.push({type:getRelationType(r.kind,t),likec4RelationId:r.id,sourceLikec4Id:r.source.id,targetLikec4Id:r.target.id,...e!=null&&e!==``&&{title:String(e)}})}return n.sort((e,t)=>e.likec4RelationId.localeCompare(t.likec4RelationId)),n}function toLeanixInventoryDryRun(e,t={}){let n=mergeWithDefault(t.mapping),r=t.generatedAt??new Date().toISOString(),i=t.mappingProfile??(t.mapping?`custom`:`default`);return{generatedAt:r,projectId:e.projectId,mappingProfile:i,factSheets:buildFactSheetsFromModel(e,n),relations:buildRelationsFromModel(e,n)}}function buildCoherenceErrorMessage(e,t){let n=[];return e.projectId!==t.projectId&&n.push(`projectId (manifest: ${e.projectId}, leanixDryRun: ${t.projectId})`),e.mappingProfile!==t.mappingProfile&&n.push(`mappingProfile (manifest: ${e.mappingProfile}, leanixDryRun: ${t.mappingProfile})`),`Manifest and LeanIX dry-run must belong to the same run. Mismatch: ${n.join(`; `)}`}function buildBridgeReport(e,t){if(e.projectId!==t.projectId||e.mappingProfile!==t.mappingProfile)throw Error(buildCoherenceErrorMessage(e,t));return{generatedAt:e.generatedAt,projectId:e.projectId,manifestVersion:e.manifestVersion,bridgeVersion:e.bridgeVersion,mappingProfile:e.mappingProfile,counts:{entities:Object.keys(e.entities).length,views:Object.keys(e.views).length,relations:e.relations.length,factSheets:t.factSheets.length,leanixRelations:t.relations.length},artifacts:{manifest:`manifest.json`,leanixDryRun:`leanix-dry-run.json`}}}var LeanixApiError=class extends Error{statusCode;graphqlErrors;constructor(e,t,n){super(e),this.statusCode=t,this.graphqlErrors=n,this.name=`LeanixApiError`}};function sleep(e){return new Promise(t=>setTimeout(t,e))}var LeanixApiClient=class{baseUrl;apiToken;requestDelayMs;lastRequestTime=0;rateLimitLock=Promise.resolve();constructor(e){this.apiToken=e.apiToken,this.baseUrl=(e.baseUrl??`https://app.leanix.net`).replace(/\/$/,``),this.requestDelayMs=e.requestDelayMs??200}async graphql(e,t){let run=async()=>{let n=Date.now()-this.lastRequestTime;n<this.requestDelayMs&&await sleep(this.requestDelayMs-n),this.lastRequestTime=Date.now();let r=`${this.baseUrl}/services/pathfinder/v1/graphql`,i;try{i=await fetch(r,{method:`POST`,headers:{"Content-Type":`application/json`,Authorization:`Bearer ${this.apiToken}`},body:JSON.stringify({query:e,variables:t})})}catch(e){throw new LeanixApiError(`GraphQL request failed: ${r} POST - ${e instanceof Error?e.message:String(e)}`)}let a;try{a=await i.json()}catch(e){let t=e instanceof Error?e.message:String(e);throw new LeanixApiError(`Invalid JSON response: ${r} ${i.status} ${i.statusText} - ${t}`,i.status)}if(!i.ok)throw new LeanixApiError(a.errors?.[0]?.message??`HTTP ${i.status} ${i.statusText}`,i.status,a.errors);if(a.errors&&a.errors.length>0)throw new LeanixApiError(a.errors.map(e=>e.message).join(`; `),i.status,a.errors);if(a.data===void 0)throw new LeanixApiError(`GraphQL response had no data and no errors`);return a.data},n=this.rateLimitLock,r;this.rateLimitLock=new Promise(e=>{r=e}),await n;try{return await run()}finally{r()}}};async function findFactSheetByNameAndType(e,t,n){let r=(await e.graphql(`
|
|
144
175
|
query FindFactSheet($name: String!, $type: String!) {
|
|
145
176
|
allFactSheets(filter: { name: $name, factSheetType: $type }) {
|
|
146
177
|
edges { node { id name type } }
|
|
@@ -170,7 +201,7 @@ export {
|
|
|
170
201
|
relation { id }
|
|
171
202
|
}
|
|
172
203
|
}
|
|
173
|
-
`,{source:t,target:n,type:r}),s=a.createRelation?.relation?.id;if(!s){let e=JSON.stringify(a,null,2);throw Error(`createRelation did not return relation id (sourceFactSheetId=${t}, targetFactSheetId=${n}, relationType=${r}). Response: ${e}`)}return s}function buildFactSheetPlanEntry(e,t){let n=t?`update`:`create`;return{likec4Id:e.likec4Id,name:e.name,type:e.type,action:n,...t?{existingFactSheetId:t}:{}}}function buildPlanSummary(e,t){return{factSheetsToCreate:e.filter(e=>e.action===`create`).length,factSheetsToUpdate:e.filter(e=>e.action===`update`).length,relationsToCreate:t.length}}function toErrorMessage(e){if(e instanceof Error)return e.stack?`${e.message}\n${e.stack}`:e.message;if(typeof e==`object`&&e)try{return JSON.stringify(e,null,2)}catch{return Object.prototype.toString.call(e)}return String(e)}function applyLeanixIdsToEntities(e,t){let n={...e};for(let[r,i]of Object.entries(e)){let e=t.get(r);e&&(n[r]={...i,external:{...i.external,[
|
|
204
|
+
`,{source:t,target:n,type:r}),s=a.createRelation?.relation?.id;if(!s){let e=JSON.stringify(a,null,2);throw Error(`createRelation did not return relation id (sourceFactSheetId=${t}, targetFactSheetId=${n}, relationType=${r}). Response: ${e}`)}return s}function buildFactSheetPlanEntry(e,t){let n=t?`update`:`create`;return{likec4Id:e.likec4Id,name:e.name,type:e.type,action:n,...t?{existingFactSheetId:t}:{}}}function buildPlanSummary(e,t){return{factSheetsToCreate:e.filter(e=>e.action===`create`).length,factSheetsToUpdate:e.filter(e=>e.action===`update`).length,relationsToCreate:t.length}}function toErrorMessage(e){if(e instanceof Error)return e.stack?`${e.message}\n${e.stack}`:e.message;if(typeof e==`object`&&e)try{return JSON.stringify(e,null,2)}catch{return Object.prototype.toString.call(e)}return String(e)}function applyLeanixIdsToEntities(e,t){let n={...e};for(let[r,i]of Object.entries(e)){let e=t.get(r);e&&(n[r]={...i,external:{...i.external,[Ms]:{factSheetId:e,externalId:e}}})}return n}async function resolveExistingFactSheetId(e,t,n,r){if(!n)return null;if(r){let n=await findFactSheetByLikec4IdAttribute(e,r,t.likec4Id);if(n)return n;let i=await findFactSheetByNameAndType(e,t.name,t.type);if(i&&t.likec4Id)try{await patchFactSheetAttribute(e,i,r,t.likec4Id)}catch(e){console.warn(`[leanix-bridge] Failed to backfill likec4Id on fact sheet ${i} (${t.name}/${t.type}): ${e instanceof Error?e.message:String(e)}. Reusing ID.`)}return i??null}return findFactSheetByNameAndType(e,t.name,t.type)}async function syncFactSheetsToLeanix(e,t,n,r){let i=new Map,a=[],s=0,c=0;for(let l of t)try{let t=await resolveExistingFactSheetId(e,l,n,r);t&&c++,t||(t=await createFactSheet(e,l,r),s++),t&&i.set(l.likec4Id,t)}catch(e){a.push(`Fact sheet ${l.likec4Id} (${String(l.name)}): ${toErrorMessage(e)}`)}return{likec4IdToFactSheetId:i,factSheetsCreated:s,factSheetsReused:c,errors:a}}async function syncRelationsToLeanix(e,t,n,r){let i=[],a=[],s=0;for(let c of t){let t=r.get(c.sourceFqn),l=r.get(c.targetFqn),u=c.external?.[Ms];if(t&&l&&!u?.relationId){let r=n.find(e=>e.sourceLikec4Id===c.sourceFqn&&e.targetLikec4Id===c.targetFqn&&e.likec4RelationId===c.relationId);if(r)try{let n=await createRelation(e,t,l,r.type,r.title);s++,i.push({...c,external:{...c.external,[Ms]:{relationId:n,...c.external?.[Ms]}}});continue}catch(e){a.push(`Relation ${c.compositeKey}: ${toErrorMessage(e)}`)}}i.push(c)}return{updatedRelations:i,relationsCreated:s,errors:a}}async function planSyncToLeanix(e,t,n={}){let r=n.idempotent??!0,i=n.likec4IdAttribute,a=n.generatedAt??new Date().toISOString(),s=[],c=[];for(let n of e.factSheets)try{let e=null;r&&(i?(e=await findFactSheetByLikec4IdAttribute(t,i,n.likec4Id),e||=await findFactSheetByNameAndType(t,n.name,n.type)):e=await findFactSheetByNameAndType(t,n.name,n.type)),c.push(buildFactSheetPlanEntry(n,e))}catch(e){s.push(`Fact sheet ${n.likec4Id} (${String(n.name)}): ${toErrorMessage(e)}`),c.push(buildFactSheetPlanEntry(n,null))}let l=e.relations.map(e=>({likec4RelationId:e.likec4RelationId,sourceLikec4Id:e.sourceLikec4Id,targetLikec4Id:e.targetLikec4Id,type:e.type,action:`create`}));return{generatedAt:a,projectId:e.projectId,mappingProfile:e.mappingProfile,summary:buildPlanSummary(c,l),factSheetPlans:c,relationPlans:l,errors:s}}async function syncToLeanix(e,t,n,r={}){let i=r.idempotent??!0,a=r.likec4IdAttribute,s=await syncFactSheetsToLeanix(n,t.factSheets,i,a),c=applyLeanixIdsToEntities(e.entities,s.likec4IdToFactSheetId),l=await syncRelationsToLeanix(n,e.relations,t.relations,s.likec4IdToFactSheetId);return{manifest:{...e,entities:c,relations:l.updatedRelations},factSheetsCreated:s.factSheetsCreated,factSheetsReused:s.factSheetsReused,relationsCreated:l.relationsCreated,errors:[...s.errors,...l.errors]}}async function withGraphQLRetry(e){let t;for(let n=0;n<3;n++)try{return await e()}catch(e){t=e,n<2&&await new Promise(e=>setTimeout(e,500*(n+1)))}throw t}async function fetchLeanixInventorySnapshot(e,t={}){let n=t.generatedAt??new Date().toISOString(),r=t.maxFactSheets??1e3;if(!Number.isInteger(r)||r<0)throw Error(`maxFactSheets must be a non-negative integer`);let i=t.likec4IdAttribute,a=await fetchAllFactSheets(e,{...i==null?{}:{likec4IdAttribute:i},maxFactSheets:r});return{generatedAt:n,factSheets:a,relations:await fetchAllRelations(e,a.map(e=>e.id))}}function mapNodeToFactSheetItem(e,t){if(!e?.id)return null;let n=t!=null&&Array.isArray(e.factSheetAttributes)?e.factSheetAttributes.find(e=>e.key===t)?.value:void 0;return{id:e.id,name:e.name??``,type:e.type??``,...n?{likec4Id:n}:{}}}async function fetchAllFactSheets(e,t){let n=t.likec4IdAttribute,r=Math.min(100,t.maxFactSheets),i=[],a=null,s=!0,c=`
|
|
174
205
|
query AllFactSheets($first: Int!, $after: String, $filter: FilterInput) {
|
|
175
206
|
allFactSheets(first: $first, after: $after, filter: $filter) {
|
|
176
207
|
edges {
|
|
@@ -204,26 +235,26 @@ export {
|
|
|
204
235
|
}
|
|
205
236
|
}
|
|
206
237
|
}
|
|
207
|
-
`,{id:t,first:100,after:i})),c=s?.factSheet?.relations?.edges??[],l=s?.factSheet?.relations?.pageInfo;for(let e of c){let i=e.node,a=i?.targetFactSheet?.id;!a||!r.has(a)||n.push({...i?.id?{id:i.id}:{},sourceFactSheetId:t,targetFactSheetId:a,type:i?.type??`RELATES_TO`})}a=l?.hasNextPage===!0,i=l?.endCursor??null}return n}for(let e=0;e<t.length;e+=10){let r=t.slice(e,e+10),i=await Promise.all(r.map(e=>fetchRelationsForFactSheet(e)));for(let e of i)n.push(...e)}return n}function tryMatchByManifestFactSheetId(e,t,n,r){let i=e.external?.[
|
|
208
|
-
${
|
|
209
|
-
${
|
|
210
|
-
|
|
211
|
-
${
|
|
212
|
-
${
|
|
213
|
-
`).trim(),{padding:1,borderColor:`green`,borderStyle:`round`})}catch(e){
|
|
214
|
-
${
|
|
215
|
-
${
|
|
216
|
-
${
|
|
217
|
-
|
|
218
|
-
${
|
|
219
|
-
${
|
|
220
|
-
`),{padding:1,borderColor:`green`,borderStyle:`round`})}catch(e){
|
|
221
|
-
${
|
|
222
|
-
${
|
|
223
|
-
|
|
224
|
-
${
|
|
225
|
-
${
|
|
226
|
-
`))}catch(e){
|
|
238
|
+
`,{id:t,first:100,after:i})),c=s?.factSheet?.relations?.edges??[],l=s?.factSheet?.relations?.pageInfo;for(let e of c){let i=e.node,a=i?.targetFactSheet?.id;!a||!r.has(a)||n.push({...i?.id?{id:i.id}:{},sourceFactSheetId:t,targetFactSheetId:a,type:i?.type??`RELATES_TO`})}a=l?.hasNextPage===!0,i=l?.endCursor??null}return n}for(let e=0;e<t.length;e+=10){let r=t.slice(e,e+10),i=await Promise.all(r.map(e=>fetchRelationsForFactSheet(e)));for(let e of i)n.push(...e)}return n}function tryMatchByManifestFactSheetId(e,t,n,r){let i=e.external?.[Ms],a=i?.factSheetId??i?.externalId;if(a==null)return null;let s=n.get(a);return!s||r.has(s.id)?null:(r.add(s.id),{canonicalId:t,factSheetId:s.id,name:s.name,type:s.type})}function tryMatchByLikec4Id(e,t,n){let r=t.get(e);return!r||n.has(r.id)?null:(n.add(r.id),{canonicalId:e,factSheetId:r.id,name:r.name,type:r.type})}function resolveByNameAndType(e,t,n,r,i,a,s,c){let l=`${t??e}${n??``}`,u=r.get(l)?.filter(e=>!i.has(e.id))??[];if(u.length===0)s.push({canonicalId:e,...t===void 0?{}:{name:t},...n===void 0?{}:{type:n}});else if(u.length===1){let t=u[0];a.push({canonicalId:e,factSheetId:t.id,name:t.name,type:t.type}),i.add(t.id)}else c.push({canonicalId:e,...t===void 0?{}:{name:t},...n===void 0?{}:{type:n},candidateFactSheetIds:u.map(e=>e.id)})}function reconcileInventoryWithManifest(e,t,n={}){let r=n.generatedAt??new Date().toISOString(),i=n.dryRun,a=[],s=[],c=[],l=new Map(e.factSheets.map(e=>[e.id,e])),u=new Map,f=new Map;for(let t of e.factSheets){t.likec4Id&&u.set(t.likec4Id,t);let e=`${t.name}${t.type}`;f.has(e)||f.set(e,[]),f.get(e).push(t)}let p=i?new Map(i.factSheets.map(e=>[e.likec4Id,e])):null,m=new Set;for(let[e,n]of Object.entries(t.entities)){let t=tryMatchByManifestFactSheetId(n,e,l,m);if(t){a.push(t);continue}let r=tryMatchByLikec4Id(e,u,m);if(r){a.push(r);continue}let i=p?.get(e);resolveByNameAndType(e,i?.name??void 0,i?.type??void 0,f,m,a,s,c)}let h=e.factSheets.filter(e=>!m.has(e.id)).map(e=>({factSheetId:e.id,name:e.name,type:e.type,...e.likec4Id?{likec4Id:e.likec4Id}:{}}));return{generatedAt:r,manifestProjectId:t.projectId,snapshotGeneratedAt:e.generatedAt,matched:a,unmatchedInLikec4:s,unmatchedInLeanix:h,ambiguous:c,summary:{matched:a.length,unmatchedInLikec4:s.length,unmatchedInLeanix:h.length,ambiguous:c.length}}}function isRecord(e){return typeof e==`object`&&!!e}function isManifestEntity(e){return isRecord(e)?typeof e.canonicalId==`string`:!1}function isManifestView(e){return isRecord(e)?typeof e.viewId==`string`:!1}function isManifestRelation(e){return isRecord(e)?typeof e.relationId==`string`&&typeof e.sourceFqn==`string`&&typeof e.targetFqn==`string`&&typeof e.compositeKey==`string`:!1}function isLeanixFactSheetSnapshotItem(e){return isRecord(e)?typeof e.id==`string`&&typeof e.name==`string`&&typeof e.type==`string`:!1}function isLeanixRelationSnapshotItem(e){return isRecord(e)?typeof e.sourceFactSheetId==`string`&&typeof e.targetFactSheetId==`string`&&typeof e.type==`string`:!1}function isBridgeManifest(e){if(!isRecord(e)||typeof e.manifestVersion!=`string`||typeof e.generatedAt!=`string`||typeof e.bridgeVersion!=`string`||typeof e.mappingProfile!=`string`||typeof e.projectId!=`string`)return!1;let t=e.entities;if(typeof t!=`object`||!t||Array.isArray(t))return!1;for(let e of Object.values(t))if(!isManifestEntity(e))return!1;let n=e.views;if(typeof n!=`object`||!n||Array.isArray(n))return!1;for(let e of Object.values(n))if(!isManifestView(e))return!1;let r=e.relations;if(!Array.isArray(r))return!1;for(let e of r)if(!isManifestRelation(e))return!1;return!0}function isLeanixInventorySnapshot(e){if(!isRecord(e)||typeof e.generatedAt!=`string`||e.workspaceId!==void 0&&typeof e.workspaceId!=`string`||!Array.isArray(e.factSheets))return!1;for(let t of e.factSheets)if(!isLeanixFactSheetSnapshotItem(t))return!1;if(!Array.isArray(e.relations))return!1;for(let t of e.relations)if(!isLeanixRelationSnapshotItem(t))return!1;return!0}const Is=`No project or empty model`,Ls=`LEANIX_API_TOKEN is required for likec4 sync leanix --apply`,Rs=`default`,zs=`manifest.json`,Bs=`leanix-dry-run.json`,Vs=`report.json`;function asBridgeModel(e){return{projectId:String(e.projectId),elements:()=>e.elements(),relationships:()=>e.relationships(),views:()=>e.views()}}function buildBridgeArtifacts(e){let t=toBridgeManifest(e,{mappingProfile:Rs}),n=toLeanixInventoryDryRun(e,{mappingProfile:Rs});return{manifest:t,dryRun:n,report:buildBridgeReport(t,n)}}async function writeBridgeArtifacts(e,t,n,r=process.cwd()){await tn(e,{recursive:!0});let a=j(e,zs),s=j(e,Bs),c=j(e,Vs);await ln(a,JSON.stringify(t.manifest,null,2)),await ln(s,JSON.stringify(t.dryRun,null,2)),await ln(c,JSON.stringify(t.report,null,2)),n.info(`${i.dim(`generated`)} ${Et(r,a)}`),n.info(`${i.dim(`generated`)} ${Et(r,s)}`),n.info(`${i.dim(`generated`)} ${Et(r,c)}`)}const Hs={manifest:zs,dryRun:Bs,report:Vs};async function leanixDryRunHandler(e){let t=createLikeC4Logger(`c4:gen:leanix:dry-run`),n=startTimer(t),{path:r,outdir:a,project:s,useDotBin:c}=e;try{try{var l=_usingCtx();let e=l.a(await p(r,{graphviz:c?`binary`:`wasm`,watch:!1})),{projectId:n}=ensureProject(e,s);s&&t.info(`${i.dim(`project`)} ${i.green(n)}`);let u=await e.layoutedModel(n);if(u===_t.EMPTY)throw t.error(Is),Error(Is);await writeBridgeArtifacts(a,buildBridgeArtifacts(asBridgeModel(u)),t)}catch(e){l.e=e}finally{await l.d()}}finally{n.stopAndLog()}}function createLeanixClientFromEnv(){let e=process.env.LEANIX_API_TOKEN?.trim();return e?new LeanixApiClient({apiToken:e,baseUrl:process.env.LEANIX_BASE_URL?.trim()||`https://app.leanix.net`,requestDelayMs:200}):null}function requireLeanixClient(){let e=createLeanixClientFromEnv();if(!e)throw Error(`LEANIX_API_TOKEN is required. Set it in the environment to call the LeanIX API.`);return e}async function leanixInventorySnapshotHandler(e){let t=createLikeC4Logger(`c4:gen:leanix:inventory`),n=startTimer(t),{outdir:r,likec4IdAttribute:a}=e;try{let e=requireLeanixClient(),n={};typeof a==`string`&&a.trim()!==``&&(n.likec4IdAttribute=a.trim());let s=await fetchLeanixInventorySnapshot(e,n);await tn(r,{recursive:!0});let c=j(r,`leanix-inventory-snapshot.json`);await ln(c,JSON.stringify(s,null,2)),t.info(`${i.dim(`generated`)} ${Et(process.cwd(),c)}`),t.info(`${i.dim(`snapshot`)} ${s.factSheets.length} fact sheets, ${s.relations.length} relations`)}finally{n.stopAndLog()}}const Us=`manifest.json`,Ws=`leanix-inventory-snapshot.json`;async function readManifestAndSnapshot(e){let t=j(e,Us),n=j(e,Ws),[r,i]=await Promise.all([rn(t,`utf-8`),rn(n,`utf-8`)]),a=JSON.parse(r),s=JSON.parse(i);if(!isBridgeManifest(a))throw Error(`Invalid manifest format: missing manifestVersion, projectId, entities, relations, or views`);if(!isLeanixInventorySnapshot(s))throw Error(`Invalid snapshot format: missing factSheets or relations arrays`);return{manifest:a,snapshot:s}}async function loadDryRunFromWorkspace(e,t,n){try{var r=_usingCtx();let i=r.a(await p(e,{graphviz:n?`binary`:`wasm`,watch:!1})),{projectId:a}=ensureProject(i,t),s=await i.layoutedModel(a);return s===_t.EMPTY?void 0:buildBridgeArtifacts(asBridgeModel(s)).dryRun}catch(e){r.e=e}finally{await r.d()}}async function leanixReconcileHandler(e){let t=createLikeC4Logger(`c4:gen:leanix:reconcile`),n=startTimer(t),{path:r,outdir:a,project:s,useDotBin:c}=e;try{let e,n;try{let t=await readManifestAndSnapshot(a);e=t.manifest,n=t.snapshot}catch(e){let n=e instanceof Error?e.message:String(e);throw t.error(`Failed to read ${Us} or ${Ws} from ${a}: ${n}`),e}let l;try{l=await loadDryRunFromWorkspace(r,s,c)}catch(e){let n=e instanceof Error?e.message:String(e);if(s!=null&&s!==``)throw t.error(`Failed to load workspace for dryRun enrichment: ${n}`),e;t.warn(`Could not load workspace for dryRun enrichment; proceeding without it: ${n}`),l=void 0}let u=reconcileInventoryWithManifest(n,e,{...l==null?{}:{dryRun:l}}),f=j(a,`reconciliation-report.json`);await ln(f,JSON.stringify(u,null,2)),t.info(`${i.dim(`generated`)} ${Et(process.cwd(),f)}`),t.info(`${i.dim(`reconcile`)} matched=${u.summary.matched} unmatchedLikec4=${u.summary.unmatchedInLikec4} unmatchedLeanix=${u.summary.unmatchedInLeanix} ambiguous=${u.summary.ambiguous}`)}finally{n.stopAndLog()}}async function modelHandler({path:e,useDotBin:t,useCorePackage:n,outfile:r,project:a,skipLayout:s}){try{var c=_usingCtx();let u=createLikeC4Logger(`c4:codegen`),f=startTimer(u),m=c.a(await p(e,{graphviz:t?`binary`:`wasm`,watch:!1})),{projectId:h,projectFolder:g}=ensureProject(m,a);a&&u.info(`${i.dim(`project`)} ${i.green(h)}`),u.info(`${i.dim(`format`)} ${i.green(`model`)} ${s?i.cyan(`(compute only)`):``}`);let v;if(s)v=await m.computedModel(h);else{v=await m.layoutedModel(h);for(let e of v.views())e.hasLayoutDrifts&&u.warn(i.yellow(`layout drift detected, view:`)+` `+i.red(e.id))}let y=j(m.projectsManager.hasMultipleProjects()?g:m.workspace,`likec4-model.ts`);if(r&&(y=wt(r)?r:j(r),qt(r)&&(await cn(r)).isDirectory()))throw Error(`output file is a directory: ${r}`);let b=xt(y);u.info(`${i.dim(`filename`)} ${b}`);let x=Ct(b).toLocaleLowerCase();if(![`.ts`,`.mts`,`.cts`].includes(x))throw u.error(`output file ${r} has extension "${x}"`),Error(`output file ${r} must be a .ts, .mts or .cts file`);let ee=St(y);u.info(`${i.dim(`outdir`)} ${ee}`),await tn(ee,{recursive:!0}),await ln(y,generateLikeC4Model(v,{useCorePackage:n}),{encoding:`utf-8`}),f.stopAndLog(),boxen(l(`
|
|
239
|
+
${i.dim(`Source generated:`)}
|
|
240
|
+
${Et(bn(),y)}
|
|
241
|
+
|
|
242
|
+
${i.dim(`How to use:`)}
|
|
243
|
+
${i.underline(`https://likec4.dev/tooling/code-generation/model/`)}
|
|
244
|
+
`).trim(),{padding:1,borderColor:`green`,borderStyle:`round`})}catch(e){c.e=e}finally{await c.d()}}async function viteReactConfig({languageServices:e,outDir:t,filename:n=`likec4-react.mjs`}){let r=createLikeC4Logger([`vite`,`react`]),a=viteAppRoot();return r.info(`${i.cyan(`likec4 app root`)} ${i.dim(relativeToCwd(a))}`),r.info(i.cyan(`outDir`)+` `+i.dim(relativeToCwd(t))),{customLogger:r,root:a,configFile:!1,clearScreen:!1,publicDir:!1,mode:`production`,resolve:{alias:viteAliases()},build:{outDir:t,emptyOutDir:!1,sourcemap:!1,minify:!1,copyPublicDir:!1,lib:{entry:`codegen/react.mjs`,fileName(e,t){return n},formats:[`es`]},rolldownOptions:{external:[`likec4/react`,`likec4/model`,/^react(\/.*)?$/,/^react-dom(\/.*)?$/,/^use-sync-external-store(\/.*)?$/,/@likec4\/core.*/]}},plugins:[pt({ai:`disabled`,languageServices:e.languageServices})]}}async function reactHandler({path:e,useDotBin:t,useCorePackage:n,outfile:r,project:a}){try{var s=_usingCtx();await ensureReact();let c=createLikeC4Logger(`c4:codegen`),u=startTimer(c),f=s.a(await p(e,{graphviz:t?`binary`:`wasm`,watch:!1})),{projectId:m,projectFolder:h}=ensureProject(f,a);a&&c.info(`${i.dim(`project`)} ${i.green(m)}`),c.info(`${i.dim(`format`)} ${i.green(`react`)}`);let g=await f.diagrams(m);if(g.length===0)throw process.exitCode=1,Error(`no views found`);g.forEach(e=>{if(e.drifts&&e.drifts.length>0){c.info(i.yellow(`layout drift detected, view:`)+` `+i.red(e.id));return}if(e.hasLayoutDrift){c.warn(i.yellow(`drift detected, manual layout can not be applied, view:`)+` `+i.red(e.id));return}});let v=j(f.projectsManager.hasMultipleProjects()?h:f.workspace,`likec4-views.js`);if(r&&(v=wt(r)?r:j(r),qt(r)&&(await cn(r)).isDirectory()))throw Error(`output file is a directory: ${r}`);let y=St(v);c.info(`${i.dim(`outdir`)} ${y}`);let b=xt(v);c.info(`${i.dim(`filename`)} ${b}`);let x=Ct(b).toLocaleLowerCase();if(![`.js`,`.mjs`,`.jsx`].includes(x))throw c.error(`output file ${r} has extension "${x}"`),Error(`output file ${r} must be a .js, .jsx or .mjs`);await Dn({...await viteReactConfig({languageServices:f,outDir:y,filename:b}),logLevel:`warn`});let ee=await f.layoutedModel(m),te=j(y,xt(v,x)+(x===`.mjs`?`.d.mts`:`.d.ts`));await ln(te,generateReactTypes(ee,{useCorePackage:n})),u.stopAndLog(),boxen(l(`
|
|
245
|
+
${i.dim(`Sources generated:`)}
|
|
246
|
+
${Et(bn(),v)}
|
|
247
|
+
${Et(bn(),te)}
|
|
248
|
+
|
|
249
|
+
${i.dim(`How to use:`)}
|
|
250
|
+
${i.underline(`https://likec4.dev/tooling/code-generation/react/`)}
|
|
251
|
+
`),{padding:1,borderColor:`green`,borderStyle:`round`})}catch(e){s.e=e}finally{await s.d()}}async function webcomponentHandler({project:e,path:t,useDotBin:n,webcomponentPrefix:r=`likec4`,outfile:a}){try{var s=_usingCtx();await ensureReact();let c=createLikeC4Logger(`c4:codegen`),u=startTimer(c),f=s.a(await p(t,{graphviz:n?`binary`:`wasm`,watch:!1})),{projectId:m,projectFolder:h}=ensureProject(f,e);e&&c.info(`${i.dim(`project`)} ${i.green(m)}`),c.info(`${i.dim(`format`)} ${i.green(`webcomponent`)}`);let g=await f.diagrams(m);if(!Ve(g,1))throw c.warn(`no views found`),process.exitCode=1,Error(`no views found`);g.forEach(e=>{e.hasLayoutDrift&&c.warn(i.yellow(`drift detected, manual layout can not be applied, view:`)+` `+i.red(e.id))});let v=j(f.projectsManager.hasMultipleProjects()?h:f.workspace,`likec4-views.js`);if(a&&(v=wt(a)?a:j(a),qt(a)&&(await cn(a)).isDirectory()))throw Error(`output file is a directory: ${a}`);c.debug(`${i.dim(`outfilepath`)} ${v}`);let y=xt(v);c.debug(`${i.dim(`filename`)} ${y}`);let b=Ct(y).toLocaleLowerCase();if(b!==`.js`&&b!==`.mjs`)throw c.warn(`output file ${a} has extension "${b}"`),Error(`output file ${a} must be a .js or .mjs`);let x=await mkTempPublicDir();c.debug(`${i.dim(`created temp public`)} ${x}`);let ee=viteWebcomponentConfig({languageServices:f,outDir:x,filename:y,webcomponentPrefix:r,base:`/`});c.debug(`${i.dim(`vite build webcomponent`)}`),await Dn({...ee,logLevel:`warn`});let te=j(x,y);if(!qt(te))throw Error(`output file not found: ${te}`);await tn(St(v),{recursive:!0}),await $t(te,v),c.info(`${i.dim(`generated`)} ${v}`),c.debug(`${i.dim(`remove temp public`)}`),await sn(x,{recursive:!0,force:!0}),u.stopAndLog(),boxen(l(`
|
|
252
|
+
${i.dim(`Webcomponents generated to:`)}
|
|
253
|
+
${Et(bn(),v)}
|
|
254
|
+
|
|
255
|
+
${i.dim(`Setup and usage instructions:`)}
|
|
256
|
+
${i.blue(`https://likec4.dev/tooling/code-generation/webcomponent/`)}
|
|
257
|
+
`))}catch(e){s.e=e}finally{await s.d()}}const codegenCmd=e=>e.command({command:`gen <command> [path]`,aliases:[`generate`,`codegen`],describe:`Generate various artifacts from LikeC4 sources`,builder:e=>e.positional(`path`,B).command(`react [path]`,`generate react component to render likec4 view`,e=>e.positional(`path`,B).option(`project`,Cs).option(`outfile`,{alias:[`o`,`output`],type:`string`,desc:`<file> path to output file (.jsx, .mjs or .js)`,normalize:!0,coerce:j}).option(`use-dot`,ls).option(`use-core-package`,us),async e=>{await reactHandler({project:e.project,useDotBin:e.useDotBin,path:e.path,outfile:e.outfile,useCorePackage:e.useCorePackage}),showSupportUsMessage()}).command({command:`webcomponent [path]`,aliases:[`wc`,`webcomp`],describe:`generate js with webcomponents`,builder:e=>e.positional(`path`,B).option(`project`,Cs).option(`outfile`,{alias:[`o`,`output`],type:`string`,desc:`<file> path to output file (.mjs or .js)`,normalize:!0,coerce:j}).option(`webcomponent-prefix`,ps).option(`use-dot`,ls),handler:async e=>{await webcomponentHandler({project:e.project,useDotBin:e.useDotBin,path:e.path,outfile:e.outfile,webcomponentPrefix:e.webcomponentPrefix}),showSupportUsMessage()}}).command({command:`model [path]`,aliases:[`ts`],describe:`generate LikeC4Model (.ts)`,builder:e=>e.positional(`path`,B).option(`project`,Cs).option(`outfile`,{alias:[`o`,`output`],type:`string`,desc:`<file> path to output file (.ts)`,normalize:!0,coerce:j}).option(`skip-layout`,{type:`boolean`,desc:`Skip layout (produce compute-only model, faster)`}).option(`use-dot`,ls).option(`use-core-package`,us),handler:async e=>{await modelHandler({path:e.path,useDotBin:e.useDotBin,useCorePackage:e.useCorePackage,outfile:e.outfile,project:e.project,skipLayout:e.skipLayout??!1}),showSupportUsMessage()}}).command({command:`views-data [path]`,aliases:[`views`],describe:`{deprecated} use codegen model`,deprecated:!0,builder:e=>e.positional(`path`,B).option(`outfile`,{alias:[`o`,`output`],type:`string`,desc:`<file> output .ts file`,normalize:!0,coerce:j}).option(`use-dot`,ls),handler:async e=>{await legacyHandler({format:`views`,path:e.path,useDotBin:e.useDotBin,outfile:e.outfile})}}).command({command:`leanix [path]`,describe:`LeanIX bridge: dry-run, inventory snapshot, reconcile`,builder:e=>e.positional(`path`,B).demandCommand(1,`Choose a subcommand: dry-run, inventory, reconcile`).command(`dry-run [path]`,`generate LeanIX bridge artifacts (manifest, dry-run inventory, report)`,e=>e.positional(`path`,B).option(`outdir`,{...fs,desc:`<dir> output directory for manifest.json, leanix-dry-run.json, report.json`}).option(`project`,Cs).option(`use-dot`,ls).example(`${i.green(`$0 gen leanix dry-run -o out/bridge`)}`,i.gray(`Write bridge artifacts to out/bridge`)),async e=>{await leanixDryRunHandler({path:e.path,outdir:e.outdir??j(process.cwd(),`out`,`bridge`),project:e.project,useDotBin:e.useDotBin})}).command(`inventory`,`fetch LeanIX inventory (read-only) and write leanix-inventory-snapshot.json`,e=>e.option(`outdir`,{...fs,default:j(process.cwd(),`out`,`bridge`),desc:`<dir> output directory for leanix-inventory-snapshot.json`}).option(`likec4-id-attribute`,{type:`string`,desc:`custom LeanIX attribute key for likec4Id (e.g. "likec4Id")`}).example(`${i.green(`$0 gen leanix inventory -o out/bridge`)}`,i.gray(`Requires LEANIX_API_TOKEN`)),async e=>{await leanixInventorySnapshotHandler({outdir:e.outdir??j(process.cwd(),`out`,`bridge`),...e.likec4IdAttribute==null?{}:{likec4IdAttribute:e.likec4IdAttribute}})}).command(`reconcile [path]`,`reconcile manifest with leanix-inventory-snapshot; write reconciliation-report.json`,e=>e.positional(`path`,B).option(`outdir`,{...fs,default:j(process.cwd(),`out`,`bridge`),desc:`<dir> directory with manifest.json and leanix-inventory-snapshot.json`}).option(`project`,Cs).option(`use-dot`,ls).example(`${i.green(`$0 gen leanix reconcile -o out/bridge`)}`,i.gray(`Reads manifest + snapshot from outdir; optional workspace for name+type matching`)),async e=>{await leanixReconcileHandler({path:e.path,outdir:e.outdir??j(process.cwd(),`out`,`bridge`),project:e.project,useDotBin:e.useDotBin})}),handler:async()=>{}}).command({command:`dot [path]`,describe:`generate graphviz files (.dot)`,builder:e=>e.positional(`path`,B).option(`outdir`,fs).option(`use-dot`,ls),handler:async e=>{await legacyHandler({format:`dot`,path:e.path,useDotBin:e.useDotBin,outdir:e.outdir}),showSupportUsMessage()}}).command({command:`d2 [path]`,describe:`generate D2 files (.d2)`,builder:e=>e.positional(`path`,B).option(`outdir`,fs).option(`use-dot`,ls),handler:async e=>{await legacyHandler({format:`d2`,path:e.path,useDotBin:e.useDotBin,outdir:e.outdir}),showSupportUsMessage()}}).command({command:`mermaid [path]`,aliases:[`mmd`],describe:`generate Mermaid files (.mmd)`,builder:e=>e.positional(`path`,B).option(`outdir`,fs).option(`use-dot`,ls),handler:async e=>{await legacyHandler({format:`mermaid`,useDotBin:e.useDotBin,path:e.path,outdir:e.outdir}),showSupportUsMessage()}}).command({command:`plantuml [path]`,aliases:[`puml`],describe:`generate PlantUML files (.puml)`,builder:e=>e.positional(`path`,B).option(`outdir`,fs).option(`use-dot`,ls),handler:async e=>{await legacyHandler({format:`plantuml`,useDotBin:e.useDotBin,path:e.path,outdir:e.outdir}),showSupportUsMessage()}}).command({command:`<custom> [path]`,describe:`run custom generator from likec4 config`,builder:e=>e.positional(`path`,B).option(`project`,Cs).option(`use-dot`,ls),handler:async e=>{await customHandler({name:`custom`,path:e.path,project:e.project,useDotBin:e.useDotBin})}}).epilog(`${i.bold(`Examples:`)}
|
|
227
258
|
likec4 gen react -o dist/likec4-views.mjs ./src/likec4
|
|
228
259
|
likec4 gen model -o likec4-model.ts
|
|
229
260
|
likec4 gen leanix dry-run -o out/bridge
|
|
@@ -234,73 +265,77 @@ export {
|
|
|
234
265
|
likec4 gen mmd --outdir assets/
|
|
235
266
|
likec4 gen plantuml --outdir assets/
|
|
236
267
|
likec4 gen dot -o out .
|
|
237
|
-
`),handler:async e=>{await customHandler({name:e.command,path:e.path,project:e.project,useDotBin:e.useDotBin})}}),
|
|
238
|
-
|
|
239
|
-
`){return e.filter(e=>e.trim()!==``).join(t)}const
|
|
240
|
-
${
|
|
241
|
-
${
|
|
242
|
-
|
|
243
|
-
${
|
|
244
|
-
${
|
|
245
|
-
|
|
246
|
-
${
|
|
247
|
-
${
|
|
248
|
-
|
|
249
|
-
${
|
|
250
|
-
${
|
|
251
|
-
|
|
252
|
-
${
|
|
253
|
-
${
|
|
254
|
-
`+``.padEnd(9,` `)),e.resolvedUrls.network.length?
|
|
255
|
-
`+``.padEnd(9,` `)):void 0].filter(e
|
|
256
|
-
`))}function validatePort(e,t){if(!Number.isInteger(e)||e<1||e>65535)throw Error(`Invalid HMR port from ${t}: ${e}. Must be an integer between 1 and 65535.`)}async function resolveHmrPort(e,t){if(t){if(e!==void 0)return validatePort(e,`explicitPort`),e;if(
|
|
257
|
-
`+e)),
|
|
258
|
-
`);let
|
|
259
|
-
`),
|
|
260
|
-
multiple patterns are combined with OR`},ignore:{boolean:!0,alias:`i`,desc:`continue if export fails for some views`},timeout:{type:`number`,alias:`t`,desc:`timeout for playwright (in seconds)`,default:15,nargs:1},"max-attempts":{type:`number`,desc:`max attempts to export failing view, 1 means no retry`,default:3,nargs:1},"server-url":{type:`string`,desc:`use this url instead of starting new likec4 server`,nargs:1},"chromium-sandbox":{boolean:!0,desc:`enable chromium sandbox (see Playwright docs)`,default:!1},notation:{boolean:!0,desc:`include view notation in exported PNG files`,default:!1},description:{boolean:!0,desc:`include view description in exported PNG files`,default:!1}}).epilog(`${
|
|
261
|
-
${
|
|
262
|
-
${
|
|
263
|
-
|
|
264
|
-
${
|
|
265
|
-
${
|
|
266
|
-
|
|
267
|
-
${
|
|
268
|
-
${
|
|
269
|
-
|
|
270
|
-
${
|
|
271
|
-
${
|
|
272
|
-
`),handler:async e=>{
|
|
273
|
-
multiple patterns are combined with OR`},ignore:{boolean:!0,alias:`i`,desc:`continue if export fails for some views`},timeout:{type:`number`,alias:`t`,desc:`timeout for playwright (in seconds)`,default:15,nargs:1},"max-attempts":{type:`number`,desc:`max attempts to export failing view, 1 means no retry`,default:3,nargs:1},"server-url":{type:`string`,desc:`use this url instead of starting new likec4 server`,nargs:1},"chromium-sandbox":{boolean:!0,desc:`enable chromium sandbox (see Playwright docs)`,default:!1},notation:{boolean:!0,desc:`include view notation in exported JPEG files`,default:!1},description:{boolean:!0,desc:`include view description in exported JPEG files`,default:!1}}).epilog(`${
|
|
274
|
-
${
|
|
275
|
-
${
|
|
276
|
-
|
|
277
|
-
${
|
|
278
|
-
${
|
|
279
|
-
|
|
280
|
-
${
|
|
281
|
-
${
|
|
282
|
-
|
|
283
|
-
${
|
|
284
|
-
${
|
|
285
|
-
`),handler:async e=>{
|
|
286
|
-
${
|
|
287
|
-
${
|
|
288
|
-
|
|
289
|
-
${
|
|
290
|
-
${
|
|
291
|
-
`),handler:async e=>{let t=createLikeC4Logger(`c4:export`);await runExportJson({path:e.path,outfile:e.outfile,project:e.project,skipLayout:!!e.skipLayout,pretty:!!e.pretty,useDot:!!e[`use-dot`]},t)
|
|
292
|
-
`)}`),process.exitCode=1;return}n.info(
|
|
293
|
-
|
|
294
|
-
${
|
|
295
|
-
${
|
|
296
|
-
|
|
297
|
-
${
|
|
298
|
-
${
|
|
299
|
-
|
|
300
|
-
`),handler:e=>{let t;if(e.nodeIpc||e.stdio||e.socket||e.pipe)t=(0,Kn.createConnection)(Kn.ProposedFeatures.all);else throw Error(`No transport specified`);l({lspConnection:t,useStdErr:e.stdio===!0,colors:C.isColorSupported,enableTelemetry:e.telemetry,logLevel:e.verbose?_n:e.logLevel}),f({connection:t,enableManualLayouts:e.manualLayouts,enableWatcher:e.watch,graphviz:e.useDot?`binary`:`wasm`,configureLogger:!1})}})}t(lsp_default,`default`);const qn=qe(),Jn=qe();function useLanguageServices(){return Jn.use()}function setMcpServerCtx(e){return e?qn.set(e,!0):qn.unset(),e}function setLanguageServicesCtx(e){return e?Jn.set(e,!0):Jn.unset(),e}const Q=s.getChild(`mcp`);function likec4Tool(e){return t=>n=>{let{name:r,description:i,...a}=e,s={description:i?.trim()??``,...a};return n.registerTool(r,s,async(...e)=>{let n=useLanguageServices();Q.debug(`Calling tool {name}, args: {args}`,{name:r,args:e});try{let r=await t.apply(null,[n,...e]);return typeof r==`string`?{content:[{type:`text`,text:r}]}:oe(s.outputSchema)?tt(r,`content`)?r:{content:[{type:`text`,text:JSON.stringify(r)}]}:{content:[],structuredContent:r}}catch(e){return Q.error(`Tool ${r} failed`,{err:e}),{content:[{type:`text`,text:u(e)}],isError:!0}}}),n}}var Yn=`1.57.0`;function applySemanticLayoutPrompt(e){let t=useLanguageServices();return e.registerPrompt(`apply_semantic_layout`,{title:`Prepare prompt for applying semantic layout to a likec4 view`,argsSchema:{projectId:Ve(N().describe(`Project id (optional, will use "default" if not specified)`),(e=``)=>t.projects().filter(t=>t.id.startsWith(e)).map(he(`id`))),viewId:Ve(N().describe(`View ID`),async(n=``,r)=>{let i=r?.arguments?.projectId??t.projectsManager.default.id,a=await t.computedModel(i);return a?Array.from(a.views()).filter(e=>e.id.startsWith(n)).map(he(`id`)):(await e.sendLoggingMessage({level:`warning`,data:`Completing viewId for project ${i} with input value "${n}", model not found`}),[])})}},async({viewId:e,projectId:t},n)=>({messages:[{role:`user`,content:{type:`text`,text:["Call `apply-semantic-layout` tool from `likec4` MCP with these arguments:","projectId: `"+t+"`","viewId: `"+e+"`"].join(`
|
|
301
|
-
`)
|
|
302
|
-
|
|
303
|
-
|
|
268
|
+
`),handler:async e=>{await customHandler({name:e.command,path:e.path,project:e.project,useDotBin:e.useDotBin})}}),Gs=new Set([`node_modules`,`.git`]);function isSourceFile(e){return e.endsWith(`.c4`)||e.endsWith(`.likec4`)}function joinNonEmptyFiles(e,t=`
|
|
269
|
+
|
|
270
|
+
`){return e.filter(e=>e.trim()!==``).join(t)}const Ks=`No project or empty model`,qs=`No views could be exported`;function getDrawioEpilog(){return`${i.bold(`Examples:`)}
|
|
271
|
+
${i.green(`$0 export drawio`)}
|
|
272
|
+
${i.gray(`Export each view to a separate .drawio file`)}
|
|
273
|
+
|
|
274
|
+
${i.green(`$0 export drawio --all-in-one -o ./diagrams src/`)}
|
|
275
|
+
${i.gray(`Export all views as tabs in one .drawio file`)}
|
|
276
|
+
|
|
277
|
+
${i.green(`$0 export drawio --roundtrip -o ./out`)}
|
|
278
|
+
${i.gray(`Re-apply layout/waypoints from comment blocks (e.g. after import from DrawIO)`)}
|
|
279
|
+
|
|
280
|
+
${i.green(`$0 export drawio --uncompressed -o ./out`)}
|
|
281
|
+
${i.gray(`Export with raw XML (no compression) for draw.io desktop compatibility`)}
|
|
282
|
+
|
|
283
|
+
${i.green(`$0 export drawio --profile leanix -o ./out`)}
|
|
284
|
+
${i.gray(`Export with bridge-managed metadata (likec4Id, likec4ViewId, etc.) for LeanIX interoperability`)}`}function toError(e){return e instanceof Error?e:Error(s(e))}function logAndRethrow(e,t,n){let r=toError(n);throw e.error(t,{error:r}),r}async function readWorkspaceSourceContent(e,t){let n=[],r=new Set;async function walk(e,a){if(a>=50)return;let s=await on(e).catch(()=>null);if(s==null||r.has(s))return;r.add(s);let c=await an(e,{withFileTypes:!0}).catch(n=>(t?.debug&&t.debug(`${i.dim(`Roundtrip:`)} readdir failed`,{dir:e,err:n}),[]));for(let r of c){let s=Tt(e,r.name);switch(!0){case r.isDirectory():Gs.has(r.name)||await walk(s,a+1);break;case r.isSymbolicLink():if((await cn(s).catch(()=>null))?.isFile()&&isSourceFile(r.name)){let e=await rn(s,`utf-8`).catch(e=>(t?.debug&&t.debug(`${i.dim(`Roundtrip:`)} readFile failed`,{file:s,err:e}),``));e&&n.push(e)}break;case r.isFile()&&isSourceFile(r.name):{let e=await rn(s,`utf-8`).catch(e=>(t?.debug&&t.debug(`${i.dim(`Roundtrip:`)} readFile failed`,{file:s,err:e}),``));e&&n.push(e);break}}}}return await walk(e,0),joinNonEmptyFiles(n)}async function getSourceContentIfRoundtrip(e,t,n){if(t)return readWorkspaceSourceContent(j(e),n)}function buildDrawioExportOverrides(e,t,n){let r=e?{compressed:!1}:{compressed:!0};return t===`leanix`&&(r.profile=`leanix`,r.projectId=n),r}function buildOptionsByViewId(e,t,n,r,i){return ot(e.map(e=>String(e.$view.id)),t,buildDrawioExportOverrides(n,r,i))}async function exportDrawioAllInOne(e){let{viewmodels:t,outdir:n,workspacePath:r,roundtrip:a,uncompressed:s,profile:c,projectId:l,logger:u}=e,f=ut(t,buildOptionsByViewId(t,await getSourceContentIfRoundtrip(r,a,u),s,c,l)),p=j(n,ft);await ln(p,f),u.info(`${i.dim(`generated`)} ${Et(process.cwd(),p)} (${t.length} tab(s))`)}async function writeViewToFile(e,t,n,r){let a=String(e.$view.id);try{let s=it(e,t[a]),c=j(n,a+`.drawio`);return await tn(St(c),{recursive:!0}),await ln(c,s),r.info(`${i.dim(`generated`)} ${Et(process.cwd(),c)}`),!0}catch(e){return r.error(`Failed to export view ${a}`,{error:toError(e)}),!1}}async function exportDrawioPerView(e){let{viewmodels:t,outdir:n,workspacePath:r,roundtrip:i,uncompressed:a,profile:s,projectId:c,logger:l}=e,u=buildOptionsByViewId(t,await getSourceContentIfRoundtrip(r,i,l),a,s,c),f=0;for(let e of t)await writeViewToFile(e,u,n,l)&&f++;return{succeeded:f}}async function runExportDrawio(e,t){try{var n=_usingCtx();let r=startTimer(t),a=n.a(await p(e.path,{graphviz:e.useDot?`binary`:`wasm`,watch:!1}));e.project||a.ensureSingleProject();let s=e.project==null?void 0:a.languageServices.projectsManager.ensureProjectId(e.project),c=await a.layoutedModel(s);if(c===_t.EMPTY)throw t.error(Ks),Error(Ks);let l=[...c.views()];if(l.length===0)throw t.error(`No views to export`),Error(qs);await tn(e.outdir,{recursive:!0});let u=String(c.projectId),f={viewmodels:l,outdir:e.outdir,workspacePath:e.path,roundtrip:e.roundtrip,uncompressed:e.uncompressed,profile:e.profile,projectId:u,logger:t};if(e.allInOne)try{await exportDrawioAllInOne(f)}catch(e){logAndRethrow(t,`Failed to export DrawIO`,e)}else{let{succeeded:e}=await exportDrawioPerView(f);if(e===0)throw t.error(qs),Error(qs);t.info(`${i.dim(`total`)} ${e} DrawIO file(s)`)}r.stopAndLog(`✓ export drawio in `)}catch(e){n.e=e}finally{await n.d()}}function drawioCmd(e){return e.command({command:`drawio [path]`,describe:`export view(s) to DrawIO (.drawio) for editing in draw.io`,builder:e=>e.positional(`path`,B).option(`outdir`,{alias:`o`,type:`string`,desc:`<dir> output directory for .drawio files`,normalize:!0,coerce:j}).option(`all-in-one`,{type:`boolean`,default:!1,desc:`write one .drawio file with all views as tabs (diagrams)`}).option(`roundtrip`,{type:`boolean`,default:!1,desc:`apply layout/stroke/waypoints from DrawIO round-trip comment blocks in .c4 source`}).option(`uncompressed`,{type:`boolean`,default:!1,desc:`write diagram XML uncompressed inside .drawio (larger file; use if draw.io desktop fails to open compressed export)`}).option(`profile`,{type:`string`,choices:[`default`,`leanix`],default:`default`,desc:`export profile: default (round-trip) or leanix (bridge-managed metadata for LeanIX interoperability)`}).options({project:Cs,"use-dot":ls}).epilog(getDrawioEpilog()),handler:async e=>{let t=createLikeC4Logger(`c4:export`);await runExportDrawio({path:e.path,outdir:e.outdir??e.path,allInOne:!!e.allInOne,roundtrip:!!e.roundtrip,uncompressed:!!e.uncompressed,profile:e.profile===`leanix`?`leanix`:`default`,project:e.project,useDot:!!e[`use-dot`]},t)}})}var Js=e(rt(),1);function resolveServerUrl(e){if(e.resolvedUrls)return Ye(e.resolvedUrls.network)??Ye(e.resolvedUrls.local)}function printServerUrls(e){if(!e.resolvedUrls)throw Error(`Vite server is not ready, no resolvedUrls`);boxen([i.green(`LikeC4 served at:`),``,i.dim(`Local: `)+e.resolvedUrls.local.join(`
|
|
285
|
+
`+``.padEnd(9,` `)),e.resolvedUrls.network.length?i.dim(`Network: `)+e.resolvedUrls.network.join(`
|
|
286
|
+
`+``.padEnd(9,` `)):void 0].filter(e=>$e(e)).join(`
|
|
287
|
+
`))}var Locked=class extends Error{constructor(e){super(`${e} is locked`)}};const Ys={old:new Set,young:new Set},Xs=1024,Zs=65535;let Qs;const getLocalHosts=()=>{let e=Wt.networkInterfaces(),t=new Set([void 0,`0.0.0.0`]);for(let n of Object.values(e))for(let e of n)t.add(e.address);return t},checkAvailablePort=e=>new Promise((t,n)=>{let r=dn.createServer();r.unref(),r.on(`error`,n),r.listen(e,()=>{let{port:e}=r.address();r.close(()=>{t(e)})})}),getAvailablePort=async(e,t)=>{if(e.host||e.port===0)return checkAvailablePort(e);for(let n of t)try{await checkAvailablePort({port:e.port,host:n})}catch(e){if(![`EADDRNOTAVAIL`,`EINVAL`].includes(e.code))throw e}return e.port},portCheckSequence=function*(e){e&&(yield*e),yield 0};async function getPorts(e){let t,n=new Set;if(e&&(e.port&&(t=typeof e.port==`number`?[e.port]:e.port),e.exclude)){let t=e.exclude;if(typeof t[Symbol.iterator]!=`function`)throw TypeError("The `exclude` option must be an iterable.");for(let e of t){if(typeof e!=`number`)throw TypeError("Each item in the `exclude` option must be a number corresponding to the port you want excluded.");if(!Number.isSafeInteger(e))throw TypeError(`Number ${e} in the exclude option is not a safe integer and can't be used`)}n=new Set(t)}Qs===void 0&&(Qs=setTimeout(()=>{Qs=void 0,Ys.old=Ys.young,Ys.young=new Set},15e3),Qs.unref&&Qs.unref());let r=getLocalHosts();for(let i of portCheckSequence(t))try{if(n.has(i))continue;let t=await getAvailablePort({...e,port:i},r);for(;Ys.old.has(t)||Ys.young.has(t);){if(i!==0)throw new Locked(i);t=await getAvailablePort({...e,port:i},r)}return Ys.young.add(t),t}catch(e){if(![`EADDRINUSE`,`EACCES`].includes(e.code)&&!(e instanceof Locked))throw e}throw Error(`No available ports found`)}function portNumbers(e,t){if(!Number.isInteger(e)||!Number.isInteger(t))throw TypeError("`from` and `to` must be integer numbers");if(e<Xs||e>Zs)throw RangeError(`'from' must be between ${Xs} and ${Zs}`);if(t<Xs||t>Zs)throw RangeError(`'to' must be between ${Xs} and ${Zs}`);if(e>t)throw RangeError("`to` must be greater than or equal to `from`");let generator=function*(e,t){for(let n=e;n<=t;n++)yield n};return generator(e,t)}function validatePort(e,t){if(!Number.isInteger(e)||e<1||e>65535)throw Error(`Invalid HMR port from ${t}: ${e}. Must be an integer between 1 and 65535.`)}async function resolveHmrPort(e,t){if(t){if(e!==void 0)return validatePort(e,`explicitPort`),e;if(mn.HMR_PORT){let e=Number.parseInt(mn.HMR_PORT,10);return validatePort(e,`HMR_PORT`),e}return getPorts({port:portNumbers(24678,24690)})}}async function viteDev({buildWebcomponent:e=!1,hmr:t=!0,webcomponentPrefix:n=`likec4`,title:r,languageServices:a,likec4AssetsDir:c,openBrowser:l,listen:u,port:f,hmrPort:p,userPublicDir:m,allowedHosts:h,...g}){c??=await nn(Tt(Gt(),`.likec4-assets-`));let{isDev:v,...y}=await viteConfig({...g,languageServices:a,likec4AssetsDir:c,webcomponentPrefix:n,title:r}),b=y.customLogger;f??=mn.PORT?parseInt(mn.PORT,10):void 0,f||=await getPorts({port:[5173,5174,...portNumbers(61e3,61010),...portNumbers(62002,62010)]});let x=await mkTempPublicDir();m&&await copyUserPublicDir(m,x);let ee=u??(isInsideContainer()?`0.0.0.0`:`localhost`),te=await resolveHmrPort(p,t);if(t&&te!==void 0){let e=p?` (explicit)`:mn.HMR_PORT?` (env)`:` (auto-discovered)`;b.info(`Enabling HMR: localhost:${te}${e}`),y.plugins=[Mn(),...y.plugins],isInsideContainer()&&b.info(i.yellow(`ensure port ${te} is published from container`))}else t||b.info(`Disabling HMR`);let ne=await On({...y,define:t?{...y.define,"process.env.NODE_ENV":`"development"`}:y.define,mode:t?`development`:y.mode,publicDir:x,optimizeDeps:{holdUntilCrawlEnd:!1,ignoreOutdatedRequests:!0,include:[`react`,`react-dom`,`react/compiler-runtime`,`react/jsx-runtime`,`react-dom/client`,`use-sync-external-store/shim/with-selector`,`likec4/vite-plugin/internal`,`@likec4/core/styles`,`@likec4/core/geometry`,`@likec4/core/utils`,`@likec4/core/compute-view`,`@likec4/core/types`,`@likec4/core/model`,`@likec4/core`,`likec4/react`,`likec4/model`]},server:{host:ee,allowedHosts:h&&h.length>0?h:!0,port:f,hmr:t&&{overlay:!0,...te===void 0?{}:{port:te}},fs:{strict:!1},open:l??(!v&&!isInsideContainer())}});if(await ne.listen(),e){let e=viteWebcomponentConfig({webcomponentPrefix:n,languageServices:a,outDir:x,base:y.base});b.info(`Building webcomponent`),await Dn({...e,logLevel:`warn`}).catch(e=>{b.warn(s(e)),b.warn(`webcomponent build failed, ignoring error and continue`)})}else b.info(`Skip webcomponent build`);return ne}function createExportViewUrl({viewId:e,padding:t,theme:n,dynamicVariant:r,format:i=`png`,notation:a=!1,description:s=!1}){return oe(`export/${encodeURIComponent(e)}/`,{padding:t,theme:n,dynamic:r,...a?{notation:!0}:{},...s?{description:!0}:{},...i===`jpeg`?{format:`jpeg`}:{}})}async function takeScreenshot({browserContext:e,views:t,output:n,logger:r,timeout:a,maxAttempts:s,dynamicVariant:c,outputType:l,theme:u,format:f=`png`,quality:p,notation:m=!1,description:h=!1}){let g,v=t.map(e=>({view:e,attempt:1})),y=[],b;for(;b=v.shift();){let{view:t,attempt:x}=b,ee=`export/${encodeURIComponent(t.id)}/`;try{if(x>1){g&&=(g.close({runBeforeUnload:!0}).catch(e=>r.error(`failed to close page: ${e}`)),void 0);let e=qe(x*200,{min:200,max:1e3});r.info(i.cyan(ee)+i.dim(` attempt ${x} of ${s} after ${e}ms`)),await Nn(e)}else t.hasLayoutDrift&&r.warn(i.yellow(`Drift detected, manual layout can not be applied, view may be invalid: `)+i.red(t.id));let v=`.`;l===`relative`&&(v=t.sourcePath??`.`,v=v.includes(`/`)?v.slice(0,v.lastIndexOf(`/`)):`.`);let b=f===`jpeg`?`.jpg`:`.png`,te=j(n,v,`${t.id}${b}`);g??=await e.newPage();let ne=t.bounds;c===`sequence`&&t._type===`dynamic`&&(ne=t.sequenceLayout.bounds),await g.setViewportSize({width:ne.width+40+20,height:ne.height+40+20}),await g.goto(createExportViewUrl({viewId:t.id,padding:20,theme:u,dynamicVariant:c,format:f,notation:m,description:h})),r.info(i.cyan(ee)+i.dim(` -> ${Et(n,te)}`)),await g.waitForSelector(`.react-flow.initialized`);let re=g.getByTestId(`export-page`),ie=await re.boundingBox();if(ie){let e=Math.ceil(ie.width),t=Math.ceil(ie.height),n=g.viewportSize();(!n||e>n.width||t>n.height)&&await g.setViewportSize({width:e,height:t})}t.nodes.some(e=>ze(e.icon)&&e.icon.toLowerCase().startsWith(`http`))&&await waitAllImages(g,a),await re.screenshot({animations:`disabled`,path:te,type:f===`jpeg`?`jpeg`:`png`,...f===`jpeg`?{quality:p??80,omitBackground:!1}:{omitBackground:!0}}),y.push({view:t,path:te})}catch(e){g?.close({runBeforeUnload:!0}).catch(e=>r.error(`failed to close page: ${e}`)),r.error(i.red(`failed `+ee+`
|
|
288
|
+
`+e)),x<s&&(v.push({view:t,attempt:x+1}),r.info(i.dim(`retry ${ee}`))),g=void 0}}return y}async function waitAllImages(e,t){let n=await e.locator(`//img`).all();if(!n.length)return;let r=n.map(e=>e.evaluate(e=>e.complete||new Promise(t=>{e.onload=t,e.onerror=t}),{timeout:Math.max(15e3,t)}));await Promise.allSettled(r)}async function exportViewsToPNG({logger:e,serverUrl:t,theme:n=`light`,timeoutMs:r=15e3,views:a,output:s,outputType:c=`relative`,maxAttempts:l=3,chromiumSandbox:u=!1,sequence:f=!1,format:p=`png`,quality:m,notation:h=!1,description:g=!1}){e.info(`${i.dim(`output`)} ${s}`),e.info(`${i.dim(`base url`)} ${t}\n`);let{chromium:v}=await import(`playwright`),y=v.executablePath();e.info(i.cyan(`Start chromium`)+` `+i.dim(y));let b=await v.launch({chromiumSandbox:u,headless:!0});e.info(i.cyan(`Color scheme: `)+n+`
|
|
289
|
+
`);let x=await b.newContext({deviceScaleFactor:2,colorScheme:n,baseURL:t,bypassCSP:!0,ignoreHTTPSErrors:!0,isMobile:!1});x.setDefaultNavigationTimeout(r),x.setDefaultTimeout(r);try{return await takeScreenshot({browserContext:x,views:a,output:s,outputType:c,logger:e,maxAttempts:l,dynamicVariant:f?`sequence`:`diagram`,timeout:r,theme:n,format:p,quality:m,notation:h,description:g})}finally{e.info(i.cyan(`close chromium`)),await x.close(),await b.close()}}async function runExportPng(e,t){try{var n=_usingCtx();let{path:r,useDotBin:a,project:s,theme:c=`light`,output:l,outputType:u,serverUrl:f,ignore:m=!1,timeoutMs:h=15e3,maxAttempts:g=3,filter:v,sequence:y=!1,chromiumSandbox:b=!1,format:x=`png`,quality:ee,notation:te=!1,description:ne=!1}=e,re=n.a(await p(r,{graphviz:a?`binary`:`wasm`,watch:!1})),ie=l??re.workspace,ae,oe=f,le=[...re.languageServices.projects()];if(s&&!le.some(e=>e.id===s))throw t.error(`project not found: ${s}`),Error(`project not found: ${s}`);try{if(!oe&&(t.info(i.cyan(`start preview server`)),ae=await viteDev({languageServices:re,buildWebcomponent:!1,openBrowser:!1,hmr:!1}),oe=resolveServerUrl(ae),!oe))throw t.error(`Vite server is not ready, no resolvedUrls`),Error(`Vite server is not ready, no resolvedUrls`);for(let e of le){if(s&&e.id!==s)continue;le.length>1&&(t.info(i.dim(`---------`)),t.info(`${i.dim(`project:`)} ${e.id}`),t.info(`${i.dim(`folder:`)} ${e.folder.fsPath}`));let n=await re.diagrams(e.id);if(v&&Ve(v,1)&&Ve(n,1)){let e=(0,Js.default)(v);t.info(`${i.cyan(`filter`)} ${i.dim(JSON.stringify(v))}`),n=n.filter(n=>e(n.id)?(t.info(`${i.green(`include`)} ${n.id} ✅`),!0):(t.info(`${i.gray(`skip`)} ${i.dim(n.id)}`),!1))}if(!Ve(n,1)){t.warn(`no views found`);continue}let r=le.length>1?se(ce(oe,`project`,e.id)):oe,a=le.length>1?ce(ie,e.id):ie,l=Sn(),f=await exportViewsToPNG({logger:t,serverUrl:r,theme:c,timeoutMs:h,views:n,output:a,outputType:u,maxAttempts:g,sequence:y,chromiumSandbox:b,format:x,quality:ee,notation:te,description:ne}),{pretty:p}=inMillis(l);if(f.length>0&&t.info(i.green(`exported ${f.length} views in ${p}`)+`
|
|
290
|
+
`),f.length!==n.length&&(m&&f.length>0?t.info(i.dim(`ignore`)+` `+i.red(`failed ${n.length-f.length} out of ${n.length} views`)):t.error(i.red(`failed ${n.length-f.length} out of ${n.length} views`))),f.length!==n.length&&(f.length===0||!m))throw Error(`Failed ${n.length-f.length} out of ${n.length} views`)}}finally{ae&&(t.info(i.cyan(`stop server`)),await ae.close().catch(e=>{t.error(e)}))}}catch(e){n.e=e}finally{await n.d()}}async function pngHandler(e){await runExportPng(e,createLikeC4Logger(`c4:export`))}function pngCmd(e){return e.command({command:`png [path]`,describe:`export views to PNG`,builder:e=>e.positional(`path`,B).options({outdir:{alias:[`o`,`output`],type:`string`,desc:`output directory for PNG files; if not specified, images are saved next to sources`,normalize:!0,nargs:1,coerce:j},project:Cs,theme:{choices:[`light`,`dark`],desc:`color-scheme to use, defaults to light`,conflicts:[`dark`,`light`],nargs:1},dark:{type:`boolean`,desc:`use dark theme, shortcut for --theme=dark`,conflicts:[`theme`,`light`]},light:{type:`boolean`,desc:`use light theme, shortcut for --theme=light`,conflicts:[`theme`,`dark`]},"use-dot":ls,seq:{alias:[`sequence`],type:`boolean`,desc:`use sequence layout for dynamic views`},flat:{alias:[`flatten`],type:`boolean`,desc:`flatten all images in outdir ignoring sources structure`},filter:{alias:`f`,array:!0,string:!0,desc:`include views with ids matching given patterns
|
|
291
|
+
multiple patterns are combined with OR`},ignore:{boolean:!0,alias:`i`,desc:`continue if export fails for some views`},timeout:{type:`number`,alias:`t`,desc:`timeout for playwright (in seconds)`,default:15,nargs:1},"max-attempts":{type:`number`,desc:`max attempts to export failing view, 1 means no retry`,default:3,nargs:1},"server-url":{type:`string`,desc:`use this url instead of starting new likec4 server`,nargs:1},"chromium-sandbox":{boolean:!0,desc:`enable chromium sandbox (see Playwright docs)`,default:!1},notation:{boolean:!0,desc:`include view notation in exported PNG files`,default:!1},description:{boolean:!0,desc:`include view description in exported PNG files`,default:!1}}).epilog(`${i.bold(`Examples:`)}
|
|
292
|
+
${i.green(`$0 export png`)}
|
|
293
|
+
${i.gray(`Search for likec4 files in current directory and output PNG next to sources`)}
|
|
294
|
+
|
|
295
|
+
${i.green(`$0 export png --theme dark -o ./png src/likec4`)}
|
|
296
|
+
${i.gray(`Search for likec4 files in src/likec4 and output PNG with dark theme to png folder`)}
|
|
297
|
+
|
|
298
|
+
${i.green(`$0 export png -f "team1*" -f "team2*" --flat -o ./png src/likec4`)}
|
|
299
|
+
${i.gray(`Export views matching team1* or team2* only`)}
|
|
300
|
+
|
|
301
|
+
${i.green(`$0 export png -f "use-case*" --sequence src/likec4`)}
|
|
302
|
+
${i.gray(`Export views matching use-case* using sequence layout`)}
|
|
303
|
+
`),handler:async e=>{kt(e.timeout>=1,`timeout must be >= 1`),kt(e[`max-attempts`]>=1,`max-attempts must be >= 1`),await ensureReact(),await ensurePlaywright();let t=e.theme??(e.dark?`dark`:`light`);await pngHandler({path:e.path,useDotBin:e[`use-dot`],output:e.outdir,project:e.project,timeoutMs:e.timeout*1e3,maxAttempts:e[`max-attempts`],ignore:e.ignore===!0,outputType:e.flat?`flat`:`relative`,serverUrl:e[`server-url`],theme:t,filter:e.filter,sequence:e.seq,chromiumSandbox:e[`chromium-sandbox`],notation:e.notation,description:e.description})}})}async function jpgHandler(e){let t=createLikeC4Logger(`c4:export`);await runExportPng({...e,format:`jpeg`},t)}function jpgCmd(e){return e.command({command:`jpg [path]`,describe:`export views to JPEG`,builder:e=>e.positional(`path`,B).options({outdir:{alias:[`o`,`output`],type:`string`,desc:`output directory for JPEG files; if not specified, images are saved next to sources`,normalize:!0,nargs:1,coerce:j},project:Cs,quality:{alias:`q`,type:`number`,desc:`JPEG quality (1-100)`,default:80,nargs:1},theme:{choices:[`light`,`dark`],desc:`color-scheme to use, defaults to light`,conflicts:[`dark`,`light`],nargs:1},dark:{type:`boolean`,desc:`use dark theme, shortcut for --theme=dark`,conflicts:[`theme`,`light`]},light:{type:`boolean`,desc:`use light theme, shortcut for --theme=light`,conflicts:[`theme`,`dark`]},"use-dot":ls,seq:{alias:[`sequence`],type:`boolean`,desc:`use sequence layout for dynamic views`},flat:{alias:[`flatten`],type:`boolean`,desc:`flatten all images in outdir ignoring sources structure`},filter:{alias:`f`,array:!0,string:!0,desc:`include views with ids matching given patterns
|
|
304
|
+
multiple patterns are combined with OR`},ignore:{boolean:!0,alias:`i`,desc:`continue if export fails for some views`},timeout:{type:`number`,alias:`t`,desc:`timeout for playwright (in seconds)`,default:15,nargs:1},"max-attempts":{type:`number`,desc:`max attempts to export failing view, 1 means no retry`,default:3,nargs:1},"server-url":{type:`string`,desc:`use this url instead of starting new likec4 server`,nargs:1},"chromium-sandbox":{boolean:!0,desc:`enable chromium sandbox (see Playwright docs)`,default:!1},notation:{boolean:!0,desc:`include view notation in exported JPEG files`,default:!1},description:{boolean:!0,desc:`include view description in exported JPEG files`,default:!1}}).epilog(`${i.bold(`Examples:`)}
|
|
305
|
+
${i.green(`$0 export jpg`)}
|
|
306
|
+
${i.gray(`Search for likec4 files in current directory and output JPEG next to sources`)}
|
|
307
|
+
|
|
308
|
+
${i.green(`$0 export jpg --theme dark -o ./jpg src/likec4`)}
|
|
309
|
+
${i.gray(`Search for likec4 files in src/likec4 and output JPEG with dark theme to jpg folder`)}
|
|
310
|
+
|
|
311
|
+
${i.green(`$0 export jpg --quality 90 -o ./jpg src/likec4`)}
|
|
312
|
+
${i.gray(`Export JPEG with 90% quality`)}
|
|
313
|
+
|
|
314
|
+
${i.green(`$0 export jpg -f "team1*" -f "team2*" --flat -o ./jpg src/likec4`)}
|
|
315
|
+
${i.gray(`Export views matching team1* or team2* only`)}
|
|
316
|
+
`),handler:async e=>{kt(e.quality>=1&&e.quality<=100,`quality must be between 1 and 100`),kt(e.timeout>=1,`timeout must be >= 1`),kt(e[`max-attempts`]>=1,`max-attempts must be >= 1`),await ensureReact(),await ensurePlaywright();let t=e.theme??(e.dark?`dark`:`light`);await jpgHandler({path:e.path,useDotBin:e[`use-dot`],output:e.outdir,project:e.project,timeoutMs:e.timeout*1e3,maxAttempts:e[`max-attempts`],ignore:e.ignore===!0,outputType:e.flat?`flat`:`relative`,serverUrl:e[`server-url`],theme:t,filter:e.filter,sequence:e.seq,chromiumSandbox:e[`chromium-sandbox`],format:`jpeg`,quality:e.quality,notation:e.notation,description:e.description})}})}const $s=`project not found`,ec=`No projects found`;async function runExportJson(e,t){try{var n=_usingCtx();let r=startTimer(t),a=n.a(await p(e.path,{graphviz:e.useDot?`binary`:`wasm`,watch:!1})),s=[...a.projectsManager.all];if(e.project){if(s=s.filter(t=>t===e.project),!Ve(s,1))throw t.error(`${$s}: ${e.project}`),Error(`${$s}: ${e.project}`)}else{if(!Ve(s,1))throw t.error(ec),Error(ec);t.info(`${i.dim(`workspace:`)} Found ${s.length} projects`)}let c=[];for(let n of s){let r;if(e.skipLayout?(t.info(`Generate model for project ${i.green(n)} ${i.dim(`(skip layout)`)}`),r=await a.computedModel(n)):(t.info(`Generating layouted model for project ${i.green(n)}`),r=await a.layoutedModel(n)),r===_t.EMPTY){t.warn(i.yellow(`Project ${n} is empty, skipping`));continue}c.push(r.$data)}if(c.length===0)throw t.warn(`No models generated, aborting export`),Error(`No models generated; all projects are empty or were skipped`);let l=e.outfile;Ct(l).toLowerCase()!==`.json`&&(l+=`.json`),await tn(St(l),{recursive:!0});let u=c.length===1?c[0]:c,f=e.pretty?JSON.stringify(u,void 0,2):JSON.stringify(u);await ln(l,f);let m=l.startsWith(e.path)?Et(e.path,l):l;t.info(`${i.dim(`generated`)} ${m}`),r.stopAndLog(`✓ export in `)}catch(e){n.e=e}finally{await n.d()}}function jsonCmd(e){return e.command({command:`json [path]`,describe:`export model(s) to JSON`,builder:e=>e.positional(`path`,B).option(`outfile`,{alias:`o`,type:`string`,desc:`<file> output .json file`,default:`likec4.json`,normalize:!0,coerce:j}).options({project:Cs,"use-dot":ls,"skip-layout":{type:`boolean`,desc:`skip layout (produce compute-only model, faster)`},pretty:{type:`boolean`,desc:`indented JSON output`}}).epilog(`${i.bold(`Examples:`)}
|
|
317
|
+
${i.green(`$0 export json --skip-layout`)}
|
|
318
|
+
${i.gray(`Search for likec4 files in current directory and output JSON to likec4.json (no layout)`)}
|
|
319
|
+
|
|
320
|
+
${i.green(`$0 export json --pretty -o ./generated/likec4.json src/likec4 `)}
|
|
321
|
+
${i.gray(`Search for likec4 files in src/likec4 and output JSON to generated/likec4.json`)}
|
|
322
|
+
`),handler:async e=>{let t=createLikeC4Logger(`c4:export`);await runExportJson({path:e.path,outfile:e.outfile,project:e.project,skipLayout:!!e.skipLayout,pretty:!!e.pretty,useDot:!!e[`use-dot`]},t)}})}const exportCmd=e=>e.command({command:`export <format> [path]`,describe:`Export to images, JSON, or DrawIO`,builder:e=>Ge(e.usage(`${i.bold(`Usage:`)} $0 export <format> [path]`),pngCmd,jpgCmd,jsonCmd,drawioCmd).updateStrings({"Commands:":i.bold(`Formats:`)}),handler:()=>void 0}),formatCmd=e=>e.command({command:`format [path]`,aliases:[`fmt`],describe:`Format LikeC4 source files`,builder:e=>e.positional(`path`,B).options({project:{alias:`p`,type:`string`,array:!0,desc:`select project(s) to format (repeatable)`},files:{type:`string`,array:!0,normalize:!0,coerce:e=>e.map(e=>j(e)),desc:`specific file(s) to format (repeatable)`},check:{type:`boolean`,desc:`Check if files are formatted (exit with 1 if not)`,default:!1}}),handler:async e=>{try{var t=_usingCtx();let n=createLikeC4Logger(`c4:format`),r=startTimer(n),a=e.check,s;try{s=await p(e.path,{watch:!1})}catch(e){n.error(e instanceof Error?e.message:String(e)),process.exitCode=1;return}t.a(s);let c=e.project?.filter(Boolean),l=e.files?.filter(Boolean).map(e=>pn(e).toString());if(n.debug(`workspace: ${e.path}`),c?.length){n.debug(`projects:`);for(let e of c)n.debug(` ${e}`)}if(l?.length){n.debug(`files:`);for(let e of l)n.debug(` ${fn(e)}`)}let u;try{u=await s.format({...c?.length&&{projects:c},...l?.length&&{documentUris:l}})}catch(e){n.error(e instanceof Error?e.message:String(e)),process.exitCode=1;return}n.debug(`${u.size} document(s) to process`);let f=process.cwd(),displayPath=e=>{let t=Et(f,e);return t.startsWith(`..`)?e:t};if(l){let e=l.filter(e=>!u.has(e));for(let t of e)n.warn(`${i.yellow(`skipped`)} ${displayPath(fn(t))} (not found in workspace)`)}let m=0,h=0,g=[];for(let[e,t]of u){let r=fn(e),s=displayPath(r),c;try{c=await rn(r,`utf-8`)}catch(e){n.error(`Failed to read ${s}: ${e}`),h++;continue}if(c===t){n.debug(`${i.dim(`unchanged`)} ${s}`);continue}if(m++,g.push(s),a)n.info(`${i.yellow(`needs formatting`)} ${s}`);else try{await ln(r,t,`utf-8`),n.info(`${i.green(`formatted`)} ${s}`)}catch(e){n.error(`Failed to write ${s}: ${e}`),h++}}if(h>0){n.error(`${h} file(s) failed to process`),process.exitCode=1;return}if(a){if(m>0){n.error(`${m} of ${u.size} file(s) need formatting:\n${g.map(e=>` ${e}`).join(`
|
|
323
|
+
`)}`),process.exitCode=1;return}n.info(i.green(`All ${u.size} file(s) are formatted`))}else m>0?n.info(`${i.green(String(m))} of ${u.size} file(s) formatted`):n.info(i.green(`All ${u.size} file(s) already formatted`));r.stopAndLog(`✓ format in `)}catch(e){t.e=e}finally{await t.d()}}}),listIconsCmd=e=>e.command({command:`list-icons`,describe:`List available built-in icons`,builder:e=>e.option(`format`,{alias:`f`,choices:[`text`,`json`],default:`text`,description:`Output format`}).option(`group`,{alias:`g`,choices:r,description:`Filter icons by group`}),handler:e=>{let t=e.group?[e.group]:r;switch(!0){case e.format===`json`:{let e=Object.fromEntries(t.map(e=>[e,m[e]]));console.log(JSON.stringify(e,null,2));break}default:for(let e of t)for(let t of m[e])console.log(`${e}:${t}`)}}});var tc=n(((e,t)=>{t.exports=ae()}))();function lsp_default(e){return e.command({command:`lsp`,aliases:[],describe:`Start LSP server`,builder:e=>e.usage(`${i.bold(`Usage:`)} $0 lsp`).option(`log-level`,ws).option(`verbose`,Ts).options({"node-ipc":{boolean:!0,description:`use node-ipc transport`,conflicts:[`stdio`,`socket`,`pipe`]},stdio:{boolean:!0,description:`use stdio transport`,conflicts:[`node-ipc`,`socket`,`pipe`]},socket:{number:!0,description:`use socket transport on specified port`,conflicts:[`node-ipc`,`stdio`,`pipe`],nargs:1},pipe:{string:!0,description:`use pipe transport with specified pipe name`,conflicts:[`node-ipc`,`stdio`,`socket`],nargs:1},"manual-layouts":{boolean:!0,description:`enable/disable manual layouts`,default:!0,defaultDescription:`enabled`},watch:{alias:`w`,boolean:!0,description:`enable built-in watcher`,default:!1,defaultDescription:`disabled`},telemetry:{boolean:!0,default:!0,defaultDescription:`IDE setting`,description:`enable/disable telemetry`,hidden:!0}}).option(`use-dot`,ls).showHidden().epilog(`${i.bold(`Examples:`)}
|
|
324
|
+
|
|
325
|
+
${i.green(`$0 lsp --stdio `)}
|
|
326
|
+
${i.gray(`Start LSP with stdio transport`)}
|
|
327
|
+
|
|
328
|
+
${i.green(`$0 lsp --node-ipc --watch --no-manual-layouts --no-color `)}
|
|
329
|
+
${i.gray(`Start LSP with node-ipc transport and watcher, disabled manual layouts and disabled color`)}
|
|
330
|
+
|
|
331
|
+
`),handler:e=>{let t;if(e.nodeIpc||e.stdio||e.socket||e.pipe)t=(0,tc.createConnection)(tc.ProposedFeatures.all);else throw Error(`No transport specified`);v({lspConnection:t,useStdErr:e.stdio===!0,colors:i.isColorSupported,enableTelemetry:e.telemetry,logLevel:e.verbose?Es:e.logLevel}),g({connection:t,enableManualLayouts:e.manualLayouts,enableWatcher:e.watch,graphviz:e.useDot?`binary`:`wasm`,configureLogger:!1})}})}t(lsp_default,`default`);function createContext(e={}){let t,n=!1,checkConflict=e=>{if(t&&t!==e)throw Error(`Context conflict`)},r;if(e.asyncContext){let t=e.AsyncLocalStorage||globalThis.AsyncLocalStorage;t?r=new t:console.warn("[unctx] `AsyncLocalStorage` is not provided.")}let _getCurrentInstance=()=>{if(r){let e=r.getStore();if(e!==void 0)return e}return t};return{use:()=>{let e=_getCurrentInstance();if(e===void 0)throw Error(`Context is not available`);return e},tryUse:()=>_getCurrentInstance(),set:(e,r)=>{r||checkConflict(e),t=e,n=!0},unset:()=>{t=void 0,n=!1},call:(e,i)=>{checkConflict(e),t=e;try{return r?r.run(e,i):i()}finally{n||(t=void 0)}},async callAsync(e,i){t=e;let onRestore=()=>{t=e},onLeave=()=>t===e?onRestore:void 0;ac.add(onLeave);try{let a=r?r.run(e,i):i();return n||(t=void 0),await a}finally{ac.delete(onLeave)}}}}function createNamespace(e={}){let t={};return{get(n,r={}){return t[n]||(t[n]=createContext({...e,...r})),t[n]}}}const nc=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof global<`u`?global:typeof window<`u`?window:{},rc=`__unctx__`;nc[rc]||(nc[rc]=createNamespace());const ic=`__unctx_async_handlers__`,ac=nc[ic]||(nc[ic]=new Set),oc=createContext(),sc=createContext();function useLanguageServices(){return sc.use()}function setMcpServerCtx(e){return e?oc.set(e,!0):oc.unset(),e}function setLanguageServicesCtx(e){return e?sc.set(e,!0):sc.unset(),e}const cc=`2025-11-25`,lc=[cc,`2025-06-18`,`2025-03-26`,`2024-11-05`,`2024-10-07`],uc=`io.modelcontextprotocol/related-task`,dc=Pe(e=>e!==null&&(typeof e==`object`||typeof e==`function`)),fc=S([C(),D().int()]),pc=C();Te({ttl:D().optional(),pollInterval:D().optional()});const mc=w({ttl:D().optional()}),hc=w({taskId:C()}),gc=Te({progressToken:fc.optional(),[uc]:hc.optional()}),_c=w({_meta:gc.optional()}),vc=_c.extend({task:mc.optional()}),isTaskAugmentedRequestParams=e=>vc.safeParse(e).success,yc=w({method:C(),params:_c.loose().optional()}),bc=w({_meta:gc.optional()}),xc=w({method:C(),params:bc.loose().optional()}),Sc=Te({_meta:gc.optional()}),Cc=S([C(),D().int()]),wc=w({jsonrpc:k(`2.0`),id:Cc,...yc.shape}).strict(),isJSONRPCRequest=e=>wc.safeParse(e).success,Tc=w({jsonrpc:k(`2.0`),...xc.shape}).strict(),isJSONRPCNotification=e=>Tc.safeParse(e).success,Ec=w({jsonrpc:k(`2.0`),id:Cc,result:Sc}).strict(),isJSONRPCResultResponse=e=>Ec.safeParse(e).success;var V;(function(e){e[e.ConnectionClosed=-32e3]=`ConnectionClosed`,e[e.RequestTimeout=-32001]=`RequestTimeout`,e[e.ParseError=-32700]=`ParseError`,e[e.InvalidRequest=-32600]=`InvalidRequest`,e[e.MethodNotFound=-32601]=`MethodNotFound`,e[e.InvalidParams=-32602]=`InvalidParams`,e[e.InternalError=-32603]=`InternalError`,e[e.UrlElicitationRequired=-32042]=`UrlElicitationRequired`})(V||={});const Dc=w({jsonrpc:k(`2.0`),id:Cc.optional(),error:w({code:D().int(),message:C(),data:Ie().optional()})}).strict(),isJSONRPCErrorResponse=e=>Dc.safeParse(e).success,Oc=S([wc,Tc,Ec,Dc]);S([Ec,Dc]);const kc=Sc.strict(),Ac=bc.extend({requestId:Cc.optional(),reason:C().optional()}),jc=xc.extend({method:k(`notifications/cancelled`),params:Ac}),Mc=w({icons:E(w({src:C(),mimeType:C().optional(),sizes:E(C()).optional(),theme:Ce([`light`,`dark`]).optional()})).optional()}),Nc=w({name:C(),title:C().optional()}),Pc=Nc.extend({...Nc.shape,...Mc.shape,version:C(),websiteUrl:C().optional(),description:C().optional()}),Fc=Le(e=>e&&typeof e==`object`&&!Array.isArray(e)&&Object.keys(e).length===0?{form:{}}:e,je(w({form:je(w({applyDefaults:O().optional()}),T(C(),Ie())).optional(),url:dc.optional()}),T(C(),Ie()).optional())),Ic=Te({list:dc.optional(),cancel:dc.optional(),requests:Te({sampling:Te({createMessage:dc.optional()}).optional(),elicitation:Te({create:dc.optional()}).optional()}).optional()}),Lc=Te({list:dc.optional(),cancel:dc.optional(),requests:Te({tools:Te({call:dc.optional()}).optional()}).optional()}),Rc=w({experimental:T(C(),dc).optional(),sampling:w({context:dc.optional(),tools:dc.optional()}).optional(),elicitation:Fc.optional(),roots:w({listChanged:O().optional()}).optional(),tasks:Ic.optional(),extensions:T(C(),dc).optional()}),zc=_c.extend({protocolVersion:C(),capabilities:Rc,clientInfo:Pc}),Bc=yc.extend({method:k(`initialize`),params:zc}),isInitializeRequest=e=>Bc.safeParse(e).success,Vc=w({experimental:T(C(),dc).optional(),logging:dc.optional(),completions:dc.optional(),prompts:w({listChanged:O().optional()}).optional(),resources:w({subscribe:O().optional(),listChanged:O().optional()}).optional(),tools:w({listChanged:O().optional()}).optional(),tasks:Lc.optional(),extensions:T(C(),dc).optional()}),Hc=Sc.extend({protocolVersion:C(),capabilities:Vc,serverInfo:Pc,instructions:C().optional()}),Uc=xc.extend({method:k(`notifications/initialized`),params:bc.optional()}),Wc=yc.extend({method:k(`ping`),params:_c.optional()}),Gc=w({progress:D(),total:Fe(D()),message:Fe(C())}),Kc=w({...bc.shape,...Gc.shape,progressToken:fc}),qc=xc.extend({method:k(`notifications/progress`),params:Kc}),Jc=_c.extend({cursor:pc.optional()}),Yc=yc.extend({params:Jc.optional()}),Xc=Sc.extend({nextCursor:pc.optional()}),Zc=Ce([`working`,`input_required`,`completed`,`failed`,`cancelled`]),Qc=w({taskId:C(),status:Zc,ttl:S([D(),Ae()]),createdAt:C(),lastUpdatedAt:C(),pollInterval:Fe(D()),statusMessage:Fe(C())}),$c=Sc.extend({task:Qc}),el=bc.merge(Qc),tl=xc.extend({method:k(`notifications/tasks/status`),params:el}),nl=yc.extend({method:k(`tasks/get`),params:_c.extend({taskId:C()})}),rl=Sc.merge(Qc),il=yc.extend({method:k(`tasks/result`),params:_c.extend({taskId:C()})});Sc.loose();const al=Yc.extend({method:k(`tasks/list`)}),ol=Xc.extend({tasks:E(Qc)}),sl=yc.extend({method:k(`tasks/cancel`),params:_c.extend({taskId:C()})}),cl=Sc.merge(Qc),ll=w({uri:C(),mimeType:Fe(C()),_meta:T(C(),Ie()).optional()}),ul=ll.extend({text:C()}),dl=C().refine(e=>{try{return atob(e),!0}catch{return!1}},{message:`Invalid Base64 string`}),fl=ll.extend({blob:dl}),pl=Ce([`user`,`assistant`]),ml=w({audience:E(pl).optional(),priority:D().min(0).max(1).optional(),lastModified:me({offset:!0}).optional()}),hl=w({...Nc.shape,...Mc.shape,uri:C(),description:Fe(C()),mimeType:Fe(C()),size:Fe(D()),annotations:ml.optional(),_meta:Fe(Te({}))}),gl=w({...Nc.shape,...Mc.shape,uriTemplate:C(),description:Fe(C()),mimeType:Fe(C()),annotations:ml.optional(),_meta:Fe(Te({}))}),_l=Yc.extend({method:k(`resources/list`)}),vl=Xc.extend({resources:E(hl)}),yl=Yc.extend({method:k(`resources/templates/list`)}),bl=Xc.extend({resourceTemplates:E(gl)}),xl=_c.extend({uri:C()}),Sl=xl,Cl=yc.extend({method:k(`resources/read`),params:Sl}),wl=Sc.extend({contents:E(S([ul,fl]))}),Tl=xc.extend({method:k(`notifications/resources/list_changed`),params:bc.optional()}),El=xl,Dl=yc.extend({method:k(`resources/subscribe`),params:El}),Ol=xl,kl=yc.extend({method:k(`resources/unsubscribe`),params:Ol}),Al=bc.extend({uri:C()}),jl=xc.extend({method:k(`notifications/resources/updated`),params:Al}),Ml=w({name:C(),description:Fe(C()),required:Fe(O())}),Nl=w({...Nc.shape,...Mc.shape,description:Fe(C()),arguments:Fe(E(Ml)),_meta:Fe(Te({}))}),Pl=Yc.extend({method:k(`prompts/list`)}),Fl=Xc.extend({prompts:E(Nl)}),Il=_c.extend({name:C(),arguments:T(C(),C()).optional()}),Ll=yc.extend({method:k(`prompts/get`),params:Il}),Rl=w({type:k(`text`),text:C(),annotations:ml.optional(),_meta:T(C(),Ie()).optional()}),zl=w({type:k(`image`),data:dl,mimeType:C(),annotations:ml.optional(),_meta:T(C(),Ie()).optional()}),Bl=w({type:k(`audio`),data:dl,mimeType:C(),annotations:ml.optional(),_meta:T(C(),Ie()).optional()}),Vl=w({type:k(`tool_use`),name:C(),id:C(),input:T(C(),Ie()),_meta:T(C(),Ie()).optional()}),Hl=w({type:k(`resource`),resource:S([ul,fl]),annotations:ml.optional(),_meta:T(C(),Ie()).optional()}),Ul=S([Rl,zl,Bl,hl.extend({type:k(`resource_link`)}),Hl]),Wl=w({role:pl,content:Ul}),Gl=Sc.extend({description:C().optional(),messages:E(Wl)}),Kl=xc.extend({method:k(`notifications/prompts/list_changed`),params:bc.optional()}),ql=w({title:C().optional(),readOnlyHint:O().optional(),destructiveHint:O().optional(),idempotentHint:O().optional(),openWorldHint:O().optional()}),Jl=w({taskSupport:Ce([`required`,`optional`,`forbidden`]).optional()}),Yl=w({...Nc.shape,...Mc.shape,description:C().optional(),inputSchema:w({type:k(`object`),properties:T(C(),dc).optional(),required:E(C()).optional()}).catchall(Ie()),outputSchema:w({type:k(`object`),properties:T(C(),dc).optional(),required:E(C()).optional()}).catchall(Ie()).optional(),annotations:ql.optional(),execution:Jl.optional(),_meta:T(C(),Ie()).optional()}),Xl=Yc.extend({method:k(`tools/list`)}),Zl=Xc.extend({tools:E(Yl)}),Ql=Sc.extend({content:E(Ul).default([]),structuredContent:T(C(),Ie()).optional(),isError:O().optional()});Ql.or(Sc.extend({toolResult:Ie()}));const $l=vc.extend({name:C(),arguments:T(C(),Ie()).optional()}),eu=yc.extend({method:k(`tools/call`),params:$l}),tu=xc.extend({method:k(`notifications/tools/list_changed`),params:bc.optional()});w({autoRefresh:O().default(!0),debounceMs:D().int().nonnegative().default(300)});const nu=Ce([`debug`,`info`,`notice`,`warning`,`error`,`critical`,`alert`,`emergency`]),ru=_c.extend({level:nu}),iu=yc.extend({method:k(`logging/setLevel`),params:ru}),au=bc.extend({level:nu,logger:C().optional(),data:Ie()}),ou=xc.extend({method:k(`notifications/message`),params:au}),su=w({hints:E(w({name:C().optional()})).optional(),costPriority:D().min(0).max(1).optional(),speedPriority:D().min(0).max(1).optional(),intelligencePriority:D().min(0).max(1).optional()}),cu=w({mode:Ce([`auto`,`required`,`none`]).optional()}),lu=w({type:k(`tool_result`),toolUseId:C().describe(`The unique identifier for the corresponding tool call.`),content:E(Ul).default([]),structuredContent:w({}).loose().optional(),isError:O().optional(),_meta:T(C(),Ie()).optional()}),uu=we(`type`,[Rl,zl,Bl]),du=we(`type`,[Rl,zl,Bl,Vl,lu]),fu=w({role:pl,content:S([du,E(du)]),_meta:T(C(),Ie()).optional()}),pu=vc.extend({messages:E(fu),modelPreferences:su.optional(),systemPrompt:C().optional(),includeContext:Ce([`none`,`thisServer`,`allServers`]).optional(),temperature:D().optional(),maxTokens:D().int(),stopSequences:E(C()).optional(),metadata:dc.optional(),tools:E(Yl).optional(),toolChoice:cu.optional()}),mu=yc.extend({method:k(`sampling/createMessage`),params:pu}),hu=Sc.extend({model:C(),stopReason:Fe(Ce([`endTurn`,`stopSequence`,`maxTokens`]).or(C())),role:pl,content:uu}),gu=Sc.extend({model:C(),stopReason:Fe(Ce([`endTurn`,`stopSequence`,`maxTokens`,`toolUse`]).or(C())),role:pl,content:S([du,E(du)])}),_u=w({type:k(`boolean`),title:C().optional(),description:C().optional(),default:O().optional()}),vu=w({type:k(`string`),title:C().optional(),description:C().optional(),minLength:D().optional(),maxLength:D().optional(),format:Ce([`email`,`uri`,`date`,`date-time`]).optional(),default:C().optional()}),yu=w({type:Ce([`number`,`integer`]),title:C().optional(),description:C().optional(),minimum:D().optional(),maximum:D().optional(),default:D().optional()}),bu=w({type:k(`string`),title:C().optional(),description:C().optional(),enum:E(C()),default:C().optional()}),xu=w({type:k(`string`),title:C().optional(),description:C().optional(),oneOf:E(w({const:C(),title:C()})),default:C().optional()}),Su=S([S([w({type:k(`string`),title:C().optional(),description:C().optional(),enum:E(C()),enumNames:E(C()).optional(),default:C().optional()}),S([bu,xu]),S([w({type:k(`array`),title:C().optional(),description:C().optional(),minItems:D().optional(),maxItems:D().optional(),items:w({type:k(`string`),enum:E(C())}),default:E(C()).optional()}),w({type:k(`array`),title:C().optional(),description:C().optional(),minItems:D().optional(),maxItems:D().optional(),items:w({anyOf:E(w({const:C(),title:C()}))}),default:E(C()).optional()})])]),_u,vu,yu]),Cu=S([vc.extend({mode:k(`form`).optional(),message:C(),requestedSchema:w({type:k(`object`),properties:T(C(),Su),required:E(C()).optional()})}),vc.extend({mode:k(`url`),message:C(),elicitationId:C(),url:C().url()})]),wu=yc.extend({method:k(`elicitation/create`),params:Cu}),Tu=bc.extend({elicitationId:C()}),Eu=xc.extend({method:k(`notifications/elicitation/complete`),params:Tu}),Du=Sc.extend({action:Ce([`accept`,`decline`,`cancel`]),content:Le(e=>e===null?void 0:e,T(C(),S([C(),D(),O(),E(C())])).optional())}),Ou=w({type:k(`ref/resource`),uri:C()}),ku=w({type:k(`ref/prompt`),name:C()}),Au=_c.extend({ref:S([ku,Ou]),argument:w({name:C(),value:C()}),context:w({arguments:T(C(),C()).optional()}).optional()}),ju=yc.extend({method:k(`completion/complete`),params:Au});function assertCompleteRequestPrompt(e){if(e.params.ref.type!==`ref/prompt`)throw TypeError(`Expected CompleteRequestPrompt, but got ${e.params.ref.type}`)}function assertCompleteRequestResourceTemplate(e){if(e.params.ref.type!==`ref/resource`)throw TypeError(`Expected CompleteRequestResourceTemplate, but got ${e.params.ref.type}`)}const Mu=Sc.extend({completion:Te({values:E(C()).max(100),total:Fe(D().int()),hasMore:Fe(O())})}),Nu=w({uri:C().startsWith(`file://`),name:C().optional(),_meta:T(C(),Ie()).optional()}),Pu=yc.extend({method:k(`roots/list`),params:_c.optional()}),Fu=Sc.extend({roots:E(Nu)}),Iu=xc.extend({method:k(`notifications/roots/list_changed`),params:bc.optional()});S([Wc,Bc,ju,iu,Ll,Pl,_l,yl,Cl,Dl,kl,eu,Xl,nl,il,al,sl]),S([jc,qc,Uc,Iu,tl]),S([kc,hu,gu,Du,Fu,rl,ol,$c]),S([Wc,mu,wu,Pu,nl,il,al,sl]),S([jc,qc,ou,jl,Tl,tu,Kl,tl,Eu]),S([kc,Hc,Mu,Gl,Fl,vl,bl,wl,Ql,Zl,rl,ol,$c]);var H=class McpError extends Error{constructor(e,t,n){super(`MCP error ${e}: ${t}`),this.code=e,this.data=n,this.name=`McpError`}static fromError(e,t,n){if(e===V.UrlElicitationRequired&&n){let e=n;if(e.elicitations)return new UrlElicitationRequiredError(e.elicitations,t)}return new McpError(e,t,n)}},UrlElicitationRequiredError=class extends H{constructor(e,t=`URL elicitation${e.length>1?`s`:``} required`){super(V.UrlElicitationRequired,t,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}},ReadBuffer=class{append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(`
|
|
332
|
+
`);if(e===-1)return null;let t=this._buffer.toString(`utf8`,0,e).replace(/\r$/,``);return this._buffer=this._buffer.subarray(e+1),deserializeMessage(t)}clear(){this._buffer=void 0}};function deserializeMessage(e){return Oc.parse(JSON.parse(e))}function serializeMessage(e){return JSON.stringify(e)+`
|
|
333
|
+
`}var StdioServerTransport=class{constructor(e=N.stdin,t=N.stdout){this._stdin=e,this._stdout=t,this._readBuffer=new ReadBuffer,this._started=!1,this._ondata=e=>{this._readBuffer.append(e),this.processReadBuffer()},this._onerror=e=>{this.onerror?.(e)}}async start(){if(this._started)throw Error(`StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.`);this._started=!0,this._stdin.on(`data`,this._ondata),this._stdin.on(`error`,this._onerror)}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){this._stdin.off(`data`,this._ondata),this._stdin.off(`error`,this._onerror),this._stdin.listenerCount(`data`)===0&&this._stdin.pause(),this._readBuffer.clear(),this.onclose?.()}send(e){return new Promise(t=>{let n=serializeMessage(e);this._stdout.write(n)?t():this._stdout.once(`drain`,t)})}};const U=a.getChild(`mcp`);function likec4Tool(e){return t=>n=>{let{name:r,description:i,...a}=e,c={description:i?.trim()??``,...a};return n.registerTool(r,c,async(...e)=>{let n=useLanguageServices();U.debug(`Calling tool {name}, args: {args}`,{name:r,args:e});try{let r=await t.apply(null,[n,...e]);return typeof r==`string`?{content:[{type:`text`,text:r}]}:Be(c.outputSchema)?Ot(r,`content`)?r:{content:[{type:`text`,text:JSON.stringify(r)}]}:{content:[],structuredContent:r}}catch(e){return U.error(`Tool ${r} failed`,{err:e}),{content:[{type:`text`,text:s(e)}],isError:!0}}}),n}}var W;(function(e){e.assertEqual=e=>{};function assertIs(e){}e.assertIs=assertIs;function assertNever(e){throw Error()}e.assertNever=assertNever,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function joinValues(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=joinValues,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(W||={});var Lu;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(Lu||={});const G=W.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),getParsedType=e=>{switch(typeof e){case`undefined`:return G.undefined;case`string`:return G.string;case`number`:return Number.isNaN(e)?G.nan:G.number;case`boolean`:return G.boolean;case`function`:return G.function;case`bigint`:return G.bigint;case`symbol`:return G.symbol;case`object`:return Array.isArray(e)?G.array:e===null?G.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?G.promise:typeof Map<`u`&&e instanceof Map?G.map:typeof Set<`u`&&e instanceof Set?G.set:typeof Date<`u`&&e instanceof Date?G.date:G.object;default:return G.unknown}},K=W.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]);var Ru=class ZodError extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},processError=e=>{for(let r of e.issues)if(r.code===`invalid_union`)r.unionErrors.map(processError);else if(r.code===`invalid_return_type`)processError(r.returnTypeError);else if(r.code===`invalid_arguments`)processError(r.argumentsError);else if(r.path.length===0)n._errors.push(t(r));else{let e=n,i=0;for(;i<r.path.length;){let n=r.path[i];i===r.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(r))):e[n]=e[n]||{_errors:[]},e=e[n],i++}}};return processError(this),n}static assert(e){if(!(e instanceof ZodError))throw Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,W.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=e=>e.message){let t=Object.create(null),n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};Ru.create=e=>new Ru(e);const errorMap=(e,t)=>{let n;switch(e.code){case K.invalid_type:n=e.received===G.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case K.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,W.jsonStringifyReplacer)}`;break;case K.unrecognized_keys:n=`Unrecognized key(s) in object: ${W.joinValues(e.keys,`, `)}`;break;case K.invalid_union:n=`Invalid input`;break;case K.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${W.joinValues(e.options)}`;break;case K.invalid_enum_value:n=`Invalid enum value. Expected ${W.joinValues(e.options)}, received '${e.received}'`;break;case K.invalid_arguments:n=`Invalid function arguments`;break;case K.invalid_return_type:n=`Invalid function return type`;break;case K.invalid_date:n=`Invalid date`;break;case K.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(n=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?n=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?n=`Invalid input: must end with "${e.validation.endsWith}"`:W.assertNever(e.validation):n=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case K.too_small:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case K.too_big:n=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case K.custom:n=`Invalid input`;break;case K.invalid_intersection_types:n=`Intersection results could not be merged`;break;case K.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case K.not_finite:n=`Number must be finite`;break;default:n=t.defaultError,W.assertNever(e)}return{message:n}};let zu=errorMap;function getErrorMap(){return zu}const makeIssue=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],s={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let c=``,l=r.filter(e=>!!e).slice().reverse();for(let e of l)c=e(s,{data:t,defaultError:c}).message;return{...i,path:a,message:c}};function addIssueToContext(e,t){let n=getErrorMap(),r=makeIssue({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===errorMap?void 0:errorMap].filter(e=>!!e)});e.common.issues.push(r)}var Bu=class ParseStatus{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return q;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,t){let n=[];for(let e of t){let t=await e.key,r=await e.value;n.push({key:t,value:r})}return ParseStatus.mergeObjectSync(e,n)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return q;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}};const q=Object.freeze({status:`aborted`}),DIRTY=e=>({status:`dirty`,value:e}),OK=e=>({status:`valid`,value:e}),isAborted=e=>e.status===`aborted`,isDirty=e=>e.status===`dirty`,isValid=e=>e.status===`valid`,isAsync=e=>typeof Promise<`u`&&e instanceof Promise;var J;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(J||={});var ParseInputLazyPath=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}};const handleResult=(e,t)=>{if(isValid(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new Ru(e.common.issues);return this._error=t,this._error}}};function processCreateParams(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(t)return{errorMap:t,description:i};let customMap=(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}};return{errorMap:customMap,description:i}}var ZodType=class{get description(){return this._def.description}_getType(e){return getParsedType(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:getParsedType(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new Bu,ctx:{common:e.parent.common,data:e.data,parsedType:getParsedType(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(isAsync(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:getParsedType(e)};return handleResult(n,this._parseSync({data:e,path:n.path,parent:n}))}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:getParsedType(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return isValid(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>isValid(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:getParsedType(e)},r=this._parse({data:e,path:n.path,parent:n});return handleResult(n,await(isAsync(r)?r:Promise.resolve(r)))}refine(e,t){let getIssueProperties=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,n)=>{let r=e(t),setError=()=>n.addIssue({code:K.custom,...getIssueProperties(t)});return typeof Promise<`u`&&r instanceof Promise?r.then(e=>e?!0:(setError(),!1)):r?!0:(setError(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new ZodEffects({schema:this,typeName:Y.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return ZodOptional.create(this,this._def)}nullable(){return ZodNullable.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return cd.create(this)}promise(){return ZodPromise.create(this,this._def)}or(e){return ZodUnion.create([this,e],this._def)}and(e){return ZodIntersection.create(this,e,this._def)}transform(e){return new ZodEffects({...processCreateParams(this._def),schema:this,typeName:Y.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new ZodDefault({...processCreateParams(this._def),innerType:this,defaultValue:t,typeName:Y.ZodDefault})}brand(){return new ZodBranded({typeName:Y.ZodBranded,type:this,...processCreateParams(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new ZodCatch({...processCreateParams(this._def),innerType:this,catchValue:t,typeName:Y.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return gd.create(this,e)}readonly(){return ZodReadonly.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}};const Vu=/^c[^\s-]{8,}$/i,Hu=/^[0-9a-z]+$/,Uu=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Wu=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Gu=/^[a-z0-9_-]{21}$/i,Ku=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,qu=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Ju=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i;let Yu;const Xu=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Zu=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Qu=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,$u=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,ed=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,td=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nd=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,rd=RegExp(`^${nd}$`);function timeRegexSource(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function timeRegex(e){return RegExp(`^${timeRegexSource(e)}$`)}function datetimeRegex(e){let t=`${nd}T${timeRegexSource(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function isValidIP(e,t){return!!((t===`v4`||!t)&&Xu.test(e)||(t===`v6`||!t)&&Qu.test(e))}function isValidJWT(e,t){if(!Ku.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function isValidCidr(e,t){return!!((t===`v4`||!t)&&Zu.test(e)||(t===`v6`||!t)&&$u.test(e))}var id=class ZodString extends ZodType{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==G.string){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:K.invalid_type,expected:G.string,received:t.parsedType}),q}let t=new Bu,n;for(let r of this._def.checks)if(r.kind===`min`)e.data.length<r.value&&(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{code:K.too_small,minimum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`max`)e.data.length>r.value&&(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{code:K.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),t.dirty());else if(r.kind===`length`){let i=e.data.length>r.value,a=e.data.length<r.value;(i||a)&&(n=this._getOrReturnCtx(e,n),i?addIssueToContext(n,{code:K.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!0,message:r.message}):a&&addIssueToContext(n,{code:K.too_small,minimum:r.value,type:`string`,inclusive:!0,exact:!0,message:r.message}),t.dirty())}else if(r.kind===`email`)Ju.test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`email`,code:K.invalid_string,message:r.message}),t.dirty());else if(r.kind===`emoji`)Yu||=RegExp(`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,`u`),Yu.test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`emoji`,code:K.invalid_string,message:r.message}),t.dirty());else if(r.kind===`uuid`)Wu.test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`uuid`,code:K.invalid_string,message:r.message}),t.dirty());else if(r.kind===`nanoid`)Gu.test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`nanoid`,code:K.invalid_string,message:r.message}),t.dirty());else if(r.kind===`cuid`)Vu.test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`cuid`,code:K.invalid_string,message:r.message}),t.dirty());else if(r.kind===`cuid2`)Hu.test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`cuid2`,code:K.invalid_string,message:r.message}),t.dirty());else if(r.kind===`ulid`)Uu.test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`ulid`,code:K.invalid_string,message:r.message}),t.dirty());else if(r.kind===`url`)try{new URL(e.data)}catch{n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`url`,code:K.invalid_string,message:r.message}),t.dirty()}else r.kind===`regex`?(r.regex.lastIndex=0,r.regex.test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`regex`,code:K.invalid_string,message:r.message}),t.dirty())):r.kind===`trim`?e.data=e.data.trim():r.kind===`includes`?e.data.includes(r.value,r.position)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{code:K.invalid_string,validation:{includes:r.value,position:r.position},message:r.message}),t.dirty()):r.kind===`toLowerCase`?e.data=e.data.toLowerCase():r.kind===`toUpperCase`?e.data=e.data.toUpperCase():r.kind===`startsWith`?e.data.startsWith(r.value)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{code:K.invalid_string,validation:{startsWith:r.value},message:r.message}),t.dirty()):r.kind===`endsWith`?e.data.endsWith(r.value)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{code:K.invalid_string,validation:{endsWith:r.value},message:r.message}),t.dirty()):r.kind===`datetime`?datetimeRegex(r).test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{code:K.invalid_string,validation:`datetime`,message:r.message}),t.dirty()):r.kind===`date`?rd.test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{code:K.invalid_string,validation:`date`,message:r.message}),t.dirty()):r.kind===`time`?timeRegex(r).test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{code:K.invalid_string,validation:`time`,message:r.message}),t.dirty()):r.kind===`duration`?qu.test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`duration`,code:K.invalid_string,message:r.message}),t.dirty()):r.kind===`ip`?isValidIP(e.data,r.version)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`ip`,code:K.invalid_string,message:r.message}),t.dirty()):r.kind===`jwt`?isValidJWT(e.data,r.alg)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`jwt`,code:K.invalid_string,message:r.message}),t.dirty()):r.kind===`cidr`?isValidCidr(e.data,r.version)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`cidr`,code:K.invalid_string,message:r.message}),t.dirty()):r.kind===`base64`?ed.test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`base64`,code:K.invalid_string,message:r.message}),t.dirty()):r.kind===`base64url`?td.test(e.data)||(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{validation:`base64url`,code:K.invalid_string,message:r.message}),t.dirty()):W.assertNever(r);return{status:t.value,value:e.data}}_regex(e,t,n){return this.refinement(t=>e.test(t),{validation:t,code:K.invalid_string,...J.errToObj(n)})}_addCheck(e){return new ZodString({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:`email`,...J.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...J.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...J.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...J.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...J.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...J.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...J.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...J.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...J.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...J.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...J.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...J.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...J.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...J.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...J.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...J.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...J.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...J.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...J.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...J.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...J.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...J.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...J.errToObj(t)})}nonempty(e){return this.min(1,J.errToObj(e))}trim(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new ZodString({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}};id.create=e=>new id({checks:[],typeName:Y.ZodString,coerce:e?.coerce??!1,...processCreateParams(e)});function floatSafeRemainder(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var ad=class ZodNumber extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==G.number){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:K.invalid_type,expected:G.number,received:t.parsedType}),q}let t,n=new Bu;for(let r of this._def.checks)r.kind===`int`?W.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),addIssueToContext(t,{code:K.invalid_type,expected:`integer`,received:`float`,message:r.message}),n.dirty()):r.kind===`min`?(r.inclusive?e.data<r.value:e.data<=r.value)&&(t=this._getOrReturnCtx(e,t),addIssueToContext(t,{code:K.too_small,minimum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`max`?(r.inclusive?e.data>r.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),addIssueToContext(t,{code:K.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):r.kind===`multipleOf`?floatSafeRemainder(e.data,r.value)!==0&&(t=this._getOrReturnCtx(e,t),addIssueToContext(t,{code:K.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),addIssueToContext(t,{code:K.not_finite,message:r.message}),n.dirty()):W.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,J.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,J.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,J.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,J.toString(t))}setLimit(e,t,n,r){return new ZodNumber({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:J.toString(r)}]})}_addCheck(e){return new ZodNumber({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:`int`,message:J.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:J.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:J.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:J.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:J.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:J.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:J.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:J.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:J.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind===`int`||e.kind===`multipleOf`&&W.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.value<e)&&(e=n.value);return Number.isFinite(t)&&Number.isFinite(e)}};ad.create=e=>new ad({checks:[],typeName:Y.ZodNumber,coerce:e?.coerce||!1,...processCreateParams(e)});var od=class ZodBigInt extends ZodType{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==G.bigint)return this._getInvalidInput(e);let t,n=new Bu;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.data<r.value:e.data<=r.value)&&(t=this._getOrReturnCtx(e,t),addIssueToContext(t,{code:K.too_small,type:`bigint`,minimum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`max`?(r.inclusive?e.data>r.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),addIssueToContext(t,{code:K.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),addIssueToContext(t,{code:K.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):W.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:K.invalid_type,expected:G.bigint,received:t.parsedType}),q}gte(e,t){return this.setLimit(`min`,e,!0,J.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,J.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,J.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,J.toString(t))}setLimit(e,t,n,r){return new ZodBigInt({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:J.toString(r)}]})}_addCheck(e){return new ZodBigInt({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:J.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:J.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:J.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:J.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:J.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}};od.create=e=>new od({checks:[],typeName:Y.ZodBigInt,coerce:e?.coerce??!1,...processCreateParams(e)});var ZodBoolean=class extends ZodType{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==G.boolean){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:K.invalid_type,expected:G.boolean,received:t.parsedType}),q}return OK(e.data)}};ZodBoolean.create=e=>new ZodBoolean({typeName:Y.ZodBoolean,coerce:e?.coerce||!1,...processCreateParams(e)});var sd=class ZodDate extends ZodType{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==G.date){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:K.invalid_type,expected:G.date,received:t.parsedType}),q}if(Number.isNaN(e.data.getTime()))return addIssueToContext(this._getOrReturnCtx(e),{code:K.invalid_date}),q;let t=new Bu,n;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()<r.value&&(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{code:K.too_small,message:r.message,inclusive:!0,exact:!1,minimum:r.value,type:`date`}),t.dirty()):r.kind===`max`?e.data.getTime()>r.value&&(n=this._getOrReturnCtx(e,n),addIssueToContext(n,{code:K.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),t.dirty()):W.assertNever(r);return{status:t.value,value:new Date(e.data.getTime())}}_addCheck(e){return new ZodDate({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:J.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:J.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e==null?null:new Date(e)}};sd.create=e=>new sd({checks:[],coerce:e?.coerce||!1,typeName:Y.ZodDate,...processCreateParams(e)});var ZodSymbol=class extends ZodType{_parse(e){if(this._getType(e)!==G.symbol){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:K.invalid_type,expected:G.symbol,received:t.parsedType}),q}return OK(e.data)}};ZodSymbol.create=e=>new ZodSymbol({typeName:Y.ZodSymbol,...processCreateParams(e)});var ZodUndefined=class extends ZodType{_parse(e){if(this._getType(e)!==G.undefined){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:K.invalid_type,expected:G.undefined,received:t.parsedType}),q}return OK(e.data)}};ZodUndefined.create=e=>new ZodUndefined({typeName:Y.ZodUndefined,...processCreateParams(e)});var ZodNull=class extends ZodType{_parse(e){if(this._getType(e)!==G.null){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:K.invalid_type,expected:G.null,received:t.parsedType}),q}return OK(e.data)}};ZodNull.create=e=>new ZodNull({typeName:Y.ZodNull,...processCreateParams(e)});var ZodAny=class extends ZodType{constructor(){super(...arguments),this._any=!0}_parse(e){return OK(e.data)}};ZodAny.create=e=>new ZodAny({typeName:Y.ZodAny,...processCreateParams(e)});var ZodUnknown=class extends ZodType{constructor(){super(...arguments),this._unknown=!0}_parse(e){return OK(e.data)}};ZodUnknown.create=e=>new ZodUnknown({typeName:Y.ZodUnknown,...processCreateParams(e)});var ZodNever=class extends ZodType{_parse(e){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:K.invalid_type,expected:G.never,received:t.parsedType}),q}};ZodNever.create=e=>new ZodNever({typeName:Y.ZodNever,...processCreateParams(e)});var ZodVoid=class extends ZodType{_parse(e){if(this._getType(e)!==G.undefined){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:K.invalid_type,expected:G.void,received:t.parsedType}),q}return OK(e.data)}};ZodVoid.create=e=>new ZodVoid({typeName:Y.ZodVoid,...processCreateParams(e)});var cd=class ZodArray extends ZodType{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==G.array)return addIssueToContext(t,{code:K.invalid_type,expected:G.array,received:t.parsedType}),q;if(r.exactLength!==null){let e=t.data.length>r.exactLength.value,i=t.data.length<r.exactLength.value;(e||i)&&(addIssueToContext(t,{code:e?K.too_big:K.too_small,minimum:i?r.exactLength.value:void 0,maximum:e?r.exactLength.value:void 0,type:`array`,inclusive:!0,exact:!0,message:r.exactLength.message}),n.dirty())}if(r.minLength!==null&&t.data.length<r.minLength.value&&(addIssueToContext(t,{code:K.too_small,minimum:r.minLength.value,type:`array`,inclusive:!0,exact:!1,message:r.minLength.message}),n.dirty()),r.maxLength!==null&&t.data.length>r.maxLength.value&&(addIssueToContext(t,{code:K.too_big,maximum:r.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new ParseInputLazyPath(t,e,t.path,n)))).then(e=>Bu.mergeArray(n,e));let i=[...t.data].map((e,n)=>r.type._parseSync(new ParseInputLazyPath(t,e,t.path,n)));return Bu.mergeArray(n,i)}get element(){return this._def.type}min(e,t){return new ZodArray({...this._def,minLength:{value:e,message:J.toString(t)}})}max(e,t){return new ZodArray({...this._def,maxLength:{value:e,message:J.toString(t)}})}length(e,t){return new ZodArray({...this._def,exactLength:{value:e,message:J.toString(t)}})}nonempty(e){return this.min(1,e)}};cd.create=(e,t)=>new cd({type:e,minLength:null,maxLength:null,exactLength:null,typeName:Y.ZodArray,...processCreateParams(t)});function deepPartialify(e){if(e instanceof ld){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=ZodOptional.create(deepPartialify(r))}return new ld({...e._def,shape:()=>t})}else if(e instanceof cd)return new cd({...e._def,type:deepPartialify(e.element)});else if(e instanceof ZodOptional)return ZodOptional.create(deepPartialify(e.unwrap()));else if(e instanceof ZodNullable)return ZodNullable.create(deepPartialify(e.unwrap()));else if(e instanceof dd)return dd.create(e.items.map(e=>deepPartialify(e)));else return e}var ld=class ZodObject extends ZodType{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),t=W.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==G.object){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:K.invalid_type,expected:G.object,received:t.parsedType}),q}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:i}=this._getCached(),a=[];if(!(this._def.catchall instanceof ZodNever&&this._def.unknownKeys===`strip`))for(let e in n.data)i.includes(e)||a.push(e);let s=[];for(let e of i){let t=r[e],i=n.data[e];s.push({key:{status:`valid`,value:e},value:t._parse(new ParseInputLazyPath(n,i,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof ZodNever){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of a)s.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)a.length>0&&(addIssueToContext(n,{code:K.unrecognized_keys,keys:a}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];s.push({key:{status:`valid`,value:t},value:e._parse(new ParseInputLazyPath(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of s){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>Bu.mergeObjectSync(t,e)):Bu.mergeObjectSync(t,s)}get shape(){return this._def.shape()}strict(e){return J.errToObj,new ZodObject({...this._def,unknownKeys:`strict`,...e===void 0?{}:{errorMap:(t,n)=>{let r=this._def.errorMap?.(t,n).message??n.defaultError;return t.code===`unrecognized_keys`?{message:J.errToObj(e).message??r}:{message:r}}}})}strip(){return new ZodObject({...this._def,unknownKeys:`strip`})}passthrough(){return new ZodObject({...this._def,unknownKeys:`passthrough`})}extend(e){return new ZodObject({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new ZodObject({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Y.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new ZodObject({...this._def,catchall:e})}pick(e){let t={};for(let n of W.objectKeys(e))e[n]&&this.shape[n]&&(t[n]=this.shape[n]);return new ZodObject({...this._def,shape:()=>t})}omit(e){let t={};for(let n of W.objectKeys(this.shape))e[n]||(t[n]=this.shape[n]);return new ZodObject({...this._def,shape:()=>t})}deepPartial(){return deepPartialify(this)}partial(e){let t={};for(let n of W.objectKeys(this.shape)){let r=this.shape[n];e&&!e[n]?t[n]=r:t[n]=r.optional()}return new ZodObject({...this._def,shape:()=>t})}required(e){let t={};for(let n of W.objectKeys(this.shape))if(e&&!e[n])t[n]=this.shape[n];else{let e=this.shape[n];for(;e instanceof ZodOptional;)e=e._def.innerType;t[n]=e}return new ZodObject({...this._def,shape:()=>t})}keyof(){return createZodEnum(W.objectKeys(this.shape))}};ld.create=(e,t)=>new ld({shape:()=>e,unknownKeys:`strip`,catchall:ZodNever.create(),typeName:Y.ZodObject,...processCreateParams(t)}),ld.strictCreate=(e,t)=>new ld({shape:()=>e,unknownKeys:`strict`,catchall:ZodNever.create(),typeName:Y.ZodObject,...processCreateParams(t)}),ld.lazycreate=(e,t)=>new ld({shape:e,unknownKeys:`strip`,catchall:ZodNever.create(),typeName:Y.ZodObject,...processCreateParams(t)});var ZodUnion=class extends ZodType{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function handleResults(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new Ru(e.ctx.common.issues));return addIssueToContext(t,{code:K.invalid_union,unionErrors:n}),q}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(handleResults);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new Ru(e));return addIssueToContext(t,{code:K.invalid_union,unionErrors:i}),q}}get options(){return this._def.options}};ZodUnion.create=(e,t)=>new ZodUnion({options:e,typeName:Y.ZodUnion,...processCreateParams(t)});const getDiscriminator=e=>e instanceof ZodLazy?getDiscriminator(e.schema):e instanceof ZodEffects?getDiscriminator(e.innerType()):e instanceof ZodLiteral?[e.value]:e instanceof hd?e.options:e instanceof ZodNativeEnum?W.objectValues(e.enum):e instanceof ZodDefault?getDiscriminator(e._def.innerType):e instanceof ZodUndefined?[void 0]:e instanceof ZodNull?[null]:e instanceof ZodOptional?[void 0,...getDiscriminator(e.unwrap())]:e instanceof ZodNullable?[null,...getDiscriminator(e.unwrap())]:e instanceof ZodBranded||e instanceof ZodReadonly?getDiscriminator(e.unwrap()):e instanceof ZodCatch?getDiscriminator(e._def.innerType):[];var ud=class ZodDiscriminatedUnion extends ZodType{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==G.object)return addIssueToContext(t,{code:K.invalid_type,expected:G.object,received:t.parsedType}),q;let n=this.discriminator,r=t.data[n],i=this.optionsMap.get(r);return i?t.common.async?i._parseAsync({data:t.data,path:t.path,parent:t}):i._parseSync({data:t.data,path:t.path,parent:t}):(addIssueToContext(t,{code:K.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),q)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,n){let r=new Map;for(let n of t){let t=getDiscriminator(n.shape[e]);if(!t.length)throw Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(let i of t){if(r.has(i))throw Error(`Discriminator property ${String(e)} has duplicate value ${String(i)}`);r.set(i,n)}}return new ZodDiscriminatedUnion({typeName:Y.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:r,...processCreateParams(n)})}};function mergeValues(e,t){let n=getParsedType(e),r=getParsedType(t);if(e===t)return{valid:!0,data:e};if(n===G.object&&r===G.object){let n=W.objectKeys(t),r=W.objectKeys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=mergeValues(e[n],t[n]);if(!r.valid)return{valid:!1};i[n]=r.data}return{valid:!0,data:i}}else if(n===G.array&&r===G.array){if(e.length!==t.length)return{valid:!1};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],s=mergeValues(i,a);if(!s.valid)return{valid:!1};n.push(s.data)}return{valid:!0,data:n}}else if(n===G.date&&r===G.date&&+e==+t)return{valid:!0,data:e};else return{valid:!1}}var ZodIntersection=class extends ZodType{_parse(e){let{status:t,ctx:n}=this._processInputParams(e),handleParsed=(e,r)=>{if(isAborted(e)||isAborted(r))return q;let i=mergeValues(e.value,r.value);return i.valid?((isDirty(e)||isDirty(r))&&t.dirty(),{status:t.value,value:i.data}):(addIssueToContext(n,{code:K.invalid_intersection_types}),q)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>handleParsed(e,t)):handleParsed(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};ZodIntersection.create=(e,t,n)=>new ZodIntersection({left:e,right:t,typeName:Y.ZodIntersection,...processCreateParams(n)});var dd=class ZodTuple extends ZodType{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==G.array)return addIssueToContext(n,{code:K.invalid_type,expected:G.array,received:n.parsedType}),q;if(n.data.length<this._def.items.length)return addIssueToContext(n,{code:K.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),q;!this._def.rest&&n.data.length>this._def.items.length&&(addIssueToContext(n,{code:K.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new ParseInputLazyPath(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>Bu.mergeArray(t,e)):Bu.mergeArray(t,r)}get items(){return this._def.items}rest(e){return new ZodTuple({...this._def,rest:e})}};dd.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new dd({items:e,typeName:Y.ZodTuple,rest:null,...processCreateParams(t)})};var fd=class ZodRecord extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==G.object)return addIssueToContext(n,{code:K.invalid_type,expected:G.object,received:n.parsedType}),q;let r=[],i=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:i._parse(new ParseInputLazyPath(n,e,n.path,e)),value:a._parse(new ParseInputLazyPath(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?Bu.mergeObjectAsync(t,r):Bu.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(e,t,n){return t instanceof ZodType?new ZodRecord({keyType:e,valueType:t,typeName:Y.ZodRecord,...processCreateParams(n)}):new ZodRecord({keyType:id.create(),valueType:e,typeName:Y.ZodRecord,...processCreateParams(t)})}},ZodMap=class extends ZodType{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==G.map)return addIssueToContext(n,{code:K.invalid_type,expected:G.map,received:n.parsedType}),q;let r=this._def.keyType,i=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new ParseInputLazyPath(n,e,n.path,[a,`key`])),value:i._parse(new ParseInputLazyPath(n,t,n.path,[a,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return q;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of a){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return q;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};ZodMap.create=(e,t,n)=>new ZodMap({valueType:t,keyType:e,typeName:Y.ZodMap,...processCreateParams(n)});var pd=class ZodSet extends ZodType{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==G.set)return addIssueToContext(n,{code:K.invalid_type,expected:G.set,received:n.parsedType}),q;let r=this._def;r.minSize!==null&&n.data.size<r.minSize.value&&(addIssueToContext(n,{code:K.too_small,minimum:r.minSize.value,type:`set`,inclusive:!0,exact:!1,message:r.minSize.message}),t.dirty()),r.maxSize!==null&&n.data.size>r.maxSize.value&&(addIssueToContext(n,{code:K.too_big,maximum:r.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let i=this._def.valueType;function finalizeSet(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return q;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let a=[...n.data.values()].map((e,t)=>i._parse(new ParseInputLazyPath(n,e,n.path,t)));return n.common.async?Promise.all(a).then(e=>finalizeSet(e)):finalizeSet(a)}min(e,t){return new ZodSet({...this._def,minSize:{value:e,message:J.toString(t)}})}max(e,t){return new ZodSet({...this._def,maxSize:{value:e,message:J.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};pd.create=(e,t)=>new pd({valueType:e,minSize:null,maxSize:null,typeName:Y.ZodSet,...processCreateParams(t)});var md=class ZodFunction extends ZodType{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==G.function)return addIssueToContext(t,{code:K.invalid_type,expected:G.function,received:t.parsedType}),q;function makeArgsIssue(e,n){return makeIssue({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,getErrorMap(),errorMap].filter(e=>!!e),issueData:{code:K.invalid_arguments,argumentsError:n}})}function makeReturnsIssue(e,n){return makeIssue({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,getErrorMap(),errorMap].filter(e=>!!e),issueData:{code:K.invalid_return_type,returnTypeError:n}})}let n={errorMap:t.common.contextualErrorMap},r=t.data;if(this._def.returns instanceof ZodPromise){let e=this;return OK(async function(...t){let i=new Ru([]),a=await e._def.args.parseAsync(t,n).catch(e=>{throw i.addIssue(makeArgsIssue(t,e)),i}),s=await Reflect.apply(r,this,a);return await e._def.returns._def.type.parseAsync(s,n).catch(e=>{throw i.addIssue(makeReturnsIssue(s,e)),i})})}else{let e=this;return OK(function(...t){let i=e._def.args.safeParse(t,n);if(!i.success)throw new Ru([makeArgsIssue(t,i.error)]);let a=Reflect.apply(r,this,i.data),s=e._def.returns.safeParse(a,n);if(!s.success)throw new Ru([makeReturnsIssue(a,s.error)]);return s.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new ZodFunction({...this._def,args:dd.create(e).rest(ZodUnknown.create())})}returns(e){return new ZodFunction({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,n){return new ZodFunction({args:e||dd.create([]).rest(ZodUnknown.create()),returns:t||ZodUnknown.create(),typeName:Y.ZodFunction,...processCreateParams(n)})}},ZodLazy=class extends ZodType{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};ZodLazy.create=(e,t)=>new ZodLazy({getter:e,typeName:Y.ZodLazy,...processCreateParams(t)});var ZodLiteral=class extends ZodType{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{received:t.data,code:K.invalid_literal,expected:this._def.value}),q}return{status:`valid`,value:e.data}}get value(){return this._def.value}};ZodLiteral.create=(e,t)=>new ZodLiteral({value:e,typeName:Y.ZodLiteral,...processCreateParams(t)});function createZodEnum(e,t){return new hd({values:e,typeName:Y.ZodEnum,...processCreateParams(t)})}var hd=class ZodEnum extends ZodType{_parse(e){if(typeof e.data!=`string`){let t=this._getOrReturnCtx(e),n=this._def.values;return addIssueToContext(t,{expected:W.joinValues(n),received:t.parsedType,code:K.invalid_type}),q}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return addIssueToContext(t,{received:t.data,code:K.invalid_enum_value,options:n}),q}return OK(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return ZodEnum.create(e,{...this._def,...t})}exclude(e,t=this._def){return ZodEnum.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}};hd.create=createZodEnum;var ZodNativeEnum=class extends ZodType{_parse(e){let t=W.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==G.string&&n.parsedType!==G.number){let e=W.objectValues(t);return addIssueToContext(n,{expected:W.joinValues(e),received:n.parsedType,code:K.invalid_type}),q}if(this._cache||=new Set(W.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=W.objectValues(t);return addIssueToContext(n,{received:n.data,code:K.invalid_enum_value,options:e}),q}return OK(e.data)}get enum(){return this._def.values}};ZodNativeEnum.create=(e,t)=>new ZodNativeEnum({values:e,typeName:Y.ZodNativeEnum,...processCreateParams(t)});var ZodPromise=class extends ZodType{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==G.promise&&t.common.async===!1?(addIssueToContext(t,{code:K.invalid_type,expected:G.promise,received:t.parsedType}),q):OK((t.parsedType===G.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};ZodPromise.create=(e,t)=>new ZodPromise({type:e,typeName:Y.ZodPromise,...processCreateParams(t)});var ZodEffects=class extends ZodType{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Y.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,i={addIssue:e=>{addIssueToContext(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(i.addIssue=i.addIssue.bind(i),r.type===`preprocess`){let e=r.transform(n.data,i);if(n.common.async)return Promise.resolve(e).then(async e=>{if(t.value===`aborted`)return q;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return r.status===`aborted`?q:r.status===`dirty`||t.value===`dirty`?DIRTY(r.value):r});{if(t.value===`aborted`)return q;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return r.status===`aborted`?q:r.status===`dirty`||t.value===`dirty`?DIRTY(r.value):r}}if(r.type===`refinement`){let executeRefinement=e=>{let t=r.refinement(e,i);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?q:(e.status===`dirty`&&t.dirty(),executeRefinement(e.value),{status:t.value,value:e.value})}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>e.status===`aborted`?q:(e.status===`dirty`&&t.dirty(),executeRefinement(e.value).then(()=>({status:t.value,value:e.value}))))}if(r.type===`transform`)if(n.common.async===!1){let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!isValid(e))return q;let a=r.transform(e.value,i);if(a instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:t.value,value:a}}else return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>isValid(e)?Promise.resolve(r.transform(e.value,i)).then(e=>({status:t.value,value:e})):q);W.assertNever(r)}};ZodEffects.create=(e,t,n)=>new ZodEffects({schema:e,typeName:Y.ZodEffects,effect:t,...processCreateParams(n)}),ZodEffects.createWithPreprocess=(e,t,n)=>new ZodEffects({schema:t,effect:{type:`preprocess`,transform:e},typeName:Y.ZodEffects,...processCreateParams(n)});var ZodOptional=class extends ZodType{_parse(e){return this._getType(e)===G.undefined?OK(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};ZodOptional.create=(e,t)=>new ZodOptional({innerType:e,typeName:Y.ZodOptional,...processCreateParams(t)});var ZodNullable=class extends ZodType{_parse(e){return this._getType(e)===G.null?OK(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};ZodNullable.create=(e,t)=>new ZodNullable({innerType:e,typeName:Y.ZodNullable,...processCreateParams(t)});var ZodDefault=class extends ZodType{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===G.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};ZodDefault.create=(e,t)=>new ZodDefault({innerType:e,typeName:Y.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...processCreateParams(t)});var ZodCatch=class extends ZodType{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return isAsync(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new Ru(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new Ru(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};ZodCatch.create=(e,t)=>new ZodCatch({innerType:e,typeName:Y.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...processCreateParams(t)});var ZodNaN=class extends ZodType{_parse(e){if(this._getType(e)!==G.nan){let t=this._getOrReturnCtx(e);return addIssueToContext(t,{code:K.invalid_type,expected:G.nan,received:t.parsedType}),q}return{status:`valid`,value:e.data}}};ZodNaN.create=e=>new ZodNaN({typeName:Y.ZodNaN,...processCreateParams(e)});var ZodBranded=class extends ZodType{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},gd=class ZodPipeline extends ZodType{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async){let handleAsync=async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?q:e.status===`dirty`?(t.dirty(),DIRTY(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})};return handleAsync()}else{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?q:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(e,t){return new ZodPipeline({in:e,out:t,typeName:Y.ZodPipeline})}},ZodReadonly=class extends ZodType{_parse(e){let t=this._def.innerType._parse(e),freeze=e=>(isValid(e)&&(e.value=Object.freeze(e.value)),e);return isAsync(t)?t.then(e=>freeze(e)):freeze(t)}unwrap(){return this._def.innerType}};ZodReadonly.create=(e,t)=>new ZodReadonly({innerType:e,typeName:Y.ZodReadonly,...processCreateParams(t)}),ld.lazycreate;var Y;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})(Y||={});const X=id.create,Z=ad.create;ZodNaN.create,od.create;const _d=ZodBoolean.create;sd.create,ZodSymbol.create,ZodUndefined.create,ZodNull.create,ZodAny.create;const vd=ZodUnknown.create;ZodNever.create,ZodVoid.create;const Q=cd.create,$=ld.create;ld.strictCreate;const yd=ZodUnion.create,bd=ud.create;ZodIntersection.create,dd.create;const xd=fd.create;ZodMap.create,pd.create,md.create,ZodLazy.create;const Sd=ZodLiteral.create,Cd=hd.create;ZodNativeEnum.create,ZodPromise.create,ZodEffects.create,ZodOptional.create,ZodNullable.create,ZodEffects.createWithPreprocess,gd.create;const wd=Re(`ZodMiniType`,(e,t)=>{if(!e._zod)throw Error(`Uninitialized schema in ZodMiniType.`);fe.init(e,t),e.def=t,e.type=t.type,e.parse=(t,n)=>De(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>ve(e,t,n),e.parseAsync=async(t,n)=>_e(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>be(e,t,n),e.check=(...n)=>e.clone({...t,checks:[...t.checks??[],...n.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]},{parent:!0}),e.with=e.check,e.clone=(t,n)=>he(e,t,n),e.brand=()=>e,e.register=((t,n)=>(t.add(e,n),e)),e.apply=t=>t(e)}),Td=Re(`ZodMiniObject`,(e,t)=>{Oe.init(e,t),wd.init(e,t),ge(e,`shape`,()=>t.shape)});function object(e,t){return new Td({type:`object`,shape:e??{},...xe(t)})}function isZ4Schema(e){return!!e._zod}function objectFromShape(e){let t=Object.values(e);if(t.length===0)return object({});let n=t.every(isZ4Schema),r=t.every(e=>!isZ4Schema(e));if(n)return object(e);if(r)return $(e);throw Error(`Mixed Zod versions detected in object shape.`)}function safeParse(e,t){return isZ4Schema(e)?ve(e,t):e.safeParse(t)}async function safeParseAsync(e,t){return isZ4Schema(e)?await be(e,t):await e.safeParseAsync(t)}function getObjectShape(e){if(!e)return;let t;if(t=isZ4Schema(e)?e._zod?.def?.shape:e.shape,t){if(typeof t==`function`)try{return t()}catch{return}return t}}function normalizeObjectSchema(e){if(e){if(typeof e==`object`){let t=e,n=e;if(!t._def&&!n._zod){let t=Object.values(e);if(t.length>0&&t.every(e=>typeof e==`object`&&!!e&&(e._def!==void 0||e._zod!==void 0||typeof e.parse==`function`)))return objectFromShape(e)}}if(isZ4Schema(e)){let t=e._zod?.def;if(t&&(t.type===`object`||t.shape!==void 0))return e}else if(e.shape!==void 0)return e}}function getParseErrorMessage(e){if(e&&typeof e==`object`){if(`message`in e&&typeof e.message==`string`)return e.message;if(`issues`in e&&Array.isArray(e.issues)&&e.issues.length>0){let t=e.issues[0];if(t&&typeof t==`object`&&`message`in t)return String(t.message)}try{return JSON.stringify(e)}catch{return String(e)}}return String(e)}function getSchemaDescription(e){return e.description}function isSchemaOptional(e){if(isZ4Schema(e))return e._zod?.def?.type===`optional`;let t=e;return typeof e.isOptional==`function`?e.isOptional():t._def?.typeName===`ZodOptional`}function getLiteralValue(e){if(isZ4Schema(e)){let t=e._zod?.def;if(t){if(t.value!==void 0)return t.value;if(Array.isArray(t.values)&&t.values.length>0)return t.values[0]}}let t=e._def;if(t){if(t.value!==void 0)return t.value;if(Array.isArray(t.values)&&t.values.length>0)return t.values[0]}let n=e.value;if(n!==void 0)return n}function isTerminal(e){return e===`completed`||e===`failed`||e===`cancelled`}const Ed=Symbol(`Let zodToJsonSchema decide on which parser to use`),Dd={name:void 0,$refStrategy:`root`,basePath:[`#`],effectStrategy:`input`,pipeStrategy:`all`,dateStrategy:`format:date-time`,mapStrategy:`entries`,removeAdditionalStrategy:`passthrough`,allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:`definitions`,target:`jsonSchema7`,strictUnions:!1,definitions:{},errorMessages:!1,markdownDescription:!1,patternStrategy:`escape`,applyRegexFlags:!1,emailStrategy:`format:email`,base64Strategy:`contentEncoding:base64`,nameStrategy:`ref`,openAiAnyTypeName:`OpenAiAnyType`},getDefaultOptions=e=>typeof e==`string`?{...Dd,name:e}:{...Dd,...e},getRefs=e=>{let t=getDefaultOptions(e),n=t.name===void 0?t.basePath:[...t.basePath,t.definitionPath,t.name];return{...t,flags:{hasReferencedOpenAiAnyType:!1},currentPath:n,propertyPath:void 0,seen:new Map(Object.entries(t.definitions).map(([e,n])=>[n._def,{def:n._def,path:[...t.basePath,t.definitionPath,e],jsonSchema:void 0}]))}};function addErrorMessage(e,t,n,r){r?.errorMessages&&n&&(e.errorMessage={...e.errorMessage,[t]:n})}function setResponseValueAndErrors(e,t,n,r,i){e[t]=n,addErrorMessage(e,t,r,i)}const getRelativePath=(e,t)=>{let n=0;for(;n<e.length&&n<t.length&&e[n]===t[n];n++);return[(e.length-n).toString(),...t.slice(n)].join(`/`)};function parseAnyDef(e){if(e.target!==`openAi`)return{};let t=[...e.basePath,e.definitionPath,e.openAiAnyTypeName];return e.flags.hasReferencedOpenAiAnyType=!0,{$ref:e.$refStrategy===`relative`?getRelativePath(t,e.currentPath):t.join(`/`)}}function parseArrayDef(e,t){let n={type:`array`};return e.type?._def&&e.type?._def?.typeName!==Y.ZodAny&&(n.items=parseDef(e.type._def,{...t,currentPath:[...t.currentPath,`items`]})),e.minLength&&setResponseValueAndErrors(n,`minItems`,e.minLength.value,e.minLength.message,t),e.maxLength&&setResponseValueAndErrors(n,`maxItems`,e.maxLength.value,e.maxLength.message,t),e.exactLength&&(setResponseValueAndErrors(n,`minItems`,e.exactLength.value,e.exactLength.message,t),setResponseValueAndErrors(n,`maxItems`,e.exactLength.value,e.exactLength.message,t)),n}function parseBigintDef(e,t){let n={type:`integer`,format:`int64`};if(!e.checks)return n;for(let r of e.checks)switch(r.kind){case`min`:t.target===`jsonSchema7`?r.inclusive?setResponseValueAndErrors(n,`minimum`,r.value,r.message,t):setResponseValueAndErrors(n,`exclusiveMinimum`,r.value,r.message,t):(r.inclusive||(n.exclusiveMinimum=!0),setResponseValueAndErrors(n,`minimum`,r.value,r.message,t));break;case`max`:t.target===`jsonSchema7`?r.inclusive?setResponseValueAndErrors(n,`maximum`,r.value,r.message,t):setResponseValueAndErrors(n,`exclusiveMaximum`,r.value,r.message,t):(r.inclusive||(n.exclusiveMaximum=!0),setResponseValueAndErrors(n,`maximum`,r.value,r.message,t));break;case`multipleOf`:setResponseValueAndErrors(n,`multipleOf`,r.value,r.message,t);break}return n}function parseBooleanDef(){return{type:`boolean`}}function parseBrandedDef(e,t){return parseDef(e.type._def,t)}const parseCatchDef=(e,t)=>parseDef(e.innerType._def,t);function parseDateDef(e,t,n){let r=n??t.dateStrategy;if(Array.isArray(r))return{anyOf:r.map((n,r)=>parseDateDef(e,t,n))};switch(r){case`string`:case`format:date-time`:return{type:`string`,format:`date-time`};case`format:date`:return{type:`string`,format:`date`};case`integer`:return integerDateParser(e,t)}}const integerDateParser=(e,t)=>{let n={type:`integer`,format:`unix-time`};if(t.target===`openApi3`)return n;for(let r of e.checks)switch(r.kind){case`min`:setResponseValueAndErrors(n,`minimum`,r.value,r.message,t);break;case`max`:setResponseValueAndErrors(n,`maximum`,r.value,r.message,t);break}return n};function parseDefaultDef(e,t){return{...parseDef(e.innerType._def,t),default:e.defaultValue()}}function parseEffectsDef(e,t){return t.effectStrategy===`input`?parseDef(e.schema._def,t):parseAnyDef(t)}function parseEnumDef(e){return{type:`string`,enum:Array.from(e.values)}}const isJsonSchema7AllOfType=e=>`type`in e&&e.type===`string`?!1:`allOf`in e;function parseIntersectionDef(e,t){let n=[parseDef(e.left._def,{...t,currentPath:[...t.currentPath,`allOf`,`0`]}),parseDef(e.right._def,{...t,currentPath:[...t.currentPath,`allOf`,`1`]})].filter(e=>!!e),r=t.target===`jsonSchema2019-09`?{unevaluatedProperties:!1}:void 0,i=[];return n.forEach(e=>{if(isJsonSchema7AllOfType(e))i.push(...e.allOf),e.unevaluatedProperties===void 0&&(r=void 0);else{let t=e;if(`additionalProperties`in e&&e.additionalProperties===!1){let{additionalProperties:n,...r}=e;t=r}else r=void 0;i.push(t)}}),i.length?{allOf:i,...r}:void 0}function parseLiteralDef(e,t){let n=typeof e.value;return n!==`bigint`&&n!==`number`&&n!==`boolean`&&n!==`string`?{type:Array.isArray(e.value)?`array`:`object`}:t.target===`openApi3`?{type:n===`bigint`?`integer`:n,enum:[e.value]}:{type:n===`bigint`?`integer`:n,const:e.value}}let Od;const kd={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(Od===void 0&&(Od=RegExp(`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,`u`)),Od),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function parseStringDef(e,t){let n={type:`string`};if(e.checks)for(let r of e.checks)switch(r.kind){case`min`:setResponseValueAndErrors(n,`minLength`,typeof n.minLength==`number`?Math.max(n.minLength,r.value):r.value,r.message,t);break;case`max`:setResponseValueAndErrors(n,`maxLength`,typeof n.maxLength==`number`?Math.min(n.maxLength,r.value):r.value,r.message,t);break;case`email`:switch(t.emailStrategy){case`format:email`:addFormat(n,`email`,r.message,t);break;case`format:idn-email`:addFormat(n,`idn-email`,r.message,t);break;case`pattern:zod`:addPattern(n,kd.email,r.message,t);break}break;case`url`:addFormat(n,`uri`,r.message,t);break;case`uuid`:addFormat(n,`uuid`,r.message,t);break;case`regex`:addPattern(n,r.regex,r.message,t);break;case`cuid`:addPattern(n,kd.cuid,r.message,t);break;case`cuid2`:addPattern(n,kd.cuid2,r.message,t);break;case`startsWith`:addPattern(n,RegExp(`^${escapeLiteralCheckValue(r.value,t)}`),r.message,t);break;case`endsWith`:addPattern(n,RegExp(`${escapeLiteralCheckValue(r.value,t)}$`),r.message,t);break;case`datetime`:addFormat(n,`date-time`,r.message,t);break;case`date`:addFormat(n,`date`,r.message,t);break;case`time`:addFormat(n,`time`,r.message,t);break;case`duration`:addFormat(n,`duration`,r.message,t);break;case`length`:setResponseValueAndErrors(n,`minLength`,typeof n.minLength==`number`?Math.max(n.minLength,r.value):r.value,r.message,t),setResponseValueAndErrors(n,`maxLength`,typeof n.maxLength==`number`?Math.min(n.maxLength,r.value):r.value,r.message,t);break;case`includes`:addPattern(n,RegExp(escapeLiteralCheckValue(r.value,t)),r.message,t);break;case`ip`:r.version!==`v6`&&addFormat(n,`ipv4`,r.message,t),r.version!==`v4`&&addFormat(n,`ipv6`,r.message,t);break;case`base64url`:addPattern(n,kd.base64url,r.message,t);break;case`jwt`:addPattern(n,kd.jwt,r.message,t);break;case`cidr`:r.version!==`v6`&&addPattern(n,kd.ipv4Cidr,r.message,t),r.version!==`v4`&&addPattern(n,kd.ipv6Cidr,r.message,t);break;case`emoji`:addPattern(n,kd.emoji(),r.message,t);break;case`ulid`:addPattern(n,kd.ulid,r.message,t);break;case`base64`:switch(t.base64Strategy){case`format:binary`:addFormat(n,`binary`,r.message,t);break;case`contentEncoding:base64`:setResponseValueAndErrors(n,`contentEncoding`,`base64`,r.message,t);break;case`pattern:zod`:addPattern(n,kd.base64,r.message,t);break}break;case`nanoid`:addPattern(n,kd.nanoid,r.message,t);case`toLowerCase`:case`toUpperCase`:case`trim`:break;default:}return n}function escapeLiteralCheckValue(e,t){return t.patternStrategy===`escape`?escapeNonAlphaNumeric(e):e}const Ad=new Set(`ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789`);function escapeNonAlphaNumeric(e){let t=``;for(let n=0;n<e.length;n++)Ad.has(e[n])||(t+=`\\`),t+=e[n];return t}function addFormat(e,t,n,r){e.format||e.anyOf?.some(e=>e.format)?(e.anyOf||=[],e.format&&(e.anyOf.push({format:e.format,...e.errorMessage&&r.errorMessages&&{errorMessage:{format:e.errorMessage.format}}}),delete e.format,e.errorMessage&&(delete e.errorMessage.format,Object.keys(e.errorMessage).length===0&&delete e.errorMessage)),e.anyOf.push({format:t,...n&&r.errorMessages&&{errorMessage:{format:n}}})):setResponseValueAndErrors(e,`format`,t,n,r)}function addPattern(e,t,n,r){e.pattern||e.allOf?.some(e=>e.pattern)?(e.allOf||=[],e.pattern&&(e.allOf.push({pattern:e.pattern,...e.errorMessage&&r.errorMessages&&{errorMessage:{pattern:e.errorMessage.pattern}}}),delete e.pattern,e.errorMessage&&(delete e.errorMessage.pattern,Object.keys(e.errorMessage).length===0&&delete e.errorMessage)),e.allOf.push({pattern:stringifyRegExpWithFlags(t,r),...n&&r.errorMessages&&{errorMessage:{pattern:n}}})):setResponseValueAndErrors(e,`pattern`,stringifyRegExpWithFlags(t,r),n,r)}function stringifyRegExpWithFlags(e,t){if(!t.applyRegexFlags||!e.flags)return e.source;let n={i:e.flags.includes(`i`),m:e.flags.includes(`m`),s:e.flags.includes(`s`)},r=n.i?e.source.toLowerCase():e.source,i=``,a=!1,s=!1,c=!1;for(let e=0;e<r.length;e++){if(a){i+=r[e],a=!1;continue}if(n.i){if(s){if(r[e].match(/[a-z]/)){c?(i+=r[e],i+=`${r[e-2]}-${r[e]}`.toUpperCase(),c=!1):r[e+1]===`-`&&r[e+2]?.match(/[a-z]/)?(i+=r[e],c=!0):i+=`${r[e]}${r[e].toUpperCase()}`;continue}}else if(r[e].match(/[a-z]/)){i+=`[${r[e]}${r[e].toUpperCase()}]`;continue}}if(n.m){if(r[e]===`^`){i+=`(^|(?<=[\r
|
|
334
|
+
]))`;continue}else if(r[e]===`$`){i+=`($|(?=[\r
|
|
335
|
+
]))`;continue}}if(n.s&&r[e]===`.`){i+=s?`${r[e]}\r\n`:`[${r[e]}\r\n]`;continue}i+=r[e],r[e]===`\\`?a=!0:s&&r[e]===`]`?s=!1:!s&&r[e]===`[`&&(s=!0)}try{new RegExp(i)}catch{return console.warn(`Could not convert regex pattern at ${t.currentPath.join(`/`)} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return i}function parseRecordDef(e,t){if(t.target===`openAi`&&console.warn(`Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.`),t.target===`openApi3`&&e.keyType?._def.typeName===Y.ZodEnum)return{type:`object`,required:e.keyType._def.values,properties:e.keyType._def.values.reduce((n,r)=>({...n,[r]:parseDef(e.valueType._def,{...t,currentPath:[...t.currentPath,`properties`,r]})??parseAnyDef(t)}),{}),additionalProperties:t.rejectedAdditionalProperties};let n={type:`object`,additionalProperties:parseDef(e.valueType._def,{...t,currentPath:[...t.currentPath,`additionalProperties`]})??t.allowedAdditionalProperties};if(t.target===`openApi3`)return n;if(e.keyType?._def.typeName===Y.ZodString&&e.keyType._def.checks?.length){let{type:r,...i}=parseStringDef(e.keyType._def,t);return{...n,propertyNames:i}}else if(e.keyType?._def.typeName===Y.ZodEnum)return{...n,propertyNames:{enum:e.keyType._def.values}};else if(e.keyType?._def.typeName===Y.ZodBranded&&e.keyType._def.type._def.typeName===Y.ZodString&&e.keyType._def.type._def.checks?.length){let{type:r,...i}=parseBrandedDef(e.keyType._def,t);return{...n,propertyNames:i}}return n}function parseMapDef(e,t){return t.mapStrategy===`record`?parseRecordDef(e,t):{type:`array`,maxItems:125,items:{type:`array`,items:[parseDef(e.keyType._def,{...t,currentPath:[...t.currentPath,`items`,`items`,`0`]})||parseAnyDef(t),parseDef(e.valueType._def,{...t,currentPath:[...t.currentPath,`items`,`items`,`1`]})||parseAnyDef(t)],minItems:2,maxItems:2}}}function parseNativeEnumDef(e){let t=e.values,n=Object.keys(e.values).filter(e=>typeof t[t[e]]!=`number`).map(e=>t[e]),r=Array.from(new Set(n.map(e=>typeof e)));return{type:r.length===1?r[0]===`string`?`string`:`number`:[`string`,`number`],enum:n}}function parseNeverDef(e){return e.target===`openAi`?void 0:{not:parseAnyDef({...e,currentPath:[...e.currentPath,`not`]})}}function parseNullDef(e){return e.target===`openApi3`?{enum:[`null`],nullable:!0}:{type:`null`}}const jd={ZodString:`string`,ZodNumber:`number`,ZodBigInt:`integer`,ZodBoolean:`boolean`,ZodNull:`null`};function parseUnionDef(e,t){if(t.target===`openApi3`)return asAnyOf(e,t);let n=e.options instanceof Map?Array.from(e.options.values()):e.options;if(n.every(e=>e._def.typeName in jd&&(!e._def.checks||!e._def.checks.length))){let e=n.reduce((e,t)=>{let n=jd[t._def.typeName];return n&&!e.includes(n)?[...e,n]:e},[]);return{type:e.length>1?e:e[0]}}else if(n.every(e=>e._def.typeName===`ZodLiteral`&&!e.description)){let e=n.reduce((e,t)=>{let n=typeof t._def.value;switch(n){case`string`:case`number`:case`boolean`:return[...e,n];case`bigint`:return[...e,`integer`];case`object`:if(t._def.value===null)return[...e,`null`];default:return e}},[]);if(e.length===n.length){let t=e.filter((e,t,n)=>n.indexOf(e)===t);return{type:t.length>1?t:t[0],enum:n.reduce((e,t)=>e.includes(t._def.value)?e:[...e,t._def.value],[])}}}else if(n.every(e=>e._def.typeName===`ZodEnum`))return{type:`string`,enum:n.reduce((e,t)=>[...e,...t._def.values.filter(t=>!e.includes(t))],[])};return asAnyOf(e,t)}const asAnyOf=(e,t)=>{let n=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((e,n)=>parseDef(e._def,{...t,currentPath:[...t.currentPath,`anyOf`,`${n}`]})).filter(e=>!!e&&(!t.strictUnions||typeof e==`object`&&Object.keys(e).length>0));return n.length?{anyOf:n}:void 0};function parseNullableDef(e,t){if([`ZodString`,`ZodNumber`,`ZodBigInt`,`ZodBoolean`,`ZodNull`].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return t.target===`openApi3`?{type:jd[e.innerType._def.typeName],nullable:!0}:{type:[jd[e.innerType._def.typeName],`null`]};if(t.target===`openApi3`){let n=parseDef(e.innerType._def,{...t,currentPath:[...t.currentPath]});return n&&`$ref`in n?{allOf:[n],nullable:!0}:n&&{...n,nullable:!0}}let n=parseDef(e.innerType._def,{...t,currentPath:[...t.currentPath,`anyOf`,`0`]});return n&&{anyOf:[n,{type:`null`}]}}function parseNumberDef(e,t){let n={type:`number`};if(!e.checks)return n;for(let r of e.checks)switch(r.kind){case`int`:n.type=`integer`,addErrorMessage(n,`type`,r.message,t);break;case`min`:t.target===`jsonSchema7`?r.inclusive?setResponseValueAndErrors(n,`minimum`,r.value,r.message,t):setResponseValueAndErrors(n,`exclusiveMinimum`,r.value,r.message,t):(r.inclusive||(n.exclusiveMinimum=!0),setResponseValueAndErrors(n,`minimum`,r.value,r.message,t));break;case`max`:t.target===`jsonSchema7`?r.inclusive?setResponseValueAndErrors(n,`maximum`,r.value,r.message,t):setResponseValueAndErrors(n,`exclusiveMaximum`,r.value,r.message,t):(r.inclusive||(n.exclusiveMaximum=!0),setResponseValueAndErrors(n,`maximum`,r.value,r.message,t));break;case`multipleOf`:setResponseValueAndErrors(n,`multipleOf`,r.value,r.message,t);break}return n}function parseObjectDef(e,t){let n=t.target===`openAi`,r={type:`object`,properties:{}},i=[],a=e.shape();for(let e in a){let s=a[e];if(s===void 0||s._def===void 0)continue;let c=safeIsOptional(s);c&&n&&(s._def.typeName===`ZodOptional`&&(s=s._def.innerType),s.isNullable()||(s=s.nullable()),c=!1);let l=parseDef(s._def,{...t,currentPath:[...t.currentPath,`properties`,e],propertyPath:[...t.currentPath,`properties`,e]});l!==void 0&&(r.properties[e]=l,c||i.push(e))}i.length&&(r.required=i);let s=decideAdditionalProperties(e,t);return s!==void 0&&(r.additionalProperties=s),r}function decideAdditionalProperties(e,t){if(e.catchall._def.typeName!==`ZodNever`)return parseDef(e.catchall._def,{...t,currentPath:[...t.currentPath,`additionalProperties`]});switch(e.unknownKeys){case`passthrough`:return t.allowedAdditionalProperties;case`strict`:return t.rejectedAdditionalProperties;case`strip`:return t.removeAdditionalStrategy===`strict`?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}function safeIsOptional(e){try{return e.isOptional()}catch{return!0}}const parseOptionalDef=(e,t)=>{if(t.currentPath.toString()===t.propertyPath?.toString())return parseDef(e.innerType._def,t);let n=parseDef(e.innerType._def,{...t,currentPath:[...t.currentPath,`anyOf`,`1`]});return n?{anyOf:[{not:parseAnyDef(t)},n]}:parseAnyDef(t)},parsePipelineDef=(e,t)=>{if(t.pipeStrategy===`input`)return parseDef(e.in._def,t);if(t.pipeStrategy===`output`)return parseDef(e.out._def,t);let n=parseDef(e.in._def,{...t,currentPath:[...t.currentPath,`allOf`,`0`]});return{allOf:[n,parseDef(e.out._def,{...t,currentPath:[...t.currentPath,`allOf`,n?`1`:`0`]})].filter(e=>e!==void 0)}};function parsePromiseDef(e,t){return parseDef(e.type._def,t)}function parseSetDef(e,t){let n={type:`array`,uniqueItems:!0,items:parseDef(e.valueType._def,{...t,currentPath:[...t.currentPath,`items`]})};return e.minSize&&setResponseValueAndErrors(n,`minItems`,e.minSize.value,e.minSize.message,t),e.maxSize&&setResponseValueAndErrors(n,`maxItems`,e.maxSize.value,e.maxSize.message,t),n}function parseTupleDef(e,t){return e.rest?{type:`array`,minItems:e.items.length,items:e.items.map((e,n)=>parseDef(e._def,{...t,currentPath:[...t.currentPath,`items`,`${n}`]})).reduce((e,t)=>t===void 0?e:[...e,t],[]),additionalItems:parseDef(e.rest._def,{...t,currentPath:[...t.currentPath,`additionalItems`]})}:{type:`array`,minItems:e.items.length,maxItems:e.items.length,items:e.items.map((e,n)=>parseDef(e._def,{...t,currentPath:[...t.currentPath,`items`,`${n}`]})).reduce((e,t)=>t===void 0?e:[...e,t],[])}}function parseUndefinedDef(e){return{not:parseAnyDef(e)}}function parseUnknownDef(e){return parseAnyDef(e)}const parseReadonlyDef=(e,t)=>parseDef(e.innerType._def,t),selectParser=(e,t,n)=>{switch(t){case Y.ZodString:return parseStringDef(e,n);case Y.ZodNumber:return parseNumberDef(e,n);case Y.ZodObject:return parseObjectDef(e,n);case Y.ZodBigInt:return parseBigintDef(e,n);case Y.ZodBoolean:return parseBooleanDef();case Y.ZodDate:return parseDateDef(e,n);case Y.ZodUndefined:return parseUndefinedDef(n);case Y.ZodNull:return parseNullDef(n);case Y.ZodArray:return parseArrayDef(e,n);case Y.ZodUnion:case Y.ZodDiscriminatedUnion:return parseUnionDef(e,n);case Y.ZodIntersection:return parseIntersectionDef(e,n);case Y.ZodTuple:return parseTupleDef(e,n);case Y.ZodRecord:return parseRecordDef(e,n);case Y.ZodLiteral:return parseLiteralDef(e,n);case Y.ZodEnum:return parseEnumDef(e);case Y.ZodNativeEnum:return parseNativeEnumDef(e);case Y.ZodNullable:return parseNullableDef(e,n);case Y.ZodOptional:return parseOptionalDef(e,n);case Y.ZodMap:return parseMapDef(e,n);case Y.ZodSet:return parseSetDef(e,n);case Y.ZodLazy:return()=>e.getter()._def;case Y.ZodPromise:return parsePromiseDef(e,n);case Y.ZodNaN:case Y.ZodNever:return parseNeverDef(n);case Y.ZodEffects:return parseEffectsDef(e,n);case Y.ZodAny:return parseAnyDef(n);case Y.ZodUnknown:return parseUnknownDef(n);case Y.ZodDefault:return parseDefaultDef(e,n);case Y.ZodBranded:return parseBrandedDef(e,n);case Y.ZodReadonly:return parseReadonlyDef(e,n);case Y.ZodCatch:return parseCatchDef(e,n);case Y.ZodPipeline:return parsePipelineDef(e,n);case Y.ZodFunction:case Y.ZodVoid:case Y.ZodSymbol:return;default:return(e=>void 0)(t)}};function parseDef(e,t,n=!1){let r=t.seen.get(e);if(t.override){let i=t.override?.(e,t,r,n);if(i!==Ed)return i}if(r&&!n){let e=get$ref(r,t);if(e!==void 0)return e}let i={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,i);let a=selectParser(e,e.typeName,t),s=typeof a==`function`?parseDef(a(),t):a;if(s&&addMeta(e,t,s),t.postProcess){let n=t.postProcess(s,e,t);return i.jsonSchema=s,n}return i.jsonSchema=s,s}const get$ref=(e,t)=>{switch(t.$refStrategy){case`root`:return{$ref:e.path.join(`/`)};case`relative`:return{$ref:getRelativePath(t.currentPath,e.path)};case`none`:case`seen`:return e.path.length<t.currentPath.length&&e.path.every((e,n)=>t.currentPath[n]===e)?(console.warn(`Recursive reference detected at ${t.currentPath.join(`/`)}! Defaulting to any`),parseAnyDef(t)):t.$refStrategy===`seen`?parseAnyDef(t):void 0}},addMeta=(e,t,n)=>(e.description&&(n.description=e.description,t.markdownDescription&&(n.markdownDescription=e.description)),n),zodToJsonSchema=(e,t)=>{let n=getRefs(t),r=typeof t==`object`&&t.definitions?Object.entries(t.definitions).reduce((e,[t,r])=>({...e,[t]:parseDef(r._def,{...n,currentPath:[...n.basePath,n.definitionPath,t]},!0)??parseAnyDef(n)}),{}):void 0,i=typeof t==`string`?t:t?.nameStrategy===`title`?void 0:t?.name,a=parseDef(e._def,i===void 0?n:{...n,currentPath:[...n.basePath,n.definitionPath,i]},!1)??parseAnyDef(n),s=typeof t==`object`&&t.name!==void 0&&t.nameStrategy===`title`?t.name:void 0;s!==void 0&&(a.title=s),n.flags.hasReferencedOpenAiAnyType&&(r||={},r[n.openAiAnyTypeName]||(r[n.openAiAnyTypeName]={type:[`string`,`number`,`integer`,`boolean`,`array`,`null`],items:{$ref:n.$refStrategy===`relative`?`1`:[...n.basePath,n.definitionPath,n.openAiAnyTypeName].join(`/`)}}));let c=i===void 0?r?{...a,[n.definitionPath]:r}:a:{$ref:[...n.$refStrategy===`relative`?[]:n.basePath,n.definitionPath,i].join(`/`),[n.definitionPath]:{...r,[i]:a}};return n.target===`jsonSchema7`?c.$schema=`http://json-schema.org/draft-07/schema#`:(n.target===`jsonSchema2019-09`||n.target===`openAi`)&&(c.$schema=`https://json-schema.org/draft/2019-09/schema#`),n.target===`openAi`&&(`anyOf`in c||`oneOf`in c||`allOf`in c||`type`in c&&Array.isArray(c.type))&&console.warn(`Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.`),c};function mapMiniTarget(e){return!e||e===`jsonSchema7`||e===`draft-7`?`draft-7`:e===`jsonSchema2019-09`||e===`draft-2020-12`?`draft-2020-12`:`draft-7`}function toJsonSchemaCompat(e,t){return isZ4Schema(e)?ye(e,{target:mapMiniTarget(t?.target),io:t?.pipeStrategy??`input`}):zodToJsonSchema(e,{strictUnions:t?.strictUnions??!0,pipeStrategy:t?.pipeStrategy??`input`})}function getMethodLiteral(e){let t=getObjectShape(e)?.method;if(!t)throw Error(`Schema is missing a method literal`);let n=getLiteralValue(t);if(typeof n!=`string`)throw Error(`Schema method literal must be a string`);return n}function parseWithCompat(e,t){let n=safeParse(e,t);if(!n.success)throw n.error;return n.data}var Protocol=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(jc,e=>{this._oncancel(e)}),this.setNotificationHandler(qc,e=>{this._onprogress(e)}),this.setRequestHandler(Wc,e=>({})),this._taskStore=e?.taskStore,this._taskMessageQueue=e?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(nl,async(e,t)=>{let n=await this._taskStore.getTask(e.params.taskId,t.sessionId);if(!n)throw new H(V.InvalidParams,`Failed to retrieve task: Task not found`);return{...n}}),this.setRequestHandler(il,async(e,t)=>{let handleTaskResult=async()=>{let n=e.params.taskId;if(this._taskMessageQueue){let e;for(;e=await this._taskMessageQueue.dequeue(n,t.sessionId);){if(e.type===`response`||e.type===`error`){let t=e.message,n=t.id,r=this._requestResolvers.get(n);if(r)if(this._requestResolvers.delete(n),e.type===`response`)r(t);else{let e=t;r(new H(e.error.code,e.error.message,e.error.data))}else{let t=e.type===`response`?`Response`:`Error`;this._onerror(Error(`${t} handler missing for request ${n}`))}continue}await this._transport?.send(e.message,{relatedRequestId:t.requestId})}}let r=await this._taskStore.getTask(n,t.sessionId);if(!r)throw new H(V.InvalidParams,`Task not found: ${n}`);if(!isTerminal(r.status))return await this._waitForTaskUpdate(n,t.signal),await handleTaskResult();if(isTerminal(r.status)){let e=await this._taskStore.getTaskResult(n,t.sessionId);return this._clearTaskQueue(n),{...e,_meta:{...e._meta,[uc]:{taskId:n}}}}return await handleTaskResult()};return await handleTaskResult()}),this.setRequestHandler(al,async(e,t)=>{try{let{tasks:n,nextCursor:r}=await this._taskStore.listTasks(e.params?.cursor,t.sessionId);return{tasks:n,nextCursor:r,_meta:{}}}catch(e){throw new H(V.InvalidParams,`Failed to list tasks: ${e instanceof Error?e.message:String(e)}`)}}),this.setRequestHandler(sl,async(e,t)=>{try{let n=await this._taskStore.getTask(e.params.taskId,t.sessionId);if(!n)throw new H(V.InvalidParams,`Task not found: ${e.params.taskId}`);if(isTerminal(n.status))throw new H(V.InvalidParams,`Cannot cancel task in terminal status: ${n.status}`);await this._taskStore.updateTaskStatus(e.params.taskId,`cancelled`,`Client cancelled task execution.`,t.sessionId),this._clearTaskQueue(e.params.taskId);let r=await this._taskStore.getTask(e.params.taskId,t.sessionId);if(!r)throw new H(V.InvalidParams,`Task not found after cancellation: ${e.params.taskId}`);return{_meta:{},...r}}catch(e){throw e instanceof H?e:new H(V.InvalidRequest,`Failed to cancel task: ${e instanceof Error?e.message:String(e)}`)}}))}async _oncancel(e){e.params.requestId&&this._requestHandlerAbortControllers.get(e.params.requestId)?.abort(e.params.reason)}_setupTimeout(e,t,n,r,i=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(r,t),startTime:Date.now(),timeout:t,maxTotalTimeout:n,resetTimeoutOnProgress:i,onTimeout:r})}_resetTimeout(e){let t=this._timeoutInfo.get(e);if(!t)return!1;let n=Date.now()-t.startTime;if(t.maxTotalTimeout&&n>=t.maxTotalTimeout)throw this._timeoutInfo.delete(e),H.fromError(V.RequestTimeout,`Maximum total timeout exceeded`,{maxTotalTimeout:t.maxTotalTimeout,totalElapsed:n});return clearTimeout(t.timeoutId),t.timeoutId=setTimeout(t.onTimeout,t.timeout),!0}_cleanupTimeout(e){let t=this._timeoutInfo.get(e);t&&(clearTimeout(t.timeoutId),this._timeoutInfo.delete(e))}async connect(e){if(this._transport)throw Error(`Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.`);this._transport=e;let t=this.transport?.onclose;this._transport.onclose=()=>{t?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=e=>{n?.(e),this._onerror(e)};let r=this._transport?.onmessage;this._transport.onmessage=(e,t)=>{r?.(e,t),isJSONRPCResultResponse(e)||isJSONRPCErrorResponse(e)?this._onresponse(e):isJSONRPCRequest(e)?this._onrequest(e,t):isJSONRPCNotification(e)?this._onnotification(e):this._onerror(Error(`Unknown message type: ${JSON.stringify(e)}`))},await this._transport.start()}_onclose(){let e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let e of this._timeoutInfo.values())clearTimeout(e.timeoutId);this._timeoutInfo.clear();for(let e of this._requestHandlerAbortControllers.values())e.abort();this._requestHandlerAbortControllers.clear();let t=H.fromError(V.ConnectionClosed,`Connection closed`);this._transport=void 0,this.onclose?.();for(let n of e.values())n(t)}_onerror(e){this.onerror?.(e)}_onnotification(e){let t=this._notificationHandlers.get(e.method)??this.fallbackNotificationHandler;t!==void 0&&Promise.resolve().then(()=>t(e)).catch(e=>this._onerror(Error(`Uncaught error in notification handler: ${e}`)))}_onrequest(e,t){let n=this._requestHandlers.get(e.method)??this.fallbackRequestHandler,r=this._transport,i=e.params?._meta?.[uc]?.taskId;if(n===void 0){let t={jsonrpc:`2.0`,id:e.id,error:{code:V.MethodNotFound,message:`Method not found`}};i&&this._taskMessageQueue?this._enqueueTaskMessage(i,{type:`error`,message:t,timestamp:Date.now()},r?.sessionId).catch(e=>this._onerror(Error(`Failed to enqueue error response: ${e}`))):r?.send(t).catch(e=>this._onerror(Error(`Failed to send an error response: ${e}`)));return}let a=new AbortController;this._requestHandlerAbortControllers.set(e.id,a);let s=isTaskAugmentedRequestParams(e.params)?e.params.task:void 0,c=this._taskStore?this.requestTaskStore(e,r?.sessionId):void 0,l={signal:a.signal,sessionId:r?.sessionId,_meta:e.params?._meta,sendNotification:async t=>{if(a.signal.aborted)return;let n={relatedRequestId:e.id};i&&(n.relatedTask={taskId:i}),await this.notification(t,n)},sendRequest:async(t,n,r)=>{if(a.signal.aborted)throw new H(V.ConnectionClosed,`Request was cancelled`);let s={...r,relatedRequestId:e.id};i&&!s.relatedTask&&(s.relatedTask={taskId:i});let l=s.relatedTask?.taskId??i;return l&&c&&await c.updateTaskStatus(l,`input_required`),await this.request(t,n,s)},authInfo:t?.authInfo,requestId:e.id,requestInfo:t?.requestInfo,taskId:i,taskStore:c,taskRequestedTtl:s?.ttl,closeSSEStream:t?.closeSSEStream,closeStandaloneSSEStream:t?.closeStandaloneSSEStream};Promise.resolve().then(()=>{s&&this.assertTaskHandlerCapability(e.method)}).then(()=>n(e,l)).then(async t=>{if(a.signal.aborted)return;let n={result:t,jsonrpc:`2.0`,id:e.id};i&&this._taskMessageQueue?await this._enqueueTaskMessage(i,{type:`response`,message:n,timestamp:Date.now()},r?.sessionId):await r?.send(n)},async t=>{if(a.signal.aborted)return;let n={jsonrpc:`2.0`,id:e.id,error:{code:Number.isSafeInteger(t.code)?t.code:V.InternalError,message:t.message??`Internal error`,...t.data!==void 0&&{data:t.data}}};i&&this._taskMessageQueue?await this._enqueueTaskMessage(i,{type:`error`,message:n,timestamp:Date.now()},r?.sessionId):await r?.send(n)}).catch(e=>this._onerror(Error(`Failed to send response: ${e}`))).finally(()=>{this._requestHandlerAbortControllers.get(e.id)===a&&this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:t,...n}=e.params,r=Number(t),i=this._progressHandlers.get(r);if(!i){this._onerror(Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let a=this._responseHandlers.get(r),s=this._timeoutInfo.get(r);if(s&&a&&s.resetTimeoutOnProgress)try{this._resetTimeout(r)}catch(e){this._responseHandlers.delete(r),this._progressHandlers.delete(r),this._cleanupTimeout(r),a(e);return}i(n)}_onresponse(e){let t=Number(e.id),n=this._requestResolvers.get(t);if(n){this._requestResolvers.delete(t),isJSONRPCResultResponse(e)?n(e):n(new H(e.error.code,e.error.message,e.error.data));return}let r=this._responseHandlers.get(t);if(r===void 0){this._onerror(Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}this._responseHandlers.delete(t),this._cleanupTimeout(t);let i=!1;if(isJSONRPCResultResponse(e)&&e.result&&typeof e.result==`object`){let n=e.result;if(n.task&&typeof n.task==`object`){let e=n.task;typeof e.taskId==`string`&&(i=!0,this._taskProgressTokens.set(e.taskId,t))}}i||this._progressHandlers.delete(t),isJSONRPCResultResponse(e)?r(e):r(H.fromError(e.error.code,e.error.message,e.error.data))}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(e,t,n){let{task:r}=n??{};if(!r){try{yield{type:`result`,result:await this.request(e,t,n)}}catch(e){yield{type:`error`,error:e instanceof H?e:new H(V.InternalError,String(e))}}return}let i;try{let r=await this.request(e,$c,n);if(r.task)i=r.task.taskId,yield{type:`taskCreated`,task:r.task};else throw new H(V.InternalError,`Task creation did not return a task`);for(;;){let e=await this.getTask({taskId:i},n);if(yield{type:`taskStatus`,task:e},isTerminal(e.status)){e.status===`completed`?yield{type:`result`,result:await this.getTaskResult({taskId:i},t,n)}:e.status===`failed`?yield{type:`error`,error:new H(V.InternalError,`Task ${i} failed`)}:e.status===`cancelled`&&(yield{type:`error`,error:new H(V.InternalError,`Task ${i} was cancelled`)});return}if(e.status===`input_required`){yield{type:`result`,result:await this.getTaskResult({taskId:i},t,n)};return}let r=e.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(e=>setTimeout(e,r)),n?.signal?.throwIfAborted()}}catch(e){yield{type:`error`,error:e instanceof H?e:new H(V.InternalError,String(e))}}}request(e,t,n){let{relatedRequestId:r,resumptionToken:i,onresumptiontoken:a,task:s,relatedTask:c}=n??{};return new Promise((l,u)=>{let earlyReject=e=>{u(e)};if(!this._transport){earlyReject(Error(`Not connected`));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(e.method),s&&this.assertTaskCapability(e.method)}catch(e){earlyReject(e);return}n?.signal?.throwIfAborted();let f=this._requestMessageId++,p={...e,jsonrpc:`2.0`,id:f};n?.onprogress&&(this._progressHandlers.set(f,n.onprogress),p.params={...e.params,_meta:{...e.params?._meta||{},progressToken:f}}),s&&(p.params={...p.params,task:s}),c&&(p.params={...p.params,_meta:{...p.params?._meta||{},[uc]:c}});let cancel=e=>{this._responseHandlers.delete(f),this._progressHandlers.delete(f),this._cleanupTimeout(f),this._transport?.send({jsonrpc:`2.0`,method:`notifications/cancelled`,params:{requestId:f,reason:String(e)}},{relatedRequestId:r,resumptionToken:i,onresumptiontoken:a}).catch(e=>this._onerror(Error(`Failed to send cancellation: ${e}`))),u(e instanceof H?e:new H(V.RequestTimeout,String(e)))};this._responseHandlers.set(f,e=>{if(!n?.signal?.aborted){if(e instanceof Error)return u(e);try{let n=safeParse(t,e.result);n.success?l(n.data):u(n.error)}catch(e){u(e)}}}),n?.signal?.addEventListener(`abort`,()=>{cancel(n?.signal?.reason)});let m=n?.timeout??6e4,timeoutHandler=()=>cancel(H.fromError(V.RequestTimeout,`Request timed out`,{timeout:m}));this._setupTimeout(f,m,n?.maxTotalTimeout,timeoutHandler,n?.resetTimeoutOnProgress??!1);let h=c?.taskId;if(h){let responseResolver=e=>{let t=this._responseHandlers.get(f);t?t(e):this._onerror(Error(`Response handler missing for side-channeled request ${f}`))};this._requestResolvers.set(f,responseResolver),this._enqueueTaskMessage(h,{type:`request`,message:p,timestamp:Date.now()}).catch(e=>{this._cleanupTimeout(f),u(e)})}else this._transport.send(p,{relatedRequestId:r,resumptionToken:i,onresumptiontoken:a}).catch(e=>{this._cleanupTimeout(f),u(e)})})}async getTask(e,t){return this.request({method:`tasks/get`,params:e},rl,t)}async getTaskResult(e,t,n){return this.request({method:`tasks/result`,params:e},t,n)}async listTasks(e,t){return this.request({method:`tasks/list`,params:e},ol,t)}async cancelTask(e,t){return this.request({method:`tasks/cancel`,params:e},cl,t)}async notification(e,t){if(!this._transport)throw Error(`Not connected`);this.assertNotificationCapability(e.method);let n=t?.relatedTask?.taskId;if(n){let r={...e,jsonrpc:`2.0`,params:{...e.params,_meta:{...e.params?._meta||{},[uc]:t.relatedTask}}};await this._enqueueTaskMessage(n,{type:`notification`,message:r,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(e.method)&&!e.params&&!t?.relatedRequestId&&!t?.relatedTask){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let n={...e,jsonrpc:`2.0`};t?.relatedTask&&(n={...n,params:{...n.params,_meta:{...n.params?._meta||{},[uc]:t.relatedTask}}}),this._transport?.send(n,t).catch(e=>this._onerror(e))});return}let r={...e,jsonrpc:`2.0`};t?.relatedTask&&(r={...r,params:{...r.params,_meta:{...r.params?._meta||{},[uc]:t.relatedTask}}}),await this._transport.send(r,t)}setRequestHandler(e,t){let n=getMethodLiteral(e);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(n,r)=>{let i=parseWithCompat(e,n);return Promise.resolve(t(i,r))})}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,t){let n=getMethodLiteral(e);this._notificationHandlers.set(n,n=>{let r=parseWithCompat(e,n);return Promise.resolve(t(r))})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}_cleanupTaskProgressHandler(e){let t=this._taskProgressTokens.get(e);t!==void 0&&(this._progressHandlers.delete(t),this._taskProgressTokens.delete(e))}async _enqueueTaskMessage(e,t,n){if(!this._taskStore||!this._taskMessageQueue)throw Error(`Cannot enqueue task message: taskStore and taskMessageQueue are not configured`);let r=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(e,t,n,r)}async _clearTaskQueue(e,t){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(e,t);for(let t of n)if(t.type===`request`&&isJSONRPCRequest(t.message)){let n=t.message.id,r=this._requestResolvers.get(n);r?(r(new H(V.InternalError,`Task cancelled or completed`)),this._requestResolvers.delete(n)):this._onerror(Error(`Resolver missing for request ${n} during task ${e} cleanup`))}}}async _waitForTaskUpdate(e,t){let n=this._options?.defaultTaskPollInterval??1e3;try{let t=await this._taskStore?.getTask(e);t?.pollInterval&&(n=t.pollInterval)}catch{}return new Promise((e,r)=>{if(t.aborted){r(new H(V.InvalidRequest,`Request cancelled`));return}let i=setTimeout(e,n);t.addEventListener(`abort`,()=>{clearTimeout(i),r(new H(V.InvalidRequest,`Request cancelled`))},{once:!0})})}requestTaskStore(e,t){let n=this._taskStore;if(!n)throw Error(`No task store configured`);return{createTask:async r=>{if(!e)throw Error(`No request provided`);return await n.createTask(r,e.id,{method:e.method,params:e.params},t)},getTask:async e=>{let r=await n.getTask(e,t);if(!r)throw new H(V.InvalidParams,`Failed to retrieve task: Task not found`);return r},storeTaskResult:async(e,r,i)=>{await n.storeTaskResult(e,r,i,t);let a=await n.getTask(e,t);if(a){let t=tl.parse({method:`notifications/tasks/status`,params:a});await this.notification(t),isTerminal(a.status)&&this._cleanupTaskProgressHandler(e)}},getTaskResult:e=>n.getTaskResult(e,t),updateTaskStatus:async(e,r,i)=>{let a=await n.getTask(e,t);if(!a)throw new H(V.InvalidParams,`Task "${e}" not found - it may have been cleaned up`);if(isTerminal(a.status))throw new H(V.InvalidParams,`Cannot update task "${e}" from terminal status "${a.status}" to "${r}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(e,r,i,t);let s=await n.getTask(e,t);if(s){let t=tl.parse({method:`notifications/tasks/status`,params:s});await this.notification(t),isTerminal(s.status)&&this._cleanupTaskProgressHandler(e)}},listTasks:e=>n.listTasks(e,t)}}};function isPlainObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function mergeCapabilities(e,t){let n={...e};for(let e in t){let r=e,i=t[r];if(i===void 0)continue;let a=n[r];isPlainObject(a)&&isPlainObject(i)?n[r]={...a,...i}:n[r]=i}return n}var Md=e(Ko(),1);function createDefaultAjvInstance(){let e=new Md.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,Xo.default)(e),e}var AjvJsonSchemaValidator=class{constructor(e){this._ajv=e??createDefaultAjvInstance()}getValidator(e){let t=`$id`in e&&typeof e.$id==`string`?this._ajv.getSchema(e.$id)??this._ajv.compile(e):this._ajv.compile(e);return e=>t(e)?{valid:!0,data:e,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(t.errors)}}},ExperimentalServerTasks=class{constructor(e){this._server=e}requestStream(e,t,n){return this._server.requestStream(e,t,n)}createMessageStream(e,t){let n=this._server.getClientCapabilities();if((e.tools||e.toolChoice)&&!n?.sampling?.tools)throw Error(`Client does not support sampling tools capability.`);if(e.messages.length>0){let t=e.messages[e.messages.length-1],n=Array.isArray(t.content)?t.content:[t.content],r=n.some(e=>e.type===`tool_result`),i=e.messages.length>1?e.messages[e.messages.length-2]:void 0,a=i?Array.isArray(i.content)?i.content:[i.content]:[],s=a.some(e=>e.type===`tool_use`);if(r){if(n.some(e=>e.type!==`tool_result`))throw Error(`The last message must contain only tool_result content if any is present`);if(!s)throw Error(`tool_result blocks are not matching any tool_use from the previous message`)}if(s){let e=new Set(a.filter(e=>e.type===`tool_use`).map(e=>e.id)),t=new Set(n.filter(e=>e.type===`tool_result`).map(e=>e.toolUseId));if(e.size!==t.size||![...e].every(e=>t.has(e)))throw Error(`ids of tool_result blocks and tool_use blocks from previous message do not match`)}}return this.requestStream({method:`sampling/createMessage`,params:e},hu,t)}elicitInputStream(e,t){let n=this._server.getClientCapabilities(),r=e.mode??`form`;switch(r){case`url`:if(!n?.elicitation?.url)throw Error(`Client does not support url elicitation.`);break;case`form`:if(!n?.elicitation?.form)throw Error(`Client does not support form elicitation.`);break}let i=r===`form`&&e.mode===void 0?{...e,mode:`form`}:e;return this.requestStream({method:`elicitation/create`,params:i},Du,t)}async getTask(e,t){return this._server.getTask({taskId:e},t)}async getTaskResult(e,t,n){return this._server.getTaskResult({taskId:e},t,n)}async listTasks(e,t){return this._server.listTasks(e?{cursor:e}:void 0,t)}async cancelTask(e,t){return this._server.cancelTask({taskId:e},t)}};function assertToolsCallTaskCapability(e,t,n){if(!e)throw Error(`${n} does not support task creation (required for ${t})`);switch(t){case`tools/call`:if(!e.tools?.call)throw Error(`${n} does not support task creation for tools/call (required for ${t})`);break;default:break}}function assertClientRequestTaskCapability(e,t,n){if(!e)throw Error(`${n} does not support task creation (required for ${t})`);switch(t){case`sampling/createMessage`:if(!e.sampling?.createMessage)throw Error(`${n} does not support task creation for sampling/createMessage (required for ${t})`);break;case`elicitation/create`:if(!e.elicitation?.create)throw Error(`${n} does not support task creation for elicitation/create (required for ${t})`);break;default:break}}var Server=class extends Protocol{constructor(e,t){super(t),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(nu.options.map((e,t)=>[e,t])),this.isMessageIgnored=(e,t)=>{let n=this._loggingLevels.get(t);return n?this.LOG_LEVEL_SEVERITY.get(e)<this.LOG_LEVEL_SEVERITY.get(n):!1},this._capabilities=t?.capabilities??{},this._instructions=t?.instructions,this._jsonSchemaValidator=t?.jsonSchemaValidator??new AjvJsonSchemaValidator,this.setRequestHandler(Bc,e=>this._oninitialize(e)),this.setNotificationHandler(Uc,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(iu,async(e,t)=>{let n=t.sessionId||t.requestInfo?.headers[`mcp-session-id`]||void 0,{level:r}=e.params,i=nu.safeParse(r);return i.success&&this._loggingLevels.set(n,i.data),{}})}get experimental(){return this._experimental||={tasks:new ExperimentalServerTasks(this)},this._experimental}registerCapabilities(e){if(this.transport)throw Error(`Cannot register capabilities after connecting to transport`);this._capabilities=mergeCapabilities(this._capabilities,e)}setRequestHandler(e,t){let n=getObjectShape(e)?.method;if(!n)throw Error(`Schema is missing a method literal`);let r;if(isZ4Schema(n)){let e=n;r=e._zod?.def?.value??e.value}else{let e=n;r=e._def?.value??e.value}if(typeof r!=`string`)throw Error(`Schema method literal must be a string`);if(r===`tools/call`){let wrappedHandler=async(e,n)=>{let r=safeParse(eu,e);if(!r.success){let e=r.error instanceof Error?r.error.message:String(r.error);throw new H(V.InvalidParams,`Invalid tools/call request: ${e}`)}let{params:i}=r.data,a=await Promise.resolve(t(e,n));if(i.task){let e=safeParse($c,a);if(!e.success){let t=e.error instanceof Error?e.error.message:String(e.error);throw new H(V.InvalidParams,`Invalid task creation result: ${t}`)}return e.data}let s=safeParse(Ql,a);if(!s.success){let e=s.error instanceof Error?s.error.message:String(s.error);throw new H(V.InvalidParams,`Invalid tools/call result: ${e}`)}return s.data};return super.setRequestHandler(e,wrappedHandler)}return super.setRequestHandler(e,t)}assertCapabilityForMethod(e){switch(e){case`sampling/createMessage`:if(!this._clientCapabilities?.sampling)throw Error(`Client does not support sampling (required for ${e})`);break;case`elicitation/create`:if(!this._clientCapabilities?.elicitation)throw Error(`Client does not support elicitation (required for ${e})`);break;case`roots/list`:if(!this._clientCapabilities?.roots)throw Error(`Client does not support listing roots (required for ${e})`);break;case`ping`:break}}assertNotificationCapability(e){switch(e){case`notifications/message`:if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${e})`);break;case`notifications/resources/updated`:case`notifications/resources/list_changed`:if(!this._capabilities.resources)throw Error(`Server does not support notifying about resources (required for ${e})`);break;case`notifications/tools/list_changed`:if(!this._capabilities.tools)throw Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case`notifications/prompts/list_changed`:if(!this._capabilities.prompts)throw Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case`notifications/elicitation/complete`:if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for ${e})`);break;case`notifications/cancelled`:break;case`notifications/progress`:break}}assertRequestHandlerCapability(e){if(this._capabilities)switch(e){case`completion/complete`:if(!this._capabilities.completions)throw Error(`Server does not support completions (required for ${e})`);break;case`logging/setLevel`:if(!this._capabilities.logging)throw Error(`Server does not support logging (required for ${e})`);break;case`prompts/get`:case`prompts/list`:if(!this._capabilities.prompts)throw Error(`Server does not support prompts (required for ${e})`);break;case`resources/list`:case`resources/templates/list`:case`resources/read`:if(!this._capabilities.resources)throw Error(`Server does not support resources (required for ${e})`);break;case`tools/call`:case`tools/list`:if(!this._capabilities.tools)throw Error(`Server does not support tools (required for ${e})`);break;case`tasks/get`:case`tasks/list`:case`tasks/result`:case`tasks/cancel`:if(!this._capabilities.tasks)throw Error(`Server does not support tasks capability (required for ${e})`);break;case`ping`:case`initialize`:break}}assertTaskCapability(e){assertClientRequestTaskCapability(this._clientCapabilities?.tasks?.requests,e,`Client`)}assertTaskHandlerCapability(e){this._capabilities&&assertToolsCallTaskCapability(this._capabilities.tasks?.requests,e,`Server`)}async _oninitialize(e){let t=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:lc.includes(t)?t:cc,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:`ping`},kc)}async createMessage(e,t){if((e.tools||e.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw Error(`Client does not support sampling tools capability.`);if(e.messages.length>0){let t=e.messages[e.messages.length-1],n=Array.isArray(t.content)?t.content:[t.content],r=n.some(e=>e.type===`tool_result`),i=e.messages.length>1?e.messages[e.messages.length-2]:void 0,a=i?Array.isArray(i.content)?i.content:[i.content]:[],s=a.some(e=>e.type===`tool_use`);if(r){if(n.some(e=>e.type!==`tool_result`))throw Error(`The last message must contain only tool_result content if any is present`);if(!s)throw Error(`tool_result blocks are not matching any tool_use from the previous message`)}if(s){let e=new Set(a.filter(e=>e.type===`tool_use`).map(e=>e.id)),t=new Set(n.filter(e=>e.type===`tool_result`).map(e=>e.toolUseId));if(e.size!==t.size||![...e].every(e=>t.has(e)))throw Error(`ids of tool_result blocks and tool_use blocks from previous message do not match`)}}return e.tools?this.request({method:`sampling/createMessage`,params:e},gu,t):this.request({method:`sampling/createMessage`,params:e},hu,t)}async elicitInput(e,t){switch(e.mode??`form`){case`url`:{if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support url elicitation.`);let n=e;return this.request({method:`elicitation/create`,params:n},Du,t)}case`form`:{if(!this._clientCapabilities?.elicitation?.form)throw Error(`Client does not support form elicitation.`);let n=e.mode===`form`?e:{...e,mode:`form`},r=await this.request({method:`elicitation/create`,params:n},Du,t);if(r.action===`accept`&&r.content&&n.requestedSchema)try{let e=this._jsonSchemaValidator.getValidator(n.requestedSchema)(r.content);if(!e.valid)throw new H(V.InvalidParams,`Elicitation response content does not match requested schema: ${e.errorMessage}`)}catch(e){throw e instanceof H?e:new H(V.InternalError,`Error validating elicitation response: ${e instanceof Error?e.message:String(e)}`)}return r}}}createElicitationCompletionNotifier(e,t){if(!this._clientCapabilities?.elicitation?.url)throw Error(`Client does not support URL elicitation (required for notifications/elicitation/complete)`);return()=>this.notification({method:`notifications/elicitation/complete`,params:{elicitationId:e}},t)}async listRoots(e,t){return this.request({method:`roots/list`,params:e},Fu,t)}async sendLoggingMessage(e,t){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,t))return this.notification({method:`notifications/message`,params:e})}async sendResourceUpdated(e){return this.notification({method:`notifications/resources/updated`,params:e})}async sendResourceListChanged(){return this.notification({method:`notifications/resources/list_changed`})}async sendToolListChanged(){return this.notification({method:`notifications/tools/list_changed`})}async sendPromptListChanged(){return this.notification({method:`notifications/prompts/list_changed`})}};const Nd=Symbol.for(`mcp.completable`);function completable(e,t){return Object.defineProperty(e,Nd,{value:{complete:t},enumerable:!1,writable:!1,configurable:!1}),e}function isCompletable(e){return!!e&&typeof e==`object`&&Nd in e}function getCompleter(e){return e[Nd]?.complete}var Pd;(function(e){e.Completable=`McpCompletable`})(Pd||={});const Fd=1e6,Id=1e6,Ld=1e4;var Rd=class UriTemplate{static isTemplate(e){return/\{[^}\s]+\}/.test(e)}static validateLength(e,t,n){if(e.length>t)throw Error(`${n} exceeds maximum length of ${t} characters (got ${e.length})`)}get variableNames(){return this.parts.flatMap(e=>typeof e==`string`?[]:e.names)}constructor(e){UriTemplate.validateLength(e,Fd,`Template`),this.template=e,this.parts=this.parse(e)}toString(){return this.template}parse(e){let t=[],n=``,r=0,i=0;for(;r<e.length;)if(e[r]===`{`){n&&=(t.push(n),``);let a=e.indexOf(`}`,r);if(a===-1)throw Error(`Unclosed template expression`);if(i++,i>Ld)throw Error(`Template contains too many expressions (max ${Ld})`);let s=e.slice(r+1,a),c=this.getOperator(s),l=s.includes(`*`),u=this.getNames(s),f=u[0];for(let e of u)UriTemplate.validateLength(e,Id,`Variable name`);t.push({name:f,operator:c,names:u,exploded:l}),r=a+1}else n+=e[r],r++;return n&&t.push(n),t}getOperator(e){return[`+`,`#`,`.`,`/`,`?`,`&`].find(t=>e.startsWith(t))||``}getNames(e){let t=this.getOperator(e);return e.slice(t.length).split(`,`).map(e=>e.replace(`*`,``).trim()).filter(e=>e.length>0)}encodeValue(e,t){return UriTemplate.validateLength(e,Id,`Variable value`),t===`+`||t===`#`?encodeURI(e):encodeURIComponent(e)}expandPart(e,t){if(e.operator===`?`||e.operator===`&`){let n=e.names.map(n=>{let r=t[n];return r===void 0?``:`${n}=${Array.isArray(r)?r.map(t=>this.encodeValue(t,e.operator)).join(`,`):this.encodeValue(r.toString(),e.operator)}`}).filter(e=>e.length>0);return n.length===0?``:(e.operator===`?`?`?`:`&`)+n.join(`&`)}if(e.names.length>1){let n=e.names.map(e=>t[e]).filter(e=>e!==void 0);return n.length===0?``:n.map(e=>Array.isArray(e)?e[0]:e).join(`,`)}let n=t[e.name];if(n===void 0)return``;let r=(Array.isArray(n)?n:[n]).map(t=>this.encodeValue(t,e.operator));switch(e.operator){case``:return r.join(`,`);case`+`:return r.join(`,`);case`#`:return`#`+r.join(`,`);case`.`:return`.`+r.join(`.`);case`/`:return`/`+r.join(`/`);default:return r.join(`,`)}}expand(e){let t=``,n=!1;for(let r of this.parts){if(typeof r==`string`){t+=r;continue}let i=this.expandPart(r,e);i&&((r.operator===`?`||r.operator===`&`)&&n?t+=i.replace(`?`,`&`):t+=i,(r.operator===`?`||r.operator===`&`)&&(n=!0))}return t}escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}partToRegExp(e){let t=[];for(let t of e.names)UriTemplate.validateLength(t,Id,`Variable name`);if(e.operator===`?`||e.operator===`&`){for(let n=0;n<e.names.length;n++){let r=e.names[n],i=n===0?`\\`+e.operator:`&`;t.push({pattern:i+this.escapeRegExp(r)+`=([^&]+)`,name:r})}return t}let n,r=e.name;switch(e.operator){case``:n=e.exploded?`([^/,]+(?:,[^/,]+)*)`:`([^/,]+)`;break;case`+`:case`#`:n=`(.+)`;break;case`.`:n=`\\.([^/,]+)`;break;case`/`:n=`/`+(e.exploded?`([^/,]+(?:,[^/,]+)*)`:`([^/,]+)`);break;default:n=`([^/]+)`}return t.push({pattern:n,name:r}),t}match(e){UriTemplate.validateLength(e,Fd,`URI`);let t=`^`,n=[];for(let e of this.parts)if(typeof e==`string`)t+=this.escapeRegExp(e);else{let r=this.partToRegExp(e);for(let{pattern:i,name:a}of r)t+=i,n.push({name:a,exploded:e.exploded})}t+=`$`,UriTemplate.validateLength(t,1e6,`Generated regex pattern`);let r=new RegExp(t),i=e.match(r);if(!i)return null;let a={};for(let e=0;e<n.length;e++){let{name:t,exploded:r}=n[e],s=i[e+1],c=t.replace(`*`,``);r&&s.includes(`,`)?a[c]=s.split(`,`):a[c]=s}return a}};const zd=/^[A-Za-z0-9._-]{1,128}$/;function validateToolName(e){let t=[];if(e.length===0)return{isValid:!1,warnings:[`Tool name cannot be empty`]};if(e.length>128)return{isValid:!1,warnings:[`Tool name exceeds maximum length of 128 characters (current: ${e.length})`]};if(e.includes(` `)&&t.push(`Tool name contains spaces, which may cause parsing issues`),e.includes(`,`)&&t.push(`Tool name contains commas, which may cause parsing issues`),(e.startsWith(`-`)||e.endsWith(`-`))&&t.push(`Tool name starts or ends with a dash, which may cause parsing issues in some contexts`),(e.startsWith(`.`)||e.endsWith(`.`))&&t.push(`Tool name starts or ends with a dot, which may cause parsing issues in some contexts`),!zd.test(e)){let n=e.split(``).filter(e=>!/[A-Za-z0-9._-]/.test(e)).filter((e,t,n)=>n.indexOf(e)===t);return t.push(`Tool name contains invalid characters: ${n.map(e=>`"${e}"`).join(`, `)}`,`Allowed characters are: A-Z, a-z, 0-9, underscore (_), dash (-), and dot (.)`),{isValid:!1,warnings:t}}return{isValid:!0,warnings:t}}function issueToolNameWarning(e,t){if(t.length>0){console.warn(`Tool name validation warning for "${e}":`);for(let e of t)console.warn(` - ${e}`);console.warn(`Tool registration will proceed, but this may cause compatibility issues.`),console.warn(`Consider updating the tool name to conform to the MCP tool naming standard.`),console.warn(`See SEP: Specify Format for Tool Names (https://github.com/modelcontextprotocol/modelcontextprotocol/issues/986) for more details.`)}}function validateAndWarnToolName(e){let t=validateToolName(e);return issueToolNameWarning(e,t.warnings),t.isValid}var ExperimentalMcpServerTasks=class{constructor(e){this._mcpServer=e}registerToolTask(e,t,n){let r={taskSupport:`required`,...t.execution};if(r.taskSupport===`forbidden`)throw Error(`Cannot register task-based tool '${e}' with taskSupport 'forbidden'. Use registerTool() instead.`);return this._mcpServer._createRegisteredTool(e,t.title,t.description,t.inputSchema,t.outputSchema,t.annotations,r,t._meta,n)}},McpServer=class{constructor(e,t){this._registeredResources={},this._registeredResourceTemplates={},this._registeredTools={},this._registeredPrompts={},this._toolHandlersInitialized=!1,this._completionHandlerInitialized=!1,this._resourceHandlersInitialized=!1,this._promptHandlersInitialized=!1,this.server=new Server(e,t)}get experimental(){return this._experimental||={tasks:new ExperimentalMcpServerTasks(this)},this._experimental}async connect(e){return await this.server.connect(e)}async close(){await this.server.close()}setToolRequestHandlers(){this._toolHandlersInitialized||=(this.server.assertCanSetRequestHandler(getMethodValue(Xl)),this.server.assertCanSetRequestHandler(getMethodValue(eu)),this.server.registerCapabilities({tools:{listChanged:!0}}),this.server.setRequestHandler(Xl,()=>({tools:Object.entries(this._registeredTools).filter(([,e])=>e.enabled).map(([e,t])=>{let n={name:e,title:t.title,description:t.description,inputSchema:(()=>{let e=normalizeObjectSchema(t.inputSchema);return e?toJsonSchemaCompat(e,{strictUnions:!0,pipeStrategy:`input`}):Bd})(),annotations:t.annotations,execution:t.execution,_meta:t._meta};if(t.outputSchema){let e=normalizeObjectSchema(t.outputSchema);e&&(n.outputSchema=toJsonSchemaCompat(e,{strictUnions:!0,pipeStrategy:`output`}))}return n})})),this.server.setRequestHandler(eu,async(e,t)=>{try{let n=this._registeredTools[e.params.name];if(!n)throw new H(V.InvalidParams,`Tool ${e.params.name} not found`);if(!n.enabled)throw new H(V.InvalidParams,`Tool ${e.params.name} disabled`);let r=!!e.params.task,i=n.execution?.taskSupport,a=`createTask`in n.handler;if((i===`required`||i===`optional`)&&!a)throw new H(V.InternalError,`Tool ${e.params.name} has taskSupport '${i}' but was not registered with registerToolTask`);if(i===`required`&&!r)throw new H(V.MethodNotFound,`Tool ${e.params.name} requires task augmentation (taskSupport: 'required')`);if(i===`optional`&&!r&&a)return await this.handleAutomaticTaskPolling(n,e,t);let s=await this.validateToolInput(n,e.params.arguments,e.params.name),c=await this.executeToolHandler(n,s,t);return r||await this.validateToolOutput(n,c,e.params.name),c}catch(e){if(e instanceof H&&e.code===V.UrlElicitationRequired)throw e;return this.createToolError(e instanceof Error?e.message:String(e))}}),!0)}createToolError(e){return{content:[{type:`text`,text:e}],isError:!0}}async validateToolInput(e,t,n){if(!e.inputSchema)return;let r=await safeParseAsync(normalizeObjectSchema(e.inputSchema)??e.inputSchema,t);if(!r.success){let e=getParseErrorMessage(`error`in r?r.error:`Unknown error`);throw new H(V.InvalidParams,`Input validation error: Invalid arguments for tool ${n}: ${e}`)}return r.data}async validateToolOutput(e,t,n){if(!e.outputSchema||!(`content`in t)||t.isError)return;if(!t.structuredContent)throw new H(V.InvalidParams,`Output validation error: Tool ${n} has an output schema but no structured content was provided`);let r=await safeParseAsync(normalizeObjectSchema(e.outputSchema),t.structuredContent);if(!r.success){let e=getParseErrorMessage(`error`in r?r.error:`Unknown error`);throw new H(V.InvalidParams,`Output validation error: Invalid structured content for tool ${n}: ${e}`)}}async executeToolHandler(e,t,n){let r=e.handler;if(`createTask`in r){if(!n.taskStore)throw Error(`No task store provided.`);let i={...n,taskStore:n.taskStore};if(e.inputSchema){let e=r;return await Promise.resolve(e.createTask(t,i))}else{let e=r;return await Promise.resolve(e.createTask(i))}}if(e.inputSchema){let e=r;return await Promise.resolve(e(t,n))}else{let e=r;return await Promise.resolve(e(n))}}async handleAutomaticTaskPolling(e,t,n){if(!n.taskStore)throw Error(`No task store provided for task-capable tool.`);let r=await this.validateToolInput(e,t.params.arguments,t.params.name),i=e.handler,a={...n,taskStore:n.taskStore},s=r?await Promise.resolve(i.createTask(r,a)):await Promise.resolve(i.createTask(a)),c=s.task.taskId,l=s.task,u=l.pollInterval??5e3;for(;l.status!==`completed`&&l.status!==`failed`&&l.status!==`cancelled`;){await new Promise(e=>setTimeout(e,u));let e=await n.taskStore.getTask(c);if(!e)throw new H(V.InternalError,`Task ${c} not found during polling`);l=e}return await n.taskStore.getTaskResult(c)}setCompletionRequestHandler(){this._completionHandlerInitialized||=(this.server.assertCanSetRequestHandler(getMethodValue(ju)),this.server.registerCapabilities({completions:{}}),this.server.setRequestHandler(ju,async e=>{switch(e.params.ref.type){case`ref/prompt`:return assertCompleteRequestPrompt(e),this.handlePromptCompletion(e,e.params.ref);case`ref/resource`:return assertCompleteRequestResourceTemplate(e),this.handleResourceCompletion(e,e.params.ref);default:throw new H(V.InvalidParams,`Invalid completion reference: ${e.params.ref}`)}}),!0)}async handlePromptCompletion(e,t){let n=this._registeredPrompts[t.name];if(!n)throw new H(V.InvalidParams,`Prompt ${t.name} not found`);if(!n.enabled)throw new H(V.InvalidParams,`Prompt ${t.name} disabled`);if(!n.argsSchema)return Vd;let r=getObjectShape(n.argsSchema)?.[e.params.argument.name];if(!isCompletable(r))return Vd;let i=getCompleter(r);return i?createCompletionResult(await i(e.params.argument.value,e.params.context)):Vd}async handleResourceCompletion(e,t){let n=Object.values(this._registeredResourceTemplates).find(e=>e.resourceTemplate.uriTemplate.toString()===t.uri);if(!n){if(this._registeredResources[t.uri])return Vd;throw new H(V.InvalidParams,`Resource template ${e.params.ref.uri} not found`)}let r=n.resourceTemplate.completeCallback(e.params.argument.name);return r?createCompletionResult(await r(e.params.argument.value,e.params.context)):Vd}setResourceRequestHandlers(){this._resourceHandlersInitialized||=(this.server.assertCanSetRequestHandler(getMethodValue(_l)),this.server.assertCanSetRequestHandler(getMethodValue(yl)),this.server.assertCanSetRequestHandler(getMethodValue(Cl)),this.server.registerCapabilities({resources:{listChanged:!0}}),this.server.setRequestHandler(_l,async(e,t)=>{let n=Object.entries(this._registeredResources).filter(([e,t])=>t.enabled).map(([e,t])=>({uri:e,name:t.name,...t.metadata})),r=[];for(let e of Object.values(this._registeredResourceTemplates)){if(!e.resourceTemplate.listCallback)continue;let n=await e.resourceTemplate.listCallback(t);for(let t of n.resources)r.push({...e.metadata,...t})}return{resources:[...n,...r]}}),this.server.setRequestHandler(yl,async()=>({resourceTemplates:Object.entries(this._registeredResourceTemplates).map(([e,t])=>({name:e,uriTemplate:t.resourceTemplate.uriTemplate.toString(),...t.metadata}))})),this.server.setRequestHandler(Cl,async(e,t)=>{let n=new URL(e.params.uri),r=this._registeredResources[n.toString()];if(r){if(!r.enabled)throw new H(V.InvalidParams,`Resource ${n} disabled`);return r.readCallback(n,t)}for(let e of Object.values(this._registeredResourceTemplates)){let r=e.resourceTemplate.uriTemplate.match(n.toString());if(r)return e.readCallback(n,r,t)}throw new H(V.InvalidParams,`Resource ${n} not found`)}),!0)}setPromptRequestHandlers(){this._promptHandlersInitialized||=(this.server.assertCanSetRequestHandler(getMethodValue(Pl)),this.server.assertCanSetRequestHandler(getMethodValue(Ll)),this.server.registerCapabilities({prompts:{listChanged:!0}}),this.server.setRequestHandler(Pl,()=>({prompts:Object.entries(this._registeredPrompts).filter(([,e])=>e.enabled).map(([e,t])=>({name:e,title:t.title,description:t.description,arguments:t.argsSchema?promptArgumentsFromSchema(t.argsSchema):void 0}))})),this.server.setRequestHandler(Ll,async(e,t)=>{let n=this._registeredPrompts[e.params.name];if(!n)throw new H(V.InvalidParams,`Prompt ${e.params.name} not found`);if(!n.enabled)throw new H(V.InvalidParams,`Prompt ${e.params.name} disabled`);if(n.argsSchema){let r=await safeParseAsync(normalizeObjectSchema(n.argsSchema),e.params.arguments);if(!r.success){let t=getParseErrorMessage(`error`in r?r.error:`Unknown error`);throw new H(V.InvalidParams,`Invalid arguments for prompt ${e.params.name}: ${t}`)}let i=r.data,a=n.callback;return await Promise.resolve(a(i,t))}else{let e=n.callback;return await Promise.resolve(e(t))}}),!0)}resource(e,t,...n){let r;typeof n[0]==`object`&&(r=n.shift());let i=n[0];if(typeof t==`string`){if(this._registeredResources[t])throw Error(`Resource ${t} is already registered`);let n=this._createRegisteredResource(e,void 0,t,r,i);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),n}else{if(this._registeredResourceTemplates[e])throw Error(`Resource template ${e} is already registered`);let n=this._createRegisteredResourceTemplate(e,void 0,t,r,i);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),n}}registerResource(e,t,n,r){if(typeof t==`string`){if(this._registeredResources[t])throw Error(`Resource ${t} is already registered`);let i=this._createRegisteredResource(e,n.title,t,n,r);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}else{if(this._registeredResourceTemplates[e])throw Error(`Resource template ${e} is already registered`);let i=this._createRegisteredResourceTemplate(e,n.title,t,n,r);return this.setResourceRequestHandlers(),this.sendResourceListChanged(),i}}_createRegisteredResource(e,t,n,r,i){let a={name:e,title:t,metadata:r,readCallback:i,enabled:!0,disable:()=>a.update({enabled:!1}),enable:()=>a.update({enabled:!0}),remove:()=>a.update({uri:null}),update:e=>{e.uri!==void 0&&e.uri!==n&&(delete this._registeredResources[n],e.uri&&(this._registeredResources[e.uri]=a)),e.name!==void 0&&(a.name=e.name),e.title!==void 0&&(a.title=e.title),e.metadata!==void 0&&(a.metadata=e.metadata),e.callback!==void 0&&(a.readCallback=e.callback),e.enabled!==void 0&&(a.enabled=e.enabled),this.sendResourceListChanged()}};return this._registeredResources[n]=a,a}_createRegisteredResourceTemplate(e,t,n,r,i){let a={resourceTemplate:n,title:t,metadata:r,readCallback:i,enabled:!0,disable:()=>a.update({enabled:!1}),enable:()=>a.update({enabled:!0}),remove:()=>a.update({name:null}),update:t=>{t.name!==void 0&&t.name!==e&&(delete this._registeredResourceTemplates[e],t.name&&(this._registeredResourceTemplates[t.name]=a)),t.title!==void 0&&(a.title=t.title),t.template!==void 0&&(a.resourceTemplate=t.template),t.metadata!==void 0&&(a.metadata=t.metadata),t.callback!==void 0&&(a.readCallback=t.callback),t.enabled!==void 0&&(a.enabled=t.enabled),this.sendResourceListChanged()}};this._registeredResourceTemplates[e]=a;let s=n.uriTemplate.variableNames;return Array.isArray(s)&&s.some(e=>!!n.completeCallback(e))&&this.setCompletionRequestHandler(),a}_createRegisteredPrompt(e,t,n,r,i){let a={title:t,description:n,argsSchema:r===void 0?void 0:objectFromShape(r),callback:i,enabled:!0,disable:()=>a.update({enabled:!1}),enable:()=>a.update({enabled:!0}),remove:()=>a.update({name:null}),update:t=>{t.name!==void 0&&t.name!==e&&(delete this._registeredPrompts[e],t.name&&(this._registeredPrompts[t.name]=a)),t.title!==void 0&&(a.title=t.title),t.description!==void 0&&(a.description=t.description),t.argsSchema!==void 0&&(a.argsSchema=objectFromShape(t.argsSchema)),t.callback!==void 0&&(a.callback=t.callback),t.enabled!==void 0&&(a.enabled=t.enabled),this.sendPromptListChanged()}};return this._registeredPrompts[e]=a,r&&Object.values(r).some(e=>isCompletable(e instanceof Ee?e._def?.innerType:e))&&this.setCompletionRequestHandler(),a}_createRegisteredTool(e,t,n,r,i,a,s,c,l){validateAndWarnToolName(e);let u={title:t,description:n,inputSchema:getZodSchemaObject(r),outputSchema:getZodSchemaObject(i),annotations:a,execution:s,_meta:c,handler:l,enabled:!0,disable:()=>u.update({enabled:!1}),enable:()=>u.update({enabled:!0}),remove:()=>u.update({name:null}),update:t=>{t.name!==void 0&&t.name!==e&&(typeof t.name==`string`&&validateAndWarnToolName(t.name),delete this._registeredTools[e],t.name&&(this._registeredTools[t.name]=u)),t.title!==void 0&&(u.title=t.title),t.description!==void 0&&(u.description=t.description),t.paramsSchema!==void 0&&(u.inputSchema=objectFromShape(t.paramsSchema)),t.outputSchema!==void 0&&(u.outputSchema=objectFromShape(t.outputSchema)),t.callback!==void 0&&(u.handler=t.callback),t.annotations!==void 0&&(u.annotations=t.annotations),t._meta!==void 0&&(u._meta=t._meta),t.enabled!==void 0&&(u.enabled=t.enabled),this.sendToolListChanged()}};return this._registeredTools[e]=u,this.setToolRequestHandlers(),this.sendToolListChanged(),u}tool(e,...t){if(this._registeredTools[e])throw Error(`Tool ${e} is already registered`);let n,r,i;if(typeof t[0]==`string`&&(n=t.shift()),t.length>1){let n=t[0];if(isZodRawShapeCompat(n))r=t.shift(),t.length>1&&typeof t[0]==`object`&&t[0]!==null&&!isZodRawShapeCompat(t[0])&&(i=t.shift());else if(typeof n==`object`&&n){if(Object.values(n).some(e=>typeof e==`object`&&!!e))throw Error(`Tool ${e} expected a Zod schema or ToolAnnotations, but received an unrecognized object`);i=t.shift()}}let a=t[0];return this._createRegisteredTool(e,void 0,n,r,void 0,i,{taskSupport:`forbidden`},void 0,a)}registerTool(e,t,n){if(this._registeredTools[e])throw Error(`Tool ${e} is already registered`);let{title:r,description:i,inputSchema:a,outputSchema:s,annotations:c,_meta:l}=t;return this._createRegisteredTool(e,r,i,a,s,c,{taskSupport:`forbidden`},l,n)}prompt(e,...t){if(this._registeredPrompts[e])throw Error(`Prompt ${e} is already registered`);let n;typeof t[0]==`string`&&(n=t.shift());let r;t.length>1&&(r=t.shift());let i=t[0],a=this._createRegisteredPrompt(e,void 0,n,r,i);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),a}registerPrompt(e,t,n){if(this._registeredPrompts[e])throw Error(`Prompt ${e} is already registered`);let{title:r,description:i,argsSchema:a}=t,s=this._createRegisteredPrompt(e,r,i,a,n);return this.setPromptRequestHandlers(),this.sendPromptListChanged(),s}isConnected(){return this.server.transport!==void 0}async sendLoggingMessage(e,t){return this.server.sendLoggingMessage(e,t)}sendResourceListChanged(){this.isConnected()&&this.server.sendResourceListChanged()}sendToolListChanged(){this.isConnected()&&this.server.sendToolListChanged()}sendPromptListChanged(){this.isConnected()&&this.server.sendPromptListChanged()}},ResourceTemplate=class{constructor(e,t){this._callbacks=t,this._uriTemplate=typeof e==`string`?new Rd(e):e}get uriTemplate(){return this._uriTemplate}get listCallback(){return this._callbacks.list}completeCallback(e){return this._callbacks.complete?.[e]}};const Bd={type:`object`,properties:{}};function isZodTypeLike(e){return typeof e==`object`&&!!e&&`parse`in e&&typeof e.parse==`function`&&`safeParse`in e&&typeof e.safeParse==`function`}function isZodSchemaInstance(e){return`_def`in e||`_zod`in e||isZodTypeLike(e)}function isZodRawShapeCompat(e){return typeof e!=`object`||!e||isZodSchemaInstance(e)?!1:Object.keys(e).length===0?!0:Object.values(e).some(isZodTypeLike)}function getZodSchemaObject(e){if(e){if(isZodRawShapeCompat(e))return objectFromShape(e);if(!isZodSchemaInstance(e))throw Error(`inputSchema must be a Zod schema or raw shape, received an unrecognized object`);return e}}function promptArgumentsFromSchema(e){let t=getObjectShape(e);return t?Object.entries(t).map(([e,t])=>({name:e,description:getSchemaDescription(t),required:!isSchemaOptional(t)})):[]}function getMethodValue(e){let t=getObjectShape(e)?.method;if(!t)throw Error(`Schema is missing a method literal`);let n=getLiteralValue(t);if(typeof n==`string`)return n;throw Error(`Schema method literal must be a string`)}function createCompletionResult(e){return{completion:{values:e.slice(0,100),total:e.length,hasMore:e.length>100}}}const Vd={completion:{values:[],hasMore:!1}};var Hd=`1.58.0`;function applySemanticLayoutPrompt(e){let t=useLanguageServices();return e.registerPrompt(`apply_semantic_layout`,{title:`Prepare prompt for applying semantic layout to a likec4 view`,argsSchema:{projectId:completable(X().describe(`Project id (optional, will use "default" if not specified)`),(e=``)=>t.projects().filter(t=>t.id.startsWith(e)).map(Qe(`id`))),viewId:completable(X().describe(`View ID`),async(n=``,r)=>{let i=r?.arguments?.projectId??t.projectsManager.default.id,a=await t.computedModel(i);return a?Array.from(a.views()).filter(e=>e.id.startsWith(n)).map(Qe(`id`)):(await e.sendLoggingMessage({level:`warning`,data:`Completing viewId for project ${i} with input value "${n}", model not found`}),[])})}},async({viewId:e,projectId:t},n)=>({messages:[{role:`user`,content:{type:`text`,text:["Call `apply-semantic-layout` tool from `likec4` MCP with these arguments:","projectId: `"+t+"`","viewId: `"+e+"`"].join(`
|
|
336
|
+
`)}}]})),e}function projectResource(e){let t=useLanguageServices();return e.registerResource(`likec4-project`,new ResourceTemplate(`likec4://project/{projectId}`,{list:async()=>({resources:t.projects().map(e=>({uri:`likec4://project/${encodeURIComponent(e.id)}`,name:e.title}))}),complete:{projectId:e=>{if(!e)return t.projects().map(Qe(`id`));let n=e.toLowerCase();return t.projects().filter(e=>e.id.toLowerCase().includes(n)).map(Qe(`id`))}}}),{description:`LikeC4 project resource`,mimeType:`application/json`},async(e,{projectId:n})=>{if(!n)return{contents:[]};let r=typeof n==`string`?[n]:n;return{contents:t.projects().filter(e=>r.includes(e.id)).map(e=>({uri:`likec4://project/${encodeURIComponent(e.id)}`,text:JSON.stringify({id:e.id,title:e.title,folder:e.folder.fsPath})}))}}),e}const Ud=$({name:X().describe(`Project identifier`),title:X().optional().describe(`Human-readable project title`),contactPerson:X().optional().describe(`Maintainer contact information`),metadata:xd(X(),vd()).optional().describe(`Custom project metadata as key-value pairs`),extends:yd([X(),Q(X())]).optional().describe(`Style inheritance paths`),exclude:Q(X()).optional().describe(`File exclusion patterns`),include:$({paths:Q(X()).describe(`Include paths`),maxDepth:Z().describe(`Maximum directory depth`),fileThreshold:Z().describe(`File threshold`)}).optional().describe(`Include configuration`),manualLayouts:$({outDir:X().describe(`Output directory for manual layouts`)}).optional().describe(`Manual layouts configuration`),styles:$({hasTheme:_d().describe(`Whether theme customization is defined`),hasDefaults:_d().describe(`Whether default style values are defined`),hasCustomCss:_d().describe(`Whether custom CSS is defined`)}).optional().describe(`Simplified styles configuration (boolean flags)`)});function serializeConfig(e){let t={name:e.name};return e.title!=null&&(t.title=e.title),e.contactPerson!=null&&(t.contactPerson=e.contactPerson),e.metadata&&(t.metadata=e.metadata),e.extends&&(t.extends=e.extends),e.exclude&&(t.exclude=e.exclude),e.include&&(t.include={paths:e.include.paths||[],maxDepth:e.include.maxDepth??3,fileThreshold:e.include.fileThreshold??30}),e.manualLayouts&&(t.manualLayouts={outDir:e.manualLayouts.outDir??`.likec4`}),e.styles&&(t.styles={hasTheme:!!e.styles.theme,hasDefaults:!!e.styles.defaults,hasCustomCss:!!e.styles.customCss}),t}const Wd=$({id:X().describe(`Element id (FQN)`),name:X().describe(`Element name`),kind:X().describe(`Element kind`),title:X(),tags:Q(X()),metadata:xd(yd([X(),Q(X())])),includedInViews:Q($({id:X().describe(`View id`),title:X().describe(`View title`),type:Cd([`element`,`deployment`,`dynamic`]).describe(`View type`)})).describe(`Views that include this element`)});function serializeElement(e){return{id:e.id,name:e.name,kind:e.kind,title:e.title,tags:[...e.tags],metadata:e.getMetadata(),includedInViews:includedInViews(e.views())}}function traverseGraph(e,t,n,r,i,a){kt(e.findElement(t),`Element "${t}" not found`);let s=new Set,c={},l=0,u=!1,f=[{elementId:t,depth:0}];for(;f.length>0;){let{elementId:t,depth:p}=f.shift();if(p>i||s.has(t))continue;if(s.size>=a){u=!0;break}let m=e.findElement(t);if(!m)continue;s.add(t),l=Math.max(l,p);let h=(n===`incoming`?[...m.incoming(r)]:[...m.outgoing(r)]).map(e=>{let t={elementId:n===`incoming`?e.source.id:e.target.id};return e.title&&(t.relationshipLabel=e.title),e.technology&&(t.technology=e.technology),t});c[t]={...serializeElement(m),neighbors:h,depth:p};for(let e of h)s.has(e.elementId)||f.push({elementId:e.elementId,depth:p+1})}for(let e of Object.values(c))e.neighbors=e.neighbors.filter(e=>e.elementId in c);return{target:t,totalNodes:s.size,maxDepth:l,truncated:u,nodes:c}}const Gd=$({path:X().describe(`Path to the file`),range:$({start:$({line:Z(),character:Z()}),end:$({line:Z(),character:Z()})}).describe(`Range in the file`)}).nullable(),Kd=X().refine(e=>!0).default(`default`).describe(`Project id (optional, will use "default" if not specified)`),qd=Q($({id:X().describe(`View id`),title:X().describe(`View title`),type:Cd([`element`,`deployment`,`dynamic`]).describe(`View type`)})),includedInViews=e=>[...e].map(e=>({id:e.id,title:e.titleOrId,type:e.$view._type})),mkLocate=(e,t)=>n=>{try{let r=e.locate({projectId:t,...n});return r?{path:x.parse(r.uri).fsPath,range:r.range}:null}catch(e){return U.debug(`Failed to locate {params}`,{error:e,params:n}),null}};function toolError(e){return{isError:!0,content:[{type:`text`,text:e}]}}function applySemanticLayoutTool(e){let t=useLanguageServices();return e.registerTool(`apply-semantic-layout`,{description:`Apply semantic layout to the likec4 view`,inputSchema:{projectId:completable(X().default(`default`).describe(`Project id (optional, will use "default" if not specified)`),(e=``)=>t.projects().filter(t=>t.id.startsWith(e)).map(Qe(`id`))),viewId:completable(X().describe(`View ID to apply semantic layout to`),async(e,n)=>{let r=n?.arguments?.projectId??t.projectsManager.default.id,i=await t.computedModel(r);if(!i)return[];let a=e??``;return Array.from(i.views()).filter(e=>e.id.startsWith(a)).map(Qe(`id`))})},outputSchema:{reasoning:X().describe(`Reasoning behind the layout changes`),snapshotUri:X().nullish().describe(`Where snapshot was saved (after applying layout)`)}},async(n,r)=>{let i=t.projectsManager.ensureProjectId(n.projectId);i!==n.projectId&&await e.sendLoggingMessage({level:`notice`,data:`Using project "${i}" instead of "${n.projectId}"`},r.sessionId);let a=await t.computedModel(i),s=a.findView(n.viewId);if(!s)return toolError(`View "${n.viewId}" not found in project "${i}"`);let c=await st(s.$view,{name:`MCP`,async sendRequest({systemPrompt:e,userPrompt:t,diagram:n}){let i=await r.sendRequest({method:`sampling/createMessage`,params:{maxTokens:2e4,includeContext:`none`,systemPrompt:e,messages:[{role:`user`,content:{type:`text`,text:t+`
|
|
337
|
+
|
|
338
|
+
`+n}}]}},$({content:$({type:Sd(`text`),text:X()})}));return i.content.type===`text`?i.content.text:JSON.stringify(i.content)}},r.signal);if(!c)return await e.sendLoggingMessage({level:`error`,data:`Failed to generate layout hints`},r.sessionId),toolError(`Failed to generate layout hints`);await e.sendLoggingMessage({level:`info`,data:`Applying semantic layout...`},r.sessionId);let l=await t.views.layouter.aiLayout({view:s.$view,styles:a.$styles},c),u=await t.editor.applyChange({change:{op:`save-view-snapshot`,layout:l.diagram},viewId:s.id,projectId:i});return await e.sendLoggingMessage({level:`info`,data:`Layout applied successfully`},r.sessionId),{content:[],structuredContent:{reasoning:c.reasoning,...!!u.location&&{snapshotUri:u.location.uri.toString()}}}}),e}const Jd=Wd.extend({description:X().nullable().describe(`Element description`),technology:X().nullable().describe(`Element technology`),shape:X().describe(`Rendered shape`),color:X().describe(`Rendered color`),children:Q(X()).describe(`Direct child element ids`),incomingCount:Z().describe(`Number of incoming relationships`),outgoingCount:Z().describe(`Number of outgoing relationships`)}),Yd=likec4Tool({name:`batch-read-elements`,description:`
|
|
304
339
|
Read details of multiple elements in a single call, reducing round-trips.
|
|
305
340
|
Returns a compact summary for each element including metadata, description, technology, shape, children, and relationship counts.
|
|
306
341
|
|
|
@@ -362,7 +397,7 @@ Example response:
|
|
|
362
397
|
],
|
|
363
398
|
"notFound": []
|
|
364
399
|
}
|
|
365
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Batch read elements`},inputSchema:{ids:
|
|
400
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Batch read elements`},inputSchema:{ids:Q(X()).min(1).max(50).describe(`Array of element ids (FQNs) to read (max 50)`),project:Kd},outputSchema:{elements:Q(Jd),notFound:Q(X()).describe(`Element ids that were not found`)}})(async(e,t)=>{kt(t.ids.length<=50,`Maximum 50 element ids per call`);let n=e.projectsManager.ensureProjectId(t.project),r=await e.computedModel(n),i=[],a=[];for(let e of t.ids){let t=r.findElement(e);if(!t){a.push(e);continue}i.push({...serializeElement(t),description:t.description.text,technology:t.technology,shape:t.shape,color:t.color,children:[...t.children()].map(e=>e.id),incomingCount:t.allIncoming.size,outgoingCount:t.allOutgoing.size})}return{elements:i,notFound:a}}),Xd=$({id:X(),kind:X(),title:X(),description:X().nullable(),technology:X().nullable(),shape:X(),color:X()}),Zd=$({element1:Xd,element2:Xd,propertyDiffs:Q($({property:X().describe(`Property name`),element1Value:X().nullable().describe(`Value in element1`),element2Value:X().nullable().describe(`Value in element2`)})).describe(`Properties that differ between the two elements`),tags:$({onlyInElement1:Q(X()).describe(`Tags present only in element1`),onlyInElement2:Q(X()).describe(`Tags present only in element2`),common:Q(X()).describe(`Tags present in both elements`)}),metadata:$({onlyInElement1:xd(yd([X(),Q(X())])).describe(`Metadata keys only in element1`),onlyInElement2:xd(yd([X(),Q(X())])).describe(`Metadata keys only in element2`),different:Q($({key:X(),element1Value:yd([X(),Q(X())]),element2Value:yd([X(),Q(X())])})).describe(`Metadata keys present in both but with different values`),common:xd(yd([X(),Q(X())])).describe(`Metadata keys with identical values in both`)}),relationships:$({incomingOnlyElement1:Z().describe(`Count of unique source elements sending to element1 only`),incomingOnlyElement2:Z().describe(`Count of unique source elements sending to element2 only`),incomingShared:Z().describe(`Count of unique source elements sending to both`),outgoingOnlyElement1:Z().describe(`Count of unique target elements receiving from element1 only`),outgoingOnlyElement2:Z().describe(`Count of unique target elements receiving from element2 only`),outgoingShared:Z().describe(`Count of unique target elements receiving from both`)})}),Qd=likec4Tool({name:`element-diff`,description:`
|
|
366
401
|
Compare two elements side-by-side, showing differences in properties, tags, metadata, and relationships.
|
|
367
402
|
|
|
368
403
|
Request:
|
|
@@ -422,7 +457,7 @@ Example response:
|
|
|
422
457
|
"outgoingShared": 2
|
|
423
458
|
}
|
|
424
459
|
}
|
|
425
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Compare two elements`},inputSchema:{element1Id:
|
|
460
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Compare two elements`},inputSchema:{element1Id:X().describe(`First element id (FQN)`),element2Id:X().describe(`Second element id (FQN)`),project:Kd},outputSchema:Zd.shape})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project),r=await e.computedModel(n),i=r.findElement(t.element1Id);kt(i,`Element "${t.element1Id}" not found in project "${n}"`);let a=r.findElement(t.element2Id);kt(a,`Element "${t.element2Id}" not found in project "${n}"`);let s=[],c=[{name:`kind`,get:e=>e.kind},{name:`title`,get:e=>e.title},{name:`description`,get:e=>e.description.text},{name:`technology`,get:e=>e.technology},{name:`shape`,get:e=>e.shape},{name:`color`,get:e=>e.color}];for(let e of c){let t=e.get(i),n=e.get(a);t!==n&&s.push({property:e.name,element1Value:t,element2Value:n})}let l=new Set(i.tags),u=new Set(a.tags),f=[],p=[],m=[];for(let e of l)u.has(e)?f.push(e):p.push(e);for(let e of u)l.has(e)||m.push(e);let h=i.getMetadata(),g=a.getMetadata(),v=new Set([...Object.keys(h),...Object.keys(g)]),y={},b={},x=[],ee={};for(let e of v){let t=h[e],n=g[e];t!==void 0&&n===void 0?y[e]=t:t===void 0&&n!==void 0?b[e]=n:t!==void 0&&n!==void 0&&(JSON.stringify(t)===JSON.stringify(n)?ee[e]=t:x.push({key:e,element1Value:t,element2Value:n}))}let te=new Set([...i.incoming()].map(e=>e.source.id)),ne=new Set([...a.incoming()].map(e=>e.source.id)),re=new Set([...i.outgoing()].map(e=>e.target.id)),ie=new Set([...a.outgoing()].map(e=>e.target.id)),ae=0,oe=0,se=0;for(let e of te)ne.has(e)?ae++:oe++;for(let e of ne)te.has(e)||se++;let ce=0,le=0,ue=0;for(let e of re)ie.has(e)?ce++:le++;for(let e of ie)re.has(e)||ue++;return{element1:{id:i.id,kind:i.kind,title:i.title,description:i.description.text,technology:i.technology,shape:i.shape,color:i.color},element2:{id:a.id,kind:a.kind,title:a.title,description:a.description.text,technology:a.technology,shape:a.shape,color:a.color},propertyDiffs:s,tags:{onlyInElement1:p,onlyInElement2:m,common:f},metadata:{onlyInElement1:y,onlyInElement2:b,different:x,common:ee},relationships:{incomingOnlyElement1:oe,incomingOnlyElement2:se,incomingShared:ae,outgoingOnlyElement1:le,outgoingOnlyElement2:ue,outgoingShared:ce}}}),$d=likec4Tool({name:`find-relationship-paths`,description:`
|
|
426
461
|
Discover all paths (chains of relationships) between two elements, supporting multi-hop traversal.
|
|
427
462
|
|
|
428
463
|
Request:
|
|
@@ -511,7 +546,7 @@ Example response:
|
|
|
511
546
|
}
|
|
512
547
|
]
|
|
513
548
|
}
|
|
514
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Find relationship paths`},inputSchema:{sourceId:
|
|
549
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Find relationship paths`},inputSchema:{sourceId:X().describe(`Source element FQN`),targetId:X().describe(`Target element FQN`),maxDepth:Z().int().min(1).max(5).optional().default(3).describe(`Maximum path length (default: 3, max: 5)`),includeIndirect:_d().optional().default(!1).describe(`Include indirect (implied) relationships through nested elements (default: false)`),project:Kd},outputSchema:{paths:Q($({length:Z().describe(`Number of hops in the path`),steps:Q($({source:X().describe(`Source element FQN`),target:X().describe(`Target element FQN`),relationship:$({kind:X().nullable().describe(`Relationship kind`),title:X().nullable().describe(`Relationship title`),description:X().nullable().describe(`Relationship description`),technology:X().nullable().describe(`Relationship technology`),tags:Q(X()).describe(`Relationship tags`)})})).describe(`Ordered sequence of relationships in the path`)}))}})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project),r=await e.computedModel(n),i=r.findElement(t.sourceId);kt(i,`Source element "${t.sourceId}" not found in project "${n}"`);let a=r.findElement(t.targetId);kt(a,`Target element "${t.targetId}" not found in project "${n}"`),kt(i.id!==a.id,`Source and target must be different elements`);let s=t.maxDepth,c=t.includeIndirect?`all`:`direct`,l=[{elementId:i.id,path:[],visited:new Set([i.id])}],u=[];for(;l.length>0&&u.length<100;){let e=l.shift();if(e.path.length>=s)continue;let t=r.findElement(e.elementId);if(t)for(let n of t.outgoing(c)){let t=n.target.id;if(t===a.id){let t={source:n.source.id,target:n.target.id,relationship:{kind:n.kind,title:n.title,description:n.description.text,technology:n.technology,tags:[...n.tags]}};if(u.push({length:e.path.length+1,steps:[...e.path,t]}),u.length>=100)break;continue}if(e.visited.has(t))continue;let r={source:n.source.id,target:n.target.id,relationship:{kind:n.kind,title:n.title,description:n.description.text,technology:n.technology,tags:[...n.tags]}};l.push({elementId:t,path:[...e.path,r],visited:new Set([...e.visited,t])})}}return u.sort((e,t)=>e.length-t.length),{paths:u}}),ef=$({id:X(),title:X(),kind:X()}),tf=$({type:Cd([`direct`,`indirect`]).describe(`Type of relationship, "direct" for direct relationships, "indirect" for relationships through nested elements`),source:ef,target:ef,kind:X().nullable().describe(`Relationship kind`),title:X().nullable().describe(`Relationship title`),description:X().nullable().describe(`Relationship description`),technology:X().nullable().describe(`Relationship technology`),tags:Q(X()).describe(`Relationship tags`),includedInViews:qd.describe(`Views that include this relationship`),sourceLocation:Gd}),nf=likec4Tool({name:`find-relationships`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Find relationships between two elements`},description:`
|
|
515
550
|
Find relationships between two LikeC4 elements within a project.
|
|
516
551
|
|
|
517
552
|
What it does:
|
|
@@ -582,7 +617,7 @@ Response:
|
|
|
582
617
|
}
|
|
583
618
|
]
|
|
584
619
|
}
|
|
585
|
-
`,inputSchema:{element1:
|
|
620
|
+
`,inputSchema:{element1:X().describe(`Element ID (FQN)`),element2:X().describe(`Element ID (FQN)`),project:Kd},outputSchema:{found:Q(tf)}})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project);if(Pt(t.element1,t.element2))throw Error(`No relationships possible between parent-child`);let r=[],i=await e.computedModel(n),a=i.findElement(t.element1);Nt(a,`Element "${t.element1}" not found in project "${n}"`);let s=i.findElement(t.element2);Nt(s,`Element "${t.element2}" not found in project "${n}"`);let c=mkLocate(e,n),l=Ht.findConnection(a,s,`both`).flatMap(e=>[...e.relations]);for(let e of l){let t=e.source===a&&e.target===s||e.source===s&&e.target===a;r.push({type:t?`direct`:`indirect`,source:{id:e.source.id,title:e.source.title,kind:e.source.kind},target:{id:e.target.id,title:e.target.title,kind:e.target.kind},kind:e.kind,title:e.title,description:e.description.text,technology:e.technology,tags:[...e.tags],includedInViews:includedInViews(e.views()),sourceLocation:c({relation:e.id})})}return{found:r}}),rf=likec4Tool({name:`list-projects`,description:`
|
|
586
621
|
List LikeC4 projects discoverable in the current workspace.
|
|
587
622
|
|
|
588
623
|
Request:
|
|
@@ -615,7 +650,7 @@ Example response:
|
|
|
615
650
|
}
|
|
616
651
|
]
|
|
617
652
|
}
|
|
618
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`List projects`},inputSchema:{},outputSchema:{projects:
|
|
653
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`List projects`},inputSchema:{},outputSchema:{projects:Q($({id:X(),title:X(),folder:X(),sources:Q(X())}))}})(async e=>({projects:e.projects().map(e=>({id:e.id,title:e.title,folder:e.folder.fsPath,sources:e.documents.map(e=>e.fsPath)}))})),af=Cd([`exact`,`contains`,`exists`]),of=likec4Tool({name:`query-by-metadata`,description:`
|
|
619
654
|
Search elements and deployment nodes by metadata key-value pairs with flexible matching modes.
|
|
620
655
|
|
|
621
656
|
Request:
|
|
@@ -681,7 +716,7 @@ Example response:
|
|
|
681
716
|
}
|
|
682
717
|
]
|
|
683
718
|
}
|
|
684
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Query by metadata`},inputSchema:{key:
|
|
719
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Query by metadata`},inputSchema:{key:X().describe(`Metadata key to filter by`),value:X().optional().describe(`Metadata value to match (ignored for exists mode)`),matchMode:af.optional().default(`exact`).describe(`Matching mode`),project:Kd},outputSchema:{results:Q(Wd.extend({matchedValue:X().describe(`The metadata value that matched`)}))}})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project),r=await e.computedModel(n),i=t.matchMode,a=[],matches=(e,t,n)=>{let r=Array.isArray(e)?e:[e];switch(n){case`exists`:return!0;case`exact`:return t===void 0?!1:r.some(e=>e===t);case`contains`:{if(t===void 0)return!1;let e=t.toLowerCase();return r.some(t=>t.toLowerCase().includes(e))}default:return!1}},getMatchedValue=(e,t,n)=>{let r=Array.isArray(e)?e:[e];if(n===`exists`||t===void 0)return r[0]||``;if(n===`exact`)return r.find(e=>e===t)||r[0]||``;if(n===`contains`){let e=t.toLowerCase();return r.find(t=>t.toLowerCase().includes(e))||r[0]||``}return r[0]||``};for(let e of r.elements()){if(a.length>=50)break;let n=e.getMetadata();if(t.key in n){let r=n[t.key];r!==void 0&&matches(r,t.value,i)&&a.push({...serializeElement(e),matchedValue:getMatchedValue(r,t.value,i)})}}if(a.length<50)for(let e of r.deployment.elements()){if(a.length>=50)break;let n=e.getMetadata();if(t.key in n){let r=n[t.key];r!==void 0&&matches(r,t.value,i)&&a.push({...serializeElement(e),matchedValue:getMatchedValue(r,t.value,i)})}}return{results:a}}),sf=likec4Tool({name:`query-by-tag-pattern`,description:`
|
|
685
720
|
Search elements by tag patterns using prefix or substring matching.
|
|
686
721
|
Useful for tag taxonomies with structured naming conventions (e.g., "schedule_*", "*_asil_*").
|
|
687
722
|
|
|
@@ -736,7 +771,7 @@ Example response:
|
|
|
736
771
|
"truncated": false,
|
|
737
772
|
"matchedTagValues": ["target_asil_qm", "target_asil_asil_b", "target_asil_qm__tbc"]
|
|
738
773
|
}
|
|
739
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Query by tag pattern`},inputSchema:{pattern:
|
|
774
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Query by tag pattern`},inputSchema:{pattern:X().min(1).describe(`Tag pattern to match`),matchMode:Cd([`prefix`,`contains`,`suffix`]).optional().default(`prefix`).describe(`Pattern matching mode (default: prefix)`),project:Kd},outputSchema:{results:Q(Wd.extend({matchedTags:Q(X()).describe(`Tags that matched the pattern`)})),truncated:_d().describe(`True if results were truncated`),matchedTagValues:Q(X()).describe(`All unique tag values matching the pattern across all elements`)}})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project),r=await e.computedModel(n),i=t.pattern.toLowerCase(),matchesTag=e=>{let n=e.toLowerCase();switch(t.matchMode){case`prefix`:return n.startsWith(i);case`contains`:return n.includes(i);case`suffix`:return n.endsWith(i)}},a=[],s=!1,c=new Set;for(let e of r.elements()){let t=[...e.tags].filter(matchesTag);if(t.length>0){if(t.forEach(e=>c.add(e)),a.length>=50){s=!0;continue}a.push({...serializeElement(e),matchedTags:t})}}for(let e of r.deployment.elements()){if(!Lt(e))continue;let t=[...e.tags].filter(matchesTag);if(t.length>0){if(t.forEach(e=>c.add(e)),a.length>=50){s=!0;continue}a.push({...serializeElement(e),matchedTags:t})}}return{results:a,truncated:s,matchedTagValues:[...c].sort((e,t)=>e.localeCompare(t))}}),cf=likec4Tool({name:`query-by-tags`,description:`
|
|
740
775
|
Advanced tag filtering with boolean logic (AND, OR, NOT).
|
|
741
776
|
|
|
742
777
|
Request:
|
|
@@ -800,7 +835,7 @@ Example response:
|
|
|
800
835
|
}
|
|
801
836
|
]
|
|
802
837
|
}
|
|
803
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Query by tags`},inputSchema:{allOf:
|
|
838
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Query by tags`},inputSchema:{allOf:Q(X()).optional().describe(`Element must have ALL these tags (AND)`),anyOf:Q(X()).optional().describe(`Element must have ANY of these tags (OR)`),noneOf:Q(X()).optional().describe(`Element must have NONE of these tags (NOT)`),project:Kd},outputSchema:{results:Q(Wd),truncated:_d().describe(`True if results were truncated due to exceeding the 50-result limit`)}})(async(e,t)=>{kt(t.allOf&&t.allOf.length>0||t.anyOf&&t.anyOf.length>0||t.noneOf&&t.noneOf.length>0,`At least one condition (allOf, anyOf, or noneOf) must be specified with at least one tag`);let n=e.projectsManager.ensureProjectId(t.project),r=await e.computedModel(n),i=[],a=!1,matchesTags=e=>{let n=e instanceof Set?e:new Set(e);return!(t.allOf&&t.allOf.length>0&&!t.allOf.every(e=>n.has(e))||t.anyOf&&t.anyOf.length>0&&!t.anyOf.some(e=>n.has(e))||t.noneOf&&t.noneOf.length>0&&t.noneOf.some(e=>n.has(e)))};for(let e of r.elements()){if(i.length>=50){a=!0;break}matchesTags(e.tags)&&i.push(serializeElement(e))}if(!a)for(let e of r.deployment.elements()){if(i.length>=50){a=!0;break}Lt(e)&&matchesTags(e.tags)&&i.push(serializeElement(e))}return{results:i,truncated:a}}),lf=Cd([`ancestors`,`descendants`,`siblings`,`children`,`parent`,`incomers`,`outgoers`]),uf=likec4Tool({name:`query-graph`,description:`
|
|
804
839
|
Query element hierarchy and relationships in the architecture graph.
|
|
805
840
|
|
|
806
841
|
Request:
|
|
@@ -872,7 +907,7 @@ Example response:
|
|
|
872
907
|
],
|
|
873
908
|
"truncated": false
|
|
874
909
|
}
|
|
875
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Query element graph`},inputSchema:{elementId:
|
|
910
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Query element graph`},inputSchema:{elementId:X().describe(`Element id (FQN) to query`),queryType:lf.describe(`Type of graph query`),includeIndirect:_d().optional().default(!0).describe(`For incomers/outgoers: include indirect relationships (default: true)`),project:Kd},outputSchema:{results:Q(Wd),truncated:_d().describe(`True if results were truncated due to exceeding maximum limit`)}})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project),r=(await e.computedModel(n)).findElement(t.elementId);kt(r,`Element "${t.elementId}" not found in project "${n}"`);let i=[],a=!1;switch(t.queryType){case`ancestors`:for(let e of r.ancestors()){if(i.length>=100){a=!0;break}i.push(serializeElement(e))}break;case`descendants`:for(let e of r.descendants()){if(i.length>=100){a=!0;break}i.push(serializeElement(e))}break;case`siblings`:for(let e of r.siblings()){if(i.length>=100){a=!0;break}i.push(serializeElement(e))}break;case`children`:for(let e of r.children()){if(i.length>=100){a=!0;break}i.push(serializeElement(e))}break;case`parent`:{let e=r.parent;e&&i.push(serializeElement(e));break}case`incomers`:{let e=t.includeIndirect?`all`:`direct`;for(let t of r.incomers(e)){if(i.length>=100){a=!0;break}i.push(serializeElement(t))}break}case`outgoers`:{let e=t.includeIndirect?`all`:`direct`;for(let t of r.outgoers(e)){if(i.length>=100){a=!0;break}i.push(serializeElement(t))}break}}return{results:i,truncated:a}}),df=$({elementId:X().describe(`ID of the incoming element`),relationshipLabel:X().optional().describe(`Label on the relationship`),technology:X().optional().describe(`Technology specified on the relationship`)}),ff=likec4Tool({name:`query-incomers-graph`,description:`
|
|
876
911
|
Query the complete graph of all elements that provide input to the target element (recursive incomers/producers).
|
|
877
912
|
|
|
878
913
|
This tool performs a breadth-first traversal to discover all upstream dependencies - elements that directly or
|
|
@@ -929,7 +964,7 @@ Notes:
|
|
|
929
964
|
Example:
|
|
930
965
|
For a database element, this returns all services, APIs, and components that write to it,
|
|
931
966
|
plus all their dependencies, recursively up to maxDepth levels.
|
|
932
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Query complete incomers graph`},inputSchema:{elementId:
|
|
967
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Query complete incomers graph`},inputSchema:{elementId:X().describe(`Target element id (FQN) to query incomers for`),includeIndirect:_d().optional().default(!0).describe(`Include indirect relationships through nested elements (default: true)`),maxDepth:Z().int().positive().max(50).optional().default(10).describe(`Maximum traversal depth (default: 10, max: 50)`),maxNodes:Z().int().positive().max(2e3).optional().default(200).describe(`Maximum number of nodes to return (default: 200, max: 2000)`),project:Kd},outputSchema:{target:X().describe(`Target element id`),totalNodes:Z().describe(`Total number of nodes in the graph`),maxDepth:Z().describe(`Maximum depth reached`),truncated:_d().describe(`True if result was truncated due to maxNodes limit`),nodes:xd(Wd.extend({incomers:Q(df).describe(`Incoming relationships with details`),depth:Z().describe(`Distance from target element (0 = target)`)}))}})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project),r=await e.computedModel(n);kt(r.findElement(t.elementId),`Element "${t.elementId}" not found in project "${n}"`);let i=t.includeIndirect?`all`:`direct`,a=traverseGraph(r,t.elementId,`incoming`,i,t.maxDepth,t.maxNodes),s={};for(let[e,t]of Object.entries(a.nodes)){let{neighbors:n,...r}=t;s[e]={...r,incomers:n}}return{target:a.target,totalNodes:a.totalNodes,maxDepth:a.maxDepth,truncated:a.truncated,nodes:s}}),pf=$({elementId:X().describe(`ID of the outgoing element`),relationshipLabel:X().optional().describe(`Label on the relationship`),technology:X().optional().describe(`Technology specified on the relationship`)}),mf=likec4Tool({name:`query-outgoers-graph`,description:`
|
|
933
968
|
Query the complete graph of all elements that receive output from the target element (recursive outgoers/consumers).
|
|
934
969
|
|
|
935
970
|
This tool performs a breadth-first traversal to discover all downstream dependencies - elements that directly or
|
|
@@ -986,7 +1021,7 @@ Notes:
|
|
|
986
1021
|
Example:
|
|
987
1022
|
For an API service, this returns all clients, services, and systems that consume its output,
|
|
988
1023
|
plus all their consumers, recursively up to maxDepth levels.
|
|
989
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Query complete outgoers graph`},inputSchema:{elementId:
|
|
1024
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Query complete outgoers graph`},inputSchema:{elementId:X().describe(`Target element id (FQN) to query outgoers for`),includeIndirect:_d().optional().default(!0).describe(`Include indirect relationships through nested elements (default: true)`),maxDepth:Z().int().positive().max(50).optional().default(10).describe(`Maximum traversal depth (default: 10, max: 50)`),maxNodes:Z().int().positive().max(2e3).optional().default(200).describe(`Maximum number of nodes to return (default: 200, max: 2000)`),project:Kd},outputSchema:{target:X().describe(`Target element id`),totalNodes:Z().describe(`Total number of nodes in the graph`),maxDepth:Z().describe(`Maximum depth reached`),truncated:_d().describe(`True if result was truncated due to maxNodes limit`),nodes:xd(Wd.extend({outgoers:Q(pf).describe(`Outgoing relationships with details`),depth:Z().describe(`Distance from target element (0 = target)`)}))}})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project),r=await e.computedModel(n);kt(r.findElement(t.elementId),`Element "${t.elementId}" not found in project "${n}"`);let i=t.includeIndirect?`all`:`direct`,a=traverseGraph(r,t.elementId,`outgoing`,i,t.maxDepth,t.maxNodes),s={};for(let[e,t]of Object.entries(a.nodes)){let{neighbors:n,...r}=t;s[e]={...r,outgoers:n}}return{target:a.target,totalNodes:a.totalNodes,maxDepth:a.maxDepth,truncated:a.truncated,nodes:s}}),hf=likec4Tool({name:`read-deployment`,description:`
|
|
990
1025
|
Read details about a deployment node or a deployed instance in a LikeC4 project.
|
|
991
1026
|
|
|
992
1027
|
What it does:
|
|
@@ -1051,7 +1086,7 @@ Example response (deployed instance):
|
|
|
1051
1086
|
"range": { "start": { "line": 10, "character": 0 }, "end": { "line": 25, "character": 0 } }
|
|
1052
1087
|
}
|
|
1053
1088
|
}
|
|
1054
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Read deployment entity`},inputSchema:{id:
|
|
1089
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Read deployment entity`},inputSchema:{id:X().describe(`Deployment id (FQN)`),project:Kd},outputSchema:{type:Cd([`deployment-node`,`deployed-instance`]),id:X().describe(`Deployment id (FQN)`),kind:X().describe(`Deployment node kind, or element kind for deployed instances`),name:X(),title:X(),description:X().nullable(),technology:X().nullable(),tags:Q(X()),project:X(),metadata:xd(yd([X(),Q(X())])),links:Q($({title:X().nullable().describe(`Optional link title`),url:X().describe(`Link URL`),relative:X().nullable().describe(`Relative path (if URL is relative to workspace root)`)})).describe(`External links associated with this deployment entity`),shape:X(),color:X(),children:Q(X()).describe(`Children of this deployment node (Array of Deployment ids)`),includedInViews:qd.describe(`Views that include this deployment node`),instanceof:$({id:X().describe(`Element ID (FQN)`),title:X(),kind:X()}).nullable().describe(`If type is "deployed-instance", the referenced element`),sourceLocation:Gd}})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project),r=(await e.computedModel(n)).deployment.findElement(t.id);kt(r,`Deployment entity "${t.id}" not found in project "${n}"`);let i=mkLocate(e,n);return{type:r.isInstance()?`deployed-instance`:`deployment-node`,id:r.id,name:r.name,kind:r.kind,title:r.title,description:r.description.text,technology:r.technology,tags:[...r.tags],project:n,metadata:r.getMetadata(),links:(r.links??[]).map(e=>({title:e.title??null,url:e.url,relative:e.relative??null})),shape:r.shape,color:r.color,children:r.isInstance()?[]:[...r.children()].map(e=>e.id),includedInViews:includedInViews(r.views()),instanceof:r.isInstance()?{id:r.element.id,title:r.element.title,kind:r.element.kind}:null,sourceLocation:i({deployment:r.id})}}),gf=likec4Tool({name:`read-element`,description:`
|
|
1055
1090
|
Read detailed information about a LikeC4 element.
|
|
1056
1091
|
|
|
1057
1092
|
Request:
|
|
@@ -1138,7 +1173,7 @@ Example response:
|
|
|
1138
1173
|
"range": { "start": { "line": 10, "character": 0 }, "end": { "line": 25, "character": 0 } }
|
|
1139
1174
|
}
|
|
1140
1175
|
}
|
|
1141
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Read element`},inputSchema:{id:
|
|
1176
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Read element`},inputSchema:{id:X().describe(`Element id (FQN)`),project:Kd},outputSchema:{id:X().describe(`Element id (FQN)`),kind:X().describe(`Element kind`),name:X().describe(`Element name`),title:X(),description:X().nullable(),technology:X().nullable(),tags:Q(X()),project:X(),metadata:xd(yd([X(),Q(X())])),links:Q($({title:X().nullable().describe(`Optional link title`),url:X().describe(`Link URL`),relative:X().nullable().describe(`Relative path (if URL is relative to workspace root)`)})).describe(`External links associated with this element`),shape:X(),color:X(),children:Q(X()).describe(`Children of this element (Array of FQNs)`),defaultView:X().nullable().describe(`Name of the default view of this element`),includedInViews:qd.describe(`Views that include this element`),relationships:$({incoming:Q($({source:$({id:X(),title:X(),kind:X()}).describe(`Source element of this relationship`),kind:X().nullable().describe(`Relationship kind`),target:X().describe(`Target element id (FQN), either this element or nested element, if relationship is indirect`),title:X().nullable().describe(`Relationship title`),description:X().nullable().describe(`Relationship description`),technology:X().nullable().describe(`Relationship technology`),tags:Q(X()).describe(`Relationship tags`)})).describe(`Incoming relationships of this element (direct and indirect, incoming to nested elements)`),outgoing:Q($({source:X().describe(`Source element id (FQN), either this element or nested element, if relationship is indirect`),target:$({id:X(),title:X(),kind:X()}).describe(`Target element of this relationship`),kind:X().nullable().describe(`Relationship kind`),title:X().nullable().describe(`Relationship title`),description:X().nullable().describe(`Relationship description`),technology:X().nullable().describe(`Relationship technology`),tags:Q(X()).describe(`Relationship tags`)})).describe(`Outgoing relationships of this element (direct and indirect, outgoing from nested elements)`)}).describe(`Relationships of this element`),deployedInstances:Q(X()).describe(`Deployed instances of this element (Array of Deployment FQNs)`),sourceLocation:Gd}})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project),r=(await e.computedModel(n)).findElement(t.id);kt(r,`Element "${t.id}" not found in project "${n}"`);let i=mkLocate(e,n);return{id:r.id,name:r.name,kind:r.kind,title:r.title,description:r.description.text,technology:r.technology,tags:[...r.tags],project:n,metadata:r.getMetadata(),links:(r.links??[]).map(e=>({title:e.title??null,url:e.url,relative:e.relative??null})),shape:r.shape,color:r.color,children:[...r.children()].map(e=>e.id),defaultView:r.defaultView?.id||null,includedInViews:includedInViews(r.views()),relationships:{incoming:[...r.incoming()].map(e=>({source:{id:e.source.id,title:e.source.title,kind:e.source.kind},kind:e.kind,target:e.target.id,title:e.title,description:e.description.text,technology:e.technology,tags:[...e.tags]})),outgoing:[...r.outgoing()].map(e=>({source:e.source.id,target:{id:e.target.id,title:e.target.title,kind:e.target.kind},kind:e.kind,title:e.title,description:e.description.text,technology:e.technology,tags:[...e.tags]}))},deployedInstances:[...r.deployments()].map(e=>e.id),sourceLocation:i({element:r.id})}}),_f=likec4Tool({name:`read-project-summary`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Read project summary`},description:`
|
|
1142
1177
|
Request:
|
|
1143
1178
|
- project: string (optional) — project id. Defaults to "default" if omitted.
|
|
1144
1179
|
|
|
@@ -1229,7 +1264,7 @@ Example response:
|
|
|
1229
1264
|
}
|
|
1230
1265
|
]
|
|
1231
1266
|
}
|
|
1232
|
-
`,inputSchema:{project
|
|
1267
|
+
`,inputSchema:{project:Kd},outputSchema:{title:X(),folder:X(),sources:Q(X()),config:Ud.describe(`Project configuration`),specification:$({elementKinds:Q(X()),relationshipKinds:Q(X()),deploymentKinds:Q(X()),tags:Q(X()),metadataKeys:Q(X())}),elements:Q($({id:X(),kind:X(),title:X(),tags:Q(X())})).describe(`List of elements in the project`),deployments:Q(bd(`type`,[$({type:Sd(`deployment-node`),id:X().describe(`Node ID`),kind:X().describe(`Deployment node kind`),title:X().describe(`Node title`),tags:Q(X())}),$({type:Sd(`deployed-instance`),id:X().describe(`Node ID`),title:X().describe(`Node title`),tags:Q(X()),referencedElementId:X().describe(`Element ID (FQN)`)})])).describe(`List of deployment nodes and deployed instances in the project`),views:Q($({id:X(),title:X(),type:Cd([`element`,`deployment`,`dynamic`])}))}})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project),r=e.project(n),i=await e.computedModel(n);return{title:r.title,folder:r.folder.fsPath,sources:r.documents?.map(e=>e.fsPath)??[],config:serializeConfig(r.config),specification:{elementKinds:et(i.specification.elements),relationshipKinds:et(i.specification.relationships),deploymentKinds:et(i.specification.deployments),tags:[...i.tags],metadataKeys:i.specification.metadataKeys??[]},elements:[...i.elements()].filter(e=>!e.imported).map(e=>({id:e.id,kind:e.kind,title:e.title,tags:[...e.tags]})),deployments:[...i.deployment.elements()].map(e=>e.isInstance()?{type:`deployed-instance`,id:e.id,title:e.title,tags:[...e.tags],referencedElementId:e.element.id}:{type:`deployment-node`,id:e.id,kind:e.kind,title:e.title,tags:[...e.tags]}),views:[...i.views()].map(e=>({id:e.id,title:e.titleOrId,type:e.$view._type}))}}),modelRef=e=>e.hasElement()?e.element.id:e.hasDeployment()?e.deployment.id:null,vf=bd(`type`,[$({type:Sd(`element`),id:X().describe(`Node ID`),elementId:X().describe(`Element ID (FQN)`),kind:X().describe(`Element kind`),title:X().describe(`Node title`),description:X().nullable(),technology:X().nullable(),children:Q(X()).describe(`Children nodes, array of node IDs`),shape:X().describe(`Rendered shape`),color:X().describe(`Rendered color`),tags:Q(X())}),$({type:Sd(`deployment-node`),id:X().describe(`Node ID`),deploymentId:X().describe(`Deployment entity ID (FQN)`),kind:X().describe(`Deployment kind`),title:X().describe(`Node title`),description:X().nullable(),technology:X().nullable(),children:Q(X()).describe(`Children nodes, array of node IDs`),shape:X().describe(`Rendered shape`),color:X().describe(`Rendered color`),tags:Q(X())}),$({type:Sd(`deployed-instance`),id:X().describe(`Node ID`),deploymentId:X().describe(`Deployment entity ID (FQN)`),title:X().describe(`Node title`),description:X().nullable(),technology:X().nullable(),referencedElement:$({id:X().describe(`Element ID (FQN)`),kind:X().describe(`Element kind`),title:X().describe(`Element title`)}),shape:X().describe(`Rendered shape`),color:X().describe(`Rendered color`),tags:Q(X())})]),yf=likec4Tool({name:`read-view`,description:`
|
|
1233
1268
|
Read detailed information about a LikeC4 view.
|
|
1234
1269
|
|
|
1235
1270
|
Request:
|
|
@@ -1277,7 +1312,7 @@ Example response:
|
|
|
1277
1312
|
"range": { "start": { "line": 10, "character": 0 }, "end": { "line": 30, "character": 0 } }
|
|
1278
1313
|
}
|
|
1279
1314
|
}
|
|
1280
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Read view`},inputSchema:{viewId:
|
|
1315
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Read view`},inputSchema:{viewId:X().describe(`View id (name)`),project:Kd},outputSchema:{id:X(),type:Cd([`element`,`deployment`,`dynamic`]).describe(`View type`),title:X(),description:X().nullable(),tags:Q(X()),project:X(),nodes:Q(vf),edges:Q($({source:X().describe(`Source node`),target:X().describe(`Target node`),label:X().nullable(),description:X().nullable(),technology:X().nullable(),tags:Q(X())})).describe(`Edge represents relationship between nodes`),sourceLocation:Gd}})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project),r=e.project(n),i=(await e.computedModel(n)).findView(t.viewId);if(!i)throw Error(`View with ID '${t.viewId}' not found in project ${r.id}`);let a=mkLocate(e,r.id);return{id:i.id,type:i.$view._type,title:i.title??i.id,description:i.description.text,tags:[...i.tags],project:r.id,nodes:[...i.nodes()].flatMap(e=>{let t={id:e.id,title:e.title,description:e.description.text,technology:e.technology,shape:e.shape,color:e.color,tags:[...e.tags]};return e.hasDeployedInstance()?{...t,type:`deployed-instance`,deploymentId:e.deployment.id,referencedElement:{id:e.deployment.element.id,kind:e.deployment.element.kind,title:e.deployment.element.title}}:e.hasDeployment()?{...t,type:`deployment-node`,kind:e.deployment.kind,deploymentId:e.deployment.id,children:[...e.children()].map(e=>e.id)}:e.hasElement()?{...t,type:`element`,elementId:e.element.id,kind:e.element.kind,children:[...e.children()].flatMap(e=>modelRef(e)??[])}:[]}),edges:[...i.edges()].map(e=>({source:e.source.id,target:e.target.id,label:e.label,description:e.description.text,technology:e.technology,tags:[...e.tags]})),sourceLocation:a({view:i.id})}}),bf=Q(bd(`type`,[$({type:Sd(`element`),project:X().describe(`Project ID`),id:X().describe(`Element ID (FQN)`),name:X().describe(`Element name`),kind:X(),title:X(),technology:X().nullable(),shape:X(),includedInViews:qd,metadata:xd(yd([X(),Q(X())])),tags:Q(X())}),$({type:Sd(`deployment-node`),project:X().describe(`Project ID`),id:X().describe(`Deployment ID (FQN)`),name:X().describe(`Deployment name`),kind:X(),title:X(),technology:X().nullable(),shape:X(),includedInViews:qd,metadata:xd(yd([X(),Q(X())])),tags:Q(X())})])),xf=likec4Tool({name:`search-element`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Search elements`},description:`
|
|
1281
1316
|
Search LikeC4 elements and deployment nodes across all projects.
|
|
1282
1317
|
|
|
1283
1318
|
Query syntax (case-insensitive):
|
|
@@ -1332,7 +1367,7 @@ Example response:
|
|
|
1332
1367
|
}
|
|
1333
1368
|
]
|
|
1334
1369
|
}
|
|
1335
|
-
`,inputSchema:{search:
|
|
1370
|
+
`,inputSchema:{search:X().min(2,`Search must be at least 2 characters long`)},outputSchema:{total:Z(),found:bf}})(async(e,t)=>{let n=e.projects(),r=[],i=t.search.toLowerCase(),predicate;i.startsWith(`kind:`)?(i=i.slice(5),U.debug(`search by kind: {search}`,{search:i}),predicate=e=>e.kind.toLowerCase()===i):i.startsWith(`shape:`)?(i=i.slice(6),U.debug(`search by shape: {search}`,{search:i}),predicate=e=>e.shape.toLowerCase()===i):i.startsWith(`meta:`)?(i=i.slice(5),U.debug(`search by metadata: {search}`,{search:i}),predicate=e=>!!e.getMetadata(i)):i.startsWith(`#`)?(i=i.slice(1),U.debug(`search by tag: {search}`,{search:i}),predicate=e=>e.tags.some(e=>e.toLowerCase().includes(i))):(U.debug(`search by id/title: {search}`,{search:i}),predicate=e=>e.id.toLowerCase().includes(i)||e.title.toLowerCase().includes(i));for(let t of n)try{let n=await e.computedModel(t.id);for(let e of Mt(n.elements(),e=>!e.imported&&predicate(e)))r.push({type:`element`,project:t.id,id:e.id,name:e.name,kind:e.kind,title:e.title,technology:e.technology,shape:e.shape,tags:[...e.tags],metadata:e.getMetadata(),includedInViews:includedInViews(e.views())});for(let e of Mt(n.deployment.nodes(),predicate))r.push({type:`deployment-node`,project:t.id,id:e.id,name:e.name,kind:e.kind,title:e.title,technology:e.technology,shape:e.shape,tags:[...e.tags],metadata:e.getMetadata(),includedInViews:includedInViews(e.views())})}catch(e){U.error(`Error searching in project ${t.id}:`,{error:e})}return{total:r.length,found:r.slice(0,20)}}),Sf=$({id:X().describe(`Element id (FQN)`),name:X().describe(`Element name`),kind:X().describe(`Element kind`),title:X().describe(`Human-readable title`),depth:Z().describe(`Depth relative to the root element (1 = direct child)`),tags:Q(X()).describe(`Assigned tags`),metadata:xd(yd([X(),Q(X())])).describe(`Element metadata`),childCount:Z().describe(`Number of direct children`),incomingCount:Z().describe(`Number of incoming relationships`),outgoingCount:Z().describe(`Number of outgoing relationships`)}),Cf=likec4Tool({name:`subgraph-summary`,description:`
|
|
1336
1371
|
Get a compact, table-friendly summary of all descendants of a parent element.
|
|
1337
1372
|
Returns each descendant with its depth, metadata, tags, and relationship counts in a single call.
|
|
1338
1373
|
Much more efficient than calling read-element for each descendant individually.
|
|
@@ -1398,7 +1433,7 @@ Example response:
|
|
|
1398
1433
|
"truncated": false,
|
|
1399
1434
|
"truncatedByDepth": false
|
|
1400
1435
|
}
|
|
1401
|
-
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Subgraph summary`},inputSchema:{elementId:
|
|
1436
|
+
`,annotations:{readOnlyHint:!0,idempotentHint:!0,title:`Subgraph summary`},inputSchema:{elementId:X().describe(`Parent element id (FQN) whose descendants to summarize`),maxDepth:Z().int().min(1).max(20).optional().default(10).describe(`Maximum depth of descendants to include (default: 10, max: 20)`),metadataKeys:Q(X()).optional().describe(`If provided, only include these metadata keys in the response`),project:Kd},outputSchema:{root:$({id:X(),kind:X(),title:X(),childCount:Z()}),descendants:Q(Sf),totalDescendants:Z().describe(`Total number of descendants found`),truncated:_d().describe(`True if results were truncated due to exceeding the limit`),truncatedByDepth:_d().describe(`True if deeper descendants exist beyond maxDepth`)}})(async(e,t)=>{let n=e.projectsManager.ensureProjectId(t.project),r=(await e.computedModel(n)).findElement(t.elementId);kt(r,`Element "${t.elementId}" not found in project "${n}"`);let i=t.maxDepth,a=t.metadataKeys,s=[],c=0,l=!1,u=!1,f=[],p=[...r.children()];for(let e of p)f.push({element:e,depth:1});for(;f.length>0;){let{element:e,depth:t}=f.shift();if(t>i){u=!0;continue}c++;let n=[...e.children()];if(s.length<200){let r=e.getMetadata(),i=a?Object.fromEntries(a.filter(e=>e in r).map(e=>[e,r[e]])):r;s.push({id:e.id,name:e.name,kind:e.kind,title:e.title,depth:t,tags:[...e.tags],metadata:i,childCount:n.length,incomingCount:[...e.incoming()].length,outgoingCount:[...e.outgoing()].length})}else l=!0;for(let e of n)f.push({element:e,depth:t+1})}return{root:{id:r.id,kind:r.kind,title:r.title,childCount:p.length},descendants:s,totalDescendants:c,truncated:l,truncatedByDepth:u}});function createMCPServer(e){let t=new McpServer({name:`LikeC4`,version:Hd},{instructions:`LikeC4 MCP – query and navigate LikeC4 models.
|
|
1402
1437
|
|
|
1403
1438
|
Conventions:
|
|
1404
1439
|
- All tools are read-only and idempotent.
|
|
@@ -1431,14 +1466,19 @@ Instructions:
|
|
|
1431
1466
|
- If response returns "sourceLocation", provide link to this location in the editor
|
|
1432
1467
|
|
|
1433
1468
|
Full documentation: https://likec4.dev/llms-full.txt
|
|
1434
|
-
`,enforceStrictCapabilities:!0,capabilities:{completions:{},tools:{},logging:{},prompts:{},resources:{}}});return t.server.onerror=e=>{s.error(u(e))},ue(t,setMcpServerCtx,lr,Sr,xr,br,wr,Er,cr,ar,le(hr,_r,yr,dr,pr,fr),le(tr,ir,Or),le(applySemanticLayoutPrompt,applySemanticLayoutTool),projectResource)}var StdioLikeC4MCPServer=class{services;transport=void 0;_mcp=void 0;constructor(e){this.services=e}get mcp(){if(!this._mcp)throw Error(`MCP server is not started`);return this._mcp}get isStarted(){return this.transport!==void 0}get port(){return NaN}async dispose(){await this.stop()}async start(){this.transport||(Q.info(`Starting MCP stdio server`),this._mcp=createMCPServer(this.services),setMcpServerCtx(this._mcp),this.transport=new Le,await this._mcp.connect(this.transport),Q.info(`LikeC4 MCP Server running on stdio`))}async stop(){if(this.transport)try{Q.info(`Stopping MCP stdio server`),await this.transport.close(),this._mcp&&await this._mcp.close()}finally{this._mcp=void 0,this.transport=void 0,setMcpServerCtx(void 0)}}};async function createHonoApp(e){let t=new Je;t.use(`*`,re({origin:`*`,allowHeaders:[`Content-Type`,`mcp-session-id`,`Last-Event-ID`,`mcp-protocol-version`],exposeHeaders:[`mcp-session-id`,`mcp-protocol-version`]})),t.get(`/health`,e=>e.json({status:`ok`}));let n=e();setMcpServerCtx(n);let r=new D({eventStore:new ie({})});return t.all(`/mcp`,async e=>(n.isConnected()||await n.connect(r),await r.handleRequest(e))),t.notFound(e=>(Q.debug(`${e.req.method} ${e.req.url} not found`),e.json({jsonrpc:`2.0`,error:{code:-32e3,message:`Method not found.`},id:null},{status:404}))),t.onError((e,t)=>(Q.error(u(e)),t.json({jsonrpc:`2.0`,error:{code:-32603,message:`Internal server error`},id:null},{status:500}))),t}async function startServer(e){let{factory:t,port:n}=e,r=await createHonoApp(t);return new Promise((e,t)=>{let i=Ye({fetch:r.fetch,hostname:`0.0.0.0`,port:n}).prependOnceListener(`error`,t).prependOnceListener(`listening`,()=>{i.removeListener(`error`,t),e(i.unref())})})}var StreamableLikeC4MCPServer=class{services;_port;server=void 0;constructor(e,t=33335){this.services=e,this._port=t}get mcp(){throw Error(`StreamableLikeC4MCPServer has access to McpServer only during the request`)}get isStarted(){return this.server?.listening===!0}get port(){return this._port}async dispose(){await this.stop()}async start(e=this._port){if(this.server){if(this.port===e)return;await this.stop()}Q.info(`Starting MCP server on port {port}`,{port:e}),this._port=e,this.server=await startServer({factory:()=>createMCPServer(this.services),port:e}),Q.info(`MCP server ready at http://0.0.0.0:{port}/mcp`,{port:e})}stop(){let e=this.server;return e?(Q.info(`Stopping MCP server`),this.server=void 0,setMcpServerCtx(void 0),new Promise(t=>{e.close(e=>{e?Q.error(`Failed to stop MCP server`,{err:e}):Q.info(`MCP server stopped`),t()})})):(Q.info(`MCP server is not running, nothing to stop`),Promise.resolve())}};async function initLikeC4MCP(e){let t=h(e,{workspacePath:`.`,mcp:`stdio`,graphviz:`wasm`,watch:!0,throwIfInvalid:!1,configureLogger:!0});t.configureLogger&&(l({useStdErr:t.mcp===`stdio`,colors:C.isColorSupported&&t.mcp!==`stdio`,logLevel:Pt?`debug`:`info`}),process.on(`uncaughtException`,e=>{Q.error(`uncaughtException`,{err:e})}),process.on(`unhandledRejection`,e=>{Q.error(`unhandledRejection`,{err:e})}));let n=H(t.workspacePath);Q.info`Loading LikeC4 from workspace: ${n}`;let r=await c(n,{graphviz:t.graphviz,manualLayouts:!0,configureLogger:!1,watch:t.watch,throwIfInvalid:t.throwIfInvalid}),i=setLanguageServicesCtx(r.languageServices);return{server:t.mcp===`stdio`?new StdioLikeC4MCPServer(i):new StreamableLikeC4MCPServer(i,t.mcp.port),likec4:r}}async function startLikeC4MCP(e){let t=await initLikeC4MCP(e);return await t.server.start(),t}const mcpCmd=e=>e.command({command:`mcp [path]`,aliases:[],describe:`Start MCP server`,builder:e=>e.usage(`${C.bold(`Usage:`)} $0 mcp [path]`).positional(`path`,J).default(`path`,`.`,`current directory`).option(`stdio`,{boolean:!0,description:`use stdio transport`,conflicts:[`http`,`port`]}).option(`http`,{boolean:!0,description:`use streamable http transport (use 33335 port by default)`,conflicts:`stdio`}).option(`port`,{alias:`p`,number:!0,description:`enables http transport and sets the port`,conflicts:`stdio`}).option(`use-dot`,Y).option(`log-level`,hn).option(`verbose`,gn).showHidden().epilog(`${C.bold(`Examples:`)}
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
${C.green(`$0 mcp -p 1234`)}
|
|
1440
|
-
|
|
1441
|
-
|
|
1469
|
+
`,enforceStrictCapabilities:!0,capabilities:{completions:{},tools:{},logging:{},prompts:{},resources:{}}});return t.server.onerror=e=>{a.error(s(e))},Ge(t,setMcpServerCtx,rf,_f,gf,hf,yf,xf,nf,$d,We(uf,ff,mf,of,cf,sf),We(Yd,Qd,Cf),We(applySemanticLayoutPrompt,applySemanticLayoutTool),projectResource)}var StdioLikeC4MCPServer=class{services;transport=void 0;_mcp=void 0;constructor(e){this.services=e}get mcp(){if(!this._mcp)throw Error(`MCP server is not started`);return this._mcp}get isStarted(){return this.transport!==void 0}get port(){return NaN}async dispose(){await this.stop()}async start(){this.transport||(U.info(`Starting MCP stdio server`),this._mcp=createMCPServer(this.services),setMcpServerCtx(this._mcp),this.transport=new StdioServerTransport,await this._mcp.connect(this.transport),U.info(`LikeC4 MCP Server running on stdio`))}async stop(){if(this.transport)try{U.info(`Stopping MCP stdio server`),await this.transport.close(),this._mcp&&await this._mcp.close()}finally{this._mcp=void 0,this.transport=void 0,setMcpServerCtx(void 0)}}},OAuthError=class extends Error{constructor(e,t){super(e),this.errorUri=t,this.name=this.constructor.name}toResponseObject(){let e={error:this.errorCode,error_description:this.message};return this.errorUri&&(e.error_uri=this.errorUri),e}get errorCode(){return this.constructor.errorCode}},InvalidRequestError=class extends OAuthError{};InvalidRequestError.errorCode=`invalid_request`;var InvalidClientError=class extends OAuthError{};InvalidClientError.errorCode=`invalid_client`;var InvalidGrantError=class extends OAuthError{};InvalidGrantError.errorCode=`invalid_grant`;var UnauthorizedClientError=class extends OAuthError{};UnauthorizedClientError.errorCode=`unauthorized_client`;var UnsupportedGrantTypeError=class extends OAuthError{};UnsupportedGrantTypeError.errorCode=`unsupported_grant_type`;var InvalidScopeError=class extends OAuthError{};InvalidScopeError.errorCode=`invalid_scope`;var AccessDeniedError=class extends OAuthError{};AccessDeniedError.errorCode=`access_denied`;var ServerError=class extends OAuthError{};ServerError.errorCode=`server_error`;var TemporarilyUnavailableError=class extends OAuthError{};TemporarilyUnavailableError.errorCode=`temporarily_unavailable`;var UnsupportedResponseTypeError=class extends OAuthError{};UnsupportedResponseTypeError.errorCode=`unsupported_response_type`;var UnsupportedTokenTypeError=class extends OAuthError{};UnsupportedTokenTypeError.errorCode=`unsupported_token_type`;var InvalidTokenError=class extends OAuthError{};InvalidTokenError.errorCode=`invalid_token`;var MethodNotAllowedError=class extends OAuthError{};MethodNotAllowedError.errorCode=`method_not_allowed`;var TooManyRequestsError=class extends OAuthError{};TooManyRequestsError.errorCode=`too_many_requests`;var InvalidClientMetadataError=class extends OAuthError{};InvalidClientMetadataError.errorCode=`invalid_client_metadata`;var InsufficientScopeError=class extends OAuthError{};InsufficientScopeError.errorCode=`insufficient_scope`;var InvalidTargetError=class extends OAuthError{};InvalidTargetError.errorCode=`invalid_target`,InvalidRequestError.errorCode,InvalidClientError.errorCode,InvalidGrantError.errorCode,UnauthorizedClientError.errorCode,UnsupportedGrantTypeError.errorCode,InvalidScopeError.errorCode,AccessDeniedError.errorCode,ServerError.errorCode,TemporarilyUnavailableError.errorCode,UnsupportedResponseTypeError.errorCode,UnsupportedTokenTypeError.errorCode,InvalidTokenError.errorCode,MethodNotAllowedError.errorCode,TooManyRequestsError.errorCode,InvalidClientMetadataError.errorCode,InsufficientScopeError.errorCode,InvalidTargetError.errorCode;var compose=(e,t,n)=>(r,i)=>{let a=-1;return dispatch(0);async function dispatch(s){if(s<=a)throw Error(`next() called multiple times`);a=s;let c,l=!1,u;if(e[s]?(u=e[s][0][0],r.req.routeIndex=s):u=s===e.length&&i||void 0,u)try{c=await u(r,()=>dispatch(s+1))}catch(e){if(e instanceof Error&&t)r.error=e,c=await t(e,r),l=!0;else throw e}else r.finalized===!1&&n&&(c=await n(r));return c&&(r.finalized===!1||l)&&(r.res=c),r}},HTTPException=class extends Error{res;status;constructor(e=500,t){super(t?.message,{cause:t?.cause}),this.res=t?.res,this.status=e}getResponse(){return this.res?new Response(this.res.body,{status:this.status,headers:this.res.headers}):new Response(this.message,{status:this.status})}},wf=Symbol(),parseBody=async(e,t=Object.create(null))=>{let{all:n=!1,dot:r=!1}=t,i=(e instanceof HonoRequest?e.raw.headers:e.headers).get(`Content-Type`);return i?.startsWith(`multipart/form-data`)||i?.startsWith(`application/x-www-form-urlencoded`)?parseFormData(e,{all:n,dot:r}):{}};async function parseFormData(e,t){let n=await e.formData();return n?convertFormDataToBodyData(n,t):{}}function convertFormDataToBodyData(e,t){let n=Object.create(null);return e.forEach((e,r)=>{t.all||r.endsWith(`[]`)?handleParsingAllValues(n,r,e):n[r]=e}),t.dot&&Object.entries(n).forEach(([e,t])=>{e.includes(`.`)&&(handleParsingNestedValues(n,e,t),delete n[e])}),n}var handleParsingAllValues=(e,t,n)=>{e[t]===void 0?t.endsWith(`[]`)?e[t]=[n]:e[t]=n:Array.isArray(e[t])?e[t].push(n):e[t]=[e[t],n]},handleParsingNestedValues=(e,t,n)=>{if(/(?:^|\.)__proto__\./.test(t))return;let r=e,i=t.split(`.`);i.forEach((e,t)=>{t===i.length-1?r[e]=n:((!r[e]||typeof r[e]!=`object`||Array.isArray(r[e])||r[e]instanceof File)&&(r[e]=Object.create(null)),r=r[e])})},splitPath=e=>{let t=e.split(`/`);return t[0]===``&&t.shift(),t},splitRoutingPath=e=>{let{groups:t,path:n}=extractGroupsFromPath(e);return replaceGroupMarks(splitPath(n),t)},extractGroupsFromPath=e=>{let t=[];return e=e.replace(/\{[^}]+\}/g,(e,n)=>{let r=`@${n}`;return t.push([r,e]),r}),{groups:t,path:e}},replaceGroupMarks=(e,t)=>{for(let n=t.length-1;n>=0;n--){let[r]=t[n];for(let i=e.length-1;i>=0;i--)if(e[i].includes(r)){e[i]=e[i].replace(r,t[n][1]);break}}return e},Tf={},getPattern=(e,t)=>{if(e===`*`)return`*`;let n=e.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(n){let r=`${e}#${t}`;return Tf[r]||(n[2]?Tf[r]=t&&t[0]!==`:`&&t[0]!==`*`?[r,n[1],RegExp(`^${n[2]}(?=/${t})`)]:[e,n[1],RegExp(`^${n[2]}$`)]:Tf[r]=[e,n[1],!0]),Tf[r]}return null},tryDecode=(e,t)=>{try{return t(e)}catch{return e.replace(/(?:%[0-9A-Fa-f]{2})+/g,e=>{try{return t(e)}catch{return e}})}},tryDecodeURI=e=>tryDecode(e,decodeURI),getPath=e=>{let t=e.url,n=t.indexOf(`/`,t.indexOf(`:`)+4),r=n;for(;r<t.length;r++){let e=t.charCodeAt(r);if(e===37){let e=t.indexOf(`?`,r),i=t.indexOf(`#`,r),a=e===-1?i===-1?void 0:i:i===-1?e:Math.min(e,i),s=t.slice(n,a);return tryDecodeURI(s.includes(`%25`)?s.replace(/%25/g,`%2525`):s)}else if(e===63||e===35)break}return t.slice(n,r)},getPathNoStrict=e=>{let t=getPath(e);return t.length>1&&t.at(-1)===`/`?t.slice(0,-1):t},mergePath=(e,t,...n)=>(n.length&&(t=mergePath(t,...n)),`${e?.[0]===`/`?``:`/`}${e}${t===`/`?``:`${e?.at(-1)===`/`?``:`/`}${t?.[0]===`/`?t.slice(1):t}`}`),checkOptionalParameter=e=>{if(e.charCodeAt(e.length-1)!==63||!e.includes(`:`))return null;let t=e.split(`/`),n=[],r=``;return t.forEach(e=>{if(e!==``&&!/\:/.test(e))r+=`/`+e;else if(/\:/.test(e))if(/\?/.test(e)){n.length===0&&r===``?n.push(`/`):n.push(r);let t=e.replace(`?`,``);r+=`/`+t,n.push(r)}else r+=`/`+e}),n.filter((e,t,n)=>n.indexOf(e)===t)},_decodeURI=e=>/[%+]/.test(e)?(e.indexOf(`+`)!==-1&&(e=e.replace(/\+/g,` `)),e.indexOf(`%`)===-1?e:tryDecode(e,Df)):e,_getQueryParam=(e,t,n)=>{let r;if(!n&&t&&!/[%+]/.test(t)){let n=e.indexOf(`?`,8);if(n===-1)return;for(e.startsWith(t,n+1)||(n=e.indexOf(`&${t}`,n+1));n!==-1;){let r=e.charCodeAt(n+t.length+1);if(r===61){let r=n+t.length+2,i=e.indexOf(`&`,r);return _decodeURI(e.slice(r,i===-1?void 0:i))}else if(r==38||isNaN(r))return``;n=e.indexOf(`&${t}`,n+1)}if(r=/[%+]/.test(e),!r)return}let i={};r??=/[%+]/.test(e);let a=e.indexOf(`?`,8);for(;a!==-1;){let t=e.indexOf(`&`,a+1),s=e.indexOf(`=`,a);s>t&&t!==-1&&(s=-1);let c=e.slice(a+1,s===-1?t===-1?void 0:t:s);if(r&&(c=_decodeURI(c)),a=t,c===``)continue;let l;s===-1?l=``:(l=e.slice(s+1,t===-1?void 0:t),r&&(l=_decodeURI(l))),n?(i[c]&&Array.isArray(i[c])||(i[c]=[]),i[c].push(l)):i[c]??=l}return t?i[t]:i},Ef=_getQueryParam,getQueryParams=(e,t)=>_getQueryParam(e,t,!0),Df=decodeURIComponent,tryDecodeURIComponent=e=>tryDecode(e,Df),HonoRequest=class{raw;#e;#t;routeIndex=0;path;bodyCache={};constructor(e,t=`/`,n=[[]]){this.raw=e,this.path=t,this.#t=n,this.#e={}}param(e){return e?this.#n(e):this.#r()}#n(e){let t=this.#t[0][this.routeIndex][1][e],n=this.#i(t);return n&&/\%/.test(n)?tryDecodeURIComponent(n):n}#r(){let e={},t=Object.keys(this.#t[0][this.routeIndex][1]);for(let n of t){let t=this.#i(this.#t[0][this.routeIndex][1][n]);t!==void 0&&(e[n]=/\%/.test(t)?tryDecodeURIComponent(t):t)}return e}#i(e){return this.#t[1]?this.#t[1][e]:e}query(e){return Ef(this.url,e)}queries(e){return getQueryParams(this.url,e)}header(e){if(e)return this.raw.headers.get(e)??void 0;let t={};return this.raw.headers.forEach((e,n)=>{t[n]=e}),t}async parseBody(e){return parseBody(this,e)}#a=e=>{let{bodyCache:t,raw:n}=this,r=t[e];if(r)return r;let i=Object.keys(t)[0];return i?t[i].then(t=>(i===`json`&&(t=JSON.stringify(t)),new Response(t)[e]())):t[e]=n[e]()};json(){return this.#a(`text`).then(e=>JSON.parse(e))}text(){return this.#a(`text`)}arrayBuffer(){return this.#a(`arrayBuffer`)}blob(){return this.#a(`blob`)}formData(){return this.#a(`formData`)}addValidatedData(e,t){this.#e[e]=t}valid(e){return this.#e[e]}get url(){return this.raw.url}get method(){return this.raw.method}get[wf](){return this.#t}get matchedRoutes(){return this.#t[0].map(([[,e]])=>e)}get routePath(){return this.#t[0].map(([[,e]])=>e)[this.routeIndex].path}},Of={Stringify:1,BeforeStream:2,Stream:3},raw=(e,t)=>{let n=new String(e);return n.isEscaped=!0,n.callbacks=t,n},resolveCallback=async(e,t,n,r,i)=>{typeof e==`object`&&!(e instanceof String)&&(e instanceof Promise||(e=e.toString()),e instanceof Promise&&(e=await e));let a=e.callbacks;if(!a?.length)return Promise.resolve(e);i?i[0]+=e:i=[e];let s=Promise.all(a.map(e=>e({phase:t,buffer:i,context:r}))).then(e=>Promise.all(e.filter(Boolean).map(e=>resolveCallback(e,t,!1,r,i))).then(()=>i[0]));return n?raw(await s,a):s},kf=`text/plain; charset=UTF-8`,setDefaultContentType=(e,t)=>({"Content-Type":e,...t}),createResponseInstance=(e,t)=>new Response(e,t),Context=class{#e;#t;env={};#n;finalized=!1;error;#r;#i;#a;#o;#s;#c;#l;#u;#d;constructor(e,t){this.#e=e,t&&(this.#i=t.executionCtx,this.env=t.env,this.#c=t.notFoundHandler,this.#d=t.path,this.#u=t.matchResult)}get req(){return this.#t??=new HonoRequest(this.#e,this.#d,this.#u),this.#t}get event(){if(this.#i&&`respondWith`in this.#i)return this.#i;throw Error(`This context has no FetchEvent`)}get executionCtx(){if(this.#i)return this.#i;throw Error(`This context has no ExecutionContext`)}get res(){return this.#a||=createResponseInstance(null,{headers:this.#l??=new Headers})}set res(e){if(this.#a&&e){e=createResponseInstance(e.body,e);for(let[t,n]of this.#a.headers.entries())if(t!==`content-type`)if(t===`set-cookie`){let t=this.#a.headers.getSetCookie();e.headers.delete(`set-cookie`);for(let n of t)e.headers.append(`set-cookie`,n)}else e.headers.set(t,n)}this.#a=e,this.finalized=!0}render=(...e)=>(this.#s??=e=>this.html(e),this.#s(...e));setLayout=e=>this.#o=e;getLayout=()=>this.#o;setRenderer=e=>{this.#s=e};header=(e,t,n)=>{this.finalized&&(this.#a=createResponseInstance(this.#a.body,this.#a));let r=this.#a?this.#a.headers:this.#l??=new Headers;t===void 0?r.delete(e):n?.append?r.append(e,t):r.set(e,t)};status=e=>{this.#r=e};set=(e,t)=>{this.#n??=new Map,this.#n.set(e,t)};get=e=>this.#n?this.#n.get(e):void 0;get var(){return this.#n?Object.fromEntries(this.#n):{}}#f(e,t,n){let r=this.#a?new Headers(this.#a.headers):this.#l??new Headers;if(typeof t==`object`&&`headers`in t){let e=t.headers instanceof Headers?t.headers:new Headers(t.headers);for(let[t,n]of e)t.toLowerCase()===`set-cookie`?r.append(t,n):r.set(t,n)}if(n)for(let[e,t]of Object.entries(n))if(typeof t==`string`)r.set(e,t);else{r.delete(e);for(let n of t)r.append(e,n)}return createResponseInstance(e,{status:typeof t==`number`?t:t?.status??this.#r,headers:r})}newResponse=(...e)=>this.#f(...e);body=(e,t,n)=>this.#f(e,t,n);text=(e,t,n)=>!this.#l&&!this.#r&&!t&&!n&&!this.finalized?new Response(e):this.#f(e,t,setDefaultContentType(kf,n));json=(e,t,n)=>this.#f(JSON.stringify(e),t,setDefaultContentType(`application/json`,n));html=(e,t,n)=>{let res=e=>this.#f(e,t,setDefaultContentType(`text/html; charset=UTF-8`,n));return typeof e==`object`?resolveCallback(e,Of.Stringify,!1,{}).then(res):res(e)};redirect=(e,t)=>{let n=String(e);return this.header(`Location`,/[^\x00-\xFF]/.test(n)?encodeURI(n):n),this.newResponse(null,t??302)};notFound=()=>(this.#c??=()=>createResponseInstance(),this.#c(this))},Af=[`get`,`post`,`put`,`delete`,`options`,`patch`],jf=`Can not add a route since the matcher is already built.`,UnsupportedPathError=class extends Error{},Mf=`__COMPOSED_HANDLER`,notFoundHandler=e=>e.text(`404 Not Found`,404),errorHandler=(e,t)=>{if(`getResponse`in e){let n=e.getResponse();return t.newResponse(n.body,n)}return console.error(e),t.text(`Internal Server Error`,500)},Nf=class _Hono{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath=`/`;#e=`/`;routes=[];constructor(e={}){[...Af,`all`].forEach(e=>{this[e]=(t,...n)=>(typeof t==`string`?this.#e=t:this.#r(e,this.#e,t),n.forEach(t=>{this.#r(e,this.#e,t)}),this)}),this.on=(e,t,...n)=>{for(let r of[t].flat()){this.#e=r;for(let t of[e].flat())n.map(e=>{this.#r(t.toUpperCase(),this.#e,e)})}return this},this.use=(e,...t)=>(typeof e==`string`?this.#e=e:(this.#e=`*`,t.unshift(e)),t.forEach(e=>{this.#r(`ALL`,this.#e,e)}),this);let{strict:t,...n}=e;Object.assign(this,n),this.getPath=t??!0?e.getPath??getPath:getPathNoStrict}#t(){let e=new _Hono({router:this.router,getPath:this.getPath});return e.errorHandler=this.errorHandler,e.#n=this.#n,e.routes=this.routes,e}#n=notFoundHandler;errorHandler=errorHandler;route(e,t){let n=this.basePath(e);return t.routes.map(e=>{let handler;t.errorHandler===errorHandler?handler=e.handler:(handler=async(n,r)=>(await compose([],t.errorHandler)(n,()=>e.handler(n,r))).res,handler[Mf]=e.handler),n.#r(e.method,e.path,handler)}),this}basePath(e){let t=this.#t();return t._basePath=mergePath(this._basePath,e),t}onError=e=>(this.errorHandler=e,this);notFound=e=>(this.#n=e,this);mount(e,t,n){let r,i;n&&(typeof n==`function`?i=n:(i=n.optionHandler,r=n.replaceRequest===!1?e=>e:n.replaceRequest));let a=i?e=>{let t=i(e);return Array.isArray(t)?t:[t]}:e=>{let t;try{t=e.executionCtx}catch{}return[e.env,t]};r||=(()=>{let t=mergePath(this._basePath,e),n=t===`/`?0:t.length;return e=>{let t=new URL(e.url);return t.pathname=t.pathname.slice(n)||`/`,new Request(t,e)}})();let handler=async(e,n)=>{let i=await t(r(e.req.raw),...a(e));if(i)return i;await n()};return this.#r(`ALL`,mergePath(e,`*`),handler),this}#r(e,t,n){e=e.toUpperCase(),t=mergePath(this._basePath,t);let r={basePath:this._basePath,path:t,method:e,handler:n};this.router.add(e,t,[n,r]),this.routes.push(r)}#i(e,t){if(e instanceof Error)return this.errorHandler(e,t);throw e}#a(e,t,n,r){if(r===`HEAD`)return(async()=>new Response(null,await this.#a(e,t,n,`GET`)))();let i=this.getPath(e,{env:n}),a=this.router.match(r,i),s=new Context(e,{path:i,matchResult:a,env:n,executionCtx:t,notFoundHandler:this.#n});if(a[0].length===1){let e;try{e=a[0][0][0][0](s,async()=>{s.res=await this.#n(s)})}catch(e){return this.#i(e,s)}return e instanceof Promise?e.then(e=>e||(s.finalized?s.res:this.#n(s))).catch(e=>this.#i(e,s)):e??this.#n(s)}let c=compose(a[0],this.errorHandler,this.#n);return(async()=>{try{let e=await c(s);if(!e.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return e.res}catch(e){return this.#i(e,s)}})()}fetch=(e,...t)=>this.#a(e,t[1],t[0],e.method);request=(e,t,n,r)=>e instanceof Request?this.fetch(t?new Request(e,t):e,n,r):(e=e.toString(),this.fetch(new Request(/^https?:\/\//.test(e)?e:`http://localhost${mergePath(`/`,e)}`,t),n,r));fire=()=>{addEventListener(`fetch`,e=>{e.respondWith(this.#a(e.request,e,void 0,e.request.method))})}},Pf=[];function match(e,t){let n=this.buildAllMatchers(),match2=((e,t)=>{let r=n[e]||n.ALL,i=r[2][t];if(i)return i;let a=t.match(r[0]);if(!a)return[[],Pf];let s=a.indexOf(``,1);return[r[1][s],a]});return this.match=match2,match2(e,t)}var Ff=`[^/]+`,Lf=`.*`,Rf=`(?:|/.*)`,zf=Symbol(),Bf=new Set(`.\\+*[^]$()`);function compareKey(e,t){return e.length===1?t.length===1?e<t?-1:1:-1:t.length===1||e===Lf||e===Rf?1:t===Lf||t===Rf?-1:e===Ff?1:t===Ff?-1:e.length===t.length?e<t?-1:1:t.length-e.length}var Vf=class _Node{#e;#t;#n=Object.create(null);insert(e,t,n,r,i){if(e.length===0){if(this.#e!==void 0)throw zf;if(i)return;this.#e=t;return}let[a,...s]=e,c=a===`*`?s.length===0?[``,``,Lf]:[``,``,Ff]:a===`/*`?[``,``,Rf]:a.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),l;if(c){let e=c[1],t=c[2]||Ff;if(e&&c[2]&&(t===`.*`||(t=t.replace(/^\((?!\?:)(?=[^)]+\)$)/,`(?:`),/\((?!\?:)/.test(t))))throw zf;if(l=this.#n[t],!l){if(Object.keys(this.#n).some(e=>e!==Lf&&e!==Rf))throw zf;if(i)return;l=this.#n[t]=new _Node,e!==``&&(l.#t=r.varIndex++)}!i&&e!==``&&n.push([e,l.#t])}else if(l=this.#n[a],!l){if(Object.keys(this.#n).some(e=>e.length>1&&e!==Lf&&e!==Rf))throw zf;if(i)return;l=this.#n[a]=new _Node}l.insert(s,t,n,r,i)}buildRegExpStr(){let e=Object.keys(this.#n).sort(compareKey).map(e=>{let t=this.#n[e];return(typeof t.#t==`number`?`(${e})@${t.#t}`:Bf.has(e)?`\\${e}`:e)+t.buildRegExpStr()});return typeof this.#e==`number`&&e.unshift(`#${this.#e}`),e.length===0?``:e.length===1?e[0]:`(?:`+e.join(`|`)+`)`}},Trie=class{#e={varIndex:0};#t=new Vf;insert(e,t,n){let r=[],i=[];for(let t=0;;){let n=!1;if(e=e.replace(/\{[^}]+\}/g,e=>{let r=`@\\${t}`;return i[t]=[r,e],t++,n=!0,r}),!n)break}let a=e.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let e=i.length-1;e>=0;e--){let[t]=i[e];for(let n=a.length-1;n>=0;n--)if(a[n].indexOf(t)!==-1){a[n]=a[n].replace(t,i[e][1]);break}}return this.#t.insert(a,t,r,this.#e,n),r}buildRegExp(){let e=this.#t.buildRegExpStr();if(e===``)return[/^$/,[],[]];let t=0,n=[],r=[];return e=e.replace(/#(\d+)|@(\d+)|\.\*\$/g,(e,i,a)=>i===void 0?(a===void 0||(r[Number(a)]=++t),``):(n[++t]=Number(i),`$()`)),[RegExp(`^${e}`),n,r]}},Hf=[/^$/,[],Object.create(null)],Uf=Object.create(null);function buildWildcardRegExp(e){return Uf[e]??=RegExp(e===`*`?``:`^${e.replace(/\/\*$|([.\\+*[^\]$()])/g,(e,t)=>t?`\\${t}`:`(?:|/.*)`)}$`)}function clearWildcardRegExpCache(){Uf=Object.create(null)}function buildMatcherFromPreprocessedRoutes(e){let t=new Trie,n=[];if(e.length===0)return Hf;let r=e.map(e=>[!/\*|\/:/.test(e[0]),...e]).sort(([e,t],[n,r])=>e?1:n?-1:t.length-r.length),i=Object.create(null);for(let e=0,a=-1,s=r.length;e<s;e++){let[s,c,l]=r[e];s?i[c]=[l.map(([e])=>[e,Object.create(null)]),Pf]:a++;let u;try{u=t.insert(c,a,s)}catch(e){throw e===zf?new UnsupportedPathError(c):e}s||(n[a]=l.map(([e,t])=>{let n=Object.create(null);for(--t;t>=0;t--){let[e,r]=u[t];n[e]=r}return[e,n]}))}let[a,s,c]=t.buildRegExp();for(let e=0,t=n.length;e<t;e++)for(let t=0,r=n[e].length;t<r;t++){let r=n[e][t]?.[1];if(!r)continue;let i=Object.keys(r);for(let e=0,t=i.length;e<t;e++)r[i[e]]=c[r[i[e]]]}let l=[];for(let e in s)l[e]=n[s[e]];return[a,l,i]}function findMiddleware(e,t){if(e){for(let n of Object.keys(e).sort((e,t)=>t.length-e.length))if(buildWildcardRegExp(n).test(t))return[...e[n]]}}var RegExpRouter=class{name=`RegExpRouter`;#e;#t;constructor(){this.#e={ALL:Object.create(null)},this.#t={ALL:Object.create(null)}}add(e,t,n){let r=this.#e,i=this.#t;if(!r||!i)throw Error(jf);r[e]||[r,i].forEach(t=>{t[e]=Object.create(null),Object.keys(t.ALL).forEach(n=>{t[e][n]=[...t.ALL[n]]})}),t===`/*`&&(t=`*`);let a=(t.match(/\/:/g)||[]).length;if(/\*$/.test(t)){let s=buildWildcardRegExp(t);e===`ALL`?Object.keys(r).forEach(e=>{r[e][t]||=findMiddleware(r[e],t)||findMiddleware(r.ALL,t)||[]}):r[e][t]||=findMiddleware(r[e],t)||findMiddleware(r.ALL,t)||[],Object.keys(r).forEach(t=>{(e===`ALL`||e===t)&&Object.keys(r[t]).forEach(e=>{s.test(e)&&r[t][e].push([n,a])})}),Object.keys(i).forEach(t=>{(e===`ALL`||e===t)&&Object.keys(i[t]).forEach(e=>s.test(e)&&i[t][e].push([n,a]))});return}let s=checkOptionalParameter(t)||[t];for(let t=0,c=s.length;t<c;t++){let l=s[t];Object.keys(i).forEach(s=>{(e===`ALL`||e===s)&&(i[s][l]||=[...findMiddleware(r[s],l)||findMiddleware(r.ALL,l)||[]],i[s][l].push([n,a-c+t+1]))})}}match=match;buildAllMatchers(){let e=Object.create(null);return Object.keys(this.#t).concat(Object.keys(this.#e)).forEach(t=>{e[t]||=this.#n(t)}),this.#e=this.#t=void 0,clearWildcardRegExpCache(),e}#n(e){let t=[],n=e===`ALL`;return[this.#e,this.#t].forEach(r=>{let i=r[e]?Object.keys(r[e]).map(t=>[t,r[e][t]]):[];i.length===0?e!==`ALL`&&t.push(...Object.keys(r.ALL).map(e=>[e,r.ALL[e]])):(n||=!0,t.push(...i))}),n?buildMatcherFromPreprocessedRoutes(t):null}},SmartRouter=class{name=`SmartRouter`;#e=[];#t=[];constructor(e){this.#e=e.routers}add(e,t,n){if(!this.#t)throw Error(jf);this.#t.push([e,t,n])}match(e,t){if(!this.#t)throw Error(`Fatal error`);let n=this.#e,r=this.#t,i=n.length,a=0,s;for(;a<i;a++){let i=n[a];try{for(let e=0,t=r.length;e<t;e++)i.add(...r[e]);s=i.match(e,t)}catch(e){if(e instanceof UnsupportedPathError)continue;throw e}this.match=i.match.bind(i),this.#e=[i],this.#t=void 0;break}if(a===i)throw Error(`Fatal error`);return this.name=`SmartRouter + ${this.activeRouter.name}`,s}get activeRouter(){if(this.#t||this.#e.length!==1)throw Error(`No active router has been determined yet.`);return this.#e[0]}},Wf=Object.create(null),hasChildren=e=>{for(let t in e)return!0;return!1},Gf=class _Node{#e;#t;#n;#r=0;#i=Wf;constructor(e,t,n){if(this.#t=n||Object.create(null),this.#e=[],e&&t){let n=Object.create(null);n[e]={handler:t,possibleKeys:[],score:0},this.#e=[n]}this.#n=[]}insert(e,t,n){this.#r=++this.#r;let r=this,i=splitRoutingPath(t),a=[];for(let e=0,t=i.length;e<t;e++){let t=i[e],n=i[e+1],s=getPattern(t,n),c=Array.isArray(s)?s[0]:t;if(c in r.#t){r=r.#t[c],s&&a.push(s[1]);continue}r.#t[c]=new _Node,s&&(r.#n.push(s),a.push(s[1])),r=r.#t[c]}return r.#e.push({[e]:{handler:n,possibleKeys:a.filter((e,t,n)=>n.indexOf(e)===t),score:this.#r}}),r}#a(e,t,n,r,i){for(let a=0,s=t.#e.length;a<s;a++){let s=t.#e[a],c=s[n]||s.ALL,l={};if(c!==void 0&&(c.params=Object.create(null),e.push(c),r!==Wf||i&&i!==Wf))for(let e=0,t=c.possibleKeys.length;e<t;e++){let t=c.possibleKeys[e],n=l[c.score];c.params[t]=i?.[t]&&!n?i[t]:r[t]??i?.[t],l[c.score]=!0}}}search(e,t){let n=[];this.#i=Wf;let r=[this],i=splitPath(t),a=[],s=i.length,c=null;for(let l=0;l<s;l++){let u=i[l],f=l===s-1,p=[];for(let m=0,h=r.length;m<h;m++){let h=r[m],g=h.#t[u];g&&(g.#i=h.#i,f?(g.#t[`*`]&&this.#a(n,g.#t[`*`],e,h.#i),this.#a(n,g,e,h.#i)):p.push(g));for(let r=0,m=h.#n.length;r<m;r++){let m=h.#n[r],g=h.#i===Wf?{}:{...h.#i};if(m===`*`){let t=h.#t[`*`];t&&(this.#a(n,t,e,h.#i),t.#i=g,p.push(t));continue}let[v,y,b]=m;if(!u&&!(b instanceof RegExp))continue;let x=h.#t[v];if(b instanceof RegExp){if(c===null){c=Array(s);let e=+(t[0]===`/`);for(let t=0;t<s;t++)c[t]=e,e+=i[t].length+1}let r=t.substring(c[l]),u=b.exec(r);if(u){if(g[y]=u[0],this.#a(n,x,e,h.#i,g),hasChildren(x.#t)){x.#i=g;let e=u[0].match(/\//)?.length??0;(a[e]||=[]).push(x)}continue}}(b===!0||b.test(u))&&(g[y]=u,f?(this.#a(n,x,e,g,h.#i),x.#t[`*`]&&this.#a(n,x.#t[`*`],e,g,h.#i)):(x.#i=g,p.push(x)))}}let m=a.shift();r=m?p.concat(m):p}return n.length>1&&n.sort((e,t)=>e.score-t.score),[n.map(({handler:e,params:t})=>[e,t])]}},TrieRouter=class{name=`TrieRouter`;#e;constructor(){this.#e=new Gf}add(e,t,n){let r=checkOptionalParameter(t);if(r){for(let t=0,i=r.length;t<i;t++)this.#e.insert(e,r[t],n);return}this.#e.insert(e,t,n)}match(e,t){return this.#e.search(e,t)}},Hono=class extends Nf{constructor(e={}){super(e),this.router=e.router??new SmartRouter({routers:[new RegExpRouter,new TrieRouter]})}},cors=e=>{let t={origin:`*`,allowMethods:[`GET`,`HEAD`,`PUT`,`POST`,`DELETE`,`PATCH`],allowHeaders:[],exposeHeaders:[],...e},n=(e=>typeof e==`string`?e===`*`?t.credentials?e=>e||null:()=>e:t=>e===t?t:null:typeof e==`function`?e:t=>e.includes(t)?t:null)(t.origin),r=(e=>typeof e==`function`?e:Array.isArray(e)?()=>e:()=>[])(t.allowMethods);return async function cors2(e,i){function set(t,n){e.res.headers.set(t,n)}let a=await n(e.req.header(`origin`)||``,e);if(a&&set(`Access-Control-Allow-Origin`,a),t.credentials&&set(`Access-Control-Allow-Credentials`,`true`),t.exposeHeaders?.length&&set(`Access-Control-Expose-Headers`,t.exposeHeaders.join(`,`)),e.req.method===`OPTIONS`){(t.origin!==`*`||t.credentials)&&set(`Vary`,`Origin`),t.maxAge!=null&&set(`Access-Control-Max-Age`,t.maxAge.toString());let n=await r(e.req.header(`origin`)||``,e);n.length&&set(`Access-Control-Allow-Methods`,n.join(`,`));let i=t.allowHeaders;if(!i?.length){let t=e.req.header(`Access-Control-Request-Headers`);t&&(i=t.split(/\s*,\s*/))}return i?.length&&(set(`Access-Control-Allow-Headers`,i.join(`,`)),e.res.headers.append(`Vary`,`Access-Control-Request-Headers`)),e.res.headers.delete(`Content-Length`),e.res.headers.delete(`Content-Type`),new Response(null,{headers:e.res.headers,status:204,statusText:`No Content`})}await i(),(t.origin!==`*`||t.credentials)&&e.header(`Vary`,`Origin`,{append:!0})}};const Kf=Se().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:Me.custom,message:`URL must be parseable`,fatal:!0}),pe}).refine(e=>{let t=new URL(e);return t.protocol!==`javascript:`&&t.protocol!==`data:`&&t.protocol!==`vbscript:`},{message:`URL cannot use javascript:, data:, or vbscript: scheme`});Te({resource:C().url(),authorization_servers:E(Kf).optional(),jwks_uri:C().url().optional(),scopes_supported:E(C()).optional(),bearer_methods_supported:E(C()).optional(),resource_signing_alg_values_supported:E(C()).optional(),resource_name:C().optional(),resource_documentation:C().optional(),resource_policy_uri:C().url().optional(),resource_tos_uri:C().url().optional(),tls_client_certificate_bound_access_tokens:O().optional(),authorization_details_types_supported:E(C()).optional(),dpop_signing_alg_values_supported:E(C()).optional(),dpop_bound_access_tokens_required:O().optional()});const qf=Te({issuer:C(),authorization_endpoint:Kf,token_endpoint:Kf,registration_endpoint:Kf.optional(),scopes_supported:E(C()).optional(),response_types_supported:E(C()),response_modes_supported:E(C()).optional(),grant_types_supported:E(C()).optional(),token_endpoint_auth_methods_supported:E(C()).optional(),token_endpoint_auth_signing_alg_values_supported:E(C()).optional(),service_documentation:Kf.optional(),revocation_endpoint:Kf.optional(),revocation_endpoint_auth_methods_supported:E(C()).optional(),revocation_endpoint_auth_signing_alg_values_supported:E(C()).optional(),introspection_endpoint:C().optional(),introspection_endpoint_auth_methods_supported:E(C()).optional(),introspection_endpoint_auth_signing_alg_values_supported:E(C()).optional(),code_challenge_methods_supported:E(C()).optional(),client_id_metadata_document_supported:O().optional()});w({...Te({issuer:C(),authorization_endpoint:Kf,token_endpoint:Kf,userinfo_endpoint:Kf.optional(),jwks_uri:Kf,registration_endpoint:Kf.optional(),scopes_supported:E(C()).optional(),response_types_supported:E(C()),response_modes_supported:E(C()).optional(),grant_types_supported:E(C()).optional(),acr_values_supported:E(C()).optional(),subject_types_supported:E(C()),id_token_signing_alg_values_supported:E(C()),id_token_encryption_alg_values_supported:E(C()).optional(),id_token_encryption_enc_values_supported:E(C()).optional(),userinfo_signing_alg_values_supported:E(C()).optional(),userinfo_encryption_alg_values_supported:E(C()).optional(),userinfo_encryption_enc_values_supported:E(C()).optional(),request_object_signing_alg_values_supported:E(C()).optional(),request_object_encryption_alg_values_supported:E(C()).optional(),request_object_encryption_enc_values_supported:E(C()).optional(),token_endpoint_auth_methods_supported:E(C()).optional(),token_endpoint_auth_signing_alg_values_supported:E(C()).optional(),display_values_supported:E(C()).optional(),claim_types_supported:E(C()).optional(),claims_supported:E(C()).optional(),service_documentation:C().optional(),claims_locales_supported:E(C()).optional(),ui_locales_supported:E(C()).optional(),claims_parameter_supported:O().optional(),request_parameter_supported:O().optional(),request_uri_parameter_supported:O().optional(),require_request_uri_registration:O().optional(),op_policy_uri:Kf.optional(),op_tos_uri:Kf.optional(),client_id_metadata_document_supported:O().optional()}).shape,...qf.pick({code_challenge_methods_supported:!0}).shape}),w({access_token:C(),id_token:C().optional(),token_type:C(),expires_in:ke().optional(),scope:C().optional(),refresh_token:C().optional()}).strip(),w({error:C(),error_description:C().optional(),error_uri:C().optional()});const Jf=Kf.optional().or(k(``).transform(()=>void 0)),Yf=w({redirect_uris:E(Kf),token_endpoint_auth_method:C().optional(),grant_types:E(C()).optional(),response_types:E(C()).optional(),client_name:C().optional(),client_uri:Kf.optional(),logo_uri:Jf,scope:C().optional(),contacts:E(C()).optional(),tos_uri:Jf,policy_uri:C().optional(),jwks_uri:Kf.optional(),jwks:Ne().optional(),software_id:C().optional(),software_version:C().optional(),software_statement:C().optional()}).strip(),Xf=w({client_id:C(),client_secret:C().optional(),client_id_issued_at:D().optional(),client_secret_expires_at:D().optional()}).strip();Yf.merge(Xf),w({error:C(),error_description:C().optional()}).strip(),w({token:C(),token_type_hint:C().optional()}).strip(),globalThis.crypto?.webcrypto??globalThis.crypto??import(`node:crypto`).then(e=>e.webcrypto),w({client_id:C(),redirect_uri:C().optional().refine(e=>e===void 0||URL.canParse(e),{message:`redirect_uri must be a valid URL`})}),w({response_type:k(`code`),code_challenge:C(),code_challenge_method:k(`S256`),scope:C().optional(),state:C().optional(),resource:Se().optional()}),w({grant_type:C()}),w({code:C(),code_verifier:C(),redirect_uri:C().optional(),resource:Se().optional()}),w({refresh_token:C(),scope:C().optional(),resource:Se().optional()}),w({client_id:C(),client_secret:C().optional()});var StreamingApi=class{writer;encoder;writable;abortSubscribers=[];responseReadable;aborted=!1;closed=!1;constructor(e,t){this.writable=e,this.writer=e.getWriter(),this.encoder=new TextEncoder;let n=t.getReader();this.abortSubscribers.push(async()=>{await n.cancel()}),this.responseReadable=new ReadableStream({async pull(e){let{done:t,value:r}=await n.read();t?e.close():e.enqueue(r)},cancel:()=>{this.abort()}})}async write(e){try{typeof e==`string`&&(e=this.encoder.encode(e)),await this.writer.write(e)}catch{}return this}async writeln(e){return await this.write(e+`
|
|
1470
|
+
`),this}sleep(e){return new Promise(t=>setTimeout(t,e))}async close(){try{await this.writer.close()}catch{}this.closed=!0}async pipe(e){this.writer.releaseLock(),await e.pipeTo(this.writable,{preventClose:!0}),this.writer=this.writable.getWriter()}onAbort(e){this.abortSubscribers.push(e)}abort(){this.aborted||(this.aborted=!0,this.abortSubscribers.forEach(e=>e()))}},SSEStreamingApi=class extends StreamingApi{constructor(e,t){super(e,t)}async writeSSE(e){let t=(await resolveCallback(e.data,Of.Stringify,!1,{})).split(/\r\n|\r|\n/).map(e=>`data: ${e}`).join(`
|
|
1471
|
+
`);for(let t of[`event`,`id`,`retry`])if(e[t]&&/[\r\n]/.test(e[t]))throw Error(`${t} must not contain "\\r" or "\\n"`);let n=[e.event&&`event: ${e.event}`,t,e.id&&`id: ${e.id}`,e.retry&&`retry: ${e.retry}`].filter(Boolean).join(`
|
|
1472
|
+
`)+`
|
|
1473
|
+
|
|
1474
|
+
`;await this.write(n)}};let isOldBunVersion=()=>{let e=typeof Bun<`u`?Bun.version:void 0;if(e===void 0)return!1;let t=e.startsWith(`1.1`)||e.startsWith(`1.0`)||e.startsWith(`0.`);return isOldBunVersion=()=>t,t};const run=async(e,t,n)=>{try{await t(e)}catch(t){t instanceof Error&&n?(await n(t,e),await e.writeSSE({event:`error`,data:t.message})):console.error(t)}},Zf=new WeakMap,streamSSE=(e,t,n)=>{let{readable:r,writable:i}=new TransformStream,a=new SSEStreamingApi(i,r);return isOldBunVersion()&&e.req.raw.signal.addEventListener(`abort`,()=>{a.closed||a.abort()}),Zf.set(a.responseReadable,e),e.header(`Transfer-Encoding`,`chunked`),e.header(`Content-Type`,`text/event-stream`),e.header(`Cache-Control`,`no-cache`),e.header(`Connection`,`keep-alive`),run(a,t,n),e.newResponse(a.responseReadable)};var StreamableHTTPTransport=class{#e=!1;#t=!1;#n;#r;#i;#a;#o=!1;#s=`_GET_stream`;#c=new Map;#l=new Map;#u=new Map;#d;#f;#p;#m;sessionId;onclose;onerror;onmessage;constructor(e){this.#i=e?.sessionIdGenerator,this.#o=e?.enableJsonResponse??!1,this.#a=e?.eventStore,this.#n=e?.onsessioninitialized,this.#r=e?.onsessionclosed,this.#d=e?.allowedHosts,this.#f=e?.allowedOrigins,this.#p=e?.enableDnsRebindingProtection??!1,this.#m=e?.strictAcceptHeader??!1}async start(){if(this.#e)throw Error(`Transport already started`);this.#e=!0}#h(e){if(this.#p){if(this.#d&&this.#d.length>0){let t=e.req.header(`Host`);if(!t||!this.#d.includes(t))return`Invalid Host header: ${t}`}if(this.#f&&this.#f.length>0){let t=e.req.header(`Origin`);if(!t||!this.#f.includes(t))return`Invalid Origin header: ${t}`}}}async handleRequest(e,t){let n=this.#h(e);if(n)throw new HTTPException(403,{res:Response.json({jsonrpc:`2.0`,error:{code:-32e3,message:n},id:null})});switch(e.req.method){case`GET`:return this.handleGetRequest(e);case`POST`:return this.handlePostRequest(e,t);case`DELETE`:return this.handleDeleteRequest(e);default:return this.handleUnsupportedRequest(e)}}async handleGetRequest(e){try{let t=e.req.header(`Accept`)??`*/*`;if(!t.includes(`text/event-stream`)&&!t.includes(`*/*`))throw new HTTPException(406,{res:Response.json({jsonrpc:`2.0`,error:{code:-32e3,message:`Not Acceptable: Client must accept text/event-stream`},id:null})});this.#g(e),this.#_(e),this.sessionId!==void 0&&e.header(`mcp-session-id`,this.sessionId);let streamId=this.#s;if(this.#a){let t=e.req.header(`last-event-id`);t&&(streamId=e=>this.#a.replayEventsAfter(t,{send:async(t,n)=>{try{await e.writeSSE({id:t,event:`message`,data:JSON.stringify(n)})}catch{throw this.onerror?.(Error(`Failed replay events`)),new HTTPException(500,{message:`Failed replay events`})}}}))}if(typeof streamId==`string`&&this.#c.get(streamId)!==void 0)throw new HTTPException(409,{res:Response.json({jsonrpc:`2.0`,error:{code:-32e3,message:`Conflict: Only one SSE stream is allowed per session`},id:null})});return streamSSE(e,async t=>{let n=typeof streamId==`string`?streamId:await streamId(t),r=setInterval(()=>{t.closed||t.writeSSE({data:``,event:`ping`}).catch(()=>{t.abort()})},3e4);typeof r==`object`&&`unref`in r&&r.unref(),this.#c.set(n,{ctx:{header:e.header},stream:t,cleanup:()=>{clearInterval(r),this.#c.delete(n)}}),t.onAbort(()=>{this.#c.get(n)?.cleanup()})})}catch(e){throw e instanceof HTTPException?e:(this.onerror?.(e),new HTTPException(400,{res:Response.json({jsonrpc:`2.0`,error:{code:V.ParseError,message:`Parse error`,data:String(e)},id:null})}))}}async handlePostRequest(e,t){try{let n=e.req.header(`Accept`)??`*/*`;if(!(this.#m?n.includes(`application/json`)&&n.includes(`text/event-stream`):n.includes(`application/json`)||n.includes(`text/event-stream`)||n.includes(`*/*`)))throw new HTTPException(406,{res:Response.json({jsonrpc:`2.0`,error:{code:V.ConnectionClosed,message:this.#m?`Not Acceptable: Client must accept both application/json and text/event-stream`:`Not Acceptable: Client must accept application/json or text/event-stream`},id:null})});if(!e.req.header(`Content-Type`)?.includes(`application/json`))throw new HTTPException(415,{res:Response.json({jsonrpc:`2.0`,error:{code:V.ConnectionClosed,message:`Unsupported Media Type: Content-Type must be application/json`},id:null})});let r=e.get(`auth`),i={headers:e.req.header()},a=t;a===void 0&&(a=await e.req.json());let s;s=Array.isArray(a)?a.map(e=>Oc.parse(e)):[Oc.parse(a)];let c=s.some(isInitializeRequest);if(c){if(this.#t&&this.sessionId!==void 0)throw new HTTPException(400,{res:Response.json({jsonrpc:`2.0`,error:{code:V.InvalidRequest,message:`Invalid Request: Server already initialized`},id:null})});if(s.length>1)throw new HTTPException(400,{res:Response.json({jsonrpc:`2.0`,error:{code:V.InvalidRequest,message:`Invalid Request: Only one initialization request is allowed`},id:null})});this.sessionId=this.#i?.(),this.#t=!0,this.sessionId&&this.#n&&await this.#n(this.sessionId)}c||(this.#g(e),this.#_(e));let l=s.some(isJSONRPCRequest);if(!l){for(let e of s)this.onmessage?.(e,{authInfo:r,requestInfo:i});return e.json(null,{status:202})}if(l){let t=crypto.randomUUID();return!this.#o&&this.sessionId!==void 0&&e.header(`mcp-session-id`,this.sessionId),this.#o?await new Promise(n=>{for(let r of s)isJSONRPCRequest(r)&&(this.#c.set(t,{ctx:{header:e.header,json:t=>{n(e.json(t))}},cleanup:()=>{this.#c.delete(t)}}),this.#l.set(r.id,t));for(let e of s)this.onmessage?.(e,{authInfo:r,requestInfo:i})}):streamSSE(e,async n=>{for(let r of s)isJSONRPCRequest(r)&&(this.#c.set(t,{ctx:{header:e.header},stream:n,cleanup:()=>{this.#c.delete(t)}}),this.#l.set(r.id,t));for(let e of s)this.onmessage?.(e,{authInfo:r,requestInfo:i});n.onAbort(()=>{this.#c.get(t)?.cleanup()})})}}catch(e){throw e instanceof HTTPException?e:(this.onerror?.(e),new HTTPException(400,{res:Response.json({jsonrpc:`2.0`,error:{code:V.ParseError,message:`Parse error`,data:String(e)},id:null})}))}}async handleDeleteRequest(e){return this.#g(e),this.#_(e),this.#r&&this.sessionId&&await Promise.resolve(this.#r(this.sessionId)),await this.close(),e.body(null,200)}handleUnsupportedRequest(e){return e.json({jsonrpc:`2.0`,error:{code:V.ConnectionClosed,message:`Method not allowed.`},id:null},{status:405,headers:{Allow:`GET, POST, DELETE`}})}#g(e){if(this.#i===void 0)return!0;if(!this.#t)throw new HTTPException(400,{res:Response.json({jsonrpc:`2.0`,error:{code:V.ConnectionClosed,message:`Bad Request: Server not initialized`},id:null})});let t=e.req.header(`mcp-session-id`);if(!t)throw new HTTPException(400,{res:Response.json({jsonrpc:`2.0`,error:{code:V.ConnectionClosed,message:`Bad Request: Mcp-Session-Id header is required`},id:null})});if(Array.isArray(t))throw new HTTPException(400,{res:Response.json({jsonrpc:`2.0`,error:{code:V.ConnectionClosed,message:`Bad Request: Mcp-Session-Id header must be a single value`},id:null})});if(t!==this.sessionId)throw new HTTPException(404,{res:Response.json({jsonrpc:`2.0`,error:{code:V.RequestTimeout,message:`Session not found`},id:null})});return!0}#_(e){let t=e.req.header(`mcp-protocol-version`)??`2025-03-26`;if(Array.isArray(t)&&(t=t[t.length-1]),!lc.includes(t))throw new HTTPException(404,{res:Response.json({jsonrpc:`2.0`,error:{code:V.ConnectionClosed,message:`Bad Request: Unsupported protocol version (supported versions: ${lc.join(`, `)})`},id:null})});return!0}async close(){for(let{stream:e}of this.#c.values())e?.abort();this.#c.clear(),this.#u.clear(),this.onclose?.()}async send(e,t){let n=t?.relatedRequestId;if((isJSONRPCResultResponse(e)||isJSONRPCErrorResponse(e))&&(n=e.id),n===void 0){if(isJSONRPCResultResponse(e)||isJSONRPCErrorResponse(e))throw Error(`Cannot send a response on a standalone SSE stream unless resuming a previous client request`);let t=this.#c.get(this.#s);if(t===void 0)return;let n;return this.#a&&(n=await this.#a.storeEvent(this.#s,e)),t.stream?.writeSSE({id:n,event:`message`,data:JSON.stringify(e)})}let r=this.#l.get(n),i=this.#c.get(r);if(!r)throw Error(`No connection established for request ID: ${String(n)}`);if(!this.#o){let t;this.#a&&(t=await this.#a.storeEvent(r,e)),i&&await i.stream?.writeSSE({id:t,event:`message`,data:JSON.stringify(e)})}if(isJSONRPCResultResponse(e)||isJSONRPCErrorResponse(e)){this.#u.set(n,e);let t=Array.from(this.#l.entries()).filter(([,e])=>this.#c.get(e)===i).map(([e])=>e);if(t.every(e=>this.#u.has(e))){if(!i)throw Error(`No connection established for request ID: ${String(n)}`);if(this.#o){this.sessionId!==void 0&&i.ctx.header(`mcp-session-id`,this.sessionId);let e=t.map(e=>this.#u.get(e));i.ctx.json?.(e.length===1?e[0]:e);return}else i.stream?.abort();for(let e of t)this.#u.delete(e),this.#l.delete(e)}}}},MemoryEventStore=class{#e;#t;#n;#r;#i;constructor(e={}){let{streamBufferSize:t=100,eventsPerStreamBufferSize:n=100,idGenerator=()=>crypto.randomUUID()}=e;this.#n=new Map,this.#r=new Map,this.#e=n,this.#i=idGenerator,this.#t=new RingBuffer(t,({streamId:e,events:t})=>{this.#n.delete(e),t.reset()})}async storeEvent(e,t){let n=this.#i();return this.#r.set(n,e),(!this.#n.has(e)||this.#t.get(this.#n.get(e))==null)&&(this.#n.set(e,this.#t.head),this.#t.push({streamId:e,events:new RingBuffer(this.#e,({id:e})=>{this.#r.delete(e)})})),this.#t.get(this.#n.get(e)).events.push({id:n,message:t}),n}async replayEventsAfter(e,t){let n=this.#r.get(e);if(!n)return`_unknown_stream`;let r=this.#t.get(this.#n.get(n)).events.read(),i=r.findIndex(t=>t.id===e),a=i>-1?r.slice(i+1):r;for(let e of a)await t.send(e.id,e.message);return n}reset(){this.#t.reset(),this.#n.clear(),this.#r.clear()}},RingBuffer=class{#e;#t;#n;#r;#i;constructor(e,t){this.#e=Array(e),this.#t=0,this.#n=0,this.#r=e,this.#i=t}get head(){return this.#t}push(e){let t=this.#t%this.#r,n=this.#e[t];n!=null&&this.#i!=null&&this.#i(n),this.#e[t]=e,this.#t++,this.#n=Math.max(this.#n,this.#t-this.#r)}get(e){if(!(e<this.#n||e>=this.#t))return this.#e[e%this.#r]}read(){let e=[];for(let t=this.#n;t<this.#t;t++){let n=this.get(t);if(n==null)break;e.push(n)}return e}reset(){if(this.#i!=null)for(let e of this.read())this.#i(e);this.#e=Array(this.#r),this.#t=0,this.#n=0}},RequestError=class extends Error{constructor(e,t){super(e,t),this.name=`RequestError`}},toRequestError=e=>e instanceof RequestError?e:new RequestError(e.message,{cause:e}),Qf=global.Request,Request$1=class extends Qf{static{t(this,`Request`)}constructor(e,t){typeof e==`object`&&ep in e&&(e=e[ep]()),t?.body?.getReader!==void 0&&(t.duplex??=`half`),super(e,t)}},newHeadersFromIncoming=e=>{let t=[],n=e.rawHeaders;for(let e=0;e<n.length;e+=2){let{[e]:r,[e+1]:i}=n;r.charCodeAt(0)!==58&&t.push([r,i])}return new Headers(t)},$f=Symbol(`wrapBodyStream`),newRequestFromIncoming=(e,t,n,r,i)=>{let a={method:e,headers:n,signal:i.signal};if(e===`TRACE`){a.method=`GET`;let e=new Request$1(t,a);return Object.defineProperty(e,"method",{get(){return`TRACE`}}),e}if(!(e===`GET`||e===`HEAD`))if(`rawBody`in r&&r.rawBody instanceof Buffer)a.body=new ReadableStream({start(e){e.enqueue(r.rawBody),e.close()}});else if(r[$f]){let e;a.body=new ReadableStream({async pull(t){try{e||=Ln.toWeb(r).getReader();let{done:n,value:i}=await e.read();n?t.close():t.enqueue(i)}catch(e){t.error(e)}}})}else a.body=Ln.toWeb(r);return new Request$1(t,a)},ep=Symbol(`getRequestCache`),tp=Symbol(`requestCache`),np=Symbol(`incomingKey`),rp=Symbol(`urlKey`),ip=Symbol(`headersKey`),ap=Symbol(`abortControllerKey`),op={get method(){return this[np].method||`GET`},get url(){return this[rp]},get headers(){return this[ip]||=newHeadersFromIncoming(this[np])},[Symbol(`getAbortController`)](){return this[ep](),this[ap]},[ep](){return this[ap]||=new AbortController,this[tp]||=newRequestFromIncoming(this.method,this[rp],this.headers,this[np],this[ap])}};[`body`,`bodyUsed`,`cache`,`credentials`,`destination`,`integrity`,`mode`,`redirect`,`referrer`,`referrerPolicy`,`signal`,`keepalive`].forEach(e=>{Object.defineProperty(op,e,{get(){return this[ep]()[e]}})}),[`arrayBuffer`,`blob`,`clone`,`formData`,`json`,`text`].forEach(e=>{Object.defineProperty(op,e,{value:function(){return this[ep]()[e]()}})}),Object.defineProperty(op,Symbol.for(`nodejs.util.inspect.custom`),{value:function(e,t,n){return`Request (lightweight) ${n({method:this.method,url:this.url,headers:this.headers,nativeRequest:this[tp]},{...t,depth:e==null?null:e-1})}`}}),Object.setPrototypeOf(op,Request$1.prototype);var newRequest=(e,t)=>{let n=Object.create(op);n[np]=e;let r=e.url||``;if(r[0]!==`/`&&(r.startsWith(`http://`)||r.startsWith(`https://`))){if(e instanceof Fn)throw new RequestError(`Absolute URL for :path is not allowed in HTTP/2`);try{n[rp]=new URL(r).href}catch(e){throw new RequestError(`Invalid absolute URL`,{cause:e})}return n}let i=(e instanceof Fn?e.authority:e.headers.host)||t;if(!i)throw new RequestError(`Missing host header`);let a;if(e instanceof Fn){if(a=e.scheme,!(a===`http`||a===`https`))throw new RequestError(`Unsupported scheme`)}else a=e.socket&&e.socket.encrypted?`https`:`http`;let s=new URL(`${a}://${i}${r}`);if(s.hostname.length!==i.length&&s.hostname!==i.replace(/:\d+$/,``))throw new RequestError(`Invalid host header`);return n[rp]=s.href,n},sp=Symbol(`responseCache`),cp=Symbol(`getResponseCache`),lp=Symbol(`cache`),up=global.Response,dp=class _Response{#e;#t;[cp](){return delete this[lp],this[sp]||=new up(this.#e,this.#t)}constructor(e,t){let n;if(this.#e=e,t instanceof _Response){let e=t[sp];if(e){this.#t=e,this[cp]();return}else this.#t=t.#t,n=new Headers(t.#t.headers)}else this.#t=t;(typeof e==`string`||e?.getReader!==void 0||e instanceof Blob||e instanceof Uint8Array)&&(this[lp]=[t?.status||200,e,n||t?.headers])}get headers(){let e=this[lp];return e?(e[2]instanceof Headers||(e[2]=new Headers(e[2]||{"content-type":`text/plain; charset=UTF-8`})),e[2]):this[cp]().headers}get status(){return this[lp]?.[0]??this[cp]().status}get ok(){let e=this.status;return e>=200&&e<300}};[`body`,`bodyUsed`,`redirected`,`statusText`,`trailers`,`type`,`url`].forEach(e=>{Object.defineProperty(dp.prototype,e,{get(){return this[cp]()[e]}})}),[`arrayBuffer`,`blob`,`clone`,`formData`,`json`,`text`].forEach(e=>{Object.defineProperty(dp.prototype,e,{value:function(){return this[cp]()[e]()}})}),Object.defineProperty(dp.prototype,Symbol.for(`nodejs.util.inspect.custom`),{value:function(e,t,n){return`Response (lightweight) ${n({status:this.status,headers:this.headers,ok:this.ok,nativeResponse:this[sp]},{...t,depth:e==null?null:e-1})}`}}),Object.setPrototypeOf(dp,up),Object.setPrototypeOf(dp.prototype,up.prototype);async function readWithoutBlocking(e){return Promise.race([e,Promise.resolve().then(()=>Promise.resolve(void 0))])}function writeFromReadableStreamDefaultReader(e,t,n){let cancel=t=>{e.cancel(t).catch(()=>{})};return t.on(`close`,cancel),t.on(`error`,cancel),(n??e.read()).then(flow,handleStreamError),e.closed.finally(()=>{t.off(`close`,cancel),t.off(`error`,cancel)});function handleStreamError(e){e&&t.destroy(e)}function onDrain(){e.read().then(flow,handleStreamError)}function flow({done:n,value:r}){try{if(n)t.end();else if(!t.write(r))t.once(`drain`,onDrain);else return e.read().then(flow,handleStreamError)}catch(e){handleStreamError(e)}}}function writeFromReadableStream(e,t){if(e.locked)throw TypeError(`ReadableStream is locked.`);return t.destroyed?void 0:writeFromReadableStreamDefaultReader(e.getReader(),t)}var buildOutgoingHttpHeaders=e=>{let t={};e instanceof Headers||(e=new Headers(e??void 0));let n=[];for(let[r,i]of e)r===`set-cookie`?n.push(i):t[r]=i;return n.length>0&&(t[`set-cookie`]=n),t[`content-type`]??=`text/plain; charset=UTF-8`,t},fp=`x-hono-already-sent`;global.crypto===void 0&&(global.crypto=un);var pp=Symbol(`outgoingEnded`),mp=Symbol(`incomingDraining`),hp=500,gp=64*1024*1024,drainIncoming=e=>{let t=e;if(e.destroyed||t[mp])return;if(t[mp]=!0,e instanceof Fn){try{e.stream?.close?.(In.NGHTTP2_NO_ERROR)}catch{}return}let n=0,cleanup=()=>{clearTimeout(r),e.off(`data`,onData),e.off(`end`,cleanup),e.off(`error`,cleanup)},forceClose=()=>{cleanup();let t=e.socket;t&&!t.destroyed&&t.destroySoon()},r=setTimeout(forceClose,hp);r.unref?.();let onData=e=>{n+=e.length,n>gp&&forceClose()};e.on(`data`,onData),e.on(`end`,cleanup),e.on(`error`,cleanup),e.resume()},handleRequestError=()=>new Response(null,{status:400}),handleFetchError=e=>new Response(null,{status:e instanceof Error&&(e.name===`TimeoutError`||e.constructor.name===`TimeoutError`)?504:500}),handleResponseError=(e,t)=>{let n=e instanceof Error?e:Error(`unknown error`,{cause:e});n.code===`ERR_STREAM_PREMATURE_CLOSE`?console.info(`The user aborted a request.`):(console.error(e),t.headersSent||t.writeHead(500,{"Content-Type":`text/plain`}),t.end(`Error: ${n.message}`),t.destroy(n))},flushHeaders=e=>{`flushHeaders`in e&&e.writable&&e.flushHeaders()},responseViaCache=async(e,t)=>{let[n,r,i]=e[lp],a=!1;if(!i)i={"content-type":`text/plain; charset=UTF-8`};else if(i instanceof Headers)a=i.has(`content-length`),i=buildOutgoingHttpHeaders(i);else if(Array.isArray(i)){let e=new Headers(i);a=e.has(`content-length`),i=buildOutgoingHttpHeaders(e)}else for(let e in i)if(e.length===14&&e.toLowerCase()===`content-length`){a=!0;break}a||(typeof r==`string`?i[`Content-Length`]=Buffer.byteLength(r):r instanceof Uint8Array?i[`Content-Length`]=r.byteLength:r instanceof Blob&&(i[`Content-Length`]=r.size)),t.writeHead(n,i),typeof r==`string`||r instanceof Uint8Array?t.end(r):r instanceof Blob?t.end(new Uint8Array(await r.arrayBuffer())):(flushHeaders(t),await writeFromReadableStream(r,t)?.catch(e=>handleResponseError(e,t))),t[pp]?.()},isPromise=e=>typeof e.then==`function`,responseViaResponseObject=async(e,t,n={})=>{if(isPromise(e))if(n.errorHandler)try{e=await e}catch(t){let r=await n.errorHandler(t);if(!r)return;e=r}else e=await e.catch(handleFetchError);if(lp in e)return responseViaCache(e,t);let r=buildOutgoingHttpHeaders(e.headers);if(e.body){let n=e.body.getReader(),i=[],a=!1,s;if(r[`transfer-encoding`]!==`chunked`){let e=2;for(let t=0;t<e;t++){s||=n.read();let r=await readWithoutBlocking(s).catch(e=>{console.error(e),a=!0});if(!r){if(t===1){await new Promise(e=>setTimeout(e)),e=3;continue}break}if(s=void 0,r.value&&i.push(r.value),r.done){a=!0;break}}a&&!(`content-length`in r)&&(r[`content-length`]=i.reduce((e,t)=>e+t.length,0))}t.writeHead(e.status,r),i.forEach(e=>{t.write(e)}),a?t.end():(i.length===0&&flushHeaders(t),await writeFromReadableStreamDefaultReader(n,t,s))}else r[fp]||(t.writeHead(e.status,r),t.end());t[pp]?.()},getRequestListener=(e,t={})=>{let n=t.autoCleanupIncoming??!0;return t.overrideGlobalObjects!==!1&&global.Request!==Request$1&&(Object.defineProperty(global,"Request",{value:Request$1}),Object.defineProperty(global,"Response",{value:dp})),async(r,i)=>{let a,s;try{s=newRequest(r,t.hostname);let c=!n||r.method===`GET`||r.method===`HEAD`;if(c||(r[$f]=!0,r.on(`end`,()=>{c=!0}),r instanceof Fn&&(i[pp]=()=>{c||setTimeout(()=>{c||setTimeout(()=>{drainIncoming(r)})})}),i.on(`finish`,()=>{c||drainIncoming(r)})),i.on(`close`,()=>{s[ap]&&(r.errored?s[ap].abort(r.errored.toString()):i.writableFinished||s[ap].abort(`Client connection prematurely closed.`)),c||setTimeout(()=>{c||setTimeout(()=>{drainIncoming(r)})})}),a=e(s,{incoming:r,outgoing:i}),lp in a)return responseViaCache(a,i)}catch(e){if(a)return handleResponseError(e,i);if(t.errorHandler){if(a=await t.errorHandler(s?e:toRequestError(e)),!a)return}else a=s?handleFetchError(e):handleRequestError()}try{return await responseViaResponseObject(a,i,t)}catch(e){return handleResponseError(e,i)}}},createAdaptorServer=e=>{let t=e.fetch,n=getRequestListener(t,{hostname:e.hostname,overrideGlobalObjects:e.overrideGlobalObjects,autoCleanupIncoming:e.autoCleanupIncoming});return(e.createServer||Pn)(e.serverOptions||{},n)},serve=(e,t)=>{let n=createAdaptorServer(e);return n.listen(e?.port??3e3,e.hostname,()=>{let e=n.address();t&&t(e)}),n};async function createHonoApp(e){let t=new Hono;t.use(`*`,cors({origin:`*`,allowHeaders:[`Content-Type`,`mcp-session-id`,`Last-Event-ID`,`mcp-protocol-version`],exposeHeaders:[`mcp-session-id`,`mcp-protocol-version`]})),t.get(`/health`,e=>e.json({status:`ok`}));let n=e();setMcpServerCtx(n);let r=new StreamableHTTPTransport({eventStore:new MemoryEventStore({})});return t.all(`/mcp`,async e=>(n.isConnected()||await n.connect(r),await r.handleRequest(e))),t.notFound(e=>(U.debug(`${e.req.method} ${e.req.url} not found`),e.json({jsonrpc:`2.0`,error:{code:-32e3,message:`Method not found.`},id:null},{status:404}))),t.onError((e,t)=>(U.error(s(e)),t.json({jsonrpc:`2.0`,error:{code:-32603,message:`Internal server error`},id:null},{status:500}))),t}async function startServer(e){let{factory:t,port:n}=e,r=await createHonoApp(t);return new Promise((e,t)=>{let i=serve({fetch:r.fetch,hostname:`0.0.0.0`,port:n}).prependOnceListener(`error`,t).prependOnceListener(`listening`,()=>{i.removeListener(`error`,t),e(i.unref())})})}var StreamableLikeC4MCPServer=class{services;_port;server=void 0;constructor(e,t=33335){this.services=e,this._port=t}get mcp(){throw Error(`StreamableLikeC4MCPServer has access to McpServer only during the request`)}get isStarted(){return this.server?.listening===!0}get port(){return this._port}async dispose(){await this.stop()}async start(e=this._port){if(this.server){if(this.port===e)return;await this.stop()}U.info(`Starting MCP server on port {port}`,{port:e}),this._port=e,this.server=await startServer({factory:()=>createMCPServer(this.services),port:e}),U.info(`MCP server ready at http://0.0.0.0:{port}/mcp`,{port:e})}stop(){let e=this.server;return e?(U.info(`Stopping MCP server`),this.server=void 0,setMcpServerCtx(void 0),new Promise(t=>{e.close(e=>{e?U.error(`Failed to stop MCP server`,{err:e}):U.info(`MCP server stopped`),t()})})):(U.info(`MCP server is not running, nothing to stop`),Promise.resolve())}};async function initLikeC4MCP(e){let t=u(e,{workspacePath:`.`,mcp:`stdio`,graphviz:`wasm`,watch:!0,throwIfInvalid:!1,configureLogger:!0});t.configureLogger&&(v({useStdErr:t.mcp===`stdio`,colors:i.isColorSupported&&t.mcp!==`stdio`,logLevel:gn?`debug`:`info`}),process.on(`uncaughtException`,e=>{U.error(`uncaughtException`,{err:e})}),process.on(`unhandledRejection`,e=>{U.error(`unhandledRejection`,{err:e})}));let n=j(t.workspacePath);U.info`Loading LikeC4 from workspace: ${n}`;let r=await p(n,{graphviz:t.graphviz,manualLayouts:!0,configureLogger:!1,watch:t.watch,throwIfInvalid:t.throwIfInvalid}),a=setLanguageServicesCtx(r.languageServices);return{server:t.mcp===`stdio`?new StdioLikeC4MCPServer(a):new StreamableLikeC4MCPServer(a,t.mcp.port),likec4:r}}async function startLikeC4MCP(e){let t=await initLikeC4MCP(e);return await t.server.start(),t}const mcpCmd=e=>e.command({command:`mcp [path]`,aliases:[],describe:`Start MCP server`,builder:e=>e.usage(`${i.bold(`Usage:`)} $0 mcp [path]`).positional(`path`,B).default(`path`,`.`,`current directory`).option(`stdio`,{boolean:!0,description:`use stdio transport`,conflicts:[`http`,`port`]}).option(`http`,{boolean:!0,description:`use streamable http transport (use 33335 port by default)`,conflicts:`stdio`}).option(`port`,{alias:`p`,number:!0,description:`enables http transport and sets the port`,conflicts:`stdio`}).option(`use-dot`,ls).option(`log-level`,ws).option(`verbose`,Ts).showHidden().epilog(`${i.bold(`Examples:`)}
|
|
1475
|
+
${i.green(`$0 mcp`)}
|
|
1476
|
+
${i.gray(`Start MCP with default stdio transport`)}
|
|
1477
|
+
${i.green(`$0 mcp --http ./src`)}
|
|
1478
|
+
${i.gray(`Start MCP with streamable http transport on port 33335 at ./src folder`)}
|
|
1479
|
+
${i.green(`$0 mcp -p 1234`)}
|
|
1480
|
+
${i.gray(`Start MCP with streamable http transport on port 1234`)}
|
|
1481
|
+
`),handler:async e=>{e.http||e.port?(v({colors:i.isColorSupported,logLevel:e.verbose?Es:e.logLevel}),await startHttpMcp(e.path,e.useDot,e.port)):(v({useStdErr:!0,colors:!1,logLevel:e.verbose?Es:e.logLevel}),await startStdioMcp(e.path,e.useDot))}});async function startHttpMcp(e,t,n=33335){await startLikeC4MCP({workspacePath:e,mcp:{port:n},watch:!0,configureLogger:!1,graphviz:t?`binary`:`wasm`}),boxen([i.green(`LikeC4 MCP served at:`),`
|
|
1442
1482
|
{
|
|
1443
1483
|
"mcpServers": {
|
|
1444
1484
|
"likec4": {
|
|
@@ -1447,18 +1487,18 @@ ${C.green(`$0 mcp -p 1234`)}
|
|
|
1447
1487
|
}
|
|
1448
1488
|
}
|
|
1449
1489
|
|
|
1450
|
-
${
|
|
1451
|
-
${
|
|
1490
|
+
${i.dim(`Documentation:`)}
|
|
1491
|
+
${i.underline(`https://likec4.dev/tooling/mcp/#using-extension`)}
|
|
1452
1492
|
`].join(`
|
|
1453
|
-
`))}async function startStdioMcp(e,t){await startLikeC4MCP({workspacePath:e,mcp:`stdio`,watch:!0,configureLogger:!1,graphviz:t?`binary`:`wasm`})}async function vitePreview(e){let t=await viteConfig({...e,likec4AssetsDir:``,webcomponentPrefix:void 0}),n=await
|
|
1454
|
-
if not specified search in current directory`,normalize:!0}).options({output:{alias:`o`,type:`string`,desc:`output directory from production build`,normalize:!0},base:{type:`string`,desc:`base url the app is being served from`},listen:{alias:`l`,type:`string`,desc:`ip address of the network interface to listen on`}}).coerce([`path`,`output`],
|
|
1455
|
-
${
|
|
1456
|
-
${
|
|
1457
|
-
|
|
1458
|
-
${
|
|
1459
|
-
${
|
|
1460
|
-
|
|
1461
|
-
${
|
|
1462
|
-
${
|
|
1463
|
-
`),handler:async e=>{try{var t=_usingCtx();let n=createLikeC4Logger(`c4:validate`),r=startTimer(n),
|
|
1464
|
-
`),skipValidation:!0,hidden:!0,global:!0}).group([`log-level`,`verbose`,`color`,`help`,`version`,`show-hidden`],`Globals:`).demandCommand(1,`Please run with valid command`).recommendCommands().showHelpOnFail(!0).showHidden().updateStrings({"Globals:":
|
|
1493
|
+
`))}async function startStdioMcp(e,t){await startLikeC4MCP({workspacePath:e,mcp:`stdio`,watch:!0,configureLogger:!1,graphviz:t?`binary`:`wasm`})}async function vitePreview(e){let t=await viteConfig({...e,likec4AssetsDir:``,webcomponentPrefix:void 0}),n=await getPorts({port:portNumbers(62001,62010)}),r=e?.open??!1;return await kn({...t,customLogger:t.customLogger,mode:`production`,preview:{host:e.listen??`127.0.0.1`,allowedHosts:!0,port:n,open:r}})}async function handler$1({path:e,output:t,base:n,listen:r}){printServerUrls(await vitePreview({base:n,languageServices:await p(e,{watch:!1}),outputDir:t,open:!isInsideContainer(),listen:r}))}t(handler$1,`handler`);const previewCmd=e=>e.command({command:`preview [path]`,describe:`Start local server to preview production build`,builder:e=>e.positional(`path`,{type:`string`,desc:`Directory with LikeC4 source files
|
|
1494
|
+
if not specified search in current directory`,normalize:!0}).options({output:{alias:`o`,type:`string`,desc:`output directory from production build`,normalize:!0},base:{type:`string`,desc:`base url the app is being served from`},listen:{alias:`l`,type:`string`,desc:`ip address of the network interface to listen on`}}).coerce([`path`,`output`],j).default(`path`,j(`.`),`.`).default(`listen`,`127.0.0.1`,`localhost`),handler:async e=>{await handler$1(e)}});async function handler({path:e,useDotBin:t,webcomponentPrefix:n,title:r,useHashHistory:i,enableWebcomponent:a=!0,enableHMR:s=!0,base:c,listen:l,port:u,hmrPort:f,userPublicDir:m,allowedHosts:h}){s&&(process.env.NODE_ENV=`development`);let g=await viteDev({buildWebcomponent:a,hmr:s,base:c,webcomponentPrefix:n,title:r,languageServices:await p(e,{graphviz:t?`binary`:`wasm`,watch:s}),useHashHistory:i,likec4AssetsDir:await nn(Tt(Gt(),`.likec4-assets-`)),listen:l,port:u,hmrPort:f,userPublicDir:m,allowedHosts:h});g.config.logger.clearScreen(`info`),printServerUrls(g)}const serveCmd=e=>e.command({command:`start [path]`,aliases:[`serve`,`dev`],describe:`Start local dev server to preview LikeC4 views`,builder:e=>e.positional(`path`,B).option(`base`,gs).option(`webcomponent-prefix`,ps).option(`title`,ms).option(`use-hash-history`,ds).option(`use-dot`,ls).option(`listen`,bs).option(`port`,xs).option(`hmr-port`,Ss).option(`public`,vs).option(`allowed-host`,ys).options({"react-hmr":{type:`boolean`,default:!0,describe:`Enable/Disable React HMR`},"build-webcomponent":{type:`boolean`,default:!0,describe:`Enable/Disable Webcomponent build`}}),handler:async e=>{await notifyAvailableUpdate(),setTimeout(showSupportUsMessage,5e3).unref(),await ensureReact(),await handler({path:e.path,useDotBin:e[`use-dot`],base:e.base,webcomponentPrefix:e[`webcomponent-prefix`],title:e.title,useHashHistory:e[`use-hash-history`],listen:e.listen,port:e.port,hmrPort:e[`hmr-port`],enableHMR:e[`react-hmr`],enableWebcomponent:e[`build-webcomponent`],userPublicDir:e.public,allowedHosts:e[`allowed-host`]})}});async function runSyncPlan(e,t,n,r){let a=await planSyncToLeanix(t,n,{idempotent:!0}),s=j(e,`sync-plan.json`);if(await ln(s,JSON.stringify(a,null,2)),r.info(`${i.dim(`generated`)} ${Et(process.cwd(),s)}`),a.errors.length>0){let e=`${a.errors.length} plan error(s): ${a.errors.join(`; `)}`;throw r.error(e),Error(e)}}async function runSyncApply(e,t,n,r){let a=await syncToLeanix(t.manifest,t.dryRun,n,{idempotent:!0}),s=j(e,Hs.manifest);if(await ln(s,JSON.stringify(a.manifest,null,2)),r.info(`${i.dim(`generated`)} ${Et(process.cwd(),s)} (after sync)`),a.errors.length>0){let e=`${a.errors.length} sync error(s): ${a.errors.join(`; `)}`;throw r.error(e),Error(e)}}async function runSyncLeanix(e){let t=createLikeC4Logger(`c4:sync:leanix`),n=startTimer(t),{path:r,outdir:a,project:s,useDotBin:c,dryRun:l,apply:u}=e;try{try{var f=_usingCtx();if(l&&u)throw Error(`Choose either dryRun or apply, not both`);let e=f.a(await p(r,{graphviz:c?`binary`:`wasm`,watch:!1})),{projectId:n}=ensureProject(e,s);s&&t.info(`${i.dim(`project`)} ${i.green(n)}`);let m=await e.layoutedModel(n);if(m===_t.EMPTY)throw t.error(Is),Error(Is);let h=buildBridgeArtifacts(asBridgeModel(m));await writeBridgeArtifacts(a,h,t);let g=createLeanixClientFromEnv();if((l||!u)&&(g?await runSyncPlan(a,h.dryRun,g,t):t.info(`${i.dim(`skip`)} sync-plan (set LEANIX_API_TOKEN to include plan)`)),u){if(!g)throw t.error(Ls),Error(Ls);await runSyncApply(a,h,g,t)}}catch(e){f.e=e}finally{await f.d()}}finally{n.stopAndLog()}}const _p=j(process.cwd(),`out`,`bridge`);function isSyncCmdArgs(e){return typeof e!=`object`||!e||!Object.hasOwn(e,`target`)?!1:typeof Reflect.get(e,`target`)==`string`}function syncCmd(e){return e.command({command:`sync <target> [path]`,describe:`Sync bridge artifacts (e.g. LeanIX)`,builder:e=>e.positional(`target`,{type:`string`,choices:[`leanix`],describe:`Target system (leanix)`}).positional(`path`,B).option(`outdir`,{...fs,default:_p,desc:`<dir> output directory for bridge artifacts (manifest, leanix-dry-run, report, sync-plan)`}).option(`dry-run`,{type:`boolean`,describe:`Only write artifacts and optional sync-plan; do not call LeanIX API for create/update`}).option(`apply`,{type:`boolean`,describe:`Run live sync to LeanIX (requires LEANIX_API_TOKEN)`}).conflicts(`dry-run`,`apply`).option(`project`,Cs).option(`use-dot`,ls).example(`${i.green(`$0 sync leanix --dry-run -o out/bridge`)}`,i.gray(`Write bridge artifacts and optionally sync-plan when LEANIX_API_TOKEN is set`)).example(`${i.green(`$0 sync leanix --apply -o out/bridge`)}`,i.gray(`Write artifacts then run live sync; updates manifest with LeanIX IDs`)),handler:async e=>{if(!isSyncCmdArgs(e)||e.target!==`leanix`)return;let t=e.apply??!1,n=e.dryRun??!t;await runSyncLeanix({path:e.path??`.`,outdir:e.outdir??_p,project:e.project,useDotBin:e.useDotBin??!1,dryRun:n,apply:t})}})}const validateCmd=e=>e.command({command:`validate [path]`,aliases:[],describe:`Validate syntax, semantics and layout drifts`,builder:e=>e.positional(`path`,B).options({project:Cs,file:{alias:`f`,array:!0,string:!0,description:`only report errors from these files (can be specified multiple times)`},layout:{boolean:!0,default:!0,defaultDescription:`enabled`,description:`force layout validation, or disable with --no-layout`},json:{boolean:!0,nargs:0,description:`output as JSON (structured)`}}).showHidden().epilog(`${i.bold(`Examples:`)}
|
|
1495
|
+
${i.green(`$0 validate `)}
|
|
1496
|
+
${i.gray(`Validate all in the current directory`)}
|
|
1497
|
+
|
|
1498
|
+
${i.green(`$0 validate --no-layout --json -f ./src/model.c4 -f ./src/deployment.c4 `)}
|
|
1499
|
+
${i.gray([`Validate all`,`ignore layout drifts`,`report only errors from these files`,`output as JSON`].join(`, `))}
|
|
1500
|
+
|
|
1501
|
+
${i.green(`$0 validate --project my-project /some/where`)}
|
|
1502
|
+
${i.gray(`Validate my-project in /some/where`)}
|
|
1503
|
+
`),handler:async e=>{try{var t=_usingCtx();let n=createLikeC4Logger(`c4:validate`),r=startTimer(n),a=e.json===!0,s=e.layout===!0,c=e.file?.map(e=>j(e))??null,l=t.a(await p(e.path,{watch:!1,printErrors:!a,throwIfInvalid:!1,configureLogger:a?`stderr`:!1})),u=l.getErrors().map(e=>({message:e.message,file:e.sourceFsPath,line:e.line,range:e.range})),f=[];if(s){n.debug(`running layout validation...`);try{let t=await l.diagrams(e.project);for(let n of t)n.drifts&&n.drifts.length>0&&f.push({message:`Layout drift detected on view '${n.id}'`,file:n.sourcePath?j(e.path,n.sourcePath):``,line:0,range:null})}catch(e){f.push({message:`Layout validation failed: ${e instanceof Error?e.message:String(e)}`,file:``,line:0,range:null})}}let m=[...u,...f],h=l.documentCount(),g=m.length,v=c?m.filter(e=>c.some(t=>e.file===t||e.file.endsWith(`/`+t)||e.file.endsWith(`\\`+t))):m,y=new Set(v.map(e=>e.file)),b=v.length===0;process.exitCode=+!b;let x={valid:b,errors:v,stats:{totalFiles:h,totalErrors:g,filteredFiles:c?y.size:h,filteredErrors:v.length}};if(a){console.log(JSON.stringify(x,null,2));return}for(let e of f)n.error(i.red(e.message)+(e.file?` at `+e.file:``));if(b)n.info(i.green(`✓ Valid`)+i.dim(` (${h} files)`));else{let e=c?`, ${v.length} in filtered files`:``;n.error(i.red(`✗ Invalid`)+i.dim(` (${h} files, ${g} errors${e})`))}r.stopAndLog(`validate `)}catch(e){t.e=e}finally{await t.d()}}});function applyLoggerConfig(e){let t=e??(gn?`debug`:`info`);y({reset:!0,sinks:{console:h({formatter:i.isColorSupported?f():c()})},loggers:[{category:`likec4`,sinks:[`console`],lowestLevel:t}]})}async function main(){await Ge(wn(Tn(yn)),serveCmd,buildCmd,codegenCmd,exportCmd,formatCmd,previewCmd,syncCmd,validateCmd,listIconsCmd,mcpCmd,lsp_default,checkUpdateCmd,e=>e.command({command:`completion`,describe:`Generate completion script`,handler:()=>{e.showCompletionScript()}})).scriptName(`likec4`).usage(`Usage: $0 <command>`).parserConfiguration({"greedy-arrays":!1}).version(zn).alias(`v`,`version`).alias(`h`,`help`).help(`help`).option(`log-level`,ws).option(`verbose`,Ts).option(`color`,{boolean:!0,describe:[`force color output, or disable with --no-color`,`respects 'FORCE_COLOR' and 'NO_COLOR' env variables`].join(`
|
|
1504
|
+
`),skipValidation:!0,hidden:!0,global:!0}).group([`log-level`,`verbose`,`color`,`help`,`version`,`show-hidden`],`Globals:`).demandCommand(1,`Please run with valid command`).recommendCommands().showHelpOnFail(!0).showHidden().updateStrings({"Globals:":i.bold(`Globals:`),"Options:":i.bold(`Options:`),"Positionals:":i.bold(`Arguments:`),"Commands:":i.bold(`Commands:`),"Examples:":i.bold(`Examples:`)}).wrap(qe(Cn.columns-10,{min:60,max:180})).middleware(e=>{applyLoggerConfig(e.verbose?Es:e.logLevel)}).parseAsync()}function exitWithFailure(e,t){console.error(t==null?s(e):`${t} ${s(e)}`),xn(1)}main().catch(exitWithFailure),process.on(`unhandledRejection`,e=>{exitWithFailure(e,`Unhandled rejection:`)}),process.on(`uncaughtException`,e=>{console.error(e)});export{};
|