@cartanova/qgrid-cli 2.7.0 → 2.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/bundle/dist/_virtual/_rolldown/runtime.js +20 -1
  2. package/bundle/dist/application/qgrid/qgrid.dispatcher.js +17 -6
  3. package/bundle/dist/application/qgrid/qgrid.frame.js +1 -1
  4. package/bundle/dist/application/qgrid/schema-prompt.js +240 -0
  5. package/bundle/dist/application/qgrid/tool-emulation.js +7 -5
  6. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/2020.js +112 -0
  7. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/code.js +140 -0
  8. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/index.js +676 -0
  9. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  10. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/errors.js +104 -0
  11. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/index.js +225 -0
  12. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/names.js +30 -0
  13. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/ref_error.js +20 -0
  14. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/resolve.js +135 -0
  15. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/rules.js +63 -0
  16. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/util.js +148 -0
  17. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/applicability.js +25 -0
  18. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  19. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/dataType.js +174 -0
  20. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/defaults.js +33 -0
  21. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/index.js +435 -0
  22. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/keyword.js +115 -0
  23. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/compile/validate/subschema.js +74 -0
  24. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/core.js +585 -0
  25. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/data.js +20 -0
  26. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +44 -0
  27. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.js +52 -0
  28. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.js +22 -0
  29. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.js +53 -0
  30. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.js +18 -0
  31. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.js +38 -0
  32. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.js +21 -0
  33. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.js +87 -0
  34. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/refs/json-schema-2020-12/schema.js +61 -0
  35. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/equal.js +14 -0
  36. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/ucs2length.js +27 -0
  37. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/uri.js +14 -0
  38. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/runtime/validation_error.js +18 -0
  39. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +59 -0
  40. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +98 -0
  41. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/allOf.js +31 -0
  42. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +18 -0
  43. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/contains.js +91 -0
  44. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +89 -0
  45. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +18 -0
  46. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/if.js +64 -0
  47. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/index.js +62 -0
  48. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items.js +61 -0
  49. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/items2020.js +36 -0
  50. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/not.js +33 -0
  51. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +53 -0
  52. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +63 -0
  53. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +19 -0
  54. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  55. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +43 -0
  56. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +19 -0
  57. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/code.js +132 -0
  58. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/id.js +16 -0
  59. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/index.js +24 -0
  60. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/core/ref.js +114 -0
  61. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/index.js +103 -0
  62. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/discriminator/types.js +16 -0
  63. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/draft2020.js +37 -0
  64. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +48 -0
  65. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +47 -0
  66. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/index.js +24 -0
  67. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +22 -0
  68. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +17 -0
  69. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/format.js +94 -0
  70. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/format/index.js +12 -0
  71. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/metadata.js +25 -0
  72. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/next.js +21 -0
  73. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/index.js +15 -0
  74. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +48 -0
  75. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +61 -0
  76. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/const.js +29 -0
  77. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +19 -0
  78. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/enum.js +51 -0
  79. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/index.js +50 -0
  80. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitContains.js +20 -0
  81. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitItems.js +30 -0
  82. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitLength.js +35 -0
  83. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +49 -0
  84. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +30 -0
  85. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +29 -0
  86. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/pattern.js +40 -0
  87. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/required.js +74 -0
  88. package/bundle/dist/node_modules/.pnpm/ajv@8.20.0/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +72 -0
  89. package/bundle/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +35 -0
  90. package/bundle/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/index.js +238 -0
  91. package/bundle/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js +189 -0
  92. package/bundle/dist/node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js +284 -0
  93. package/bundle/dist/node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js +80 -0
  94. package/bundle/dist/testing/schema-bench.js +0 -0
  95. package/bundle/dist/utils/providers/anthropic/fence-strip.js +83 -0
  96. package/bundle/dist/utils/providers/anthropic/stream-json-adapter.js +3 -5
  97. package/bundle/src/application/qgrid/qgrid.dispatcher.test.ts +250 -34
  98. package/bundle/src/application/qgrid/qgrid.dispatcher.ts +36 -5
  99. package/bundle/src/application/qgrid/qgrid.frame.test.ts +120 -153
  100. package/bundle/src/application/qgrid/qgrid.frame.ts +2 -0
  101. package/bundle/src/application/qgrid/schema-prompt.test.ts +166 -0
  102. package/bundle/src/application/qgrid/schema-prompt.ts +293 -0
  103. package/bundle/src/application/qgrid/tool-emulation.test.ts +36 -0
  104. package/bundle/src/application/qgrid/tool-emulation.ts +19 -7
  105. package/bundle/src/testing/schema-bench.test.ts +358 -0
  106. package/bundle/src/testing/schema-bench.ts +352 -0
  107. package/bundle/src/utils/providers/anthropic/fence-strip.test.ts +122 -0
  108. package/bundle/src/utils/providers/anthropic/fence-strip.ts +105 -0
  109. package/bundle/src/utils/providers/anthropic/stream-json-adapter.ts +2 -8
  110. package/bundle/web-dist/client/assets/{index-C24D5PiN.js → index-C0594sjh.js} +3 -3
  111. package/bundle/web-dist/client/assets/{logs-CIlZG6A3.js → logs-BotUcOEB.js} +1 -1
  112. package/bundle/web-dist/client/assets/{monit-DZFBMxKl.js → monit-kk3vnGvu.js} +1 -1
  113. package/bundle/web-dist/client/assets/{routes-C3wlSNBL.js → routes-J4bnHVfl.js} +1 -1
  114. package/bundle/web-dist/client/assets/{settings-ClRDWO-8.js → settings-CAAQSIyg.js} +1 -1
  115. package/bundle/web-dist/client/assets/{show-BP7U8yyJ.js → show-BryNvjUT.js} +1 -1
  116. package/bundle/web-dist/client/assets/{tokens-DfQeULnJ.js → tokens-DDrATjGA.js} +1 -1
  117. package/bundle/web-dist/client/assets/{use-oauth-login-flow-CY-ASCfL.js → use-oauth-login-flow-CptleCFM.js} +1 -1
  118. package/bundle/web-dist/client/index.html +1 -1
  119. package/bundle/web-dist/server/entry-server.generated.js +1 -1
  120. package/package.json +1 -1
  121. package/skills/qgrid/references/ai-sdk-provider-contract.md +20 -15
  122. package/skills/qgrid/references/anthropic-claude-code-runtime.md +31 -14
  123. package/skills/qgrid/references/decision-rationale.md +13 -3
  124. package/skills/qgrid/references/prompt-cache-and-usage.md +4 -1
  125. package/skills/qgrid/references/provider-runtime-differences.md +3 -3
  126. package/skills/qgrid/references/tool-calling-and-multiturn.md +16 -6
@@ -0,0 +1,189 @@
1
+ import { __commonJSMin } from "../../../../../../_virtual/_rolldown/runtime.js";
2
+ import { require_utils } from "./utils.js";
3
+ //#region ../../node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/schemes.js
4
+ var require_schemes = /* @__PURE__ */ __commonJSMin(((exports, module) => {
5
+ const { isUUID } = require_utils();
6
+ const URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu;
7
+ const supportedSchemeNames = [
8
+ "http",
9
+ "https",
10
+ "ws",
11
+ "wss",
12
+ "urn",
13
+ "urn:uuid"
14
+ ];
15
+ /** @typedef {supportedSchemeNames[number]} SchemeName */
16
+ /**
17
+ * @param {string} name
18
+ * @returns {name is SchemeName}
19
+ */
20
+ function isValidSchemeName(name) {
21
+ return supportedSchemeNames.indexOf(name) !== -1;
22
+ }
23
+ /**
24
+ * @callback SchemeFn
25
+ * @param {import('../types/index').URIComponent} component
26
+ * @param {import('../types/index').Options} options
27
+ * @returns {import('../types/index').URIComponent}
28
+ */
29
+ /**
30
+ * @typedef {Object} SchemeHandler
31
+ * @property {SchemeName} scheme - The scheme name.
32
+ * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.
33
+ * @property {SchemeFn} parse - Function to parse the URI component for this scheme.
34
+ * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.
35
+ * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.
36
+ * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.
37
+ * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.
38
+ */
39
+ /**
40
+ * @param {import('../types/index').URIComponent} wsComponent
41
+ * @returns {boolean}
42
+ */
43
+ function wsIsSecure(wsComponent) {
44
+ if (wsComponent.secure === true) return true;
45
+ else if (wsComponent.secure === false) return false;
46
+ else if (wsComponent.scheme) return wsComponent.scheme.length === 3 && (wsComponent.scheme[0] === "w" || wsComponent.scheme[0] === "W") && (wsComponent.scheme[1] === "s" || wsComponent.scheme[1] === "S") && (wsComponent.scheme[2] === "s" || wsComponent.scheme[2] === "S");
47
+ else return false;
48
+ }
49
+ /** @type {SchemeFn} */
50
+ function httpParse(component) {
51
+ if (!component.host) component.error = component.error || "HTTP URIs must have a host.";
52
+ return component;
53
+ }
54
+ /** @type {SchemeFn} */
55
+ function httpSerialize(component) {
56
+ const secure = String(component.scheme).toLowerCase() === "https";
57
+ if (component.port === (secure ? 443 : 80) || component.port === "") component.port = void 0;
58
+ if (!component.path) component.path = "/";
59
+ return component;
60
+ }
61
+ /** @type {SchemeFn} */
62
+ function wsParse(wsComponent) {
63
+ wsComponent.secure = wsIsSecure(wsComponent);
64
+ wsComponent.resourceName = (wsComponent.path || "/") + (wsComponent.query ? "?" + wsComponent.query : "");
65
+ wsComponent.path = void 0;
66
+ wsComponent.query = void 0;
67
+ return wsComponent;
68
+ }
69
+ /** @type {SchemeFn} */
70
+ function wsSerialize(wsComponent) {
71
+ if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === "") wsComponent.port = void 0;
72
+ if (typeof wsComponent.secure === "boolean") {
73
+ wsComponent.scheme = wsComponent.secure ? "wss" : "ws";
74
+ wsComponent.secure = void 0;
75
+ }
76
+ if (wsComponent.resourceName) {
77
+ const [path, query] = wsComponent.resourceName.split("?");
78
+ wsComponent.path = path && path !== "/" ? path : void 0;
79
+ wsComponent.query = query;
80
+ wsComponent.resourceName = void 0;
81
+ }
82
+ wsComponent.fragment = void 0;
83
+ return wsComponent;
84
+ }
85
+ /** @type {SchemeFn} */
86
+ function urnParse(urnComponent, options) {
87
+ if (!urnComponent.path) {
88
+ urnComponent.error = "URN can not be parsed";
89
+ return urnComponent;
90
+ }
91
+ const matches = urnComponent.path.match(URN_REG);
92
+ if (matches) {
93
+ const scheme = options.scheme || urnComponent.scheme || "urn";
94
+ urnComponent.nid = matches[1].toLowerCase();
95
+ urnComponent.nss = matches[2];
96
+ const schemeHandler = getSchemeHandler(`${scheme}:${options.nid || urnComponent.nid}`);
97
+ urnComponent.path = void 0;
98
+ if (schemeHandler) urnComponent = schemeHandler.parse(urnComponent, options);
99
+ } else urnComponent.error = urnComponent.error || "URN can not be parsed.";
100
+ return urnComponent;
101
+ }
102
+ /** @type {SchemeFn} */
103
+ function urnSerialize(urnComponent, options) {
104
+ if (urnComponent.nid === void 0) throw new Error("URN without nid cannot be serialized");
105
+ const scheme = options.scheme || urnComponent.scheme || "urn";
106
+ const nid = urnComponent.nid.toLowerCase();
107
+ const schemeHandler = getSchemeHandler(`${scheme}:${options.nid || nid}`);
108
+ if (schemeHandler) urnComponent = schemeHandler.serialize(urnComponent, options);
109
+ const uriComponent = urnComponent;
110
+ const nss = urnComponent.nss;
111
+ uriComponent.path = `${nid || options.nid}:${nss}`;
112
+ options.skipEscape = true;
113
+ return uriComponent;
114
+ }
115
+ /** @type {SchemeFn} */
116
+ function urnuuidParse(urnComponent, options) {
117
+ const uuidComponent = urnComponent;
118
+ uuidComponent.uuid = uuidComponent.nss;
119
+ uuidComponent.nss = void 0;
120
+ if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) uuidComponent.error = uuidComponent.error || "UUID is not valid.";
121
+ return uuidComponent;
122
+ }
123
+ /** @type {SchemeFn} */
124
+ function urnuuidSerialize(uuidComponent) {
125
+ const urnComponent = uuidComponent;
126
+ urnComponent.nss = (uuidComponent.uuid || "").toLowerCase();
127
+ return urnComponent;
128
+ }
129
+ const http = {
130
+ scheme: "http",
131
+ domainHost: true,
132
+ parse: httpParse,
133
+ serialize: httpSerialize
134
+ };
135
+ const https = {
136
+ scheme: "https",
137
+ domainHost: http.domainHost,
138
+ parse: httpParse,
139
+ serialize: httpSerialize
140
+ };
141
+ const ws = {
142
+ scheme: "ws",
143
+ domainHost: true,
144
+ parse: wsParse,
145
+ serialize: wsSerialize
146
+ };
147
+ const SCHEMES = {
148
+ http,
149
+ https,
150
+ ws,
151
+ wss: {
152
+ scheme: "wss",
153
+ domainHost: ws.domainHost,
154
+ parse: ws.parse,
155
+ serialize: ws.serialize
156
+ },
157
+ urn: {
158
+ scheme: "urn",
159
+ parse: urnParse,
160
+ serialize: urnSerialize,
161
+ skipNormalize: true
162
+ },
163
+ "urn:uuid": {
164
+ scheme: "urn:uuid",
165
+ parse: urnuuidParse,
166
+ serialize: urnuuidSerialize,
167
+ skipNormalize: true
168
+ }
169
+ };
170
+ Object.setPrototypeOf(SCHEMES, null);
171
+ /**
172
+ * @param {string|undefined} scheme
173
+ * @returns {SchemeHandler|undefined}
174
+ */
175
+ function getSchemeHandler(scheme) {
176
+ return scheme && (SCHEMES[scheme] || SCHEMES[scheme.toLowerCase()]) || void 0;
177
+ }
178
+ module.exports = {
179
+ wsIsSecure,
180
+ SCHEMES,
181
+ isValidSchemeName,
182
+ getSchemeHandler
183
+ };
184
+ }));
185
+ //#endregion
186
+ export default require_schemes();
187
+ export { require_schemes };
188
+
189
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1lcy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vZmFzdC11cmlAMy4xLjAvbm9kZV9tb2R1bGVzL2Zhc3QtdXJpL2xpYi9zY2hlbWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG5jb25zdCB7IGlzVVVJRCB9ID0gcmVxdWlyZSgnLi91dGlscycpXG5jb25zdCBVUk5fUkVHID0gLyhbXFxkYS16XVtcXGRcXC1hLXpdezAsMzF9KTooKD86W1xcdyEkJygpKissXFwtLjo7PUBdfCVbXFxkYS1mXXsyfSkrKS9pdVxuXG5jb25zdCBzdXBwb3J0ZWRTY2hlbWVOYW1lcyA9IC8qKiBAdHlwZSB7Y29uc3R9ICovIChbJ2h0dHAnLCAnaHR0cHMnLCAnd3MnLFxuICAnd3NzJywgJ3VybicsICd1cm46dXVpZCddKVxuXG4vKiogQHR5cGVkZWYge3N1cHBvcnRlZFNjaGVtZU5hbWVzW251bWJlcl19IFNjaGVtZU5hbWUgKi9cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMge25hbWUgaXMgU2NoZW1lTmFtZX1cbiAqL1xuZnVuY3Rpb24gaXNWYWxpZFNjaGVtZU5hbWUgKG5hbWUpIHtcbiAgcmV0dXJuIHN1cHBvcnRlZFNjaGVtZU5hbWVzLmluZGV4T2YoLyoqIEB0eXBlIHsqfSAqLyAobmFtZSkpICE9PSAtMVxufVxuXG4vKipcbiAqIEBjYWxsYmFjayBTY2hlbWVGblxuICogQHBhcmFtIHtpbXBvcnQoJy4uL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50fSBjb21wb25lbnRcbiAqIEBwYXJhbSB7aW1wb3J0KCcuLi90eXBlcy9pbmRleCcpLk9wdGlvbnN9IG9wdGlvbnNcbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4uL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50fVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2NoZW1lSGFuZGxlclxuICogQHByb3BlcnR5IHtTY2hlbWVOYW1lfSBzY2hlbWUgLSBUaGUgc2NoZW1lIG5hbWUuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtkb21haW5Ib3N0XSAtIEluZGljYXRlcyBpZiB0aGUgc2NoZW1lIHN1cHBvcnRzIGRvbWFpbiBob3N0cy5cbiAqIEBwcm9wZXJ0eSB7U2NoZW1lRm59IHBhcnNlIC0gRnVuY3Rpb24gdG8gcGFyc2UgdGhlIFVSSSBjb21wb25lbnQgZm9yIHRoaXMgc2NoZW1lLlxuICogQHByb3BlcnR5IHtTY2hlbWVGbn0gc2VyaWFsaXplIC0gRnVuY3Rpb24gdG8gc2VyaWFsaXplIHRoZSBVUkkgY29tcG9uZW50IGZvciB0aGlzIHNjaGVtZS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3NraXBOb3JtYWxpemVdIC0gSW5kaWNhdGVzIGlmIG5vcm1hbGl6YXRpb24gc2hvdWxkIGJlIHNraXBwZWQgZm9yIHRoaXMgc2NoZW1lLlxuICogQHByb3BlcnR5IHtib29sZWFufSBbYWJzb2x1dGVQYXRoXSAtIEluZGljYXRlcyBpZiB0aGUgc2NoZW1lIHVzZXMgYWJzb2x1dGUgcGF0aHMuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFt1bmljb2RlU3VwcG9ydF0gLSBJbmRpY2F0ZXMgaWYgdGhlIHNjaGVtZSBzdXBwb3J0cyBVbmljb2RlLlxuICovXG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4uL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50fSB3c0NvbXBvbmVudFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIHdzSXNTZWN1cmUgKHdzQ29tcG9uZW50KSB7XG4gIGlmICh3c0NvbXBvbmVudC5zZWN1cmUgPT09IHRydWUpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGVsc2UgaWYgKHdzQ29tcG9uZW50LnNlY3VyZSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIGlmICh3c0NvbXBvbmVudC5zY2hlbWUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgd3NDb21wb25lbnQuc2NoZW1lLmxlbmd0aCA9PT0gMyAmJlxuICAgICAgKHdzQ29tcG9uZW50LnNjaGVtZVswXSA9PT0gJ3cnIHx8IHdzQ29tcG9uZW50LnNjaGVtZVswXSA9PT0gJ1cnKSAmJlxuICAgICAgKHdzQ29tcG9uZW50LnNjaGVtZVsxXSA9PT0gJ3MnIHx8IHdzQ29tcG9uZW50LnNjaGVtZVsxXSA9PT0gJ1MnKSAmJlxuICAgICAgKHdzQ29tcG9uZW50LnNjaGVtZVsyXSA9PT0gJ3MnIHx8IHdzQ29tcG9uZW50LnNjaGVtZVsyXSA9PT0gJ1MnKVxuICAgIClcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gaHR0cFBhcnNlIChjb21wb25lbnQpIHtcbiAgaWYgKCFjb21wb25lbnQuaG9zdCkge1xuICAgIGNvbXBvbmVudC5lcnJvciA9IGNvbXBvbmVudC5lcnJvciB8fCAnSFRUUCBVUklzIG11c3QgaGF2ZSBhIGhvc3QuJ1xuICB9XG5cbiAgcmV0dXJuIGNvbXBvbmVudFxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gaHR0cFNlcmlhbGl6ZSAoY29tcG9uZW50KSB7XG4gIGNvbnN0IHNlY3VyZSA9IFN0cmluZyhjb21wb25lbnQuc2NoZW1lKS50b0xvd2VyQ2FzZSgpID09PSAnaHR0cHMnXG5cbiAgLy8gbm9ybWFsaXplIHRoZSBkZWZhdWx0IHBvcnRcbiAgaWYgKGNvbXBvbmVudC5wb3J0ID09PSAoc2VjdXJlID8gNDQzIDogODApIHx8IGNvbXBvbmVudC5wb3J0ID09PSAnJykge1xuICAgIGNvbXBvbmVudC5wb3J0ID0gdW5kZWZpbmVkXG4gIH1cblxuICAvLyBub3JtYWxpemUgdGhlIGVtcHR5IHBhdGhcbiAgaWYgKCFjb21wb25lbnQucGF0aCkge1xuICAgIGNvbXBvbmVudC5wYXRoID0gJy8nXG4gIH1cblxuICAvLyBOT1RFOiBXZSBkbyBub3QgcGFyc2UgcXVlcnkgc3RyaW5ncyBmb3IgSFRUUCBVUklzXG4gIC8vIGFzIFdXVyBGb3JtIFVybCBFbmNvZGVkIHF1ZXJ5IHN0cmluZ3MgYXJlIHBhcnQgb2YgdGhlIEhUTUw0KyBzcGVjLFxuICAvLyBhbmQgbm90IHRoZSBIVFRQIHNwZWMuXG5cbiAgcmV0dXJuIGNvbXBvbmVudFxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gd3NQYXJzZSAod3NDb21wb25lbnQpIHtcbi8vIGluZGljYXRlIGlmIHRoZSBzZWN1cmUgZmxhZyBpcyBzZXRcbiAgd3NDb21wb25lbnQuc2VjdXJlID0gd3NJc1NlY3VyZSh3c0NvbXBvbmVudClcblxuICAvLyBjb25zdHJ1Y3QgcmVzb3VjZSBuYW1lXG4gIHdzQ29tcG9uZW50LnJlc291cmNlTmFtZSA9ICh3c0NvbXBvbmVudC5wYXRoIHx8ICcvJykgKyAod3NDb21wb25lbnQucXVlcnkgPyAnPycgKyB3c0NvbXBvbmVudC5xdWVyeSA6ICcnKVxuICB3c0NvbXBvbmVudC5wYXRoID0gdW5kZWZpbmVkXG4gIHdzQ29tcG9uZW50LnF1ZXJ5ID0gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIHdzQ29tcG9uZW50XG59XG5cbi8qKiBAdHlwZSB7U2NoZW1lRm59ICovXG5mdW5jdGlvbiB3c1NlcmlhbGl6ZSAod3NDb21wb25lbnQpIHtcbi8vIG5vcm1hbGl6ZSB0aGUgZGVmYXVsdCBwb3J0XG4gIGlmICh3c0NvbXBvbmVudC5wb3J0ID09PSAod3NJc1NlY3VyZSh3c0NvbXBvbmVudCkgPyA0NDMgOiA4MCkgfHwgd3NDb21wb25lbnQucG9ydCA9PT0gJycpIHtcbiAgICB3c0NvbXBvbmVudC5wb3J0ID0gdW5kZWZpbmVkXG4gIH1cblxuICAvLyBlbnN1cmUgc2NoZW1lIG1hdGNoZXMgc2VjdXJlIGZsYWdcbiAgaWYgKHR5cGVvZiB3c0NvbXBvbmVudC5zZWN1cmUgPT09ICdib29sZWFuJykge1xuICAgIHdzQ29tcG9uZW50LnNjaGVtZSA9ICh3c0NvbXBvbmVudC5zZWN1cmUgPyAnd3NzJyA6ICd3cycpXG4gICAgd3NDb21wb25lbnQuc2VjdXJlID0gdW5kZWZpbmVkXG4gIH1cblxuICAvLyByZWNvbnN0cnVjdCBwYXRoIGZyb20gcmVzb3VyY2UgbmFtZVxuICBpZiAod3NDb21wb25lbnQucmVzb3VyY2VOYW1lKSB7XG4gICAgY29uc3QgW3BhdGgsIHF1ZXJ5XSA9IHdzQ29tcG9uZW50LnJlc291cmNlTmFtZS5zcGxpdCgnPycpXG4gICAgd3NDb21wb25lbnQucGF0aCA9IChwYXRoICYmIHBhdGggIT09ICcvJyA/IHBhdGggOiB1bmRlZmluZWQpXG4gICAgd3NDb21wb25lbnQucXVlcnkgPSBxdWVyeVxuICAgIHdzQ29tcG9uZW50LnJlc291cmNlTmFtZSA9IHVuZGVmaW5lZFxuICB9XG5cbiAgLy8gZm9yYmlkIGZyYWdtZW50IGNvbXBvbmVudFxuICB3c0NvbXBvbmVudC5mcmFnbWVudCA9IHVuZGVmaW5lZFxuXG4gIHJldHVybiB3c0NvbXBvbmVudFxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gdXJuUGFyc2UgKHVybkNvbXBvbmVudCwgb3B0aW9ucykge1xuICBpZiAoIXVybkNvbXBvbmVudC5wYXRoKSB7XG4gICAgdXJuQ29tcG9uZW50LmVycm9yID0gJ1VSTiBjYW4gbm90IGJlIHBhcnNlZCdcbiAgICByZXR1cm4gdXJuQ29tcG9uZW50XG4gIH1cbiAgY29uc3QgbWF0Y2hlcyA9IHVybkNvbXBvbmVudC5wYXRoLm1hdGNoKFVSTl9SRUcpXG4gIGlmIChtYXRjaGVzKSB7XG4gICAgY29uc3Qgc2NoZW1lID0gb3B0aW9ucy5zY2hlbWUgfHwgdXJuQ29tcG9uZW50LnNjaGVtZSB8fCAndXJuJ1xuICAgIHVybkNvbXBvbmVudC5uaWQgPSBtYXRjaGVzWzFdLnRvTG93ZXJDYXNlKClcbiAgICB1cm5Db21wb25lbnQubnNzID0gbWF0Y2hlc1syXVxuICAgIGNvbnN0IHVyblNjaGVtZSA9IGAke3NjaGVtZX06JHtvcHRpb25zLm5pZCB8fCB1cm5Db21wb25lbnQubmlkfWBcbiAgICBjb25zdCBzY2hlbWVIYW5kbGVyID0gZ2V0U2NoZW1lSGFuZGxlcih1cm5TY2hlbWUpXG4gICAgdXJuQ29tcG9uZW50LnBhdGggPSB1bmRlZmluZWRcblxuICAgIGlmIChzY2hlbWVIYW5kbGVyKSB7XG4gICAgICB1cm5Db21wb25lbnQgPSBzY2hlbWVIYW5kbGVyLnBhcnNlKHVybkNvbXBvbmVudCwgb3B0aW9ucylcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdXJuQ29tcG9uZW50LmVycm9yID0gdXJuQ29tcG9uZW50LmVycm9yIHx8ICdVUk4gY2FuIG5vdCBiZSBwYXJzZWQuJ1xuICB9XG5cbiAgcmV0dXJuIHVybkNvbXBvbmVudFxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gdXJuU2VyaWFsaXplICh1cm5Db21wb25lbnQsIG9wdGlvbnMpIHtcbiAgaWYgKHVybkNvbXBvbmVudC5uaWQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVVJOIHdpdGhvdXQgbmlkIGNhbm5vdCBiZSBzZXJpYWxpemVkJylcbiAgfVxuICBjb25zdCBzY2hlbWUgPSBvcHRpb25zLnNjaGVtZSB8fCB1cm5Db21wb25lbnQuc2NoZW1lIHx8ICd1cm4nXG4gIGNvbnN0IG5pZCA9IHVybkNvbXBvbmVudC5uaWQudG9Mb3dlckNhc2UoKVxuICBjb25zdCB1cm5TY2hlbWUgPSBgJHtzY2hlbWV9OiR7b3B0aW9ucy5uaWQgfHwgbmlkfWBcbiAgY29uc3Qgc2NoZW1lSGFuZGxlciA9IGdldFNjaGVtZUhhbmRsZXIodXJuU2NoZW1lKVxuXG4gIGlmIChzY2hlbWVIYW5kbGVyKSB7XG4gICAgdXJuQ29tcG9uZW50ID0gc2NoZW1lSGFuZGxlci5zZXJpYWxpemUodXJuQ29tcG9uZW50LCBvcHRpb25zKVxuICB9XG5cbiAgY29uc3QgdXJpQ29tcG9uZW50ID0gdXJuQ29tcG9uZW50XG4gIGNvbnN0IG5zcyA9IHVybkNvbXBvbmVudC5uc3NcbiAgdXJpQ29tcG9uZW50LnBhdGggPSBgJHtuaWQgfHwgb3B0aW9ucy5uaWR9OiR7bnNzfWBcblxuICBvcHRpb25zLnNraXBFc2NhcGUgPSB0cnVlXG4gIHJldHVybiB1cmlDb21wb25lbnRcbn1cblxuLyoqIEB0eXBlIHtTY2hlbWVGbn0gKi9cbmZ1bmN0aW9uIHVybnV1aWRQYXJzZSAodXJuQ29tcG9uZW50LCBvcHRpb25zKSB7XG4gIGNvbnN0IHV1aWRDb21wb25lbnQgPSB1cm5Db21wb25lbnRcbiAgdXVpZENvbXBvbmVudC51dWlkID0gdXVpZENvbXBvbmVudC5uc3NcbiAgdXVpZENvbXBvbmVudC5uc3MgPSB1bmRlZmluZWRcblxuICBpZiAoIW9wdGlvbnMudG9sZXJhbnQgJiYgKCF1dWlkQ29tcG9uZW50LnV1aWQgfHwgIWlzVVVJRCh1dWlkQ29tcG9uZW50LnV1aWQpKSkge1xuICAgIHV1aWRDb21wb25lbnQuZXJyb3IgPSB1dWlkQ29tcG9uZW50LmVycm9yIHx8ICdVVUlEIGlzIG5vdCB2YWxpZC4nXG4gIH1cblxuICByZXR1cm4gdXVpZENvbXBvbmVudFxufVxuXG4vKiogQHR5cGUge1NjaGVtZUZufSAqL1xuZnVuY3Rpb24gdXJudXVpZFNlcmlhbGl6ZSAodXVpZENvbXBvbmVudCkge1xuICBjb25zdCB1cm5Db21wb25lbnQgPSB1dWlkQ29tcG9uZW50XG4gIC8vIG5vcm1hbGl6ZSBVVUlEXG4gIHVybkNvbXBvbmVudC5uc3MgPSAodXVpZENvbXBvbmVudC51dWlkIHx8ICcnKS50b0xvd2VyQ2FzZSgpXG4gIHJldHVybiB1cm5Db21wb25lbnRcbn1cblxuY29uc3QgaHR0cCA9IC8qKiBAdHlwZSB7U2NoZW1lSGFuZGxlcn0gKi8gKHtcbiAgc2NoZW1lOiAnaHR0cCcsXG4gIGRvbWFpbkhvc3Q6IHRydWUsXG4gIHBhcnNlOiBodHRwUGFyc2UsXG4gIHNlcmlhbGl6ZTogaHR0cFNlcmlhbGl6ZVxufSlcblxuY29uc3QgaHR0cHMgPSAvKiogQHR5cGUge1NjaGVtZUhhbmRsZXJ9ICovICh7XG4gIHNjaGVtZTogJ2h0dHBzJyxcbiAgZG9tYWluSG9zdDogaHR0cC5kb21haW5Ib3N0LFxuICBwYXJzZTogaHR0cFBhcnNlLFxuICBzZXJpYWxpemU6IGh0dHBTZXJpYWxpemVcbn0pXG5cbmNvbnN0IHdzID0gLyoqIEB0eXBlIHtTY2hlbWVIYW5kbGVyfSAqLyAoe1xuICBzY2hlbWU6ICd3cycsXG4gIGRvbWFpbkhvc3Q6IHRydWUsXG4gIHBhcnNlOiB3c1BhcnNlLFxuICBzZXJpYWxpemU6IHdzU2VyaWFsaXplXG59KVxuXG5jb25zdCB3c3MgPSAvKiogQHR5cGUge1NjaGVtZUhhbmRsZXJ9ICovICh7XG4gIHNjaGVtZTogJ3dzcycsXG4gIGRvbWFpbkhvc3Q6IHdzLmRvbWFpbkhvc3QsXG4gIHBhcnNlOiB3cy5wYXJzZSxcbiAgc2VyaWFsaXplOiB3cy5zZXJpYWxpemVcbn0pXG5cbmNvbnN0IHVybiA9IC8qKiBAdHlwZSB7U2NoZW1lSGFuZGxlcn0gKi8gKHtcbiAgc2NoZW1lOiAndXJuJyxcbiAgcGFyc2U6IHVyblBhcnNlLFxuICBzZXJpYWxpemU6IHVyblNlcmlhbGl6ZSxcbiAgc2tpcE5vcm1hbGl6ZTogdHJ1ZVxufSlcblxuY29uc3QgdXJudXVpZCA9IC8qKiBAdHlwZSB7U2NoZW1lSGFuZGxlcn0gKi8gKHtcbiAgc2NoZW1lOiAndXJuOnV1aWQnLFxuICBwYXJzZTogdXJudXVpZFBhcnNlLFxuICBzZXJpYWxpemU6IHVybnV1aWRTZXJpYWxpemUsXG4gIHNraXBOb3JtYWxpemU6IHRydWVcbn0pXG5cbmNvbnN0IFNDSEVNRVMgPSAvKiogQHR5cGUge1JlY29yZDxTY2hlbWVOYW1lLCBTY2hlbWVIYW5kbGVyPn0gKi8gKHtcbiAgaHR0cCxcbiAgaHR0cHMsXG4gIHdzLFxuICB3c3MsXG4gIHVybixcbiAgJ3Vybjp1dWlkJzogdXJudXVpZFxufSlcblxuT2JqZWN0LnNldFByb3RvdHlwZU9mKFNDSEVNRVMsIG51bGwpXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSBzY2hlbWVcbiAqIEByZXR1cm5zIHtTY2hlbWVIYW5kbGVyfHVuZGVmaW5lZH1cbiAqL1xuZnVuY3Rpb24gZ2V0U2NoZW1lSGFuZGxlciAoc2NoZW1lKSB7XG4gIHJldHVybiAoXG4gICAgc2NoZW1lICYmIChcbiAgICAgIFNDSEVNRVNbLyoqIEB0eXBlIHtTY2hlbWVOYW1lfSAqLyAoc2NoZW1lKV0gfHxcbiAgICAgIFNDSEVNRVNbLyoqIEB0eXBlIHtTY2hlbWVOYW1lfSAqLyhzY2hlbWUudG9Mb3dlckNhc2UoKSldKVxuICApIHx8XG4gICAgdW5kZWZpbmVkXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB3c0lzU2VjdXJlLFxuICBTQ0hFTUVTLFxuICBpc1ZhbGlkU2NoZW1lTmFtZSxcbiAgZ2V0U2NoZW1lSGFuZGxlcixcbn1cbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiOzs7O0NBRUEsTUFBTSxFQUFFLFdBQUEsY0FBQTtDQUNSLE1BQU0sVUFBVTtDQUVoQixNQUFNLHVCQUE2QztFQUFDO0VBQVE7RUFBUztFQUNuRTtFQUFPO0VBQU87Q0FBVTs7Ozs7O0NBUTFCLFNBQVMsa0JBQW1CLE1BQU07RUFDaEMsT0FBTyxxQkFBcUIsUUFBMEIsSUFBSyxNQUFNO0NBQ25FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0F3QkEsU0FBUyxXQUFZLGFBQWE7RUFDaEMsSUFBSSxZQUFZLFdBQVcsTUFDekIsT0FBTztPQUNGLElBQUksWUFBWSxXQUFXLE9BQ2hDLE9BQU87T0FDRixJQUFJLFlBQVksUUFDckIsT0FDRSxZQUFZLE9BQU8sV0FBVyxNQUM3QixZQUFZLE9BQU8sT0FBTyxPQUFPLFlBQVksT0FBTyxPQUFPLFNBQzNELFlBQVksT0FBTyxPQUFPLE9BQU8sWUFBWSxPQUFPLE9BQU8sU0FDM0QsWUFBWSxPQUFPLE9BQU8sT0FBTyxZQUFZLE9BQU8sT0FBTztPQUc5RCxPQUFPO0NBRVg7O0NBR0EsU0FBUyxVQUFXLFdBQVc7RUFDN0IsSUFBSSxDQUFDLFVBQVUsTUFDYixVQUFVLFFBQVEsVUFBVSxTQUFTO0VBR3ZDLE9BQU87Q0FDVDs7Q0FHQSxTQUFTLGNBQWUsV0FBVztFQUNqQyxNQUFNLFNBQVMsT0FBTyxVQUFVLE1BQU0sQ0FBQyxDQUFDLFlBQVksTUFBTTtFQUcxRCxJQUFJLFVBQVUsVUFBVSxTQUFTLE1BQU0sT0FBTyxVQUFVLFNBQVMsSUFDL0QsVUFBVSxPQUFPO0VBSW5CLElBQUksQ0FBQyxVQUFVLE1BQ2IsVUFBVSxPQUFPO0VBT25CLE9BQU87Q0FDVDs7Q0FHQSxTQUFTLFFBQVMsYUFBYTtFQUU3QixZQUFZLFNBQVMsV0FBVyxXQUFXO0VBRzNDLFlBQVksZ0JBQWdCLFlBQVksUUFBUSxRQUFRLFlBQVksUUFBUSxNQUFNLFlBQVksUUFBUTtFQUN0RyxZQUFZLE9BQU87RUFDbkIsWUFBWSxRQUFRO0VBRXBCLE9BQU87Q0FDVDs7Q0FHQSxTQUFTLFlBQWEsYUFBYTtFQUVqQyxJQUFJLFlBQVksVUFBVSxXQUFXLFdBQVcsSUFBSSxNQUFNLE9BQU8sWUFBWSxTQUFTLElBQ3BGLFlBQVksT0FBTztFQUlyQixJQUFJLE9BQU8sWUFBWSxXQUFXLFdBQVc7R0FDM0MsWUFBWSxTQUFVLFlBQVksU0FBUyxRQUFRO0dBQ25ELFlBQVksU0FBUztFQUN2QjtFQUdBLElBQUksWUFBWSxjQUFjO0dBQzVCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsWUFBWSxhQUFhLE1BQU0sR0FBRztHQUN4RCxZQUFZLE9BQVEsUUFBUSxTQUFTLE1BQU0sT0FBTztHQUNsRCxZQUFZLFFBQVE7R0FDcEIsWUFBWSxlQUFlO0VBQzdCO0VBR0EsWUFBWSxXQUFXO0VBRXZCLE9BQU87Q0FDVDs7Q0FHQSxTQUFTLFNBQVUsY0FBYyxTQUFTO0VBQ3hDLElBQUksQ0FBQyxhQUFhLE1BQU07R0FDdEIsYUFBYSxRQUFRO0dBQ3JCLE9BQU87RUFDVDtFQUNBLE1BQU0sVUFBVSxhQUFhLEtBQUssTUFBTSxPQUFPO0VBQy9DLElBQUksU0FBUztHQUNYLE1BQU0sU0FBUyxRQUFRLFVBQVUsYUFBYSxVQUFVO0dBQ3hELGFBQWEsTUFBTSxRQUFRLEVBQUUsQ0FBQyxZQUFZO0dBQzFDLGFBQWEsTUFBTSxRQUFRO0dBRTNCLE1BQU0sZ0JBQWdCLGlCQUFpQixHQURsQixPQUFPLEdBQUcsUUFBUSxPQUFPLGFBQWEsS0FDWDtHQUNoRCxhQUFhLE9BQU87R0FFcEIsSUFBSSxlQUNGLGVBQWUsY0FBYyxNQUFNLGNBQWMsT0FBTztFQUU1RCxPQUNFLGFBQWEsUUFBUSxhQUFhLFNBQVM7RUFHN0MsT0FBTztDQUNUOztDQUdBLFNBQVMsYUFBYyxjQUFjLFNBQVM7RUFDNUMsSUFBSSxhQUFhLFFBQVEsUUFDdkIsTUFBTSxJQUFJLE1BQU0sc0NBQXNDO0VBRXhELE1BQU0sU0FBUyxRQUFRLFVBQVUsYUFBYSxVQUFVO0VBQ3hELE1BQU0sTUFBTSxhQUFhLElBQUksWUFBWTtFQUV6QyxNQUFNLGdCQUFnQixpQkFBaUIsR0FEbEIsT0FBTyxHQUFHLFFBQVEsT0FBTyxLQUNFO0VBRWhELElBQUksZUFDRixlQUFlLGNBQWMsVUFBVSxjQUFjLE9BQU87RUFHOUQsTUFBTSxlQUFlO0VBQ3JCLE1BQU0sTUFBTSxhQUFhO0VBQ3pCLGFBQWEsT0FBTyxHQUFHLE9BQU8sUUFBUSxJQUFJLEdBQUc7RUFFN0MsUUFBUSxhQUFhO0VBQ3JCLE9BQU87Q0FDVDs7Q0FHQSxTQUFTLGFBQWMsY0FBYyxTQUFTO0VBQzVDLE1BQU0sZ0JBQWdCO0VBQ3RCLGNBQWMsT0FBTyxjQUFjO0VBQ25DLGNBQWMsTUFBTTtFQUVwQixJQUFJLENBQUMsUUFBUSxhQUFhLENBQUMsY0FBYyxRQUFRLENBQUMsT0FBTyxjQUFjLElBQUksSUFDekUsY0FBYyxRQUFRLGNBQWMsU0FBUztFQUcvQyxPQUFPO0NBQ1Q7O0NBR0EsU0FBUyxpQkFBa0IsZUFBZTtFQUN4QyxNQUFNLGVBQWU7RUFFckIsYUFBYSxPQUFPLGNBQWMsUUFBUSxHQUFBLENBQUksWUFBWTtFQUMxRCxPQUFPO0NBQ1Q7Q0FFQSxNQUFNLE9BQXFDO0VBQ3pDLFFBQVE7RUFDUixZQUFZO0VBQ1osT0FBTztFQUNQLFdBQVc7Q0FDYjtDQUVBLE1BQU0sUUFBc0M7RUFDMUMsUUFBUTtFQUNSLFlBQVksS0FBSztFQUNqQixPQUFPO0VBQ1AsV0FBVztDQUNiO0NBRUEsTUFBTSxLQUFtQztFQUN2QyxRQUFRO0VBQ1IsWUFBWTtFQUNaLE9BQU87RUFDUCxXQUFXO0NBQ2I7Q0F1QkEsTUFBTSxVQUE0RDtFQUNoRTtFQUNBO0VBQ0E7RUFDQTtHQXhCQSxRQUFRO0dBQ1IsWUFBWSxHQUFHO0dBQ2YsT0FBTyxHQUFHO0dBQ1YsV0FBVyxHQUFHO0VBcUJkO0VBQ0E7R0FsQkEsUUFBUTtHQUNSLE9BQU87R0FDUCxXQUFXO0dBQ1gsZUFBZTtFQWVmO0VBQ0EsWUFBWTtHQVpaLFFBQVE7R0FDUixPQUFPO0dBQ1AsV0FBVztHQUNYLGVBQWU7RUFTSDtDQUNkO0NBRUEsT0FBTyxlQUFlLFNBQVMsSUFBSTs7Ozs7Q0FNbkMsU0FBUyxpQkFBa0IsUUFBUTtFQUNqQyxPQUNFLFdBQ0UsUUFBbUMsV0FDbkMsUUFBa0MsT0FBTyxZQUFZLE9BRXZEO0NBQ0o7Q0FFQSxPQUFPLFVBQVU7RUFDZjtFQUNBO0VBQ0E7RUFDQTtDQUNGIn0=
@@ -0,0 +1,284 @@
1
+ import { __commonJSMin } from "../../../../../../_virtual/_rolldown/runtime.js";
2
+ //#region ../../node_modules/.pnpm/fast-uri@3.1.0/node_modules/fast-uri/lib/utils.js
3
+ var require_utils = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4
+ /** @type {(value: string) => boolean} */
5
+ const isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu);
6
+ /** @type {(value: string) => boolean} */
7
+ const isIPv4 = 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);
8
+ /**
9
+ * @param {Array<string>} input
10
+ * @returns {string}
11
+ */
12
+ function stringArrayToHexStripped(input) {
13
+ let acc = "";
14
+ let code = 0;
15
+ let i = 0;
16
+ for (i = 0; i < input.length; i++) {
17
+ code = input[i].charCodeAt(0);
18
+ if (code === 48) continue;
19
+ if (!(code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102)) return "";
20
+ acc += input[i];
21
+ break;
22
+ }
23
+ for (i += 1; i < input.length; i++) {
24
+ code = input[i].charCodeAt(0);
25
+ if (!(code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102)) return "";
26
+ acc += input[i];
27
+ }
28
+ return acc;
29
+ }
30
+ /**
31
+ * @typedef {Object} GetIPV6Result
32
+ * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.
33
+ * @property {string} address - The parsed IPv6 address.
34
+ * @property {string} [zone] - The zone identifier, if present.
35
+ */
36
+ /**
37
+ * @param {string} value
38
+ * @returns {boolean}
39
+ */
40
+ const nonSimpleDomain = RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);
41
+ /**
42
+ * @param {Array<string>} buffer
43
+ * @returns {boolean}
44
+ */
45
+ function consumeIsZone(buffer) {
46
+ buffer.length = 0;
47
+ return true;
48
+ }
49
+ /**
50
+ * @param {Array<string>} buffer
51
+ * @param {Array<string>} address
52
+ * @param {GetIPV6Result} output
53
+ * @returns {boolean}
54
+ */
55
+ function consumeHextets(buffer, address, output) {
56
+ if (buffer.length) {
57
+ const hex = stringArrayToHexStripped(buffer);
58
+ if (hex !== "") address.push(hex);
59
+ else {
60
+ output.error = true;
61
+ return false;
62
+ }
63
+ buffer.length = 0;
64
+ }
65
+ return true;
66
+ }
67
+ /**
68
+ * @param {string} input
69
+ * @returns {GetIPV6Result}
70
+ */
71
+ function getIPV6(input) {
72
+ let tokenCount = 0;
73
+ const output = {
74
+ error: false,
75
+ address: "",
76
+ zone: ""
77
+ };
78
+ /** @type {Array<string>} */
79
+ const address = [];
80
+ /** @type {Array<string>} */
81
+ const buffer = [];
82
+ let endipv6Encountered = false;
83
+ let endIpv6 = false;
84
+ let consume = consumeHextets;
85
+ for (let i = 0; i < input.length; i++) {
86
+ const cursor = input[i];
87
+ if (cursor === "[" || cursor === "]") continue;
88
+ if (cursor === ":") {
89
+ if (endipv6Encountered === true) endIpv6 = true;
90
+ if (!consume(buffer, address, output)) break;
91
+ if (++tokenCount > 7) {
92
+ output.error = true;
93
+ break;
94
+ }
95
+ if (i > 0 && input[i - 1] === ":") endipv6Encountered = true;
96
+ address.push(":");
97
+ continue;
98
+ } else if (cursor === "%") {
99
+ if (!consume(buffer, address, output)) break;
100
+ consume = consumeIsZone;
101
+ } else {
102
+ buffer.push(cursor);
103
+ continue;
104
+ }
105
+ }
106
+ if (buffer.length) if (consume === consumeIsZone) output.zone = buffer.join("");
107
+ else if (endIpv6) address.push(buffer.join(""));
108
+ else address.push(stringArrayToHexStripped(buffer));
109
+ output.address = address.join("");
110
+ return output;
111
+ }
112
+ /**
113
+ * @typedef {Object} NormalizeIPv6Result
114
+ * @property {string} host - The normalized host.
115
+ * @property {string} [escapedHost] - The escaped host.
116
+ * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.
117
+ */
118
+ /**
119
+ * @param {string} host
120
+ * @returns {NormalizeIPv6Result}
121
+ */
122
+ function normalizeIPv6(host) {
123
+ if (findToken(host, ":") < 2) return {
124
+ host,
125
+ isIPV6: false
126
+ };
127
+ const ipv6 = getIPV6(host);
128
+ if (!ipv6.error) {
129
+ let newHost = ipv6.address;
130
+ let escapedHost = ipv6.address;
131
+ if (ipv6.zone) {
132
+ newHost += "%" + ipv6.zone;
133
+ escapedHost += "%25" + ipv6.zone;
134
+ }
135
+ return {
136
+ host: newHost,
137
+ isIPV6: true,
138
+ escapedHost
139
+ };
140
+ } else return {
141
+ host,
142
+ isIPV6: false
143
+ };
144
+ }
145
+ /**
146
+ * @param {string} str
147
+ * @param {string} token
148
+ * @returns {number}
149
+ */
150
+ function findToken(str, token) {
151
+ let ind = 0;
152
+ for (let i = 0; i < str.length; i++) if (str[i] === token) ind++;
153
+ return ind;
154
+ }
155
+ /**
156
+ * @param {string} path
157
+ * @returns {string}
158
+ *
159
+ * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4
160
+ */
161
+ function removeDotSegments(path) {
162
+ let input = path;
163
+ const output = [];
164
+ let nextSlash = -1;
165
+ let len = 0;
166
+ while (len = input.length) {
167
+ if (len === 1) if (input === ".") break;
168
+ else if (input === "/") {
169
+ output.push("/");
170
+ break;
171
+ } else {
172
+ output.push(input);
173
+ break;
174
+ }
175
+ else if (len === 2) {
176
+ if (input[0] === ".") {
177
+ if (input[1] === ".") break;
178
+ else if (input[1] === "/") {
179
+ input = input.slice(2);
180
+ continue;
181
+ }
182
+ } else if (input[0] === "/") {
183
+ if (input[1] === "." || input[1] === "/") {
184
+ output.push("/");
185
+ break;
186
+ }
187
+ }
188
+ } else if (len === 3) {
189
+ if (input === "/..") {
190
+ if (output.length !== 0) output.pop();
191
+ output.push("/");
192
+ break;
193
+ }
194
+ }
195
+ if (input[0] === ".") {
196
+ if (input[1] === ".") {
197
+ if (input[2] === "/") {
198
+ input = input.slice(3);
199
+ continue;
200
+ }
201
+ } else if (input[1] === "/") {
202
+ input = input.slice(2);
203
+ continue;
204
+ }
205
+ } else if (input[0] === "/") {
206
+ if (input[1] === ".") {
207
+ if (input[2] === "/") {
208
+ input = input.slice(2);
209
+ continue;
210
+ } else if (input[2] === ".") {
211
+ if (input[3] === "/") {
212
+ input = input.slice(3);
213
+ if (output.length !== 0) output.pop();
214
+ continue;
215
+ }
216
+ }
217
+ }
218
+ }
219
+ if ((nextSlash = input.indexOf("/", 1)) === -1) {
220
+ output.push(input);
221
+ break;
222
+ } else {
223
+ output.push(input.slice(0, nextSlash));
224
+ input = input.slice(nextSlash);
225
+ }
226
+ }
227
+ return output.join("");
228
+ }
229
+ /**
230
+ * @param {import('../types/index').URIComponent} component
231
+ * @param {boolean} esc
232
+ * @returns {import('../types/index').URIComponent}
233
+ */
234
+ function normalizeComponentEncoding(component, esc) {
235
+ const func = esc !== true ? escape : unescape;
236
+ if (component.scheme !== void 0) component.scheme = func(component.scheme);
237
+ if (component.userinfo !== void 0) component.userinfo = func(component.userinfo);
238
+ if (component.host !== void 0) component.host = func(component.host);
239
+ if (component.path !== void 0) component.path = func(component.path);
240
+ if (component.query !== void 0) component.query = func(component.query);
241
+ if (component.fragment !== void 0) component.fragment = func(component.fragment);
242
+ return component;
243
+ }
244
+ /**
245
+ * @param {import('../types/index').URIComponent} component
246
+ * @returns {string|undefined}
247
+ */
248
+ function recomposeAuthority(component) {
249
+ const uriTokens = [];
250
+ if (component.userinfo !== void 0) {
251
+ uriTokens.push(component.userinfo);
252
+ uriTokens.push("@");
253
+ }
254
+ if (component.host !== void 0) {
255
+ let host = unescape(component.host);
256
+ if (!isIPv4(host)) {
257
+ const ipV6res = normalizeIPv6(host);
258
+ if (ipV6res.isIPV6 === true) host = `[${ipV6res.escapedHost}]`;
259
+ else host = component.host;
260
+ }
261
+ uriTokens.push(host);
262
+ }
263
+ if (typeof component.port === "number" || typeof component.port === "string") {
264
+ uriTokens.push(":");
265
+ uriTokens.push(String(component.port));
266
+ }
267
+ return uriTokens.length ? uriTokens.join("") : void 0;
268
+ }
269
+ module.exports = {
270
+ nonSimpleDomain,
271
+ recomposeAuthority,
272
+ normalizeComponentEncoding,
273
+ removeDotSegments,
274
+ isIPv4,
275
+ isUUID,
276
+ normalizeIPv6,
277
+ stringArrayToHexStripped
278
+ };
279
+ }));
280
+ //#endregion
281
+ export default require_utils();
282
+ export { require_utils };
283
+
284
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Zhc3QtdXJpQDMuMS4wL25vZGVfbW9kdWxlcy9mYXN0LXVyaS9saWIvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXG5cbi8qKiBAdHlwZSB7KHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW59ICovXG5jb25zdCBpc1VVSUQgPSBSZWdFeHAucHJvdG90eXBlLnRlc3QuYmluZCgvXltcXGRhLWZdezh9LVtcXGRhLWZdezR9LVtcXGRhLWZdezR9LVtcXGRhLWZdezR9LVtcXGRhLWZdezEyfSQvaXUpXG5cbi8qKiBAdHlwZSB7KHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW59ICovXG5jb25zdCBpc0lQdjQgPSBSZWdFeHAucHJvdG90eXBlLnRlc3QuYmluZCgvXig/Oig/OjI1WzAtNV18MlswLTRdXFxkfDFcXGR7Mn18WzEtOV1cXGR8XFxkKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVxcZHwxXFxkezJ9fFsxLTldXFxkfFxcZCkkL3UpXG5cbi8qKlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBpbnB1dFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gc3RyaW5nQXJyYXlUb0hleFN0cmlwcGVkIChpbnB1dCkge1xuICBsZXQgYWNjID0gJydcbiAgbGV0IGNvZGUgPSAwXG4gIGxldCBpID0gMFxuXG4gIGZvciAoaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGNvZGUgPSBpbnB1dFtpXS5jaGFyQ29kZUF0KDApXG4gICAgaWYgKGNvZGUgPT09IDQ4KSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAoISgoY29kZSA+PSA0OCAmJiBjb2RlIDw9IDU3KSB8fCAoY29kZSA+PSA2NSAmJiBjb2RlIDw9IDcwKSB8fCAoY29kZSA+PSA5NyAmJiBjb2RlIDw9IDEwMikpKSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gICAgYWNjICs9IGlucHV0W2ldXG4gICAgYnJlYWtcbiAgfVxuXG4gIGZvciAoaSArPSAxOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBjb2RlID0gaW5wdXRbaV0uY2hhckNvZGVBdCgwKVxuICAgIGlmICghKChjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcpIHx8IChjb2RlID49IDY1ICYmIGNvZGUgPD0gNzApIHx8IChjb2RlID49IDk3ICYmIGNvZGUgPD0gMTAyKSkpIHtcbiAgICAgIHJldHVybiAnJ1xuICAgIH1cbiAgICBhY2MgKz0gaW5wdXRbaV1cbiAgfVxuICByZXR1cm4gYWNjXG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gR2V0SVBWNlJlc3VsdFxuICogQHByb3BlcnR5IHtib29sZWFufSBlcnJvciAtIEluZGljYXRlcyBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgcGFyc2luZyB0aGUgSVB2NiBhZGRyZXNzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgcGFyc2VkIElQdjYgYWRkcmVzcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbem9uZV0gLSBUaGUgem9uZSBpZGVudGlmaWVyLCBpZiBwcmVzZW50LlxuICovXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuY29uc3Qgbm9uU2ltcGxlRG9tYWluID0gUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQoL1teIVwiJCYnKCkqKyxcXC0uOz1fYGEtent9fl0vdSlcblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGJ1ZmZlclxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGNvbnN1bWVJc1pvbmUgKGJ1ZmZlcikge1xuICBidWZmZXIubGVuZ3RoID0gMFxuICByZXR1cm4gdHJ1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gYnVmZmVyXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IGFkZHJlc3NcbiAqIEBwYXJhbSB7R2V0SVBWNlJlc3VsdH0gb3V0cHV0XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gY29uc3VtZUhleHRldHMgKGJ1ZmZlciwgYWRkcmVzcywgb3V0cHV0KSB7XG4gIGlmIChidWZmZXIubGVuZ3RoKSB7XG4gICAgY29uc3QgaGV4ID0gc3RyaW5nQXJyYXlUb0hleFN0cmlwcGVkKGJ1ZmZlcilcbiAgICBpZiAoaGV4ICE9PSAnJykge1xuICAgICAgYWRkcmVzcy5wdXNoKGhleClcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LmVycm9yID0gdHJ1ZVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIGJ1ZmZlci5sZW5ndGggPSAwXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gaW5wdXRcbiAqIEByZXR1cm5zIHtHZXRJUFY2UmVzdWx0fVxuICovXG5mdW5jdGlvbiBnZXRJUFY2IChpbnB1dCkge1xuICBsZXQgdG9rZW5Db3VudCA9IDBcbiAgY29uc3Qgb3V0cHV0ID0geyBlcnJvcjogZmFsc2UsIGFkZHJlc3M6ICcnLCB6b25lOiAnJyB9XG4gIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi9cbiAgY29uc3QgYWRkcmVzcyA9IFtdXG4gIC8qKiBAdHlwZSB7QXJyYXk8c3RyaW5nPn0gKi9cbiAgY29uc3QgYnVmZmVyID0gW11cbiAgbGV0IGVuZGlwdjZFbmNvdW50ZXJlZCA9IGZhbHNlXG4gIGxldCBlbmRJcHY2ID0gZmFsc2VcblxuICBsZXQgY29uc3VtZSA9IGNvbnN1bWVIZXh0ZXRzXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnNvciA9IGlucHV0W2ldXG4gICAgaWYgKGN1cnNvciA9PT0gJ1snIHx8IGN1cnNvciA9PT0gJ10nKSB7IGNvbnRpbnVlIH1cbiAgICBpZiAoY3Vyc29yID09PSAnOicpIHtcbiAgICAgIGlmIChlbmRpcHY2RW5jb3VudGVyZWQgPT09IHRydWUpIHtcbiAgICAgICAgZW5kSXB2NiA9IHRydWVcbiAgICAgIH1cbiAgICAgIGlmICghY29uc3VtZShidWZmZXIsIGFkZHJlc3MsIG91dHB1dCkpIHsgYnJlYWsgfVxuICAgICAgaWYgKCsrdG9rZW5Db3VudCA+IDcpIHtcbiAgICAgICAgLy8gbm90IHZhbGlkXG4gICAgICAgIG91dHB1dC5lcnJvciA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGlmIChpID4gMCAmJiBpbnB1dFtpIC0gMV0gPT09ICc6Jykge1xuICAgICAgICBlbmRpcHY2RW5jb3VudGVyZWQgPSB0cnVlXG4gICAgICB9XG4gICAgICBhZGRyZXNzLnB1c2goJzonKVxuICAgICAgY29udGludWVcbiAgICB9IGVsc2UgaWYgKGN1cnNvciA9PT0gJyUnKSB7XG4gICAgICBpZiAoIWNvbnN1bWUoYnVmZmVyLCBhZGRyZXNzLCBvdXRwdXQpKSB7IGJyZWFrIH1cbiAgICAgIC8vIHN3aXRjaCB0byB6b25lIGRldGVjdGlvblxuICAgICAgY29uc3VtZSA9IGNvbnN1bWVJc1pvbmVcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyLnB1c2goY3Vyc29yKVxuICAgICAgY29udGludWVcbiAgICB9XG4gIH1cbiAgaWYgKGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoY29uc3VtZSA9PT0gY29uc3VtZUlzWm9uZSkge1xuICAgICAgb3V0cHV0LnpvbmUgPSBidWZmZXIuam9pbignJylcbiAgICB9IGVsc2UgaWYgKGVuZElwdjYpIHtcbiAgICAgIGFkZHJlc3MucHVzaChidWZmZXIuam9pbignJykpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFkZHJlc3MucHVzaChzdHJpbmdBcnJheVRvSGV4U3RyaXBwZWQoYnVmZmVyKSlcbiAgICB9XG4gIH1cbiAgb3V0cHV0LmFkZHJlc3MgPSBhZGRyZXNzLmpvaW4oJycpXG4gIHJldHVybiBvdXRwdXRcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBOb3JtYWxpemVJUHY2UmVzdWx0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gaG9zdCAtIFRoZSBub3JtYWxpemVkIGhvc3QuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2VzY2FwZWRIb3N0XSAtIFRoZSBlc2NhcGVkIGhvc3QuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzSVBWNiAtIEluZGljYXRlcyBpZiB0aGUgaG9zdCBpcyBhbiBJUHY2IGFkZHJlc3MuXG4gKi9cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gaG9zdFxuICogQHJldHVybnMge05vcm1hbGl6ZUlQdjZSZXN1bHR9XG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZUlQdjYgKGhvc3QpIHtcbiAgaWYgKGZpbmRUb2tlbihob3N0LCAnOicpIDwgMikgeyByZXR1cm4geyBob3N0LCBpc0lQVjY6IGZhbHNlIH0gfVxuICBjb25zdCBpcHY2ID0gZ2V0SVBWNihob3N0KVxuXG4gIGlmICghaXB2Ni5lcnJvcikge1xuICAgIGxldCBuZXdIb3N0ID0gaXB2Ni5hZGRyZXNzXG4gICAgbGV0IGVzY2FwZWRIb3N0ID0gaXB2Ni5hZGRyZXNzXG4gICAgaWYgKGlwdjYuem9uZSkge1xuICAgICAgbmV3SG9zdCArPSAnJScgKyBpcHY2LnpvbmVcbiAgICAgIGVzY2FwZWRIb3N0ICs9ICclMjUnICsgaXB2Ni56b25lXG4gICAgfVxuICAgIHJldHVybiB7IGhvc3Q6IG5ld0hvc3QsIGlzSVBWNjogdHJ1ZSwgZXNjYXBlZEhvc3QgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IGhvc3QsIGlzSVBWNjogZmFsc2UgfVxuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHBhcmFtIHtzdHJpbmd9IHRva2VuXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5mdW5jdGlvbiBmaW5kVG9rZW4gKHN0ciwgdG9rZW4pIHtcbiAgbGV0IGluZCA9IDBcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3RyW2ldID09PSB0b2tlbikgaW5kKytcbiAgfVxuICByZXR1cm4gaW5kXG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKlxuICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuNFxuICovXG5mdW5jdGlvbiByZW1vdmVEb3RTZWdtZW50cyAocGF0aCkge1xuICBsZXQgaW5wdXQgPSBwYXRoXG4gIGNvbnN0IG91dHB1dCA9IFtdXG4gIGxldCBuZXh0U2xhc2ggPSAtMVxuICBsZXQgbGVuID0gMFxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25kLWFzc2lnblxuICB3aGlsZSAobGVuID0gaW5wdXQubGVuZ3RoKSB7XG4gICAgaWYgKGxlbiA9PT0gMSkge1xuICAgICAgaWYgKGlucHV0ID09PSAnLicpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT09ICcvJykge1xuICAgICAgICBvdXRwdXQucHVzaCgnLycpXG4gICAgICAgIGJyZWFrXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdXRwdXQucHVzaChpbnB1dClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGxlbiA9PT0gMikge1xuICAgICAgaWYgKGlucHV0WzBdID09PSAnLicpIHtcbiAgICAgICAgaWYgKGlucHV0WzFdID09PSAnLicpIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9IGVsc2UgaWYgKGlucHV0WzFdID09PSAnLycpIHtcbiAgICAgICAgICBpbnB1dCA9IGlucHV0LnNsaWNlKDIpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpbnB1dFswXSA9PT0gJy8nKSB7XG4gICAgICAgIGlmIChpbnB1dFsxXSA9PT0gJy4nIHx8IGlucHV0WzFdID09PSAnLycpIHtcbiAgICAgICAgICBvdXRwdXQucHVzaCgnLycpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAobGVuID09PSAzKSB7XG4gICAgICBpZiAoaW5wdXQgPT09ICcvLi4nKSB7XG4gICAgICAgIGlmIChvdXRwdXQubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgb3V0cHV0LnBvcCgpXG4gICAgICAgIH1cbiAgICAgICAgb3V0cHV0LnB1c2goJy8nKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaW5wdXRbMF0gPT09ICcuJykge1xuICAgICAgaWYgKGlucHV0WzFdID09PSAnLicpIHtcbiAgICAgICAgaWYgKGlucHV0WzJdID09PSAnLycpIHtcbiAgICAgICAgICBpbnB1dCA9IGlucHV0LnNsaWNlKDMpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpbnB1dFsxXSA9PT0gJy8nKSB7XG4gICAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMilcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlucHV0WzBdID09PSAnLycpIHtcbiAgICAgIGlmIChpbnB1dFsxXSA9PT0gJy4nKSB7XG4gICAgICAgIGlmIChpbnB1dFsyXSA9PT0gJy8nKSB7XG4gICAgICAgICAgaW5wdXQgPSBpbnB1dC5zbGljZSgyKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXRbMl0gPT09ICcuJykge1xuICAgICAgICAgIGlmIChpbnB1dFszXSA9PT0gJy8nKSB7XG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnNsaWNlKDMpXG4gICAgICAgICAgICBpZiAob3V0cHV0Lmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgICBvdXRwdXQucG9wKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUnVsZSAyRTogTW92ZSBub3JtYWwgcGF0aCBzZWdtZW50IHRvIG91dHB1dFxuICAgIGlmICgobmV4dFNsYXNoID0gaW5wdXQuaW5kZXhPZignLycsIDEpKSA9PT0gLTEpIHtcbiAgICAgIG91dHB1dC5wdXNoKGlucHV0KVxuICAgICAgYnJlYWtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goaW5wdXQuc2xpY2UoMCwgbmV4dFNsYXNoKSlcbiAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UobmV4dFNsYXNoKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRwdXQuam9pbignJylcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vdHlwZXMvaW5kZXgnKS5VUklDb21wb25lbnR9IGNvbXBvbmVudFxuICogQHBhcmFtIHtib29sZWFufSBlc2NcbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4uL3R5cGVzL2luZGV4JykuVVJJQ29tcG9uZW50fVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVDb21wb25lbnRFbmNvZGluZyAoY29tcG9uZW50LCBlc2MpIHtcbiAgY29uc3QgZnVuYyA9IGVzYyAhPT0gdHJ1ZSA/IGVzY2FwZSA6IHVuZXNjYXBlXG4gIGlmIChjb21wb25lbnQuc2NoZW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb21wb25lbnQuc2NoZW1lID0gZnVuYyhjb21wb25lbnQuc2NoZW1lKVxuICB9XG4gIGlmIChjb21wb25lbnQudXNlcmluZm8gIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbXBvbmVudC51c2VyaW5mbyA9IGZ1bmMoY29tcG9uZW50LnVzZXJpbmZvKVxuICB9XG4gIGlmIChjb21wb25lbnQuaG9zdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29tcG9uZW50Lmhvc3QgPSBmdW5jKGNvbXBvbmVudC5ob3N0KVxuICB9XG4gIGlmIChjb21wb25lbnQucGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29tcG9uZW50LnBhdGggPSBmdW5jKGNvbXBvbmVudC5wYXRoKVxuICB9XG4gIGlmIChjb21wb25lbnQucXVlcnkgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbXBvbmVudC5xdWVyeSA9IGZ1bmMoY29tcG9uZW50LnF1ZXJ5KVxuICB9XG4gIGlmIChjb21wb25lbnQuZnJhZ21lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbXBvbmVudC5mcmFnbWVudCA9IGZ1bmMoY29tcG9uZW50LmZyYWdtZW50KVxuICB9XG4gIHJldHVybiBjb21wb25lbnRcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi4vdHlwZXMvaW5kZXgnKS5VUklDb21wb25lbnR9IGNvbXBvbmVudFxuICogQHJldHVybnMge3N0cmluZ3x1bmRlZmluZWR9XG4gKi9cbmZ1bmN0aW9uIHJlY29tcG9zZUF1dGhvcml0eSAoY29tcG9uZW50KSB7XG4gIGNvbnN0IHVyaVRva2VucyA9IFtdXG5cbiAgaWYgKGNvbXBvbmVudC51c2VyaW5mbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdXJpVG9rZW5zLnB1c2goY29tcG9uZW50LnVzZXJpbmZvKVxuICAgIHVyaVRva2Vucy5wdXNoKCdAJylcbiAgfVxuXG4gIGlmIChjb21wb25lbnQuaG9zdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbGV0IGhvc3QgPSB1bmVzY2FwZShjb21wb25lbnQuaG9zdClcbiAgICBpZiAoIWlzSVB2NChob3N0KSkge1xuICAgICAgY29uc3QgaXBWNnJlcyA9IG5vcm1hbGl6ZUlQdjYoaG9zdClcbiAgICAgIGlmIChpcFY2cmVzLmlzSVBWNiA9PT0gdHJ1ZSkge1xuICAgICAgICBob3N0ID0gYFske2lwVjZyZXMuZXNjYXBlZEhvc3R9XWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhvc3QgPSBjb21wb25lbnQuaG9zdFxuICAgICAgfVxuICAgIH1cbiAgICB1cmlUb2tlbnMucHVzaChob3N0KVxuICB9XG5cbiAgaWYgKHR5cGVvZiBjb21wb25lbnQucG9ydCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIGNvbXBvbmVudC5wb3J0ID09PSAnc3RyaW5nJykge1xuICAgIHVyaVRva2Vucy5wdXNoKCc6JylcbiAgICB1cmlUb2tlbnMucHVzaChTdHJpbmcoY29tcG9uZW50LnBvcnQpKVxuICB9XG5cbiAgcmV0dXJuIHVyaVRva2Vucy5sZW5ndGggPyB1cmlUb2tlbnMuam9pbignJykgOiB1bmRlZmluZWRcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBub25TaW1wbGVEb21haW4sXG4gIHJlY29tcG9zZUF1dGhvcml0eSxcbiAgbm9ybWFsaXplQ29tcG9uZW50RW5jb2RpbmcsXG4gIHJlbW92ZURvdFNlZ21lbnRzLFxuICBpc0lQdjQsXG4gIGlzVVVJRCxcbiAgbm9ybWFsaXplSVB2NixcbiAgc3RyaW5nQXJyYXlUb0hleFN0cmlwcGVkXG59XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6Ijs7OztDQUdBLE1BQU0sU0FBUyxPQUFPLFVBQVUsS0FBSyxLQUFLLDZEQUE2RDs7Q0FHdkcsTUFBTSxTQUFTLE9BQU8sVUFBVSxLQUFLLEtBQUssMEZBQTBGOzs7OztDQU1wSSxTQUFTLHlCQUEwQixPQUFPO0VBQ3hDLElBQUksTUFBTTtFQUNWLElBQUksT0FBTztFQUNYLElBQUksSUFBSTtFQUVSLEtBQUssSUFBSSxHQUFHLElBQUksTUFBTSxRQUFRLEtBQUs7R0FDakMsT0FBTyxNQUFNLEVBQUUsQ0FBQyxXQUFXLENBQUM7R0FDNUIsSUFBSSxTQUFTLElBQ1g7R0FFRixJQUFJLEVBQUcsUUFBUSxNQUFNLFFBQVEsTUFBUSxRQUFRLE1BQU0sUUFBUSxNQUFRLFFBQVEsTUFBTSxRQUFRLE1BQ3ZGLE9BQU87R0FFVCxPQUFPLE1BQU07R0FDYjtFQUNGO0VBRUEsS0FBSyxLQUFLLEdBQUcsSUFBSSxNQUFNLFFBQVEsS0FBSztHQUNsQyxPQUFPLE1BQU0sRUFBRSxDQUFDLFdBQVcsQ0FBQztHQUM1QixJQUFJLEVBQUcsUUFBUSxNQUFNLFFBQVEsTUFBUSxRQUFRLE1BQU0sUUFBUSxNQUFRLFFBQVEsTUFBTSxRQUFRLE1BQ3ZGLE9BQU87R0FFVCxPQUFPLE1BQU07RUFDZjtFQUNBLE9BQU87Q0FDVDs7Ozs7Ozs7Ozs7Q0FhQSxNQUFNLGtCQUFrQixPQUFPLFVBQVUsS0FBSyxLQUFLLDZCQUE2Qjs7Ozs7Q0FNaEYsU0FBUyxjQUFlLFFBQVE7RUFDOUIsT0FBTyxTQUFTO0VBQ2hCLE9BQU87Q0FDVDs7Ozs7OztDQVFBLFNBQVMsZUFBZ0IsUUFBUSxTQUFTLFFBQVE7RUFDaEQsSUFBSSxPQUFPLFFBQVE7R0FDakIsTUFBTSxNQUFNLHlCQUF5QixNQUFNO0dBQzNDLElBQUksUUFBUSxJQUNWLFFBQVEsS0FBSyxHQUFHO1FBQ1g7SUFDTCxPQUFPLFFBQVE7SUFDZixPQUFPO0dBQ1Q7R0FDQSxPQUFPLFNBQVM7RUFDbEI7RUFDQSxPQUFPO0NBQ1Q7Ozs7O0NBTUEsU0FBUyxRQUFTLE9BQU87RUFDdkIsSUFBSSxhQUFhO0VBQ2pCLE1BQU0sU0FBUztHQUFFLE9BQU87R0FBTyxTQUFTO0dBQUksTUFBTTtFQUFHOztFQUVyRCxNQUFNLFVBQVUsQ0FBQzs7RUFFakIsTUFBTSxTQUFTLENBQUM7RUFDaEIsSUFBSSxxQkFBcUI7RUFDekIsSUFBSSxVQUFVO0VBRWQsSUFBSSxVQUFVO0VBRWQsS0FBSyxJQUFJLElBQUksR0FBRyxJQUFJLE1BQU0sUUFBUSxLQUFLO0dBQ3JDLE1BQU0sU0FBUyxNQUFNO0dBQ3JCLElBQUksV0FBVyxPQUFPLFdBQVcsS0FBTztHQUN4QyxJQUFJLFdBQVcsS0FBSztJQUNsQixJQUFJLHVCQUF1QixNQUN6QixVQUFVO0lBRVosSUFBSSxDQUFDLFFBQVEsUUFBUSxTQUFTLE1BQU0sR0FBSztJQUN6QyxJQUFJLEVBQUUsYUFBYSxHQUFHO0tBRXBCLE9BQU8sUUFBUTtLQUNmO0lBQ0Y7SUFDQSxJQUFJLElBQUksS0FBSyxNQUFNLElBQUksT0FBTyxLQUM1QixxQkFBcUI7SUFFdkIsUUFBUSxLQUFLLEdBQUc7SUFDaEI7R0FDRixPQUFPLElBQUksV0FBVyxLQUFLO0lBQ3pCLElBQUksQ0FBQyxRQUFRLFFBQVEsU0FBUyxNQUFNLEdBQUs7SUFFekMsVUFBVTtHQUNaLE9BQU87SUFDTCxPQUFPLEtBQUssTUFBTTtJQUNsQjtHQUNGO0VBQ0Y7RUFDQSxJQUFJLE9BQU8sUUFDVCxJQUFJLFlBQVksZUFDZCxPQUFPLE9BQU8sT0FBTyxLQUFLLEVBQUU7T0FDdkIsSUFBSSxTQUNULFFBQVEsS0FBSyxPQUFPLEtBQUssRUFBRSxDQUFDO09BRTVCLFFBQVEsS0FBSyx5QkFBeUIsTUFBTSxDQUFDO0VBR2pELE9BQU8sVUFBVSxRQUFRLEtBQUssRUFBRTtFQUNoQyxPQUFPO0NBQ1Q7Ozs7Ozs7Ozs7O0NBYUEsU0FBUyxjQUFlLE1BQU07RUFDNUIsSUFBSSxVQUFVLE1BQU0sR0FBRyxJQUFJLEdBQUssT0FBTztHQUFFO0dBQU0sUUFBUTtFQUFNO0VBQzdELE1BQU0sT0FBTyxRQUFRLElBQUk7RUFFekIsSUFBSSxDQUFDLEtBQUssT0FBTztHQUNmLElBQUksVUFBVSxLQUFLO0dBQ25CLElBQUksY0FBYyxLQUFLO0dBQ3ZCLElBQUksS0FBSyxNQUFNO0lBQ2IsV0FBVyxNQUFNLEtBQUs7SUFDdEIsZUFBZSxRQUFRLEtBQUs7R0FDOUI7R0FDQSxPQUFPO0lBQUUsTUFBTTtJQUFTLFFBQVE7SUFBTTtHQUFZO0VBQ3BELE9BQ0UsT0FBTztHQUFFO0dBQU0sUUFBUTtFQUFNO0NBRWpDOzs7Ozs7Q0FPQSxTQUFTLFVBQVcsS0FBSyxPQUFPO0VBQzlCLElBQUksTUFBTTtFQUNWLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLFFBQVEsS0FDOUIsSUFBSSxJQUFJLE9BQU8sT0FBTztFQUV4QixPQUFPO0NBQ1Q7Ozs7Ozs7Q0FRQSxTQUFTLGtCQUFtQixNQUFNO0VBQ2hDLElBQUksUUFBUTtFQUNaLE1BQU0sU0FBUyxDQUFDO0VBQ2hCLElBQUksWUFBWTtFQUNoQixJQUFJLE1BQU07RUFHVixPQUFPLE1BQU0sTUFBTSxRQUFRO0dBQ3pCLElBQUksUUFBUSxHQUNWLElBQUksVUFBVSxLQUNaO1FBQ0ssSUFBSSxVQUFVLEtBQUs7SUFDeEIsT0FBTyxLQUFLLEdBQUc7SUFDZjtHQUNGLE9BQU87SUFDTCxPQUFPLEtBQUssS0FBSztJQUNqQjtHQUNGO1FBQ0ssSUFBSSxRQUFRLEdBQ2pCO1FBQUksTUFBTSxPQUFPLEtBQ2Y7U0FBSSxNQUFNLE9BQU8sS0FDZjtVQUNLLElBQUksTUFBTSxPQUFPLEtBQUs7TUFDM0IsUUFBUSxNQUFNLE1BQU0sQ0FBQztNQUNyQjtLQUNGO1dBQ0ssSUFBSSxNQUFNLE9BQU8sS0FDdEI7U0FBSSxNQUFNLE9BQU8sT0FBTyxNQUFNLE9BQU8sS0FBSztNQUN4QyxPQUFPLEtBQUssR0FBRztNQUNmO0tBQ0Y7O0dBQ0YsT0FDSyxJQUFJLFFBQVEsR0FDakI7UUFBSSxVQUFVLE9BQU87S0FDbkIsSUFBSSxPQUFPLFdBQVcsR0FDcEIsT0FBTyxJQUFJO0tBRWIsT0FBTyxLQUFLLEdBQUc7S0FDZjtJQUNGOztHQUVGLElBQUksTUFBTSxPQUFPLEtBQ2Y7UUFBSSxNQUFNLE9BQU8sS0FDZjtTQUFJLE1BQU0sT0FBTyxLQUFLO01BQ3BCLFFBQVEsTUFBTSxNQUFNLENBQUM7TUFDckI7S0FDRjtXQUNLLElBQUksTUFBTSxPQUFPLEtBQUs7S0FDM0IsUUFBUSxNQUFNLE1BQU0sQ0FBQztLQUNyQjtJQUNGO1VBQ0ssSUFBSSxNQUFNLE9BQU8sS0FDdEI7UUFBSSxNQUFNLE9BQU8sS0FDZjtTQUFJLE1BQU0sT0FBTyxLQUFLO01BQ3BCLFFBQVEsTUFBTSxNQUFNLENBQUM7TUFDckI7S0FDRixPQUFPLElBQUksTUFBTSxPQUFPLEtBQ3RCO1VBQUksTUFBTSxPQUFPLEtBQUs7T0FDcEIsUUFBUSxNQUFNLE1BQU0sQ0FBQztPQUNyQixJQUFJLE9BQU8sV0FBVyxHQUNwQixPQUFPLElBQUk7T0FFYjtNQUNGOztJQUNGO0dBQ0Y7R0FJRixLQUFLLFlBQVksTUFBTSxRQUFRLEtBQUssQ0FBQyxPQUFPLElBQUk7SUFDOUMsT0FBTyxLQUFLLEtBQUs7SUFDakI7R0FDRixPQUFPO0lBQ0wsT0FBTyxLQUFLLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sTUFBTSxTQUFTO0dBQy9CO0VBQ0Y7RUFFQSxPQUFPLE9BQU8sS0FBSyxFQUFFO0NBQ3ZCOzs7Ozs7Q0FPQSxTQUFTLDJCQUE0QixXQUFXLEtBQUs7RUFDbkQsTUFBTSxPQUFPLFFBQVEsT0FBTyxTQUFTO0VBQ3JDLElBQUksVUFBVSxXQUFXLFFBQ3ZCLFVBQVUsU0FBUyxLQUFLLFVBQVUsTUFBTTtFQUUxQyxJQUFJLFVBQVUsYUFBYSxRQUN6QixVQUFVLFdBQVcsS0FBSyxVQUFVLFFBQVE7RUFFOUMsSUFBSSxVQUFVLFNBQVMsUUFDckIsVUFBVSxPQUFPLEtBQUssVUFBVSxJQUFJO0VBRXRDLElBQUksVUFBVSxTQUFTLFFBQ3JCLFVBQVUsT0FBTyxLQUFLLFVBQVUsSUFBSTtFQUV0QyxJQUFJLFVBQVUsVUFBVSxRQUN0QixVQUFVLFFBQVEsS0FBSyxVQUFVLEtBQUs7RUFFeEMsSUFBSSxVQUFVLGFBQWEsUUFDekIsVUFBVSxXQUFXLEtBQUssVUFBVSxRQUFRO0VBRTlDLE9BQU87Q0FDVDs7Ozs7Q0FNQSxTQUFTLG1CQUFvQixXQUFXO0VBQ3RDLE1BQU0sWUFBWSxDQUFDO0VBRW5CLElBQUksVUFBVSxhQUFhLFFBQVc7R0FDcEMsVUFBVSxLQUFLLFVBQVUsUUFBUTtHQUNqQyxVQUFVLEtBQUssR0FBRztFQUNwQjtFQUVBLElBQUksVUFBVSxTQUFTLFFBQVc7R0FDaEMsSUFBSSxPQUFPLFNBQVMsVUFBVSxJQUFJO0dBQ2xDLElBQUksQ0FBQyxPQUFPLElBQUksR0FBRztJQUNqQixNQUFNLFVBQVUsY0FBYyxJQUFJO0lBQ2xDLElBQUksUUFBUSxXQUFXLE1BQ3JCLE9BQU8sSUFBSSxRQUFRLFlBQVk7U0FFL0IsT0FBTyxVQUFVO0dBRXJCO0dBQ0EsVUFBVSxLQUFLLElBQUk7RUFDckI7RUFFQSxJQUFJLE9BQU8sVUFBVSxTQUFTLFlBQVksT0FBTyxVQUFVLFNBQVMsVUFBVTtHQUM1RSxVQUFVLEtBQUssR0FBRztHQUNsQixVQUFVLEtBQUssT0FBTyxVQUFVLElBQUksQ0FBQztFQUN2QztFQUVBLE9BQU8sVUFBVSxTQUFTLFVBQVUsS0FBSyxFQUFFLElBQUk7Q0FDakQ7Q0FFQSxPQUFPLFVBQVU7RUFDZjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0NBQ0YifQ==
@@ -0,0 +1,80 @@
1
+ import { __commonJSMin } from "../../../../../_virtual/_rolldown/runtime.js";
2
+ //#region ../../node_modules/.pnpm/json-schema-traverse@1.0.0/node_modules/json-schema-traverse/index.js
3
+ var require_json_schema_traverse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4
+ var traverse = module.exports = function(schema, opts, cb) {
5
+ if (typeof opts == "function") {
6
+ cb = opts;
7
+ opts = {};
8
+ }
9
+ cb = opts.cb || cb;
10
+ var pre = typeof cb == "function" ? cb : cb.pre || function() {};
11
+ var post = cb.post || function() {};
12
+ _traverse(opts, pre, post, schema, "", schema);
13
+ };
14
+ traverse.keywords = {
15
+ additionalItems: true,
16
+ items: true,
17
+ contains: true,
18
+ additionalProperties: true,
19
+ propertyNames: true,
20
+ not: true,
21
+ if: true,
22
+ then: true,
23
+ else: true
24
+ };
25
+ traverse.arrayKeywords = {
26
+ items: true,
27
+ allOf: true,
28
+ anyOf: true,
29
+ oneOf: true
30
+ };
31
+ traverse.propsKeywords = {
32
+ $defs: true,
33
+ definitions: true,
34
+ properties: true,
35
+ patternProperties: true,
36
+ dependencies: true
37
+ };
38
+ traverse.skipKeywords = {
39
+ default: true,
40
+ enum: true,
41
+ const: true,
42
+ required: true,
43
+ maximum: true,
44
+ minimum: true,
45
+ exclusiveMaximum: true,
46
+ exclusiveMinimum: true,
47
+ multipleOf: true,
48
+ maxLength: true,
49
+ minLength: true,
50
+ pattern: true,
51
+ format: true,
52
+ maxItems: true,
53
+ minItems: true,
54
+ uniqueItems: true,
55
+ maxProperties: true,
56
+ minProperties: true
57
+ };
58
+ function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {
59
+ if (schema && typeof schema == "object" && !Array.isArray(schema)) {
60
+ pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
61
+ for (var key in schema) {
62
+ var sch = schema[key];
63
+ if (Array.isArray(sch)) {
64
+ if (key in traverse.arrayKeywords) for (var i = 0; i < sch.length; i++) _traverse(opts, pre, post, sch[i], jsonPtr + "/" + key + "/" + i, rootSchema, jsonPtr, key, schema, i);
65
+ } else if (key in traverse.propsKeywords) {
66
+ if (sch && typeof sch == "object") for (var prop in sch) _traverse(opts, pre, post, sch[prop], jsonPtr + "/" + key + "/" + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);
67
+ } else if (key in traverse.keywords || opts.allKeys && !(key in traverse.skipKeywords)) _traverse(opts, pre, post, sch, jsonPtr + "/" + key, rootSchema, jsonPtr, key, schema);
68
+ }
69
+ post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);
70
+ }
71
+ }
72
+ function escapeJsonPtr(str) {
73
+ return str.replace(/~/g, "~0").replace(/\//g, "~1");
74
+ }
75
+ }));
76
+ //#endregion
77
+ export default require_json_schema_traverse();
78
+ export { require_json_schema_traverse };
79
+
80
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2pzb24tc2NoZW1hLXRyYXZlcnNlQDEuMC4wL25vZGVfbW9kdWxlcy9qc29uLXNjaGVtYS10cmF2ZXJzZS9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbnZhciB0cmF2ZXJzZSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHNjaGVtYSwgb3B0cywgY2IpIHtcbiAgLy8gTGVnYWN5IHN1cHBvcnQgZm9yIHYwLjMuMSBhbmQgZWFybGllci5cbiAgaWYgKHR5cGVvZiBvcHRzID09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG5cbiAgY2IgPSBvcHRzLmNiIHx8IGNiO1xuICB2YXIgcHJlID0gKHR5cGVvZiBjYiA9PSAnZnVuY3Rpb24nKSA/IGNiIDogY2IucHJlIHx8IGZ1bmN0aW9uKCkge307XG4gIHZhciBwb3N0ID0gY2IucG9zdCB8fCBmdW5jdGlvbigpIHt9O1xuXG4gIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaGVtYSwgJycsIHNjaGVtYSk7XG59O1xuXG5cbnRyYXZlcnNlLmtleXdvcmRzID0ge1xuICBhZGRpdGlvbmFsSXRlbXM6IHRydWUsXG4gIGl0ZW1zOiB0cnVlLFxuICBjb250YWluczogdHJ1ZSxcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IHRydWUsXG4gIHByb3BlcnR5TmFtZXM6IHRydWUsXG4gIG5vdDogdHJ1ZSxcbiAgaWY6IHRydWUsXG4gIHRoZW46IHRydWUsXG4gIGVsc2U6IHRydWVcbn07XG5cbnRyYXZlcnNlLmFycmF5S2V5d29yZHMgPSB7XG4gIGl0ZW1zOiB0cnVlLFxuICBhbGxPZjogdHJ1ZSxcbiAgYW55T2Y6IHRydWUsXG4gIG9uZU9mOiB0cnVlXG59O1xuXG50cmF2ZXJzZS5wcm9wc0tleXdvcmRzID0ge1xuICAkZGVmczogdHJ1ZSxcbiAgZGVmaW5pdGlvbnM6IHRydWUsXG4gIHByb3BlcnRpZXM6IHRydWUsXG4gIHBhdHRlcm5Qcm9wZXJ0aWVzOiB0cnVlLFxuICBkZXBlbmRlbmNpZXM6IHRydWVcbn07XG5cbnRyYXZlcnNlLnNraXBLZXl3b3JkcyA9IHtcbiAgZGVmYXVsdDogdHJ1ZSxcbiAgZW51bTogdHJ1ZSxcbiAgY29uc3Q6IHRydWUsXG4gIHJlcXVpcmVkOiB0cnVlLFxuICBtYXhpbXVtOiB0cnVlLFxuICBtaW5pbXVtOiB0cnVlLFxuICBleGNsdXNpdmVNYXhpbXVtOiB0cnVlLFxuICBleGNsdXNpdmVNaW5pbXVtOiB0cnVlLFxuICBtdWx0aXBsZU9mOiB0cnVlLFxuICBtYXhMZW5ndGg6IHRydWUsXG4gIG1pbkxlbmd0aDogdHJ1ZSxcbiAgcGF0dGVybjogdHJ1ZSxcbiAgZm9ybWF0OiB0cnVlLFxuICBtYXhJdGVtczogdHJ1ZSxcbiAgbWluSXRlbXM6IHRydWUsXG4gIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICBtYXhQcm9wZXJ0aWVzOiB0cnVlLFxuICBtaW5Qcm9wZXJ0aWVzOiB0cnVlXG59O1xuXG5cbmZ1bmN0aW9uIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaGVtYSwganNvblB0ciwgcm9vdFNjaGVtYSwgcGFyZW50SnNvblB0ciwgcGFyZW50S2V5d29yZCwgcGFyZW50U2NoZW1hLCBrZXlJbmRleCkge1xuICBpZiAoc2NoZW1hICYmIHR5cGVvZiBzY2hlbWEgPT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoc2NoZW1hKSkge1xuICAgIHByZShzY2hlbWEsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpO1xuICAgIGZvciAodmFyIGtleSBpbiBzY2hlbWEpIHtcbiAgICAgIHZhciBzY2ggPSBzY2hlbWFba2V5XTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHNjaCkpIHtcbiAgICAgICAgaWYgKGtleSBpbiB0cmF2ZXJzZS5hcnJheUtleXdvcmRzKSB7XG4gICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHNjaC5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaFtpXSwganNvblB0ciArICcvJyArIGtleSArICcvJyArIGksIHJvb3RTY2hlbWEsIGpzb25QdHIsIGtleSwgc2NoZW1hLCBpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgaW4gdHJhdmVyc2UucHJvcHNLZXl3b3Jkcykge1xuICAgICAgICBpZiAoc2NoICYmIHR5cGVvZiBzY2ggPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHNjaClcbiAgICAgICAgICAgIF90cmF2ZXJzZShvcHRzLCBwcmUsIHBvc3QsIHNjaFtwcm9wXSwganNvblB0ciArICcvJyArIGtleSArICcvJyArIGVzY2FwZUpzb25QdHIocHJvcCksIHJvb3RTY2hlbWEsIGpzb25QdHIsIGtleSwgc2NoZW1hLCBwcm9wKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChrZXkgaW4gdHJhdmVyc2Uua2V5d29yZHMgfHwgKG9wdHMuYWxsS2V5cyAmJiAhKGtleSBpbiB0cmF2ZXJzZS5za2lwS2V5d29yZHMpKSkge1xuICAgICAgICBfdHJhdmVyc2Uob3B0cywgcHJlLCBwb3N0LCBzY2gsIGpzb25QdHIgKyAnLycgKyBrZXksIHJvb3RTY2hlbWEsIGpzb25QdHIsIGtleSwgc2NoZW1hKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcG9zdChzY2hlbWEsIGpzb25QdHIsIHJvb3RTY2hlbWEsIHBhcmVudEpzb25QdHIsIHBhcmVudEtleXdvcmQsIHBhcmVudFNjaGVtYSwga2V5SW5kZXgpO1xuICB9XG59XG5cblxuZnVuY3Rpb24gZXNjYXBlSnNvblB0cihzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9+L2csICd+MCcpLnJlcGxhY2UoL1xcLy9nLCAn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