@michaelmishin/speclens 0.1.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/README.md +94 -0
- package/dist/speclens.iife.js +3424 -0
- package/dist/speclens.iife.js.map +1 -0
- package/dist/speclens.js +30845 -0
- package/dist/speclens.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speclens.js","sources":["../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/buffer/index.js","../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-element/lit-element.js","../node_modules/@lit/reactive-element/decorators/custom-element.js","../node_modules/@lit/reactive-element/decorators/property.js","../node_modules/@lit/reactive-element/decorators/state.js","../node_modules/@lit/reactive-element/decorators/base.js","../node_modules/@lit/reactive-element/decorators/query.js","../src/styles/reset.css.ts","../src/styles/tokens.css.ts","../src/styles/theme.css.ts","../src/shims/util.ts","../node_modules/@apidevtools/swagger-parser/lib/util.js","../node_modules/@jsdevtools/ono/esm/isomorphic.browser.js","../node_modules/@jsdevtools/ono/esm/stack.js","../node_modules/@jsdevtools/ono/esm/to-json.js","../node_modules/@jsdevtools/ono/esm/extend-error.js","../node_modules/@jsdevtools/ono/esm/normalize.js","../node_modules/@jsdevtools/ono/esm/constructor.js","../node_modules/@jsdevtools/ono/esm/singleton.js","../node_modules/@jsdevtools/ono/esm/index.js","../node_modules/ajv/dist/compile/codegen/code.js","../node_modules/ajv/dist/compile/codegen/scope.js","../node_modules/ajv/dist/compile/codegen/index.js","../node_modules/ajv/dist/compile/util.js","../node_modules/ajv/dist/compile/names.js","../node_modules/ajv/dist/compile/errors.js","../node_modules/ajv/dist/compile/validate/boolSchema.js","../node_modules/ajv/dist/compile/rules.js","../node_modules/ajv/dist/compile/validate/applicability.js","../node_modules/ajv/dist/compile/validate/dataType.js","../node_modules/ajv/dist/compile/validate/defaults.js","../node_modules/ajv/dist/vocabularies/code.js","../node_modules/ajv/dist/compile/validate/keyword.js","../node_modules/ajv/dist/compile/validate/subschema.js","../node_modules/fast-deep-equal/index.js","../node_modules/json-schema-traverse/index.js","../node_modules/ajv/dist/compile/resolve.js","../node_modules/ajv/dist/compile/validate/index.js","../node_modules/ajv/dist/runtime/validation_error.js","../node_modules/ajv/dist/compile/ref_error.js","../node_modules/ajv/dist/compile/index.js","../node_modules/fast-uri/lib/utils.js","../node_modules/fast-uri/lib/schemes.js","../node_modules/fast-uri/index.js","../node_modules/ajv/dist/runtime/uri.js","../node_modules/ajv/dist/core.js","../node_modules/ajv/dist/vocabularies/core/ref.js","../node_modules/ajv-draft-04/dist/vocabulary/core.js","../node_modules/ajv-draft-04/dist/vocabulary/validation/limitNumber.js","../node_modules/ajv-draft-04/dist/vocabulary/validation/limitNumberExclusive.js","../node_modules/ajv/dist/vocabularies/validation/multipleOf.js","../node_modules/ajv/dist/runtime/ucs2length.js","../node_modules/ajv/dist/vocabularies/validation/limitLength.js","../node_modules/ajv/dist/vocabularies/validation/pattern.js","../node_modules/ajv/dist/vocabularies/validation/limitProperties.js","../node_modules/ajv/dist/vocabularies/validation/required.js","../node_modules/ajv/dist/vocabularies/validation/limitItems.js","../node_modules/ajv/dist/runtime/equal.js","../node_modules/ajv/dist/vocabularies/validation/uniqueItems.js","../node_modules/ajv/dist/vocabularies/validation/const.js","../node_modules/ajv/dist/vocabularies/validation/enum.js","../node_modules/ajv-draft-04/dist/vocabulary/validation/index.js","../node_modules/ajv/dist/vocabularies/applicator/additionalItems.js","../node_modules/ajv/dist/vocabularies/applicator/items.js","../node_modules/ajv/dist/vocabularies/applicator/prefixItems.js","../node_modules/ajv/dist/vocabularies/applicator/items2020.js","../node_modules/ajv/dist/vocabularies/applicator/contains.js","../node_modules/ajv/dist/vocabularies/applicator/dependencies.js","../node_modules/ajv/dist/vocabularies/applicator/propertyNames.js","../node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js","../node_modules/ajv/dist/vocabularies/applicator/properties.js","../node_modules/ajv/dist/vocabularies/applicator/patternProperties.js","../node_modules/ajv/dist/vocabularies/applicator/not.js","../node_modules/ajv/dist/vocabularies/applicator/anyOf.js","../node_modules/ajv/dist/vocabularies/applicator/oneOf.js","../node_modules/ajv/dist/vocabularies/applicator/allOf.js","../node_modules/ajv/dist/vocabularies/applicator/if.js","../node_modules/ajv/dist/vocabularies/applicator/thenElse.js","../node_modules/ajv/dist/vocabularies/applicator/index.js","../node_modules/ajv/dist/vocabularies/format/format.js","../node_modules/ajv/dist/vocabularies/format/index.js","../node_modules/ajv-draft-04/dist/vocabulary/draft4.js","../node_modules/ajv/dist/vocabularies/discriminator/types.js","../node_modules/ajv/dist/vocabularies/discriminator/index.js","../node_modules/ajv-draft-04/dist/index.js","../node_modules/ajv/dist/vocabularies/core/id.js","../node_modules/ajv/dist/vocabularies/core/index.js","../node_modules/ajv/dist/vocabularies/validation/limitNumber.js","../node_modules/ajv/dist/vocabularies/validation/index.js","../node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js","../node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js","../node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js","../node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js","../node_modules/ajv/dist/vocabularies/dynamic/index.js","../node_modules/ajv/dist/vocabularies/validation/dependentRequired.js","../node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js","../node_modules/ajv/dist/vocabularies/validation/limitContains.js","../node_modules/ajv/dist/vocabularies/next.js","../node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js","../node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js","../node_modules/ajv/dist/vocabularies/unevaluated/index.js","../node_modules/ajv/dist/vocabularies/metadata.js","../node_modules/ajv/dist/vocabularies/draft2020.js","../node_modules/ajv/dist/refs/json-schema-2020-12/index.js","../node_modules/ajv/dist/2020.js","../node_modules/@apidevtools/openapi-schemas/lib/index.js","../node_modules/@apidevtools/swagger-parser/lib/validators/schema.js","../node_modules/@apidevtools/swagger-methods/lib/index.js","../node_modules/@apidevtools/swagger-parser/lib/validators/spec.js","../src/shims/path.ts","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/convert-path-to-posix.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/is-windows.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/url.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/errors.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/pointer.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/ref.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/refs.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/plugins.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parse.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/json.js","../node_modules/js-yaml/lib/common.js","../node_modules/js-yaml/lib/exception.js","../node_modules/js-yaml/lib/snippet.js","../node_modules/js-yaml/lib/type.js","../node_modules/js-yaml/lib/schema.js","../node_modules/js-yaml/lib/type/str.js","../node_modules/js-yaml/lib/type/seq.js","../node_modules/js-yaml/lib/type/map.js","../node_modules/js-yaml/lib/schema/failsafe.js","../node_modules/js-yaml/lib/type/null.js","../node_modules/js-yaml/lib/type/bool.js","../node_modules/js-yaml/lib/type/int.js","../node_modules/js-yaml/lib/type/float.js","../node_modules/js-yaml/lib/schema/json.js","../node_modules/js-yaml/lib/schema/core.js","../node_modules/js-yaml/lib/type/timestamp.js","../node_modules/js-yaml/lib/type/merge.js","../node_modules/js-yaml/lib/type/binary.js","../node_modules/js-yaml/lib/type/omap.js","../node_modules/js-yaml/lib/type/pairs.js","../node_modules/js-yaml/lib/type/set.js","../node_modules/js-yaml/lib/schema/default.js","../node_modules/js-yaml/lib/loader.js","../node_modules/js-yaml/lib/dumper.js","../node_modules/js-yaml/index.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/yaml.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/text.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parsers/binary.js","../__vite-browser-external","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/resolvers/file.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/resolvers/http.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/options.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/normalize-args.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/resolve-external.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/bundle.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/dereference.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/next.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/maybe.js","../node_modules/@apidevtools/json-schema-ref-parser/dist/lib/index.js","../node_modules/@apidevtools/swagger-parser/lib/options.js","../node_modules/call-me-maybe/src/next.js","../node_modules/call-me-maybe/src/maybe.js","../node_modules/@apidevtools/swagger-parser/lib/index.js","../src/core/types.ts","../src/core/parser.ts","../node_modules/minisearch/dist/es/index.js","../src/core/search.ts","../src/core/router.ts","../src/core/theme.ts","../node_modules/marked/lib/marked.esm.js","../src/components/layout/sl-header.ts","../src/components/layout/sl-sidebar.ts","../src/components/operation/sl-parameters.ts","../node_modules/openapi-sampler/src/utils.js","../node_modules/openapi-sampler/src/allOf.js","../node_modules/openapi-sampler/src/infer.js","../node_modules/foreach/index.js","../node_modules/json-pointer/index.js","../node_modules/openapi-sampler/src/traverse.js","../node_modules/openapi-sampler/src/samplers/array.js","../node_modules/openapi-sampler/src/samplers/boolean.js","../node_modules/openapi-sampler/src/samplers/number.js","../node_modules/openapi-sampler/src/samplers/object.js","../node_modules/openapi-sampler/src/samplers/string-regex.js","../node_modules/openapi-sampler/src/samplers/string.js","../node_modules/path-expression-matcher/src/Expression.js","../node_modules/path-expression-matcher/src/Matcher.js","../node_modules/fast-xml-builder/src/orderedJs2Xml.js","../node_modules/fast-xml-builder/src/ignoreAttributes.js","../node_modules/fast-xml-builder/src/fxb.js","../node_modules/openapi-sampler/src/openapi-sampler.js","../src/components/operation/sl-request-body.ts","../node_modules/lit-html/directive.js","../node_modules/lit-html/directives/unsafe-html.js","../src/components/operation/sl-responses.ts","../node_modules/formdata-node/lib/esm/browser.js","../node_modules/httpsnippet-lite/dist/esm/helpers/form-data.mjs","../node_modules/httpsnippet-lite/dist/esm/helpers/headers.mjs","../node_modules/httpsnippet-lite/dist/esm/helpers/reducer.mjs","../node_modules/httpsnippet-lite/dist/esm/helpers/url.mjs","../node_modules/httpsnippet-lite/dist/esm/helpers/code-builder.mjs","../node_modules/httpsnippet-lite/dist/esm/helpers/escape.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/c/libcurl/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/c/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/clojure/clj_http/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/clojure/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/csharp/httpclient/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/csharp/restsharp/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/csharp/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/go/native/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/go/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/http/http1.1/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/http/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/java/asynchttp/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/java/nethttp/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/java/okhttp/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/java/unirest/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/java/target.mjs","../node_modules/is-regexp/index.js","../node_modules/is-obj/index.js","../node_modules/get-own-enumerable-property-symbols/lib/index.js","../node_modules/stringify-object/index.js","../node_modules/httpsnippet-lite/dist/esm/targets/javascript/axios/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/javascript/fetch/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/javascript/jquery/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/javascript/xhr/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/javascript/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/kotlin/okhttp/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/kotlin/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/node/axios/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/node/fetch/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/node/native/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/node/request/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/node/unirest/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/node/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/objc/helpers.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/objc/nsurlsession/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/objc/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/ocaml/cohttp/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/ocaml/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/php/helpers.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/php/curl/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/php/guzzle/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/php/http1/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/php/http2/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/php/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/powershell/common.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/powershell/restmethod/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/powershell/webrequest/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/powershell/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/python/python3/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/python/helpers.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/python/requests/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/python/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/r/httr/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/r/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/ruby/native/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/ruby/target.mjs","../node_modules/httpsnippet-lite/dist/esm/helpers/shell.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/shell/curl/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/shell/httpie/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/shell/wget/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/shell/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/swift/helpers.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/swift/nsurlsession/client.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/swift/target.mjs","../node_modules/httpsnippet-lite/dist/esm/targets/targets.mjs","../node_modules/httpsnippet-lite/dist/esm/httpsnippet.mjs","../src/components/code/sl-code-samples.ts","../src/components/schema/sl-schema.ts","../src/components/operation/sl-operation.ts","../src/components/operation/sl-try-it.ts","../src/components/auth/sl-auth.ts","../src/spec-lens.ts","../src/index.ts"],"sourcesContent":["'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1],t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(t=>t(this))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(t=>t.hostConnected?.())}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach(t=>t.hostDisconnected?.())}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i,e=!1,h){if(void 0!==t){const r=this.constructor;if(!1===e&&(h=this[t]),i??=r.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(r._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach(t=>t.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach(t=>this._$ET(t,this[t])),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.2\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t=>t,s=t.trustedTypes,e=s?s.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,h=\"$lit$\",o=`lit$${Math.random().toFixed(9).slice(2)}$`,n=\"?\"+o,r=`<${n}>`,l=document,c=()=>l.createComment(\"\"),a=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,u=Array.isArray,d=t=>u(t)||\"function\"==typeof t?.[Symbol.iterator],f=\"[ \\t\\n\\f\\r]\",v=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,_=/-->/g,m=/>/g,p=RegExp(`>|${f}(?:([^\\\\s\"'>=/]+)(${f}*=${f}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),g=/'/g,$=/\"/g,y=/^(?:script|style|textarea|title)$/i,x=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),b=x(1),w=x(2),T=x(3),E=Symbol.for(\"lit-noChange\"),A=Symbol.for(\"lit-nothing\"),C=new WeakMap,P=l.createTreeWalker(l,129);function V(t,i){if(!u(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==e?e.createHTML(i):i}const N=(t,i)=>{const s=t.length-1,e=[];let n,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=v;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,f=0;for(;f<s.length&&(c.lastIndex=f,u=c.exec(s),null!==u);)f=c.lastIndex,c===v?\"!--\"===u[1]?c=_:void 0!==u[1]?c=m:void 0!==u[2]?(y.test(u[2])&&(n=RegExp(\"</\"+u[2],\"g\")),c=p):void 0!==u[3]&&(c=p):c===p?\">\"===u[0]?(c=n??v,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?p:'\"'===u[3]?$:g):c===$||c===g?c=p:c===_||c===m?c=v:(c=p,n=void 0);const x=c===p&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===v?s+r:d>=0?(e.push(a),s.slice(0,d)+h+s.slice(d)+o+x):s+o+(-2===d?i:x)}return[V(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),e]};class S{constructor({strings:t,_$litType$:i},e){let r;this.parts=[];let l=0,a=0;const u=t.length-1,d=this.parts,[f,v]=N(t,i);if(this.el=S.createElement(f,e),P.currentNode=this.el.content,2===i||3===i){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=P.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(h)){const i=v[a++],s=r.getAttribute(t).split(o),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:l,name:e[2],strings:s,ctor:\".\"===e[1]?I:\"?\"===e[1]?L:\"@\"===e[1]?z:H}),r.removeAttribute(t)}else t.startsWith(o)&&(d.push({type:6,index:l}),r.removeAttribute(t));if(y.test(r.tagName)){const t=r.textContent.split(o),i=t.length-1;if(i>0){r.textContent=s?s.emptyScript:\"\";for(let s=0;s<i;s++)r.append(t[s],c()),P.nextNode(),d.push({type:2,index:++l});r.append(t[i],c())}}}else if(8===r.nodeType)if(r.data===n)d.push({type:2,index:l});else{let t=-1;for(;-1!==(t=r.data.indexOf(o,t+1));)d.push({type:7,index:l}),t+=o.length-1}l++}}static createElement(t,i){const s=l.createElement(\"template\");return s.innerHTML=t,s}}function M(t,i,s=t,e){if(i===E)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=a(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=M(t,h._$AS(t,i.values),h,e)),i}class R{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??l).importNode(i,!0);P.currentNode=e;let h=P.nextNode(),o=0,n=0,r=s[0];for(;void 0!==r;){if(o===r.index){let i;2===r.type?i=new k(h,h.nextSibling,this,t):1===r.type?i=new r.ctor(h,r.name,r.strings,this,t):6===r.type&&(i=new Z(h,this,t)),this._$AV.push(i),r=s[++n]}o!==r?.index&&(h=P.nextNode(),o++)}return P.currentNode=l,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class k{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=M(this,t,i),a(t)?t===A||null==t||\"\"===t?(this._$AH!==A&&this._$AR(),this._$AH=A):t!==this._$AH&&t!==E&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):d(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==A&&a(this._$AH)?this._$AA.nextSibling.data=t:this.T(l.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=S.createElement(V(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new R(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=C.get(t.strings);return void 0===i&&C.set(t.strings,i=new S(t)),i}k(t){u(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new k(this.O(c()),this.O(c()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,s){for(this._$AP?.(!1,!0,s);t!==this._$AB;){const s=i(t).nextSibling;i(t).remove(),t=s}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class H{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=A,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=A}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=M(this,t,i,0),o=!a(t)||t!==this._$AH&&t!==E,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=M(this,e[s+n],i,n),r===E&&(r=this._$AH[n]),o||=!a(r)||r!==this._$AH[n],r===A?t=A:t!==A&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class I extends H{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===A?void 0:t}}class L extends H{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==A)}}class z extends H{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=M(this,t,i,0)??A)===E)return;const s=this._$AH,e=t===A&&s!==A||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==A&&(s===A||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class Z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){M(this,t)}}const j={M:h,P:o,A:n,C:1,L:N,R,D:d,V:M,I:k,H,N:L,U:z,B:I,F:Z},B=t.litHtmlPolyfillSupport;B?.(S,k),(t.litHtmlVersions??=[]).push(\"3.3.2\");const D=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new k(i.insertBefore(c(),t),t,void 0,s??{})}return h._$AI(t),h};export{j as _$LH,b as html,T as mathml,E as noChange,A as nothing,D as render,w as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.2\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=t=>(e,o)=>{void 0!==o?o.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)};export{t as customElement};\n//# sourceMappingURL=custom-element.js.map\n","import{notEqual as t,defaultConverter as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:e,reflect:!1,hasChanged:t},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),\"setter\"===n&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t,!0,r)},init(e){return void 0!==e&&this.C(o,void 0,t,e),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t,!0,r)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","import{property as t}from\"./property.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function r(r){return t({...r,state:!0,attribute:!1})}export{r as state};\n//# sourceMappingURL=state.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst e=(e,t,c)=>(c.configurable=!0,c.enumerable=!0,Reflect.decorate&&\"object\"!=typeof t&&Object.defineProperty(e,t,c),c);export{e as desc};\n//# sourceMappingURL=base.js.map\n","import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function e(e,r){return(n,s,i)=>{const o=t=>t.renderRoot?.querySelector(e)??null;if(r){const{get:e,set:r}=\"object\"==typeof s?n:i??(()=>{const t=Symbol();return{get(){return this[t]},set(e){this[t]=e}}})();return t(n,s,{get(){let t=e.call(this);return void 0===t&&(t=o(this),(null!==t||this.hasUpdated)&&r.call(this,t)),t}})}return t(n,s,{get(){return o(this)}})}}export{e as query};\n//# sourceMappingURL=query.js.map\n","import { css } from 'lit';\r\n\r\nexport const resetStyles = css`\r\n *, *::before, *::after {\r\n box-sizing: border-box;\r\n }\r\n\r\n :host {\r\n line-height: 1.5;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n }\r\n\r\n h1, h2, h3, h4, h5, h6 {\r\n overflow-wrap: break-word;\r\n margin: 0;\r\n }\r\n\r\n p {\r\n margin: 0;\r\n }\r\n\r\n a {\r\n color: var(--sl-color-primary);\r\n text-decoration: none;\r\n }\r\n\r\n a:hover {\r\n text-decoration: underline;\r\n }\r\n\r\n code, pre {\r\n font-family: var(--sl-font-mono);\r\n }\r\n\r\n pre {\r\n margin: 0;\r\n overflow-x: auto;\r\n }\r\n\r\n button {\r\n cursor: pointer;\r\n font-family: inherit;\r\n font-size: inherit;\r\n border: none;\r\n background: none;\r\n padding: 0;\r\n color: inherit;\r\n }\r\n\r\n input, textarea, select {\r\n font-family: inherit;\r\n font-size: inherit;\r\n }\r\n\r\n table {\r\n border-collapse: collapse;\r\n width: 100%;\r\n }\r\n\r\n img, svg {\r\n display: block;\r\n max-width: 100%;\r\n }\r\n`;\r\n","import { css } from 'lit';\r\n\r\nexport const tokenStyles = css`\r\n :host {\r\n /* ── Typography ───────────────────────────── */\r\n --sl-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;\r\n --sl-font-mono: 'SF Mono', 'Fira Code', 'Fira Mono', Menlo, Consolas, monospace;\r\n\r\n --sl-font-size-xs: 0.75rem;\r\n --sl-font-size-sm: 0.8125rem;\r\n --sl-font-size-base: 0.875rem;\r\n --sl-font-size-md: 1rem;\r\n --sl-font-size-lg: 1.125rem;\r\n --sl-font-size-xl: 1.5rem;\r\n --sl-font-size-2xl: 2rem;\r\n\r\n /* ── Spacing ──────────────────────────────── */\r\n --sl-spacing-xs: 0.25rem;\r\n --sl-spacing-sm: 0.5rem;\r\n --sl-spacing-md: 0.75rem;\r\n --sl-spacing-lg: 1rem;\r\n --sl-spacing-xl: 1.5rem;\r\n --sl-spacing-2xl: 2rem;\r\n --sl-spacing-3xl: 3rem;\r\n\r\n /* ── Borders & Radius ─────────────────────── */\r\n --sl-radius-sm: 4px;\r\n --sl-radius-md: 6px;\r\n --sl-radius-lg: 8px;\r\n --sl-radius-xl: 12px;\r\n --sl-radius-full: 9999px;\r\n\r\n /* ── Shadows ──────────────────────────────── */\r\n --sl-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);\r\n --sl-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);\r\n --sl-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);\r\n --sl-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);\r\n\r\n /* ── HTTP Method Colors ───────────────────── */\r\n --sl-color-get: #10b981;\r\n --sl-color-get-bg: rgba(16, 185, 129, 0.1);\r\n --sl-color-post: #3b82f6;\r\n --sl-color-post-bg: rgba(59, 130, 246, 0.1);\r\n --sl-color-put: #f59e0b;\r\n --sl-color-put-bg: rgba(245, 158, 11, 0.1);\r\n --sl-color-delete: #ef4444;\r\n --sl-color-delete-bg: rgba(239, 68, 68, 0.1);\r\n --sl-color-patch: #8b5cf6;\r\n --sl-color-patch-bg: rgba(139, 92, 246, 0.1);\r\n --sl-color-options: #6b7280;\r\n --sl-color-options-bg: rgba(107, 114, 128, 0.1);\r\n --sl-color-head: #6b7280;\r\n --sl-color-head-bg: rgba(107, 114, 128, 0.1);\r\n --sl-color-trace: #6b7280;\r\n --sl-color-trace-bg: rgba(107, 114, 128, 0.1);\r\n\r\n /* ── Transitions ─────────────────────────── */\r\n --sl-transition-fast: 150ms ease;\r\n --sl-transition-base: 250ms ease;\r\n\r\n /* ── Layout ───────────────────────────────── */\r\n --sl-sidebar-width: 280px;\r\n --sl-header-height: 56px;\r\n }\r\n`;\r\n","import { css } from 'lit';\r\n\r\nexport const themeStyles = css`\r\n /* ── Light Theme (default) ────────────────── */\r\n :host,\r\n :host([data-theme=\"light\"]),\r\n .sl-root[data-theme=\"light\"] {\r\n --sl-color-primary: #6366f1;\r\n --sl-color-primary-hover: #4f46e5;\r\n --sl-color-primary-text: #ffffff;\r\n\r\n --sl-color-bg: #ffffff;\r\n --sl-color-bg-subtle: #f8fafc;\r\n --sl-color-surface: #ffffff;\r\n --sl-color-surface-raised: #f1f5f9;\r\n\r\n --sl-color-text: #0f172a;\r\n --sl-color-text-secondary: #334155;\r\n --sl-color-text-muted: #64748b;\r\n\r\n --sl-color-border: #e2e8f0;\r\n --sl-color-border-hover: #cbd5e1;\r\n\r\n --sl-color-code-bg: #f8fafc;\r\n --sl-color-code-text: #1e293b;\r\n\r\n --sl-color-success: #10b981;\r\n --sl-color-warning: #f59e0b;\r\n --sl-color-danger: #ef4444;\r\n --sl-color-info: #3b82f6;\r\n\r\n --sl-color-badge-deprecated: #f59e0b;\r\n --sl-color-badge-deprecated-bg: rgba(245, 158, 11, 0.1);\r\n --sl-color-badge-required: #ef4444;\r\n\r\n --sl-color-sidebar-bg: #f8fafc;\r\n --sl-color-sidebar-hover: #e2e8f0;\r\n --sl-color-sidebar-active: rgba(99, 102, 241, 0.08);\r\n\r\n --sl-color-overlay: rgba(0, 0, 0, 0.4);\r\n }\r\n\r\n /* ── Dark Theme ───────────────────────────── */\r\n :host([data-theme=\"dark\"]),\r\n .sl-root[data-theme=\"dark\"] {\r\n --sl-color-primary: #818cf8;\r\n --sl-color-primary-hover: #6366f1;\r\n --sl-color-primary-text: #ffffff;\r\n\r\n --sl-color-bg: #0f172a;\r\n --sl-color-bg-subtle: #1e293b;\r\n --sl-color-surface: #1e293b;\r\n --sl-color-surface-raised: #334155;\r\n\r\n --sl-color-text: #f1f5f9;\r\n --sl-color-text-secondary: #cbd5e1;\r\n --sl-color-text-muted: #94a3b8;\r\n\r\n --sl-color-border: #334155;\r\n --sl-color-border-hover: #475569;\r\n\r\n --sl-color-code-bg: #1e293b;\r\n --sl-color-code-text: #e2e8f0;\r\n\r\n --sl-color-success: #34d399;\r\n --sl-color-warning: #fbbf24;\r\n --sl-color-danger: #f87171;\r\n --sl-color-info: #60a5fa;\r\n\r\n --sl-color-badge-deprecated: #fbbf24;\r\n --sl-color-badge-deprecated-bg: rgba(251, 191, 36, 0.15);\r\n --sl-color-badge-required: #f87171;\r\n\r\n --sl-color-sidebar-bg: #1e293b;\r\n --sl-color-sidebar-hover: #334155;\r\n --sl-color-sidebar-active: rgba(129, 140, 248, 0.12);\r\n\r\n --sl-color-overlay: rgba(0, 0, 0, 0.6);\r\n\r\n --sl-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);\r\n --sl-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.3);\r\n --sl-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.4), 0 4px 6px -4px rgba(0, 0, 0, 0.3);\r\n --sl-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.4), 0 8px 10px -6px rgba(0, 0, 0, 0.3);\r\n }\r\n`;\r\n","// Minimal shim for Node.js 'util' module used by @jsdevtools/ono\r\nexport function inspect(obj: unknown): string {\r\n try {\r\n return JSON.stringify(obj, null, 2) ?? String(obj);\r\n } catch {\r\n return String(obj);\r\n }\r\n}\r\n\r\nexport function format(fmt: string, ...args: unknown[]): string {\r\n let i = 0;\r\n return fmt.replace(/%[sdj%]/g, (match) => {\r\n if (match === '%%') return '%';\r\n if (i >= args.length) return match;\r\n const val = args[i++];\r\n if (match === '%s') return String(val);\r\n if (match === '%d') return String(Number(val));\r\n if (match === '%j') {\r\n try { return JSON.stringify(val); } catch { return '[Circular]'; }\r\n }\r\n return String(val);\r\n });\r\n}\r\n\r\nexport function inherits(ctor: Function, superCtor: Function): void {\r\n ctor.prototype = Object.create(superCtor.prototype, {\r\n constructor: { value: ctor, writable: true, configurable: true },\r\n });\r\n}\r\n\r\nexport default { inspect, format, inherits };\r\n","\"use strict\";\n\nconst util = require(\"util\");\n\nexports.format = util.format;\nexports.inherits = util.inherits;\nconst parse = (u) => new URL(u);\n\n/**\n * Regular Expression that matches Swagger path params.\n */\nexports.swaggerParamRegExp = /\\{([^/}]+)}/g;\n\n/**\n * List of HTTP verbs used for OperationItem as per the Swagger specification\n */\nconst operationsList = [\"get\", \"post\", \"put\", \"delete\", \"patch\", \"options\", \"head\", \"trace\"];\n\n/**\n * This function takes in a Server object, checks if it has relative path\n * and then fixes it as per the path url\n *\n * @param {object} server - The server object to be fixed\n * @param {string} path - The path (an http/https url) from where the file was downloaded\n * @returns {object} - The fixed server object\n */\nfunction fixServers (server, path) {\n // Server url starting with \"/\" tells that it is not an http(s) url\n if (server.url && server.url.startsWith(\"/\")) {\n const inUrl = parse(path);\n const finalUrl = inUrl.protocol + \"//\" + inUrl.hostname + server.url;\n server.url = finalUrl;\n return server;\n }\n}\n\n/**\n * This function helps fix the relative servers in the API definition file\n * be at root, path or operation's level\n */\nfunction fixOasRelativeServers (schema, filePath) {\n if (schema.openapi && (filePath && (filePath.startsWith(\"http:\") || filePath.startsWith(\"https:\")))) {\n /**\n * From OpenAPI v3 spec for Server object's url property: \"REQUIRED. A URL to the target host.\n * This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where\n * the OpenAPI document is being served.\"\n * Further, the spec says that \"servers\" property can show up at root level, in 'Path Item' object or in 'Operation' object.\n * However, interpretation of the spec says that relative paths for servers should take into account the hostname that\n * serves the OpenAPI file.\n */\n if (schema.servers) {\n schema.servers.map(server => fixServers(server, filePath)); // Root level servers array's fixup\n }\n\n // Path, Operation, or Webhook level servers array's fixup\n [\"paths\", \"webhooks\"].forEach(component => {\n Object.keys(schema[component] || []).forEach(path => {\n const pathItem = schema[component][path];\n Object.keys(pathItem).forEach(opItem => {\n if (opItem === \"servers\") {\n // servers at pathitem level\n pathItem[opItem].map(server => fixServers(server, filePath));\n }\n else if (operationsList.includes(opItem)) {\n // servers at operation level\n if (pathItem[opItem].servers) {\n pathItem[opItem].servers.map(server => fixServers(server, filePath));\n }\n }\n });\n });\n });\n }\n else {\n // Do nothing and return\n }\n}\n\nexports.fixOasRelativeServers = fixOasRelativeServers;\n","/**\n * Ono supports custom formatters for error messages. In Node.js, it defaults\n * to the `util.format()` function. In browsers, it defaults to `Array.join()`.\n *\n * The Node.js functionality can be used in a web browser via a polyfill,\n * such as \"format-util\".\n *\n * @see https://github.com/tmpfs/format-util\n */\nexport const format = false;\n/**\n * The `util.inspect()` functionality only applies to Node.js.\n * We return the constant `false` here so that the Node-specific code gets removed by tree-shaking.\n */\nexport const addInspectMethod = false;\n//# sourceMappingURL=isomorphic.browser.js.map","const newline = /\\r?\\n/;\nconst onoCall = /\\bono[ @]/;\n/**\n * Is the property lazily computed?\n */\nexport function isLazyStack(stackProp) {\n return Boolean(stackProp &&\n stackProp.configurable &&\n typeof stackProp.get === \"function\");\n}\n/**\n * Is the stack property writable?\n */\nexport function isWritableStack(stackProp) {\n return Boolean(\n // If there is no stack property, then it's writable, since assigning it will create it\n !stackProp ||\n stackProp.writable ||\n typeof stackProp.set === \"function\");\n}\n/**\n * Appends the original `Error.stack` property to the new Error's stack.\n */\nexport function joinStacks(newError, originalError) {\n let newStack = popStack(newError.stack);\n let originalStack = originalError ? originalError.stack : undefined;\n if (newStack && originalStack) {\n return newStack + \"\\n\\n\" + originalStack;\n }\n else {\n return newStack || originalStack;\n }\n}\n/**\n * Calls `joinStacks` lazily, when the `Error.stack` property is accessed.\n */\nexport function lazyJoinStacks(lazyStack, newError, originalError) {\n if (originalError) {\n Object.defineProperty(newError, \"stack\", {\n get: () => {\n let newStack = lazyStack.get.apply(newError);\n return joinStacks({ stack: newStack }, originalError);\n },\n enumerable: false,\n configurable: true\n });\n }\n else {\n lazyPopStack(newError, lazyStack);\n }\n}\n/**\n * Removes Ono from the stack, so that the stack starts at the original error location\n */\nfunction popStack(stack) {\n if (stack) {\n let lines = stack.split(newline);\n // Find the Ono call(s) in the stack, and remove them\n let onoStart;\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n if (onoCall.test(line)) {\n if (onoStart === undefined) {\n // We found the first Ono call in the stack trace.\n // There may be other subsequent Ono calls as well.\n onoStart = i;\n }\n }\n else if (onoStart !== undefined) {\n // We found the first non-Ono call after one or more Ono calls.\n // So remove the Ono call lines from the stack trace\n lines.splice(onoStart, i - onoStart);\n break;\n }\n }\n if (lines.length > 0) {\n return lines.join(\"\\n\");\n }\n }\n // If we get here, then the stack doesn't contain a call to `ono`.\n // This may be due to minification or some optimization of the JS engine.\n // So just return the stack as-is.\n return stack;\n}\n/**\n * Calls `popStack` lazily, when the `Error.stack` property is accessed.\n */\nfunction lazyPopStack(error, lazyStack) {\n Object.defineProperty(error, \"stack\", {\n get: () => popStack(lazyStack.get.apply(error)),\n enumerable: false,\n configurable: true\n });\n}\n//# sourceMappingURL=stack.js.map","const nonJsonTypes = [\"function\", \"symbol\", \"undefined\"];\nconst protectedProps = [\"constructor\", \"prototype\", \"__proto__\"];\nconst objectPrototype = Object.getPrototypeOf({});\n/**\n * Custom JSON serializer for Error objects.\n * Returns all built-in error properties, as well as extended properties.\n */\nexport function toJSON() {\n // HACK: We have to cast the objects to `any` so we can use symbol indexers.\n // see https://github.com/Microsoft/TypeScript/issues/1863\n let pojo = {};\n let error = this;\n for (let key of getDeepKeys(error)) {\n if (typeof key === \"string\") {\n let value = error[key];\n let type = typeof value;\n if (!nonJsonTypes.includes(type)) {\n pojo[key] = value;\n }\n }\n }\n return pojo;\n}\n/**\n * Returns own, inherited, enumerable, non-enumerable, string, and symbol keys of `obj`.\n * Does NOT return members of the base Object prototype, or the specified omitted keys.\n */\nexport function getDeepKeys(obj, omit = []) {\n let keys = [];\n // Crawl the prototype chain, finding all the string and symbol keys\n while (obj && obj !== objectPrototype) {\n keys = keys.concat(Object.getOwnPropertyNames(obj), Object.getOwnPropertySymbols(obj));\n obj = Object.getPrototypeOf(obj);\n }\n // De-duplicate the list of keys\n let uniqueKeys = new Set(keys);\n // Remove any omitted keys\n for (let key of omit.concat(protectedProps)) {\n uniqueKeys.delete(key);\n }\n return uniqueKeys;\n}\n//# sourceMappingURL=to-json.js.map","import { addInspectMethod } from \"./isomorphic.node\";\nimport { isLazyStack, isWritableStack, joinStacks, lazyJoinStacks } from \"./stack\";\nimport { getDeepKeys, toJSON } from \"./to-json\";\nconst protectedProps = [\"name\", \"message\", \"stack\"];\n/**\n * Extends the new error with the properties of the original error and the `props` object.\n *\n * @param newError - The error object to extend\n * @param originalError - The original error object, if any\n * @param props - Additional properties to add, if any\n */\nexport function extendError(error, originalError, props) {\n let onoError = error;\n extendStack(onoError, originalError);\n // Copy properties from the original error\n if (originalError && typeof originalError === \"object\") {\n mergeErrors(onoError, originalError);\n }\n // The default `toJSON` method doesn't output props like `name`, `message`, `stack`, etc.\n // So replace it with one that outputs every property of the error.\n onoError.toJSON = toJSON;\n // On Node.js, add support for the `util.inspect()` method\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (addInspectMethod) {\n addInspectMethod(onoError);\n }\n // Finally, copy custom properties that were specified by the user.\n // These props OVERWRITE any previous props\n if (props && typeof props === \"object\") {\n Object.assign(onoError, props);\n }\n return onoError;\n}\n/**\n * Extend the error stack to include its cause\n */\nfunction extendStack(newError, originalError) {\n let stackProp = Object.getOwnPropertyDescriptor(newError, \"stack\");\n if (isLazyStack(stackProp)) {\n lazyJoinStacks(stackProp, newError, originalError);\n }\n else if (isWritableStack(stackProp)) {\n newError.stack = joinStacks(newError, originalError);\n }\n}\n/**\n * Merges properties of the original error with the new error.\n *\n * @param newError - The error object to extend\n * @param originalError - The original error object, if any\n */\nfunction mergeErrors(newError, originalError) {\n // Get the original error's keys\n // NOTE: We specifically exclude properties that we have already set on the new error.\n // This is _especially_ important for the `stack` property, because this property has\n // a lazy getter in some environments\n let keys = getDeepKeys(originalError, protectedProps);\n // HACK: We have to cast the errors to `any` so we can use symbol indexers.\n // see https://github.com/Microsoft/TypeScript/issues/1863\n let _newError = newError;\n let _originalError = originalError;\n for (let key of keys) {\n if (_newError[key] === undefined) {\n try {\n _newError[key] = _originalError[key];\n }\n catch (e) {\n // This property is read-only, so it can't be copied\n }\n }\n }\n}\n//# sourceMappingURL=extend-error.js.map","import { format } from \"./isomorphic.node\";\n/**\n * Normalizes Ono options, accounting for defaults and optional options.\n */\nexport function normalizeOptions(options) {\n options = options || {};\n return {\n concatMessages: options.concatMessages === undefined ? true : Boolean(options.concatMessages),\n format: options.format === undefined ? format\n : (typeof options.format === \"function\" ? options.format : false),\n };\n}\n/**\n * Normalizes the Ono arguments, accounting for defaults, options, and optional arguments.\n */\nexport function normalizeArgs(args, options) {\n let originalError;\n let props;\n let formatArgs;\n let message = \"\";\n // Determine which arguments were actually specified\n if (typeof args[0] === \"string\") {\n formatArgs = args;\n }\n else if (typeof args[1] === \"string\") {\n if (args[0] instanceof Error) {\n originalError = args[0];\n }\n else {\n props = args[0];\n }\n formatArgs = args.slice(1);\n }\n else {\n originalError = args[0];\n props = args[1];\n formatArgs = args.slice(2);\n }\n // If there are any format arguments, then format the error message\n if (formatArgs.length > 0) {\n if (options.format) {\n message = options.format.apply(undefined, formatArgs);\n }\n else {\n message = formatArgs.join(\" \");\n }\n }\n if (options.concatMessages && originalError && originalError.message) {\n // The inner-error's message will be added to the new message\n message += (message ? \" \\n\" : \"\") + originalError.message;\n }\n return { originalError, props, message };\n}\n//# sourceMappingURL=normalize.js.map","import { extendError } from \"./extend-error\";\nimport { normalizeArgs, normalizeOptions } from \"./normalize\";\nimport { toJSON as errorToJSON } from \"./to-json\";\nconst constructor = Ono;\nexport { constructor as Ono };\n/**\n * Creates an `Ono` instance for a specifc error type.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nfunction Ono(ErrorConstructor, options) {\n options = normalizeOptions(options);\n function ono(...args) {\n let { originalError, props, message } = normalizeArgs(args, options);\n // Create a new error of the specified type\n let newError = new ErrorConstructor(message);\n // Extend the error with the properties of the original error and the `props` object\n return extendError(newError, originalError, props);\n }\n ono[Symbol.species] = ErrorConstructor;\n return ono;\n}\n/**\n * Returns an object containing all properties of the given Error object,\n * which can be used with `JSON.stringify()`.\n */\nOno.toJSON = function toJSON(error) {\n return errorToJSON.call(error);\n};\n/**\n * Extends the given Error object with enhanced Ono functionality, such as nested stack traces,\n * additional properties, and improved support for `JSON.stringify()`.\n */\nOno.extend = function extend(error, originalError, props) {\n if (props || originalError instanceof Error) {\n return extendError(error, originalError, props);\n }\n else if (originalError) {\n return extendError(error, undefined, originalError);\n }\n else {\n return extendError(error);\n }\n};\n//# sourceMappingURL=constructor.js.map","import { Ono as OnoConstructor } from \"./constructor\";\nconst singleton = ono;\nexport { singleton as ono };\nono.error = new OnoConstructor(Error);\nono.eval = new OnoConstructor(EvalError);\nono.range = new OnoConstructor(RangeError);\nono.reference = new OnoConstructor(ReferenceError);\nono.syntax = new OnoConstructor(SyntaxError);\nono.type = new OnoConstructor(TypeError);\nono.uri = new OnoConstructor(URIError);\nconst onoMap = ono;\n/**\n * Creates a new error with the specified message, properties, and/or inner error.\n * If an inner error is provided, then the new error will match its type, if possible.\n */\nfunction ono(...args) {\n let originalError = args[0];\n // Is the first argument an Error-like object?\n if (typeof originalError === \"object\" && typeof originalError.name === \"string\") {\n // Try to find an Ono singleton method that matches this error type\n for (let typedOno of Object.values(onoMap)) {\n if (typeof typedOno === \"function\" && typedOno.name === \"ono\") {\n let species = typedOno[Symbol.species];\n if (species && species !== Error && (originalError instanceof species || originalError.name === species.name)) {\n // Create an error of the same type\n return typedOno.apply(undefined, args);\n }\n }\n }\n }\n // By default, create a base Error object\n return ono.error.apply(undefined, args);\n}\n//# sourceMappingURL=singleton.js.map","/* eslint-env commonjs */\nimport { ono } from \"./singleton\";\nexport { Ono } from \"./constructor\";\nexport * from \"./types\";\nexport { ono };\nexport default ono;\n// CommonJS default export hack\nif (typeof module === \"object\" && typeof module.exports === \"object\") {\n module.exports = Object.assign(module.exports.default, module.exports);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nclass _CodeOrName {\n}\nexports._CodeOrName = _CodeOrName;\nexports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nclass Name extends _CodeOrName {\n constructor(s) {\n super();\n if (!exports.IDENTIFIER.test(s))\n throw new Error(\"CodeGen: name must be a valid identifier\");\n this.str = s;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n return false;\n }\n get names() {\n return { [this.str]: 1 };\n }\n}\nexports.Name = Name;\nclass _Code extends _CodeOrName {\n constructor(code) {\n super();\n this._items = typeof code === \"string\" ? [code] : code;\n }\n toString() {\n return this.str;\n }\n emptyStr() {\n if (this._items.length > 1)\n return false;\n const item = this._items[0];\n return item === \"\" || item === '\"\"';\n }\n get str() {\n var _a;\n return ((_a = this._str) !== null && _a !== void 0 ? _a : (this._str = this._items.reduce((s, c) => `${s}${c}`, \"\")));\n }\n get names() {\n var _a;\n return ((_a = this._names) !== null && _a !== void 0 ? _a : (this._names = this._items.reduce((names, c) => {\n if (c instanceof Name)\n names[c.str] = (names[c.str] || 0) + 1;\n return names;\n }, {})));\n }\n}\nexports._Code = _Code;\nexports.nil = new _Code(\"\");\nfunction _(strs, ...args) {\n const code = [strs[0]];\n let i = 0;\n while (i < args.length) {\n addCodeArg(code, args[i]);\n code.push(strs[++i]);\n }\n return new _Code(code);\n}\nexports._ = _;\nconst plus = new _Code(\"+\");\nfunction str(strs, ...args) {\n const expr = [safeStringify(strs[0])];\n let i = 0;\n while (i < args.length) {\n expr.push(plus);\n addCodeArg(expr, args[i]);\n expr.push(plus, safeStringify(strs[++i]));\n }\n optimize(expr);\n return new _Code(expr);\n}\nexports.str = str;\nfunction addCodeArg(code, arg) {\n if (arg instanceof _Code)\n code.push(...arg._items);\n else if (arg instanceof Name)\n code.push(arg);\n else\n code.push(interpolate(arg));\n}\nexports.addCodeArg = addCodeArg;\nfunction optimize(expr) {\n let i = 1;\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1]);\n if (res !== undefined) {\n expr.splice(i - 1, 3, res);\n continue;\n }\n expr[i++] = \"+\";\n }\n i++;\n }\n}\nfunction mergeExprItems(a, b) {\n if (b === '\"\"')\n return a;\n if (a === '\"\"')\n return b;\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"')\n return;\n if (typeof b != \"string\")\n return `${a.slice(0, -1)}${b}\"`;\n if (b[0] === '\"')\n return a.slice(0, -1) + b.slice(1);\n return;\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name))\n return `\"${a}${b.slice(1)}`;\n return;\n}\nfunction strConcat(c1, c2) {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str `${c1}${c2}`;\n}\nexports.strConcat = strConcat;\n// TODO do not allow arrays here\nfunction interpolate(x) {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x);\n}\nfunction stringify(x) {\n return new _Code(safeStringify(x));\n}\nexports.stringify = stringify;\nfunction safeStringify(x) {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\nexports.safeStringify = safeStringify;\nfunction getProperty(key) {\n return typeof key == \"string\" && exports.IDENTIFIER.test(key) ? new _Code(`.${key}`) : _ `[${key}]`;\n}\nexports.getProperty = getProperty;\n//Does best effort to format the name properly\nfunction getEsmExportName(key) {\n if (typeof key == \"string\" && exports.IDENTIFIER.test(key)) {\n return new _Code(`${key}`);\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`);\n}\nexports.getEsmExportName = getEsmExportName;\nfunction regexpCode(rx) {\n return new _Code(rx.toString());\n}\nexports.regexpCode = regexpCode;\n//# sourceMappingURL=code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0;\nconst code_1 = require(\"./code\");\nclass ValueError extends Error {\n constructor(name) {\n super(`CodeGen: \"code\" for ${name} not defined`);\n this.value = name.value;\n }\n}\nvar UsedValueState;\n(function (UsedValueState) {\n UsedValueState[UsedValueState[\"Started\"] = 0] = \"Started\";\n UsedValueState[UsedValueState[\"Completed\"] = 1] = \"Completed\";\n})(UsedValueState || (exports.UsedValueState = UsedValueState = {}));\nexports.varKinds = {\n const: new code_1.Name(\"const\"),\n let: new code_1.Name(\"let\"),\n var: new code_1.Name(\"var\"),\n};\nclass Scope {\n constructor({ prefixes, parent } = {}) {\n this._names = {};\n this._prefixes = prefixes;\n this._parent = parent;\n }\n toName(nameOrPrefix) {\n return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix);\n }\n name(prefix) {\n return new code_1.Name(this._newName(prefix));\n }\n _newName(prefix) {\n const ng = this._names[prefix] || this._nameGroup(prefix);\n return `${prefix}${ng.index++}`;\n }\n _nameGroup(prefix) {\n var _a, _b;\n if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`);\n }\n return (this._names[prefix] = { prefix, index: 0 });\n }\n}\nexports.Scope = Scope;\nclass ValueScopeName extends code_1.Name {\n constructor(prefix, nameStr) {\n super(nameStr);\n this.prefix = prefix;\n }\n setValue(value, { property, itemIndex }) {\n this.value = value;\n this.scopePath = (0, code_1._) `.${new code_1.Name(property)}[${itemIndex}]`;\n }\n}\nexports.ValueScopeName = ValueScopeName;\nconst line = (0, code_1._) `\\n`;\nclass ValueScope extends Scope {\n constructor(opts) {\n super(opts);\n this._values = {};\n this._scope = opts.scope;\n this.opts = { ...opts, _n: opts.lines ? line : code_1.nil };\n }\n get() {\n return this._scope;\n }\n name(prefix) {\n return new ValueScopeName(prefix, this._newName(prefix));\n }\n value(nameOrPrefix, value) {\n var _a;\n if (value.ref === undefined)\n throw new Error(\"CodeGen: ref must be passed in value\");\n const name = this.toName(nameOrPrefix);\n const { prefix } = name;\n const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref;\n let vs = this._values[prefix];\n if (vs) {\n const _name = vs.get(valueKey);\n if (_name)\n return _name;\n }\n else {\n vs = this._values[prefix] = new Map();\n }\n vs.set(valueKey, name);\n const s = this._scope[prefix] || (this._scope[prefix] = []);\n const itemIndex = s.length;\n s[itemIndex] = value.ref;\n name.setValue(value, { property: prefix, itemIndex });\n return name;\n }\n getValue(prefix, keyOrRef) {\n const vs = this._values[prefix];\n if (!vs)\n return;\n return vs.get(keyOrRef);\n }\n scopeRefs(scopeName, values = this._values) {\n return this._reduceValues(values, (name) => {\n if (name.scopePath === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return (0, code_1._) `${scopeName}${name.scopePath}`;\n });\n }\n scopeCode(values = this._values, usedValues, getCode) {\n return this._reduceValues(values, (name) => {\n if (name.value === undefined)\n throw new Error(`CodeGen: name \"${name}\" has no value`);\n return name.value.code;\n }, usedValues, getCode);\n }\n _reduceValues(values, valueCode, usedValues = {}, getCode) {\n let code = code_1.nil;\n for (const prefix in values) {\n const vs = values[prefix];\n if (!vs)\n continue;\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map());\n vs.forEach((name) => {\n if (nameSet.has(name))\n return;\n nameSet.set(name, UsedValueState.Started);\n let c = valueCode(name);\n if (c) {\n const def = this.opts.es5 ? exports.varKinds.var : exports.varKinds.const;\n code = (0, code_1._) `${code}${def} ${name} = ${c};${this.opts._n}`;\n }\n else if ((c = getCode === null || getCode === void 0 ? void 0 : getCode(name))) {\n code = (0, code_1._) `${code}${c}${this.opts._n}`;\n }\n else {\n throw new ValueError(name);\n }\n nameSet.set(name, UsedValueState.Completed);\n });\n }\n return code;\n }\n}\nexports.ValueScope = ValueScope;\n//# sourceMappingURL=scope.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0;\nconst code_1 = require(\"./code\");\nconst scope_1 = require(\"./scope\");\nvar code_2 = require(\"./code\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return code_2._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return code_2.str; } });\nObject.defineProperty(exports, \"strConcat\", { enumerable: true, get: function () { return code_2.strConcat; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return code_2.nil; } });\nObject.defineProperty(exports, \"getProperty\", { enumerable: true, get: function () { return code_2.getProperty; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return code_2.stringify; } });\nObject.defineProperty(exports, \"regexpCode\", { enumerable: true, get: function () { return code_2.regexpCode; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return code_2.Name; } });\nvar scope_2 = require(\"./scope\");\nObject.defineProperty(exports, \"Scope\", { enumerable: true, get: function () { return scope_2.Scope; } });\nObject.defineProperty(exports, \"ValueScope\", { enumerable: true, get: function () { return scope_2.ValueScope; } });\nObject.defineProperty(exports, \"ValueScopeName\", { enumerable: true, get: function () { return scope_2.ValueScopeName; } });\nObject.defineProperty(exports, \"varKinds\", { enumerable: true, get: function () { return scope_2.varKinds; } });\nexports.operators = {\n GT: new code_1._Code(\">\"),\n GTE: new code_1._Code(\">=\"),\n LT: new code_1._Code(\"<\"),\n LTE: new code_1._Code(\"<=\"),\n EQ: new code_1._Code(\"===\"),\n NEQ: new code_1._Code(\"!==\"),\n NOT: new code_1._Code(\"!\"),\n OR: new code_1._Code(\"||\"),\n AND: new code_1._Code(\"&&\"),\n ADD: new code_1._Code(\"+\"),\n};\nclass Node {\n optimizeNodes() {\n return this;\n }\n optimizeNames(_names, _constants) {\n return this;\n }\n}\nclass Def extends Node {\n constructor(varKind, name, rhs) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.rhs = rhs;\n }\n render({ es5, _n }) {\n const varKind = es5 ? scope_1.varKinds.var : this.varKind;\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`;\n return `${varKind} ${this.name}${rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (!names[this.name.str])\n return;\n if (this.rhs)\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {};\n }\n}\nclass Assign extends Node {\n constructor(lhs, rhs, sideEffects) {\n super();\n this.lhs = lhs;\n this.rhs = rhs;\n this.sideEffects = sideEffects;\n }\n render({ _n }) {\n return `${this.lhs} = ${this.rhs};` + _n;\n }\n optimizeNames(names, constants) {\n if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects)\n return;\n this.rhs = optimizeExpr(this.rhs, names, constants);\n return this;\n }\n get names() {\n const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names };\n return addExprNames(names, this.rhs);\n }\n}\nclass AssignOp extends Assign {\n constructor(lhs, op, rhs, sideEffects) {\n super(lhs, rhs, sideEffects);\n this.op = op;\n }\n render({ _n }) {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n;\n }\n}\nclass Label extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n return `${this.label}:` + _n;\n }\n}\nclass Break extends Node {\n constructor(label) {\n super();\n this.label = label;\n this.names = {};\n }\n render({ _n }) {\n const label = this.label ? ` ${this.label}` : \"\";\n return `break${label};` + _n;\n }\n}\nclass Throw extends Node {\n constructor(error) {\n super();\n this.error = error;\n }\n render({ _n }) {\n return `throw ${this.error};` + _n;\n }\n get names() {\n return this.error.names;\n }\n}\nclass AnyCode extends Node {\n constructor(code) {\n super();\n this.code = code;\n }\n render({ _n }) {\n return `${this.code};` + _n;\n }\n optimizeNodes() {\n return `${this.code}` ? this : undefined;\n }\n optimizeNames(names, constants) {\n this.code = optimizeExpr(this.code, names, constants);\n return this;\n }\n get names() {\n return this.code instanceof code_1._CodeOrName ? this.code.names : {};\n }\n}\nclass ParentNode extends Node {\n constructor(nodes = []) {\n super();\n this.nodes = nodes;\n }\n render(opts) {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\");\n }\n optimizeNodes() {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n const n = nodes[i].optimizeNodes();\n if (Array.isArray(n))\n nodes.splice(i, 1, ...n);\n else if (n)\n nodes[i] = n;\n else\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n optimizeNames(names, constants) {\n const { nodes } = this;\n let i = nodes.length;\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i];\n if (n.optimizeNames(names, constants))\n continue;\n subtractNames(names, n.names);\n nodes.splice(i, 1);\n }\n return nodes.length > 0 ? this : undefined;\n }\n get names() {\n return this.nodes.reduce((names, n) => addNames(names, n.names), {});\n }\n}\nclass BlockNode extends ParentNode {\n render(opts) {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n;\n }\n}\nclass Root extends ParentNode {\n}\nclass Else extends BlockNode {\n}\nElse.kind = \"else\";\nclass If extends BlockNode {\n constructor(condition, nodes) {\n super(nodes);\n this.condition = condition;\n }\n render(opts) {\n let code = `if(${this.condition})` + super.render(opts);\n if (this.else)\n code += \"else \" + this.else.render(opts);\n return code;\n }\n optimizeNodes() {\n super.optimizeNodes();\n const cond = this.condition;\n if (cond === true)\n return this.nodes; // else is ignored here\n let e = this.else;\n if (e) {\n const ns = e.optimizeNodes();\n e = this.else = Array.isArray(ns) ? new Else(ns) : ns;\n }\n if (e) {\n if (cond === false)\n return e instanceof If ? e : e.nodes;\n if (this.nodes.length)\n return this;\n return new If(not(cond), e instanceof If ? [e] : e.nodes);\n }\n if (cond === false || !this.nodes.length)\n return undefined;\n return this;\n }\n optimizeNames(names, constants) {\n var _a;\n this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n if (!(super.optimizeNames(names, constants) || this.else))\n return;\n this.condition = optimizeExpr(this.condition, names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n addExprNames(names, this.condition);\n if (this.else)\n addNames(names, this.else.names);\n return names;\n }\n}\nIf.kind = \"if\";\nclass For extends BlockNode {\n}\nFor.kind = \"for\";\nclass ForLoop extends For {\n constructor(iteration) {\n super();\n this.iteration = iteration;\n }\n render(opts) {\n return `for(${this.iteration})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iteration = optimizeExpr(this.iteration, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iteration.names);\n }\n}\nclass ForRange extends For {\n constructor(varKind, name, from, to) {\n super();\n this.varKind = varKind;\n this.name = name;\n this.from = from;\n this.to = to;\n }\n render(opts) {\n const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind;\n const { name, from, to } = this;\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts);\n }\n get names() {\n const names = addExprNames(super.names, this.from);\n return addExprNames(names, this.to);\n }\n}\nclass ForIter extends For {\n constructor(loop, varKind, name, iterable) {\n super();\n this.loop = loop;\n this.varKind = varKind;\n this.name = name;\n this.iterable = iterable;\n }\n render(opts) {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts);\n }\n optimizeNames(names, constants) {\n if (!super.optimizeNames(names, constants))\n return;\n this.iterable = optimizeExpr(this.iterable, names, constants);\n return this;\n }\n get names() {\n return addNames(super.names, this.iterable.names);\n }\n}\nclass Func extends BlockNode {\n constructor(name, args, async) {\n super();\n this.name = name;\n this.args = args;\n this.async = async;\n }\n render(opts) {\n const _async = this.async ? \"async \" : \"\";\n return `${_async}function ${this.name}(${this.args})` + super.render(opts);\n }\n}\nFunc.kind = \"func\";\nclass Return extends ParentNode {\n render(opts) {\n return \"return \" + super.render(opts);\n }\n}\nReturn.kind = \"return\";\nclass Try extends BlockNode {\n render(opts) {\n let code = \"try\" + super.render(opts);\n if (this.catch)\n code += this.catch.render(opts);\n if (this.finally)\n code += this.finally.render(opts);\n return code;\n }\n optimizeNodes() {\n var _a, _b;\n super.optimizeNodes();\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes();\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes();\n return this;\n }\n optimizeNames(names, constants) {\n var _a, _b;\n super.optimizeNames(names, constants);\n (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants);\n (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants);\n return this;\n }\n get names() {\n const names = super.names;\n if (this.catch)\n addNames(names, this.catch.names);\n if (this.finally)\n addNames(names, this.finally.names);\n return names;\n }\n}\nclass Catch extends BlockNode {\n constructor(error) {\n super();\n this.error = error;\n }\n render(opts) {\n return `catch(${this.error})` + super.render(opts);\n }\n}\nCatch.kind = \"catch\";\nclass Finally extends BlockNode {\n render(opts) {\n return \"finally\" + super.render(opts);\n }\n}\nFinally.kind = \"finally\";\nclass CodeGen {\n constructor(extScope, opts = {}) {\n this._values = {};\n this._blockStarts = [];\n this._constants = {};\n this.opts = { ...opts, _n: opts.lines ? \"\\n\" : \"\" };\n this._extScope = extScope;\n this._scope = new scope_1.Scope({ parent: extScope });\n this._nodes = [new Root()];\n }\n toString() {\n return this._root.render(this.opts);\n }\n // returns unique name in the internal scope\n name(prefix) {\n return this._scope.name(prefix);\n }\n // reserves unique name in the external scope\n scopeName(prefix) {\n return this._extScope.name(prefix);\n }\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName, value) {\n const name = this._extScope.value(prefixOrName, value);\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set());\n vs.add(name);\n return name;\n }\n getScopeValue(prefix, keyOrRef) {\n return this._extScope.getValue(prefix, keyOrRef);\n }\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName) {\n return this._extScope.scopeRefs(scopeName, this._values);\n }\n scopeCode() {\n return this._extScope.scopeCode(this._values);\n }\n _def(varKind, nameOrPrefix, rhs, constant) {\n const name = this._scope.toName(nameOrPrefix);\n if (rhs !== undefined && constant)\n this._constants[name.str] = rhs;\n this._leafNode(new Def(varKind, name, rhs));\n return name;\n }\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant);\n }\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant);\n }\n // `var` declaration with optional assignment\n var(nameOrPrefix, rhs, _constant) {\n return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant);\n }\n // assignment code\n assign(lhs, rhs, sideEffects) {\n return this._leafNode(new Assign(lhs, rhs, sideEffects));\n }\n // `+=` code\n add(lhs, rhs) {\n return this._leafNode(new AssignOp(lhs, exports.operators.ADD, rhs));\n }\n // appends passed SafeExpr to code or executes Block\n code(c) {\n if (typeof c == \"function\")\n c();\n else if (c !== code_1.nil)\n this._leafNode(new AnyCode(c));\n return this;\n }\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues) {\n const code = [\"{\"];\n for (const [key, value] of keyValues) {\n if (code.length > 1)\n code.push(\",\");\n code.push(key);\n if (key !== value || this.opts.es5) {\n code.push(\":\");\n (0, code_1.addCodeArg)(code, value);\n }\n }\n code.push(\"}\");\n return new code_1._Code(code);\n }\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition, thenBody, elseBody) {\n this._blockNode(new If(condition));\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf();\n }\n else if (thenBody) {\n this.code(thenBody).endIf();\n }\n else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body');\n }\n return this;\n }\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition) {\n return this._elseNode(new If(condition));\n }\n // `else` clause - only valid after `if` or `else if` clauses\n else() {\n return this._elseNode(new Else());\n }\n // end `if` statement (needed if gen.if was used only with condition)\n endIf() {\n return this._endBlockNode(If, Else);\n }\n _for(node, forBody) {\n this._blockNode(node);\n if (forBody)\n this.code(forBody).endFor();\n return this;\n }\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration, forBody) {\n return this._for(new ForLoop(iteration), forBody);\n }\n // `for` statement for a range of values\n forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) {\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name));\n }\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) {\n const name = this._scope.toName(nameOrPrefix);\n if (this.opts.es5) {\n const arr = iterable instanceof code_1.Name ? iterable : this.var(\"_arr\", iterable);\n return this.forRange(\"_i\", 0, (0, code_1._) `${arr}.length`, (i) => {\n this.var(name, (0, code_1._) `${arr}[${i}]`);\n forBody(name);\n });\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name));\n }\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, (0, code_1._) `Object.keys(${obj})`, forBody);\n }\n const name = this._scope.toName(nameOrPrefix);\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name));\n }\n // end `for` loop\n endFor() {\n return this._endBlockNode(For);\n }\n // `label` statement\n label(label) {\n return this._leafNode(new Label(label));\n }\n // `break` statement\n break(label) {\n return this._leafNode(new Break(label));\n }\n // `return` statement\n return(value) {\n const node = new Return();\n this._blockNode(node);\n this.code(value);\n if (node.nodes.length !== 1)\n throw new Error('CodeGen: \"return\" should have one node');\n return this._endBlockNode(Return);\n }\n // `try` statement\n try(tryBody, catchCode, finallyCode) {\n if (!catchCode && !finallyCode)\n throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"');\n const node = new Try();\n this._blockNode(node);\n this.code(tryBody);\n if (catchCode) {\n const error = this.name(\"e\");\n this._currNode = node.catch = new Catch(error);\n catchCode(error);\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally();\n this.code(finallyCode);\n }\n return this._endBlockNode(Catch, Finally);\n }\n // `throw` statement\n throw(error) {\n return this._leafNode(new Throw(error));\n }\n // start self-balancing block\n block(body, nodeCount) {\n this._blockStarts.push(this._nodes.length);\n if (body)\n this.code(body).endBlock(nodeCount);\n return this;\n }\n // end the current self-balancing block\n endBlock(nodeCount) {\n const len = this._blockStarts.pop();\n if (len === undefined)\n throw new Error(\"CodeGen: not in self-balancing block\");\n const toClose = this._nodes.length - len;\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);\n }\n this._nodes.length = len;\n return this;\n }\n // `function` heading (or definition if funcBody is passed)\n func(name, args = code_1.nil, async, funcBody) {\n this._blockNode(new Func(name, args, async));\n if (funcBody)\n this.code(funcBody).endFunc();\n return this;\n }\n // end function definition\n endFunc() {\n return this._endBlockNode(Func);\n }\n optimize(n = 1) {\n while (n-- > 0) {\n this._root.optimizeNodes();\n this._root.optimizeNames(this._root.names, this._constants);\n }\n }\n _leafNode(node) {\n this._currNode.nodes.push(node);\n return this;\n }\n _blockNode(node) {\n this._currNode.nodes.push(node);\n this._nodes.push(node);\n }\n _endBlockNode(N1, N2) {\n const n = this._currNode;\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop();\n return this;\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`);\n }\n _elseNode(node) {\n const n = this._currNode;\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"');\n }\n this._currNode = n.else = node;\n return this;\n }\n get _root() {\n return this._nodes[0];\n }\n get _currNode() {\n const ns = this._nodes;\n return ns[ns.length - 1];\n }\n set _currNode(node) {\n const ns = this._nodes;\n ns[ns.length - 1] = node;\n }\n}\nexports.CodeGen = CodeGen;\nfunction addNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) + (from[n] || 0);\n return names;\n}\nfunction addExprNames(names, from) {\n return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names;\n}\nfunction optimizeExpr(expr, names, constants) {\n if (expr instanceof code_1.Name)\n return replaceName(expr);\n if (!canOptimize(expr))\n return expr;\n return new code_1._Code(expr._items.reduce((items, c) => {\n if (c instanceof code_1.Name)\n c = replaceName(c);\n if (c instanceof code_1._Code)\n items.push(...c._items);\n else\n items.push(c);\n return items;\n }, []));\n function replaceName(n) {\n const c = constants[n.str];\n if (c === undefined || names[n.str] !== 1)\n return n;\n delete names[n.str];\n return c;\n }\n function canOptimize(e) {\n return (e instanceof code_1._Code &&\n e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants[c.str] !== undefined));\n }\n}\nfunction subtractNames(names, from) {\n for (const n in from)\n names[n] = (names[n] || 0) - (from[n] || 0);\n}\nfunction not(x) {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : (0, code_1._) `!${par(x)}`;\n}\nexports.not = not;\nconst andCode = mappend(exports.operators.AND);\n// boolean AND (&&) expression with the passed arguments\nfunction and(...args) {\n return args.reduce(andCode);\n}\nexports.and = and;\nconst orCode = mappend(exports.operators.OR);\n// boolean OR (||) expression with the passed arguments\nfunction or(...args) {\n return args.reduce(orCode);\n}\nexports.or = or;\nfunction mappend(op) {\n return (x, y) => (x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._) `${par(x)} ${op} ${par(y)}`);\n}\nfunction par(x) {\n return x instanceof code_1.Name ? x : (0, code_1._) `(${x})`;\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst code_1 = require(\"./codegen/code\");\n// TODO refactor to use Set\nfunction toHash(arr) {\n const hash = {};\n for (const item of arr)\n hash[item] = true;\n return hash;\n}\nexports.toHash = toHash;\nfunction alwaysValidSchema(it, schema) {\n if (typeof schema == \"boolean\")\n return schema;\n if (Object.keys(schema).length === 0)\n return true;\n checkUnknownRules(it, schema);\n return !schemaHasRules(schema, it.self.RULES.all);\n}\nexports.alwaysValidSchema = alwaysValidSchema;\nfunction checkUnknownRules(it, schema = it.schema) {\n const { opts, self } = it;\n if (!opts.strictSchema)\n return;\n if (typeof schema === \"boolean\")\n return;\n const rules = self.RULES.keywords;\n for (const key in schema) {\n if (!rules[key])\n checkStrictMode(it, `unknown keyword: \"${key}\"`);\n }\n}\nexports.checkUnknownRules = checkUnknownRules;\nfunction schemaHasRules(schema, rules) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (rules[key])\n return true;\n return false;\n}\nexports.schemaHasRules = schemaHasRules;\nfunction schemaHasRulesButRef(schema, RULES) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (key !== \"$ref\" && RULES.all[key])\n return true;\n return false;\n}\nexports.schemaHasRulesButRef = schemaHasRulesButRef;\nfunction schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\")\n return schema;\n if (typeof schema == \"string\")\n return (0, codegen_1._) `${schema}`;\n }\n return (0, codegen_1._) `${topSchemaRef}${schemaPath}${(0, codegen_1.getProperty)(keyword)}`;\n}\nexports.schemaRefOrVal = schemaRefOrVal;\nfunction unescapeFragment(str) {\n return unescapeJsonPointer(decodeURIComponent(str));\n}\nexports.unescapeFragment = unescapeFragment;\nfunction escapeFragment(str) {\n return encodeURIComponent(escapeJsonPointer(str));\n}\nexports.escapeFragment = escapeFragment;\nfunction escapeJsonPointer(str) {\n if (typeof str == \"number\")\n return `${str}`;\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\n}\nexports.escapeJsonPointer = escapeJsonPointer;\nfunction unescapeJsonPointer(str) {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\");\n}\nexports.unescapeJsonPointer = unescapeJsonPointer;\nfunction eachItem(xs, f) {\n if (Array.isArray(xs)) {\n for (const x of xs)\n f(x);\n }\n else {\n f(xs);\n }\n}\nexports.eachItem = eachItem;\nfunction makeMergeEvaluated({ mergeNames, mergeToName, mergeValues, resultToName, }) {\n return (gen, from, to, toName) => {\n const res = to === undefined\n ? from\n : to instanceof codegen_1.Name\n ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof codegen_1.Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to);\n return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res;\n };\n}\nexports.mergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => {\n gen.if((0, codegen_1._) `${from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._) `${to} || {}`).code((0, codegen_1._) `Object.assign(${to}, ${from})`));\n }),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true);\n }\n else {\n gen.assign(to, (0, codegen_1._) `${to} || {}`);\n setEvaluated(gen, to, from);\n }\n }),\n mergeValues: (from, to) => (from === true ? true : { ...from, ...to }),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true && ${from} !== undefined`, () => gen.assign(to, (0, codegen_1._) `${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)),\n mergeToName: (gen, from, to) => gen.if((0, codegen_1._) `${to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._) `${to} > ${from} ? ${to} : ${from}`)),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n};\nfunction evaluatedPropsToName(gen, ps) {\n if (ps === true)\n return gen.var(\"props\", true);\n const props = gen.var(\"props\", (0, codegen_1._) `{}`);\n if (ps !== undefined)\n setEvaluated(gen, props, ps);\n return props;\n}\nexports.evaluatedPropsToName = evaluatedPropsToName;\nfunction setEvaluated(gen, props, ps) {\n Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._) `${props}${(0, codegen_1.getProperty)(p)}`, true));\n}\nexports.setEvaluated = setEvaluated;\nconst snippets = {};\nfunction useFunc(gen, f) {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code)),\n });\n}\nexports.useFunc = useFunc;\nvar Type;\n(function (Type) {\n Type[Type[\"Num\"] = 0] = \"Num\";\n Type[Type[\"Str\"] = 1] = \"Str\";\n})(Type || (exports.Type = Type = {}));\nfunction getErrorPath(dataProp, dataPropType, jsPropertySyntax) {\n // let path\n if (dataProp instanceof codegen_1.Name) {\n const isNumber = dataPropType === Type.Num;\n return jsPropertySyntax\n ? isNumber\n ? (0, codegen_1._) `\"[\" + ${dataProp} + \"]\"`\n : (0, codegen_1._) `\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? (0, codegen_1._) `\"/\" + ${dataProp}`\n : (0, codegen_1._) `\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")`; // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp);\n}\nexports.getErrorPath = getErrorPath;\nfunction checkStrictMode(it, msg, mode = it.opts.strictSchema) {\n if (!mode)\n return;\n msg = `strict mode: ${msg}`;\n if (mode === true)\n throw new Error(msg);\n it.self.logger.warn(msg);\n}\nexports.checkStrictMode = checkStrictMode;\n//# sourceMappingURL=util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"./codegen\");\nconst names = {\n // validation function arguments\n data: new codegen_1.Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new codegen_1.Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new codegen_1.Name(\"instancePath\"),\n parentData: new codegen_1.Name(\"parentData\"),\n parentDataProperty: new codegen_1.Name(\"parentDataProperty\"),\n rootData: new codegen_1.Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new codegen_1.Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new codegen_1.Name(\"vErrors\"), // null or array of validation errors\n errors: new codegen_1.Name(\"errors\"), // counter of validation errors\n this: new codegen_1.Name(\"this\"),\n // \"globals\"\n self: new codegen_1.Name(\"self\"),\n scope: new codegen_1.Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new codegen_1.Name(\"json\"),\n jsonPos: new codegen_1.Name(\"jsonPos\"),\n jsonLen: new codegen_1.Name(\"jsonLen\"),\n jsonPart: new codegen_1.Name(\"jsonPart\"),\n};\nexports.default = names;\n//# sourceMappingURL=names.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst util_1 = require(\"./util\");\nconst names_1 = require(\"./names\");\nexports.keywordError = {\n message: ({ keyword }) => (0, codegen_1.str) `must pass \"${keyword}\" keyword validation`,\n};\nexports.keyword$DataError = {\n message: ({ keyword, schemaType }) => schemaType\n ? (0, codegen_1.str) `\"${keyword}\" keyword must be ${schemaType} ($data)`\n : (0, codegen_1.str) `\"${keyword}\" keyword is invalid ($data)`,\n};\nfunction reportError(cxt, error = exports.keywordError, errorPaths, overrideAllErrors) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : (compositeRule || allErrors)) {\n addError(gen, errObj);\n }\n else {\n returnErrors(it, (0, codegen_1._) `[${errObj}]`);\n }\n}\nexports.reportError = reportError;\nfunction reportExtraError(cxt, error = exports.keywordError, errorPaths) {\n const { it } = cxt;\n const { gen, compositeRule, allErrors } = it;\n const errObj = errorObjectCode(cxt, error, errorPaths);\n addError(gen, errObj);\n if (!(compositeRule || allErrors)) {\n returnErrors(it, names_1.default.vErrors);\n }\n}\nexports.reportExtraError = reportExtraError;\nfunction resetErrorsCount(gen, errsCount) {\n gen.assign(names_1.default.errors, errsCount);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._) `${names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null)));\n}\nexports.resetErrorsCount = resetErrorsCount;\nfunction extendErrors({ gen, keyword, schemaValue, data, errsCount, it, }) {\n /* istanbul ignore if */\n if (errsCount === undefined)\n throw new Error(\"ajv implementation error\");\n const err = gen.name(\"err\");\n gen.forRange(\"i\", errsCount, names_1.default.errors, (i) => {\n gen.const(err, (0, codegen_1._) `${names_1.default.vErrors}[${i}]`);\n gen.if((0, codegen_1._) `${err}.instancePath === undefined`, () => gen.assign((0, codegen_1._) `${err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath)));\n gen.assign((0, codegen_1._) `${err}.schemaPath`, (0, codegen_1.str) `${it.errSchemaPath}/${keyword}`);\n if (it.opts.verbose) {\n gen.assign((0, codegen_1._) `${err}.schema`, schemaValue);\n gen.assign((0, codegen_1._) `${err}.data`, data);\n }\n });\n}\nexports.extendErrors = extendErrors;\nfunction addError(gen, errObj) {\n const err = gen.const(\"err\", errObj);\n gen.if((0, codegen_1._) `${names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._) `[${err}]`), (0, codegen_1._) `${names_1.default.vErrors}.push(${err})`);\n gen.code((0, codegen_1._) `${names_1.default.errors}++`);\n}\nfunction returnErrors(it, errs) {\n const { gen, validateName, schemaEnv } = it;\n if (schemaEnv.$async) {\n gen.throw((0, codegen_1._) `new ${it.ValidationError}(${errs})`);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, errs);\n gen.return(false);\n }\n}\nconst E = {\n keyword: new codegen_1.Name(\"keyword\"),\n schemaPath: new codegen_1.Name(\"schemaPath\"), // also used in JTD errors\n params: new codegen_1.Name(\"params\"),\n propertyName: new codegen_1.Name(\"propertyName\"),\n message: new codegen_1.Name(\"message\"),\n schema: new codegen_1.Name(\"schema\"),\n parentSchema: new codegen_1.Name(\"parentSchema\"),\n};\nfunction errorObjectCode(cxt, error, errorPaths) {\n const { createErrors } = cxt.it;\n if (createErrors === false)\n return (0, codegen_1._) `{}`;\n return errorObject(cxt, error, errorPaths);\n}\nfunction errorObject(cxt, error, errorPaths = {}) {\n const { gen, it } = cxt;\n const keyValues = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ];\n extraErrorProps(cxt, error, keyValues);\n return gen.object(...keyValues);\n}\nfunction errorInstancePath({ errorPath }, { instancePath }) {\n const instPath = instancePath\n ? (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}`\n : errorPath;\n return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)];\n}\nfunction errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) {\n let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str) `${errSchemaPath}/${keyword}`;\n if (schemaPath) {\n schPath = (0, codegen_1.str) `${schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`;\n }\n return [E.schemaPath, schPath];\n}\nfunction extraErrorProps(cxt, { params, message }, keyValues) {\n const { keyword, data, schemaValue, it } = cxt;\n const { opts, propertyName, topSchemaRef, schemaPath } = it;\n keyValues.push([E.keyword, keyword], [E.params, typeof params == \"function\" ? params(cxt) : params || (0, codegen_1._) `{}`]);\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message]);\n }\n if (opts.verbose) {\n keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._) `${topSchemaRef}${schemaPath}`], [names_1.default.data, data]);\n }\n if (propertyName)\n keyValues.push([E.propertyName, propertyName]);\n}\n//# sourceMappingURL=errors.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0;\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst boolError = {\n message: \"boolean schema is false\",\n};\nfunction topBoolOrEmptySchema(it) {\n const { gen, schema, validateName } = it;\n if (schema === false) {\n falseSchemaError(it, false);\n }\n else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(names_1.default.data);\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, null);\n gen.return(true);\n }\n}\nexports.topBoolOrEmptySchema = topBoolOrEmptySchema;\nfunction boolOrEmptySchema(it, valid) {\n const { gen, schema } = it;\n if (schema === false) {\n gen.var(valid, false); // TODO var\n falseSchemaError(it);\n }\n else {\n gen.var(valid, true); // TODO var\n }\n}\nexports.boolOrEmptySchema = boolOrEmptySchema;\nfunction falseSchemaError(it, overrideAllErrors) {\n const { gen, data } = it;\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n };\n (0, errors_1.reportError)(cxt, boolError, undefined, overrideAllErrors);\n}\n//# sourceMappingURL=boolSchema.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRules = exports.isJSONType = void 0;\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"];\nconst jsonTypes = new Set(_jsonTypes);\nfunction isJSONType(x) {\n return typeof x == \"string\" && jsonTypes.has(x);\n}\nexports.isJSONType = isJSONType;\nfunction getRules() {\n const groups = {\n number: { type: \"number\", rules: [] },\n string: { type: \"string\", rules: [] },\n array: { type: \"array\", rules: [] },\n object: { type: \"object\", rules: [] },\n };\n return {\n types: { ...groups, integer: true, boolean: true, null: true },\n rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object],\n post: { rules: [] },\n all: {},\n keywords: {},\n };\n}\nexports.getRules = getRules;\n//# sourceMappingURL=rules.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0;\nfunction schemaHasRulesForType({ schema, self }, type) {\n const group = self.RULES.types[type];\n return group && group !== true && shouldUseGroup(schema, group);\n}\nexports.schemaHasRulesForType = schemaHasRulesForType;\nfunction shouldUseGroup(schema, group) {\n return group.rules.some((rule) => shouldUseRule(schema, rule));\n}\nexports.shouldUseGroup = shouldUseGroup;\nfunction shouldUseRule(schema, rule) {\n var _a;\n return (schema[rule.keyword] !== undefined ||\n ((_a = rule.definition.implements) === null || _a === void 0 ? void 0 : _a.some((kwd) => schema[kwd] !== undefined)));\n}\nexports.shouldUseRule = shouldUseRule;\n//# sourceMappingURL=applicability.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0;\nconst rules_1 = require(\"../rules\");\nconst applicability_1 = require(\"./applicability\");\nconst errors_1 = require(\"../errors\");\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nvar DataType;\n(function (DataType) {\n DataType[DataType[\"Correct\"] = 0] = \"Correct\";\n DataType[DataType[\"Wrong\"] = 1] = \"Wrong\";\n})(DataType || (exports.DataType = DataType = {}));\nfunction getSchemaTypes(schema) {\n const types = getJSONTypes(schema.type);\n const hasNull = types.includes(\"null\");\n if (hasNull) {\n if (schema.nullable === false)\n throw new Error(\"type: null contradicts nullable: false\");\n }\n else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"');\n }\n if (schema.nullable === true)\n types.push(\"null\");\n }\n return types;\n}\nexports.getSchemaTypes = getSchemaTypes;\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nfunction getJSONTypes(ts) {\n const types = Array.isArray(ts) ? ts : ts ? [ts] : [];\n if (types.every(rules_1.isJSONType))\n return types;\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"));\n}\nexports.getJSONTypes = getJSONTypes;\nfunction coerceAndCheckDataType(it, types) {\n const { gen, data, opts } = it;\n const coerceTo = coerceToTypes(types, opts.coerceTypes);\n const checkTypes = types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0]));\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong);\n gen.if(wrongType, () => {\n if (coerceTo.length)\n coerceData(it, types, coerceTo);\n else\n reportTypeError(it);\n });\n }\n return checkTypes;\n}\nexports.coerceAndCheckDataType = coerceAndCheckDataType;\nconst COERCIBLE = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"]);\nfunction coerceToTypes(types, coerceTypes) {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : [];\n}\nfunction coerceData(it, types, coerceTo) {\n const { gen, data, opts } = it;\n const dataType = gen.let(\"dataType\", (0, codegen_1._) `typeof ${data}`);\n const coerced = gen.let(\"coerced\", (0, codegen_1._) `undefined`);\n if (opts.coerceTypes === \"array\") {\n gen.if((0, codegen_1._) `${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () => gen\n .assign(data, (0, codegen_1._) `${data}[0]`)\n .assign(dataType, (0, codegen_1._) `typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data)));\n }\n gen.if((0, codegen_1._) `${coerced} !== undefined`);\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t);\n }\n }\n gen.else();\n reportTypeError(it);\n gen.endIf();\n gen.if((0, codegen_1._) `${coerced} !== undefined`, () => {\n gen.assign(data, coerced);\n assignParentData(it, coerced);\n });\n function coerceSpecificType(t) {\n switch (t) {\n case \"string\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, (0, codegen_1._) `\"\" + ${data}`)\n .elseIf((0, codegen_1._) `${data} === null`)\n .assign(coerced, (0, codegen_1._) `\"\"`);\n return;\n case \"number\":\n gen\n .elseIf((0, codegen_1._) `${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"integer\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`)\n .assign(coerced, (0, codegen_1._) `+${data}`);\n return;\n case \"boolean\":\n gen\n .elseIf((0, codegen_1._) `${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf((0, codegen_1._) `${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true);\n return;\n case \"null\":\n gen.elseIf((0, codegen_1._) `${data} === \"\" || ${data} === 0 || ${data} === false`);\n gen.assign(coerced, null);\n return;\n case \"array\":\n gen\n .elseIf((0, codegen_1._) `${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`)\n .assign(coerced, (0, codegen_1._) `[${data}]`);\n }\n }\n}\nfunction assignParentData({ gen, parentData, parentDataProperty }, expr) {\n // TODO use gen.property\n gen.if((0, codegen_1._) `${parentData} !== undefined`, () => gen.assign((0, codegen_1._) `${parentData}[${parentDataProperty}]`, expr));\n}\nfunction checkDataType(dataType, data, strictNums, correct = DataType.Correct) {\n const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ;\n let cond;\n switch (dataType) {\n case \"null\":\n return (0, codegen_1._) `${data} ${EQ} null`;\n case \"array\":\n cond = (0, codegen_1._) `Array.isArray(${data})`;\n break;\n case \"object\":\n cond = (0, codegen_1._) `${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`;\n break;\n case \"integer\":\n cond = numCond((0, codegen_1._) `!(${data} % 1) && !isNaN(${data})`);\n break;\n case \"number\":\n cond = numCond();\n break;\n default:\n return (0, codegen_1._) `typeof ${data} ${EQ} ${dataType}`;\n }\n return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond);\n function numCond(_cond = codegen_1.nil) {\n return (0, codegen_1.and)((0, codegen_1._) `typeof ${data} == \"number\"`, _cond, strictNums ? (0, codegen_1._) `isFinite(${data})` : codegen_1.nil);\n }\n}\nexports.checkDataType = checkDataType;\nfunction checkDataTypes(dataTypes, data, strictNums, correct) {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct);\n }\n let cond;\n const types = (0, util_1.toHash)(dataTypes);\n if (types.array && types.object) {\n const notObj = (0, codegen_1._) `typeof ${data} != \"object\"`;\n cond = types.null ? notObj : (0, codegen_1._) `!${data} || ${notObj}`;\n delete types.null;\n delete types.array;\n delete types.object;\n }\n else {\n cond = codegen_1.nil;\n }\n if (types.number)\n delete types.integer;\n for (const t in types)\n cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct));\n return cond;\n}\nexports.checkDataTypes = checkDataTypes;\nconst typeError = {\n message: ({ schema }) => `must be ${schema}`,\n params: ({ schema, schemaValue }) => typeof schema == \"string\" ? (0, codegen_1._) `{type: ${schema}}` : (0, codegen_1._) `{type: ${schemaValue}}`,\n};\nfunction reportTypeError(it) {\n const cxt = getTypeErrorContext(it);\n (0, errors_1.reportError)(cxt, typeError);\n}\nexports.reportTypeError = reportTypeError;\nfunction getTypeErrorContext(it) {\n const { gen, data, schema } = it;\n const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, \"type\");\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n };\n}\n//# sourceMappingURL=dataType.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assignDefaults = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction assignDefaults(it, ty) {\n const { properties, items } = it.schema;\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default);\n }\n }\n else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i) => assignDefault(it, i, sch.default));\n }\n}\nexports.assignDefaults = assignDefaults;\nfunction assignDefault(it, prop, defaultValue) {\n const { gen, compositeRule, data, opts } = it;\n if (defaultValue === undefined)\n return;\n const childData = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(prop)}`;\n if (compositeRule) {\n (0, util_1.checkStrictMode)(it, `default is ignored for: ${childData}`);\n return;\n }\n let condition = (0, codegen_1._) `${childData} === undefined`;\n if (opts.useDefaults === \"empty\") {\n condition = (0, codegen_1._) `${condition} || ${childData} === null || ${childData} === \"\"`;\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, (0, codegen_1._) `${childData} = ${(0, codegen_1.stringify)(defaultValue)}`);\n}\n//# sourceMappingURL=defaults.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0;\nconst codegen_1 = require(\"../compile/codegen\");\nconst util_1 = require(\"../compile/util\");\nconst names_1 = require(\"../compile/names\");\nconst util_2 = require(\"../compile/util\");\nfunction checkReportMissingProp(cxt, prop) {\n const { gen, data, it } = cxt;\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({ missingProperty: (0, codegen_1._) `${prop}` }, true);\n cxt.error();\n });\n}\nexports.checkReportMissingProp = checkReportMissingProp;\nfunction checkMissingProp({ gen, data, it: { opts } }, properties, missing) {\n return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._) `${missing} = ${prop}`)));\n}\nexports.checkMissingProp = checkMissingProp;\nfunction reportMissingProp(cxt, missing) {\n cxt.setParams({ missingProperty: missing }, true);\n cxt.error();\n}\nexports.reportMissingProp = reportMissingProp;\nfunction hasPropFunc(gen) {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: (0, codegen_1._) `Object.prototype.hasOwnProperty`,\n });\n}\nexports.hasPropFunc = hasPropFunc;\nfunction isOwnProperty(gen, data, property) {\n return (0, codegen_1._) `${hasPropFunc(gen)}.call(${data}, ${property})`;\n}\nexports.isOwnProperty = isOwnProperty;\nfunction propertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} !== undefined`;\n return ownProperties ? (0, codegen_1._) `${cond} && ${isOwnProperty(gen, data, property)}` : cond;\n}\nexports.propertyInData = propertyInData;\nfunction noPropertyInData(gen, data, property, ownProperties) {\n const cond = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(property)} === undefined`;\n return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond;\n}\nexports.noPropertyInData = noPropertyInData;\nfunction allSchemaProperties(schemaMap) {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : [];\n}\nexports.allSchemaProperties = allSchemaProperties;\nfunction schemaProperties(it, schemaMap) {\n return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p]));\n}\nexports.schemaProperties = schemaProperties;\nfunction callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) {\n const dataAndSchema = passSchema ? (0, codegen_1._) `${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data;\n const valCxt = [\n [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)],\n [names_1.default.parentData, it.parentData],\n [names_1.default.parentDataProperty, it.parentDataProperty],\n [names_1.default.rootData, names_1.default.rootData],\n ];\n if (it.opts.dynamicRef)\n valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]);\n const args = (0, codegen_1._) `${dataAndSchema}, ${gen.object(...valCxt)}`;\n return context !== codegen_1.nil ? (0, codegen_1._) `${func}.call(${context}, ${args})` : (0, codegen_1._) `${func}(${args})`;\n}\nexports.callValidateCode = callValidateCode;\nconst newRegExp = (0, codegen_1._) `new RegExp`;\nfunction usePattern({ gen, it: { opts } }, pattern) {\n const u = opts.unicodeRegExp ? \"u\" : \"\";\n const { regExp } = opts.code;\n const rx = regExp(pattern, u);\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: (0, codegen_1._) `${regExp.code === \"new RegExp\" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}(${pattern}, ${u})`,\n });\n}\nexports.usePattern = usePattern;\nfunction validateArray(cxt) {\n const { gen, data, keyword, it } = cxt;\n const valid = gen.name(\"valid\");\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true);\n validateItems(() => gen.assign(validArr, false));\n return validArr;\n }\n gen.var(valid, true);\n validateItems(() => gen.break());\n return valid;\n function validateItems(notValid) {\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema({\n keyword,\n dataProp: i,\n dataPropType: util_1.Type.Num,\n }, valid);\n gen.if((0, codegen_1.not)(valid), notValid);\n });\n }\n}\nexports.validateArray = validateArray;\nfunction validateUnion(cxt) {\n const { gen, schema, keyword, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch));\n if (alwaysValid && !it.opts.unevaluated)\n return;\n const valid = gen.let(\"valid\", false);\n const schValid = gen.name(\"_valid\");\n gen.block(() => schema.forEach((_sch, i) => {\n const schCxt = cxt.subschema({\n keyword,\n schemaProp: i,\n compositeRule: true,\n }, schValid);\n gen.assign(valid, (0, codegen_1._) `${valid} || ${schValid}`);\n const merged = cxt.mergeValidEvaluated(schCxt, schValid);\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged)\n gen.if((0, codegen_1.not)(valid));\n }));\n cxt.result(valid, () => cxt.reset(), () => cxt.error(true));\n}\nexports.validateUnion = validateUnion;\n//# sourceMappingURL=code.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst code_1 = require(\"../../vocabularies/code\");\nconst errors_1 = require(\"../errors\");\nfunction macroKeywordCode(cxt, def) {\n const { gen, keyword, schema, parentSchema, it } = cxt;\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it);\n const schemaRef = useKeyword(gen, keyword, macroSchema);\n if (it.opts.validateSchema !== false)\n it.self.validateSchema(macroSchema, true);\n const valid = gen.name(\"valid\");\n cxt.subschema({\n schema: macroSchema,\n schemaPath: codegen_1.nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n }, valid);\n cxt.pass(valid, () => cxt.error(true));\n}\nexports.macroKeywordCode = macroKeywordCode;\nfunction funcKeywordCode(cxt, def) {\n var _a;\n const { gen, keyword, schema, parentSchema, $data, it } = cxt;\n checkAsyncKeyword(it, def);\n const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate;\n const validateRef = useKeyword(gen, keyword, validate);\n const valid = gen.let(\"valid\");\n cxt.block$data(valid, validateKeyword);\n cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid);\n function validateKeyword() {\n if (def.errors === false) {\n assignValid();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => cxt.error());\n }\n else {\n const ruleErrs = def.async ? validateAsync() : validateSync();\n if (def.modifying)\n modifyData(cxt);\n reportErrs(() => addErrs(cxt, ruleErrs));\n }\n }\n function validateAsync() {\n const ruleErrs = gen.let(\"ruleErrs\", null);\n gen.try(() => assignValid((0, codegen_1._) `await `), (e) => gen.assign(valid, false).if((0, codegen_1._) `${e} instanceof ${it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._) `${e}.errors`), () => gen.throw(e)));\n return ruleErrs;\n }\n function validateSync() {\n const validateErrs = (0, codegen_1._) `${validateRef}.errors`;\n gen.assign(validateErrs, null);\n assignValid(codegen_1.nil);\n return validateErrs;\n }\n function assignValid(_await = def.async ? (0, codegen_1._) `await ` : codegen_1.nil) {\n const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self;\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false);\n gen.assign(valid, (0, codegen_1._) `${_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying);\n }\n function reportErrs(errors) {\n var _a;\n gen.if((0, codegen_1.not)((_a = def.valid) !== null && _a !== void 0 ? _a : valid), errors);\n }\n}\nexports.funcKeywordCode = funcKeywordCode;\nfunction modifyData(cxt) {\n const { gen, data, it } = cxt;\n gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._) `${it.parentData}[${it.parentDataProperty}]`));\n}\nfunction addErrs(cxt, errs) {\n const { gen } = cxt;\n gen.if((0, codegen_1._) `Array.isArray(${errs})`, () => {\n gen\n .assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`)\n .assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`);\n (0, errors_1.extendErrors)(cxt);\n }, () => cxt.error());\n}\nfunction checkAsyncKeyword({ schemaEnv }, def) {\n if (def.async && !schemaEnv.$async)\n throw new Error(\"async keyword in sync schema\");\n}\nfunction useKeyword(gen, keyword, result) {\n if (result === undefined)\n throw new Error(`keyword \"${keyword}\" failed to compile`);\n return gen.scopeValue(\"keyword\", typeof result == \"function\" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) });\n}\nfunction validSchemaType(schema, schemaType, allowUndefined = false) {\n // TODO add tests\n return (!schemaType.length ||\n schemaType.some((st) => st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")));\n}\nexports.validSchemaType = validSchemaType;\nfunction validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\");\n }\n const deps = def.dependencies;\n if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`);\n }\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword]);\n if (!valid) {\n const msg = `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors);\n if (opts.validateSchema === \"log\")\n self.logger.error(msg);\n else\n throw new Error(msg);\n }\n }\n}\nexports.validateKeywordUsage = validateKeywordUsage;\n//# sourceMappingURL=keyword.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0;\nconst codegen_1 = require(\"../codegen\");\nconst util_1 = require(\"../util\");\nfunction getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed');\n }\n if (keyword !== undefined) {\n const sch = it.schema[keyword];\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: (0, codegen_1._) `${it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${(0, util_1.escapeFragment)(schemaProp)}`,\n };\n }\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"');\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n };\n }\n throw new Error('either \"keyword\" or \"schema\" must be passed');\n}\nexports.getSubschema = getSubschema;\nfunction extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed');\n }\n const { gen } = it;\n if (dataProp !== undefined) {\n const { errorPath, dataPathArr, opts } = it;\n const nextData = gen.let(\"data\", (0, codegen_1._) `${it.data}${(0, codegen_1.getProperty)(dataProp)}`, true);\n dataContextProps(nextData);\n subschema.errorPath = (0, codegen_1.str) `${errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`;\n subschema.parentDataProperty = (0, codegen_1._) `${dataProp}`;\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty];\n }\n if (data !== undefined) {\n const nextData = data instanceof codegen_1.Name ? data : gen.let(\"data\", data, true); // replaceable if used once?\n dataContextProps(nextData);\n if (propertyName !== undefined)\n subschema.propertyName = propertyName;\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n if (dataTypes)\n subschema.dataTypes = dataTypes;\n function dataContextProps(_nextData) {\n subschema.data = _nextData;\n subschema.dataLevel = it.dataLevel + 1;\n subschema.dataTypes = [];\n it.definedProperties = new Set();\n subschema.parentData = it.data;\n subschema.dataNames = [...it.dataNames, _nextData];\n }\n}\nexports.extendSubschemaData = extendSubschemaData;\nfunction extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) {\n if (compositeRule !== undefined)\n subschema.compositeRule = compositeRule;\n if (createErrors !== undefined)\n subschema.createErrors = createErrors;\n if (allErrors !== undefined)\n subschema.allErrors = allErrors;\n subschema.jtdDiscriminator = jtdDiscriminator; // not inherited\n subschema.jtdMetadata = jtdMetadata; // not inherited\n}\nexports.extendSubschemaMode = extendSubschemaMode;\n//# sourceMappingURL=subschema.js.map","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getFullPath = exports.getFullPath = exports.inlineRef = void 0;\nconst util_1 = require(\"./util\");\nconst equal = require(\"fast-deep-equal\");\nconst traverse = require(\"json-schema-traverse\");\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n]);\nfunction inlineRef(schema, limit = true) {\n if (typeof schema == \"boolean\")\n return true;\n if (limit === true)\n return !hasRef(schema);\n if (!limit)\n return false;\n return countKeys(schema) <= limit;\n}\nexports.inlineRef = inlineRef;\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n]);\nfunction hasRef(schema) {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key))\n return true;\n const sch = schema[key];\n if (Array.isArray(sch) && sch.some(hasRef))\n return true;\n if (typeof sch == \"object\" && hasRef(sch))\n return true;\n }\n return false;\n}\nfunction countKeys(schema) {\n let count = 0;\n for (const key in schema) {\n if (key === \"$ref\")\n return Infinity;\n count++;\n if (SIMPLE_INLINED.has(key))\n continue;\n if (typeof schema[key] == \"object\") {\n (0, util_1.eachItem)(schema[key], (sch) => (count += countKeys(sch)));\n }\n if (count === Infinity)\n return Infinity;\n }\n return count;\n}\nfunction getFullPath(resolver, id = \"\", normalize) {\n if (normalize !== false)\n id = normalizeId(id);\n const p = resolver.parse(id);\n return _getFullPath(resolver, p);\n}\nexports.getFullPath = getFullPath;\nfunction _getFullPath(resolver, p) {\n const serialized = resolver.serialize(p);\n return serialized.split(\"#\")[0] + \"#\";\n}\nexports._getFullPath = _getFullPath;\nconst TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\";\n}\nexports.normalizeId = normalizeId;\nfunction resolveUrl(resolver, baseId, id) {\n id = normalizeId(id);\n return resolver.resolve(baseId, id);\n}\nexports.resolveUrl = resolveUrl;\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i;\nfunction getSchemaRefs(schema, baseId) {\n if (typeof schema == \"boolean\")\n return {};\n const { schemaId, uriResolver } = this.opts;\n const schId = normalizeId(schema[schemaId] || baseId);\n const baseIds = { \"\": schId };\n const pathPrefix = getFullPath(uriResolver, schId, false);\n const localRefs = {};\n const schemaRefs = new Set();\n traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined)\n return;\n const fullPath = pathPrefix + jsonPtr;\n let innerBaseId = baseIds[parentJsonPtr];\n if (typeof sch[schemaId] == \"string\")\n innerBaseId = addRef.call(this, sch[schemaId]);\n addAnchor.call(this, sch.$anchor);\n addAnchor.call(this, sch.$dynamicAnchor);\n baseIds[jsonPtr] = innerBaseId;\n function addRef(ref) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve;\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref);\n if (schemaRefs.has(ref))\n throw ambiguos(ref);\n schemaRefs.add(ref);\n let schOrRef = this.refs[ref];\n if (typeof schOrRef == \"string\")\n schOrRef = this.refs[schOrRef];\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref);\n }\n else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref);\n localRefs[ref] = sch;\n }\n else {\n this.refs[ref] = fullPath;\n }\n }\n return ref;\n }\n function addAnchor(anchor) {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor))\n throw new Error(`invalid anchor \"${anchor}\"`);\n addRef.call(this, `#${anchor}`);\n }\n }\n });\n return localRefs;\n function checkAmbiguosRef(sch1, sch2, ref) {\n if (sch2 !== undefined && !equal(sch1, sch2))\n throw ambiguos(ref);\n }\n function ambiguos(ref) {\n return new Error(`reference \"${ref}\" resolves to more than one schema`);\n }\n}\nexports.getSchemaRefs = getSchemaRefs;\n//# sourceMappingURL=resolve.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0;\nconst boolSchema_1 = require(\"./boolSchema\");\nconst dataType_1 = require(\"./dataType\");\nconst applicability_1 = require(\"./applicability\");\nconst dataType_2 = require(\"./dataType\");\nconst defaults_1 = require(\"./defaults\");\nconst keyword_1 = require(\"./keyword\");\nconst subschema_1 = require(\"./subschema\");\nconst codegen_1 = require(\"../codegen\");\nconst names_1 = require(\"../names\");\nconst resolve_1 = require(\"../resolve\");\nconst util_1 = require(\"../util\");\nconst errors_1 = require(\"../errors\");\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nfunction validateFunctionCode(it) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it);\n return;\n }\n }\n validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it));\n}\nexports.validateFunctionCode = validateFunctionCode;\nfunction validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) {\n if (opts.code.es5) {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${names_1.default.valCxt}`, schemaEnv.$async, () => {\n gen.code((0, codegen_1._) `\"use strict\"; ${funcSourceUrl(schema, opts)}`);\n destructureValCxtES5(gen, opts);\n gen.code(body);\n });\n }\n else {\n gen.func(validateName, (0, codegen_1._) `${names_1.default.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body));\n }\n}\nfunction destructureValCxt(opts) {\n return (0, codegen_1._) `{${names_1.default.instancePath}=\"\", ${names_1.default.parentData}, ${names_1.default.parentDataProperty}, ${names_1.default.rootData}=${names_1.default.data}${opts.dynamicRef ? (0, codegen_1._) `, ${names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`;\n}\nfunction destructureValCxtES5(gen, opts) {\n gen.if(names_1.default.valCxt, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.instancePath}`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentData}`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.parentDataProperty}`);\n gen.var(names_1.default.rootData, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.rootData}`);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `${names_1.default.valCxt}.${names_1.default.dynamicAnchors}`);\n }, () => {\n gen.var(names_1.default.instancePath, (0, codegen_1._) `\"\"`);\n gen.var(names_1.default.parentData, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.parentDataProperty, (0, codegen_1._) `undefined`);\n gen.var(names_1.default.rootData, names_1.default.data);\n if (opts.dynamicRef)\n gen.var(names_1.default.dynamicAnchors, (0, codegen_1._) `{}`);\n });\n}\nfunction topSchemaObjCode(it) {\n const { schema, opts, gen } = it;\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n checkNoDefault(it);\n gen.let(names_1.default.vErrors, null);\n gen.let(names_1.default.errors, 0);\n if (opts.unevaluated)\n resetEvaluated(it);\n typeAndKeywords(it);\n returnResults(it);\n });\n return;\n}\nfunction resetEvaluated(it) {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const { gen, validateName } = it;\n it.evaluated = gen.const(\"evaluated\", (0, codegen_1._) `${validateName}.evaluated`);\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._) `${it.evaluated}.props`, (0, codegen_1._) `undefined`));\n gen.if((0, codegen_1._) `${it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._) `${it.evaluated}.items`, (0, codegen_1._) `undefined`));\n}\nfunction funcSourceUrl(schema, opts) {\n const schId = typeof schema == \"object\" && schema[opts.schemaId];\n return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._) `/*# sourceURL=${schId} */` : codegen_1.nil;\n}\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it, valid) {\n if (isSchemaObj(it)) {\n checkKeywords(it);\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid);\n return;\n }\n }\n (0, boolSchema_1.boolOrEmptySchema)(it, valid);\n}\nfunction schemaCxtHasRules({ schema, self }) {\n if (typeof schema == \"boolean\")\n return !schema;\n for (const key in schema)\n if (self.RULES.all[key])\n return true;\n return false;\n}\nfunction isSchemaObj(it) {\n return typeof it.schema != \"boolean\";\n}\nfunction subSchemaObjCode(it, valid) {\n const { schema, gen, opts } = it;\n if (opts.$comment && schema.$comment)\n commentKeyword(it);\n updateContext(it);\n checkAsyncSchema(it);\n const errsCount = gen.const(\"_errs\", names_1.default.errors);\n typeAndKeywords(it, errsCount);\n // TODO var\n gen.var(valid, (0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n}\nfunction checkKeywords(it) {\n (0, util_1.checkUnknownRules)(it);\n checkRefsAndKeywords(it);\n}\nfunction typeAndKeywords(it, errsCount) {\n if (it.opts.jtd)\n return schemaKeywords(it, [], false, errsCount);\n const types = (0, dataType_1.getSchemaTypes)(it.schema);\n const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types);\n schemaKeywords(it, types, !checkedTypes, errsCount);\n}\nfunction checkRefsAndKeywords(it) {\n const { schema, errSchemaPath, opts, self } = it;\n if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`);\n }\n}\nfunction checkNoDefault(it) {\n const { schema, opts } = it;\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n (0, util_1.checkStrictMode)(it, \"default is ignored in the schema root\");\n }\n}\nfunction updateContext(it) {\n const schId = it.schema[it.opts.schemaId];\n if (schId)\n it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId);\n}\nfunction checkAsyncSchema(it) {\n if (it.schema.$async && !it.schemaEnv.$async)\n throw new Error(\"async schema in sync schema\");\n}\nfunction commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) {\n const msg = schema.$comment;\n if (opts.$comment === true) {\n gen.code((0, codegen_1._) `${names_1.default.self}.logger.log(${msg})`);\n }\n else if (typeof opts.$comment == \"function\") {\n const schemaPath = (0, codegen_1.str) `${errSchemaPath}/$comment`;\n const rootName = gen.scopeValue(\"root\", { ref: schemaEnv.root });\n gen.code((0, codegen_1._) `${names_1.default.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`);\n }\n}\nfunction returnResults(it) {\n const { gen, schemaEnv, validateName, ValidationError, opts } = it;\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if((0, codegen_1._) `${names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._) `new ${ValidationError}(${names_1.default.vErrors})`));\n }\n else {\n gen.assign((0, codegen_1._) `${validateName}.errors`, names_1.default.vErrors);\n if (opts.unevaluated)\n assignEvaluated(it);\n gen.return((0, codegen_1._) `${names_1.default.errors} === 0`);\n }\n}\nfunction assignEvaluated({ gen, evaluated, props, items }) {\n if (props instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.props`, props);\n if (items instanceof codegen_1.Name)\n gen.assign((0, codegen_1._) `${evaluated}.items`, items);\n}\nfunction schemaKeywords(it, types, typeErrors, errsCount) {\n const { gen, schema, data, allErrors, opts, self } = it;\n const { RULES } = self;\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", RULES.all.$ref.definition)); // TODO typecast\n return;\n }\n if (!opts.jtd)\n checkStrictTypes(it, types);\n gen.block(() => {\n for (const group of RULES.rules)\n groupKeywords(group);\n groupKeywords(RULES.post);\n });\n function groupKeywords(group) {\n if (!(0, applicability_1.shouldUseGroup)(schema, group))\n return;\n if (group.type) {\n gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers));\n iterateKeywords(it, group);\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else();\n (0, dataType_2.reportTypeError)(it);\n }\n gen.endIf();\n }\n else {\n iterateKeywords(it, group);\n }\n // TODO make it \"ok\" call?\n if (!allErrors)\n gen.if((0, codegen_1._) `${names_1.default.errors} === ${errsCount || 0}`);\n }\n}\nfunction iterateKeywords(it, group) {\n const { gen, schema, opts: { useDefaults }, } = it;\n if (useDefaults)\n (0, defaults_1.assignDefaults)(it, group.type);\n gen.block(() => {\n for (const rule of group.rules) {\n if ((0, applicability_1.shouldUseRule)(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type);\n }\n }\n });\n}\nfunction checkStrictTypes(it, types) {\n if (it.schemaEnv.meta || !it.opts.strictTypes)\n return;\n checkContextTypes(it, types);\n if (!it.opts.allowUnionTypes)\n checkMultipleTypes(it, types);\n checkKeywordTypes(it, it.dataTypes);\n}\nfunction checkContextTypes(it, types) {\n if (!types.length)\n return;\n if (!it.dataTypes.length) {\n it.dataTypes = types;\n return;\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`);\n }\n });\n narrowSchemaTypes(it, types);\n}\nfunction checkMultipleTypes(it, ts) {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\");\n }\n}\nfunction checkKeywordTypes(it, ts) {\n const rules = it.self.RULES.all;\n for (const keyword in rules) {\n const rule = rules[keyword];\n if (typeof rule == \"object\" && (0, applicability_1.shouldUseRule)(it.schema, rule)) {\n const { type } = rule.definition;\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`);\n }\n }\n }\n}\nfunction hasApplicableType(schTs, kwdT) {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"));\n}\nfunction includesType(ts, t) {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"));\n}\nfunction narrowSchemaTypes(it, withTypes) {\n const ts = [];\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t))\n ts.push(t);\n else if (withTypes.includes(\"integer\") && t === \"number\")\n ts.push(\"integer\");\n }\n it.dataTypes = ts;\n}\nfunction strictTypesError(it, msg) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;\n msg += ` at \"${schemaPath}\" (strictTypes)`;\n (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes);\n}\nclass KeywordCxt {\n constructor(it, def, keyword) {\n (0, keyword_1.validateKeywordUsage)(it, def, keyword);\n this.gen = it.gen;\n this.allErrors = it.allErrors;\n this.keyword = keyword;\n this.data = it.data;\n this.schema = it.schema[keyword];\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data;\n this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data);\n this.schemaType = def.schemaType;\n this.parentSchema = it.schema;\n this.params = {};\n this.it = it;\n this.def = def;\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it));\n }\n else {\n this.schemaCode = this.schemaValue;\n if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`);\n }\n }\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", names_1.default.errors);\n }\n }\n result(condition, successAction, failAction) {\n this.failResult((0, codegen_1.not)(condition), successAction, failAction);\n }\n failResult(condition, successAction, failAction) {\n this.gen.if(condition);\n if (failAction)\n failAction();\n else\n this.error();\n if (successAction) {\n this.gen.else();\n successAction();\n if (this.allErrors)\n this.gen.endIf();\n }\n else {\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n }\n pass(condition, failAction) {\n this.failResult((0, codegen_1.not)(condition), undefined, failAction);\n }\n fail(condition) {\n if (condition === undefined) {\n this.error();\n if (!this.allErrors)\n this.gen.if(false); // this branch will be removed by gen.optimize\n return;\n }\n this.gen.if(condition);\n this.error();\n if (this.allErrors)\n this.gen.endIf();\n else\n this.gen.else();\n }\n fail$data(condition) {\n if (!this.$data)\n return this.fail(condition);\n const { schemaCode } = this;\n this.fail((0, codegen_1._) `${schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`);\n }\n error(append, errorParams, errorPaths) {\n if (errorParams) {\n this.setParams(errorParams);\n this._error(append, errorPaths);\n this.setParams({});\n return;\n }\n this._error(append, errorPaths);\n }\n _error(append, errorPaths) {\n ;\n (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths);\n }\n $dataError() {\n (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError);\n }\n reset() {\n if (this.errsCount === undefined)\n throw new Error('add \"trackErrors\" to keyword definition');\n (0, errors_1.resetErrorsCount)(this.gen, this.errsCount);\n }\n ok(cond) {\n if (!this.allErrors)\n this.gen.if(cond);\n }\n setParams(obj, assign) {\n if (assign)\n Object.assign(this.params, obj);\n else\n this.params = obj;\n }\n block$data(valid, codeBlock, $dataValid = codegen_1.nil) {\n this.gen.block(() => {\n this.check$data(valid, $dataValid);\n codeBlock();\n });\n }\n check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) {\n if (!this.$data)\n return;\n const { gen, schemaCode, schemaType, def } = this;\n gen.if((0, codegen_1.or)((0, codegen_1._) `${schemaCode} === undefined`, $dataValid));\n if (valid !== codegen_1.nil)\n gen.assign(valid, true);\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data());\n this.$dataError();\n if (valid !== codegen_1.nil)\n gen.assign(valid, false);\n }\n gen.else();\n }\n invalid$data() {\n const { gen, schemaCode, schemaType, def, it } = this;\n return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema());\n function wrong$DataType() {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof codegen_1.Name))\n throw new Error(\"ajv implementation error\");\n const st = Array.isArray(schemaType) ? schemaType : [schemaType];\n return (0, codegen_1._) `${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`;\n }\n return codegen_1.nil;\n }\n function invalid$DataSchema() {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", { ref: def.validateSchema }); // TODO value.code for standalone\n return (0, codegen_1._) `!${validateSchemaRef}(${schemaCode})`;\n }\n return codegen_1.nil;\n }\n }\n subschema(appl, valid) {\n const subschema = (0, subschema_1.getSubschema)(this.it, appl);\n (0, subschema_1.extendSubschemaData)(subschema, this.it, appl);\n (0, subschema_1.extendSubschemaMode)(subschema, appl);\n const nextContext = { ...this.it, ...subschema, items: undefined, props: undefined };\n subschemaCode(nextContext, valid);\n return nextContext;\n }\n mergeEvaluated(schemaCxt, toName) {\n const { it, gen } = this;\n if (!it.opts.unevaluated)\n return;\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName);\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName);\n }\n }\n mergeValidEvaluated(schemaCxt, valid) {\n const { it, gen } = this;\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name));\n return true;\n }\n }\n}\nexports.KeywordCxt = KeywordCxt;\nfunction keywordCode(it, keyword, def, ruleType) {\n const cxt = new KeywordCxt(it, def, keyword);\n if (\"code\" in def) {\n def.code(cxt, ruleType);\n }\n else if (cxt.$data && def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n else if (\"macro\" in def) {\n (0, keyword_1.macroKeywordCode)(cxt, def);\n }\n else if (def.compile || def.validate) {\n (0, keyword_1.funcKeywordCode)(cxt, def);\n }\n}\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, { dataLevel, dataNames, dataPathArr }) {\n let jsonPointer;\n let data;\n if ($data === \"\")\n return names_1.default.rootData;\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data))\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n jsonPointer = $data;\n data = names_1.default.rootData;\n }\n else {\n const matches = RELATIVE_JSON_POINTER.exec($data);\n if (!matches)\n throw new Error(`Invalid JSON-pointer: ${$data}`);\n const up = +matches[1];\n jsonPointer = matches[2];\n if (jsonPointer === \"#\") {\n if (up >= dataLevel)\n throw new Error(errorMsg(\"property/index\", up));\n return dataPathArr[dataLevel - up];\n }\n if (up > dataLevel)\n throw new Error(errorMsg(\"data\", up));\n data = dataNames[dataLevel - up];\n if (!jsonPointer)\n return data;\n }\n let expr = data;\n const segments = jsonPointer.split(\"/\");\n for (const segment of segments) {\n if (segment) {\n data = (0, codegen_1._) `${data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`;\n expr = (0, codegen_1._) `${expr} && ${data}`;\n }\n }\n return expr;\n function errorMsg(pointerType, up) {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`;\n }\n}\nexports.getData = getData;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass ValidationError extends Error {\n constructor(errors) {\n super(\"validation failed\");\n this.errors = errors;\n this.ajv = this.validation = true;\n }\n}\nexports.default = ValidationError;\n//# sourceMappingURL=validation_error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst resolve_1 = require(\"./resolve\");\nclass MissingRefError extends Error {\n constructor(resolver, baseId, ref, msg) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`);\n this.missingRef = (0, resolve_1.resolveUrl)(resolver, baseId, ref);\n this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(resolver, this.missingRef));\n }\n}\nexports.default = MissingRefError;\n//# sourceMappingURL=ref_error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0;\nconst codegen_1 = require(\"./codegen\");\nconst validation_error_1 = require(\"../runtime/validation_error\");\nconst names_1 = require(\"./names\");\nconst resolve_1 = require(\"./resolve\");\nconst util_1 = require(\"./util\");\nconst validate_1 = require(\"./validate\");\nclass SchemaEnv {\n constructor(env) {\n var _a;\n this.refs = {};\n this.dynamicAnchors = {};\n let schema;\n if (typeof env.schema == \"object\")\n schema = env.schema;\n this.schema = env.schema;\n this.schemaId = env.schemaId;\n this.root = env.root || this;\n this.baseId = (_a = env.baseId) !== null && _a !== void 0 ? _a : (0, resolve_1.normalizeId)(schema === null || schema === void 0 ? void 0 : schema[env.schemaId || \"$id\"]);\n this.schemaPath = env.schemaPath;\n this.localRefs = env.localRefs;\n this.meta = env.meta;\n this.$async = schema === null || schema === void 0 ? void 0 : schema.$async;\n this.refs = {};\n }\n}\nexports.SchemaEnv = SchemaEnv;\n// let codeSize = 0\n// let nodeCount = 0\n// Compiles schema in SchemaEnv\nfunction compileSchema(sch) {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch);\n if (_sch)\n return _sch;\n const rootId = (0, resolve_1.getFullPath)(this.opts.uriResolver, sch.root.baseId); // TODO if getFullPath removed 1 tests fails\n const { es5, lines } = this.opts.code;\n const { ownProperties } = this.opts;\n const gen = new codegen_1.CodeGen(this.scope, { es5, lines, ownProperties });\n let _ValidationError;\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: validation_error_1.default,\n code: (0, codegen_1._) `require(\"ajv/dist/runtime/validation_error\").default`,\n });\n }\n const validateName = gen.scopeName(\"validate\");\n sch.validateName = validateName;\n const schemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: names_1.default.data,\n parentData: names_1.default.parentData,\n parentDataProperty: names_1.default.parentDataProperty,\n dataNames: [names_1.default.data],\n dataPathArr: [codegen_1.nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set(),\n topSchemaRef: gen.scopeValue(\"schema\", this.opts.code.source === true\n ? { ref: sch.schema, code: (0, codegen_1.stringify)(sch.schema) }\n : { ref: sch.schema }),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: codegen_1.nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: (0, codegen_1._) `\"\"`,\n opts: this.opts,\n self: this,\n };\n let sourceCode;\n try {\n this._compilations.add(sch);\n (0, validate_1.validateFunctionCode)(schemaCxt);\n gen.optimize(this.opts.code.optimize);\n // gen.optimize(1)\n const validateCode = gen.toString();\n sourceCode = `${gen.scopeRefs(names_1.default.scope)}return ${validateCode}`;\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process)\n sourceCode = this.opts.code.process(sourceCode, sch);\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${names_1.default.self}`, `${names_1.default.scope}`, sourceCode);\n const validate = makeValidate(this, this.scope.get());\n this.scope.value(validateName, { ref: validate });\n validate.errors = null;\n validate.schema = sch.schema;\n validate.schemaEnv = sch;\n if (sch.$async)\n validate.$async = true;\n if (this.opts.code.source === true) {\n validate.source = { validateName, validateCode, scopeValues: gen._values };\n }\n if (this.opts.unevaluated) {\n const { props, items } = schemaCxt;\n validate.evaluated = {\n props: props instanceof codegen_1.Name ? undefined : props,\n items: items instanceof codegen_1.Name ? undefined : items,\n dynamicProps: props instanceof codegen_1.Name,\n dynamicItems: items instanceof codegen_1.Name,\n };\n if (validate.source)\n validate.source.evaluated = (0, codegen_1.stringify)(validate.evaluated);\n }\n sch.validate = validate;\n return sch;\n }\n catch (e) {\n delete sch.validate;\n delete sch.validateName;\n if (sourceCode)\n this.logger.error(\"Error compiling schema, function code:\", sourceCode);\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e;\n }\n finally {\n this._compilations.delete(sch);\n }\n}\nexports.compileSchema = compileSchema;\nfunction resolveRef(root, baseId, ref) {\n var _a;\n ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, ref);\n const schOrFunc = root.refs[ref];\n if (schOrFunc)\n return schOrFunc;\n let _sch = resolve.call(this, root, ref);\n if (_sch === undefined) {\n const schema = (_a = root.localRefs) === null || _a === void 0 ? void 0 : _a[ref]; // TODO maybe localRefs should hold SchemaEnv\n const { schemaId } = this.opts;\n if (schema)\n _sch = new SchemaEnv({ schema, schemaId, root, baseId });\n }\n if (_sch === undefined)\n return;\n return (root.refs[ref] = inlineOrCompile.call(this, _sch));\n}\nexports.resolveRef = resolveRef;\nfunction inlineOrCompile(sch) {\n if ((0, resolve_1.inlineRef)(sch.schema, this.opts.inlineRefs))\n return sch.schema;\n return sch.validate ? sch : compileSchema.call(this, sch);\n}\n// Index of schema compilation in the currently compiled list\nfunction getCompilingSchema(schEnv) {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv))\n return sch;\n }\n}\nexports.getCompilingSchema = getCompilingSchema;\nfunction sameSchemaEnv(s1, s2) {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;\n}\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(root, // information about the root schema for the current schema\nref // reference to resolve\n) {\n let sch;\n while (typeof (sch = this.refs[ref]) == \"string\")\n ref = sch;\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref);\n}\n// Resolve schema, its root and baseId\nfunction resolveSchema(root, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\nref // reference to resolve\n) {\n const p = this.opts.uriResolver.parse(ref);\n const refPath = (0, resolve_1._getFullPath)(this.opts.uriResolver, p);\n let baseId = (0, resolve_1.getFullPath)(this.opts.uriResolver, root.baseId, undefined);\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root);\n }\n const id = (0, resolve_1.normalizeId)(refPath);\n const schOrRef = this.refs[id] || this.schemas[id];\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef);\n if (typeof (sch === null || sch === void 0 ? void 0 : sch.schema) !== \"object\")\n return;\n return getJsonPointer.call(this, p, sch);\n }\n if (typeof (schOrRef === null || schOrRef === void 0 ? void 0 : schOrRef.schema) !== \"object\")\n return;\n if (!schOrRef.validate)\n compileSchema.call(this, schOrRef);\n if (id === (0, resolve_1.normalizeId)(ref)) {\n const { schema } = schOrRef;\n const { schemaId } = this.opts;\n const schId = schema[schemaId];\n if (schId)\n baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);\n return new SchemaEnv({ schema, schemaId, root, baseId });\n }\n return getJsonPointer.call(this, p, schOrRef);\n}\nexports.resolveSchema = resolveSchema;\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n]);\nfunction getJsonPointer(parsedRef, { baseId, schema, root }) {\n var _a;\n if (((_a = parsedRef.fragment) === null || _a === void 0 ? void 0 : _a[0]) !== \"/\")\n return;\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\")\n return;\n const partSchema = schema[(0, util_1.unescapeFragment)(part)];\n if (partSchema === undefined)\n return;\n schema = partSchema;\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId];\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId);\n }\n }\n let env;\n if (typeof schema != \"boolean\" && schema.$ref && !(0, util_1.schemaHasRulesButRef)(schema, this.RULES)) {\n const $ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schema.$ref);\n env = resolveSchema.call(this, root, $ref);\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const { schemaId } = this.opts;\n env = env || new SchemaEnv({ schema, schemaId, root, baseId });\n if (env.schema !== env.root.schema)\n return env;\n return undefined;\n}\n//# sourceMappingURL=index.js.map","'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst 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)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array<string>} */\n const address = []\n /** @type {Array<string>} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @param {boolean} esc\n * @returns {import('../types/index').URIComponent}\n */\nfunction normalizeComponentEncoding (component, esc) {\n const func = esc !== true ? escape : unescape\n if (component.scheme !== undefined) {\n component.scheme = func(component.scheme)\n }\n if (component.userinfo !== undefined) {\n component.userinfo = func(component.userinfo)\n }\n if (component.host !== undefined) {\n component.host = func(component.host)\n }\n if (component.path !== undefined) {\n component.path = func(component.path)\n }\n if (component.query !== undefined) {\n component.query = func(component.query)\n }\n if (component.fragment !== undefined) {\n component.fragment = func(component.fragment)\n }\n return component\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n const uriTokens = []\n\n if (component.userinfo !== undefined) {\n uriTokens.push(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = component.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n","'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n 'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n if (wsComponent.secure === true) {\n return true\n } else if (wsComponent.secure === false) {\n return false\n } else if (wsComponent.scheme) {\n return (\n wsComponent.scheme.length === 3 &&\n (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n )\n } else {\n return false\n }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n if (!component.host) {\n component.error = component.error || 'HTTP URIs must have a host.'\n }\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n const secure = String(component.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (component.port === (secure ? 443 : 80) || component.port === '') {\n component.port = undefined\n }\n\n // normalize the empty path\n if (!component.path) {\n component.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n wsComponent.secure = wsIsSecure(wsComponent)\n\n // construct resouce name\n wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n wsComponent.path = undefined\n wsComponent.query = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n wsComponent.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponent.secure === 'boolean') {\n wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n wsComponent.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponent.resourceName) {\n const [path, query] = wsComponent.resourceName.split('?')\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = query\n wsComponent.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponent.fragment = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n if (!urnComponent.path) {\n urnComponent.error = 'URN can not be parsed'\n return urnComponent\n }\n const matches = urnComponent.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n urnComponent.nid = matches[1].toLowerCase()\n urnComponent.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n urnComponent.path = undefined\n\n if (schemeHandler) {\n urnComponent = schemeHandler.parse(urnComponent, options)\n }\n } else {\n urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n }\n\n return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n if (urnComponent.nid === undefined) {\n throw new Error('URN without nid cannot be serialized')\n }\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n const nid = urnComponent.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n\n if (schemeHandler) {\n urnComponent = schemeHandler.serialize(urnComponent, options)\n }\n\n const uriComponent = urnComponent\n const nss = urnComponent.nss\n uriComponent.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n const uuidComponent = urnComponent\n uuidComponent.uuid = uuidComponent.nss\n uuidComponent.nss = undefined\n\n if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n }\n\n return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n const urnComponent = uuidComponent\n // normalize UUID\n urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n return (\n scheme && (\n SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n ) ||\n undefined\n}\n\nmodule.exports = {\n wsIsSecure,\n SCHEMES,\n isValidSchemeName,\n getSchemeHandler,\n}\n","'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = /** @type {T} */ (serialize(parse(uri, options), options))\n } else if (typeof uri === 'object') {\n uri = /** @type {T} */ (parse(serialize(uri, options), options))\n }\n return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n schemelessOptions.skipEscape = true\n return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n /** @type {import('./types/index').URIComponent} */\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base component\n relative = parse(serialize(relative, options), options) // normalize relative component\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path[0] === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n if (typeof uriA === 'string') {\n uriA = unescape(uriA)\n uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n } else if (typeof uriA === 'object') {\n uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n }\n\n if (typeof uriB === 'string') {\n uriB = unescape(uriB)\n uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n } else if (typeof uriB === 'object') {\n uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n }\n\n return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n const component = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = escape(component.path)\n\n if (component.scheme !== undefined) {\n component.path = component.path.split('%3A').join(':')\n }\n } else {\n component.path = unescape(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n uriTokens.push(component.scheme, ':')\n }\n\n const authority = recomposeAuthority(component)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (component.path && component.path[0] !== '/') {\n uriTokens.push('/')\n }\n }\n if (component.path !== undefined) {\n let s = component.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (\n authority === undefined &&\n s[0] === '/' &&\n s[1] === '/'\n ) {\n // don't allow the path to start with \"//\"\n s = '/%2F' + s.slice(2)\n }\n\n uriTokens.push(s)\n }\n\n if (component.query !== undefined) {\n uriTokens.push('?', component.query)\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', component.fragment)\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n const options = Object.assign({}, opts)\n /** @type {import('./types/index').URIComponent} */\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n\n let isIP = false\n if (options.reference === 'suffix') {\n if (options.scheme) {\n uri = options.scheme + ':' + uri\n } else {\n uri = '//' + uri\n }\n }\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n if (parsed.host) {\n const ipv4result = isIPv4(parsed.host)\n if (ipv4result === false) {\n const ipv6result = normalizeIPv6(parsed.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (parsed.host !== undefined) {\n parsed.host = unescape(parsed.host)\n }\n }\n if (parsed.path) {\n parsed.path = escape(unescape(parsed.path))\n }\n if (parsed.fragment) {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return parsed\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponent,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst uri = require(\"fast-uri\");\nuri.code = 'require(\"ajv/dist/runtime/uri\").default';\nexports.default = uri;\n//# sourceMappingURL=uri.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0;\nvar validate_1 = require(\"./compile/validate\");\nObject.defineProperty(exports, \"KeywordCxt\", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });\nvar codegen_1 = require(\"./compile/codegen\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return codegen_1._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return codegen_1.str; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return codegen_1.stringify; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return codegen_1.nil; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return codegen_1.Name; } });\nObject.defineProperty(exports, \"CodeGen\", { enumerable: true, get: function () { return codegen_1.CodeGen; } });\nconst validation_error_1 = require(\"./runtime/validation_error\");\nconst ref_error_1 = require(\"./compile/ref_error\");\nconst rules_1 = require(\"./compile/rules\");\nconst compile_1 = require(\"./compile\");\nconst codegen_2 = require(\"./compile/codegen\");\nconst resolve_1 = require(\"./compile/resolve\");\nconst dataType_1 = require(\"./compile/validate/dataType\");\nconst util_1 = require(\"./compile/util\");\nconst $dataRefSchema = require(\"./refs/data.json\");\nconst uri_1 = require(\"./runtime/uri\");\nconst defaultRegExp = (str, flags) => new RegExp(str, flags);\ndefaultRegExp.code = \"new RegExp\";\nconst META_IGNORE_OPTIONS = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"];\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n]);\nconst removedOptions = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n};\nconst deprecatedOptions = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n};\nconst MAX_EXPRESSION = 200;\n// eslint-disable-next-line complexity\nfunction requiredOptions(o) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;\n const s = o.strict;\n const _optz = (_a = o.code) === null || _a === void 0 ? void 0 : _a.optimize;\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0;\n const regExp = (_c = (_b = o.code) === null || _b === void 0 ? void 0 : _b.regExp) !== null && _c !== void 0 ? _c : defaultRegExp;\n const uriResolver = (_d = o.uriResolver) !== null && _d !== void 0 ? _d : uri_1.default;\n return {\n strictSchema: (_f = (_e = o.strictSchema) !== null && _e !== void 0 ? _e : s) !== null && _f !== void 0 ? _f : true,\n strictNumbers: (_h = (_g = o.strictNumbers) !== null && _g !== void 0 ? _g : s) !== null && _h !== void 0 ? _h : true,\n strictTypes: (_k = (_j = o.strictTypes) !== null && _j !== void 0 ? _j : s) !== null && _k !== void 0 ? _k : \"log\",\n strictTuples: (_m = (_l = o.strictTuples) !== null && _l !== void 0 ? _l : s) !== null && _m !== void 0 ? _m : \"log\",\n strictRequired: (_p = (_o = o.strictRequired) !== null && _o !== void 0 ? _o : s) !== null && _p !== void 0 ? _p : false,\n code: o.code ? { ...o.code, optimize, regExp } : { optimize, regExp },\n loopRequired: (_q = o.loopRequired) !== null && _q !== void 0 ? _q : MAX_EXPRESSION,\n loopEnum: (_r = o.loopEnum) !== null && _r !== void 0 ? _r : MAX_EXPRESSION,\n meta: (_s = o.meta) !== null && _s !== void 0 ? _s : true,\n messages: (_t = o.messages) !== null && _t !== void 0 ? _t : true,\n inlineRefs: (_u = o.inlineRefs) !== null && _u !== void 0 ? _u : true,\n schemaId: (_v = o.schemaId) !== null && _v !== void 0 ? _v : \"$id\",\n addUsedSchema: (_w = o.addUsedSchema) !== null && _w !== void 0 ? _w : true,\n validateSchema: (_x = o.validateSchema) !== null && _x !== void 0 ? _x : true,\n validateFormats: (_y = o.validateFormats) !== null && _y !== void 0 ? _y : true,\n unicodeRegExp: (_z = o.unicodeRegExp) !== null && _z !== void 0 ? _z : true,\n int32range: (_0 = o.int32range) !== null && _0 !== void 0 ? _0 : true,\n uriResolver: uriResolver,\n };\n}\nclass Ajv {\n constructor(opts = {}) {\n this.schemas = {};\n this.refs = {};\n this.formats = {};\n this._compilations = new Set();\n this._loading = {};\n this._cache = new Map();\n opts = this.opts = { ...opts, ...requiredOptions(opts) };\n const { es5, lines } = this.opts.code;\n this.scope = new codegen_2.ValueScope({ scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines });\n this.logger = getLogger(opts.logger);\n const formatOpt = opts.validateFormats;\n opts.validateFormats = false;\n this.RULES = (0, rules_1.getRules)();\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\");\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\");\n this._metaOpts = getMetaSchemaOptions.call(this);\n if (opts.formats)\n addInitialFormats.call(this);\n this._addVocabularies();\n this._addDefaultMetaSchema();\n if (opts.keywords)\n addInitialKeywords.call(this, opts.keywords);\n if (typeof opts.meta == \"object\")\n this.addMetaSchema(opts.meta);\n addInitialSchemas.call(this);\n opts.validateFormats = formatOpt;\n }\n _addVocabularies() {\n this.addKeyword(\"$async\");\n }\n _addDefaultMetaSchema() {\n const { $data, meta, schemaId } = this.opts;\n let _dataRefSchema = $dataRefSchema;\n if (schemaId === \"id\") {\n _dataRefSchema = { ...$dataRefSchema };\n _dataRefSchema.id = _dataRefSchema.$id;\n delete _dataRefSchema.$id;\n }\n if (meta && $data)\n this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false);\n }\n defaultMeta() {\n const { meta, schemaId } = this.opts;\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined);\n }\n validate(schemaKeyRef, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data // to be validated\n ) {\n let v;\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema(schemaKeyRef);\n if (!v)\n throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`);\n }\n else {\n v = this.compile(schemaKeyRef);\n }\n const valid = v(data);\n if (!(\"$async\" in v))\n this.errors = v.errors;\n return valid;\n }\n compile(schema, _meta) {\n const sch = this._addSchema(schema, _meta);\n return (sch.validate || this._compileSchemaEnv(sch));\n }\n compileAsync(schema, meta) {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\");\n }\n const { loadSchema } = this.opts;\n return runCompileAsync.call(this, schema, meta);\n async function runCompileAsync(_schema, _meta) {\n await loadMetaSchema.call(this, _schema.$schema);\n const sch = this._addSchema(_schema, _meta);\n return sch.validate || _compileAsync.call(this, sch);\n }\n async function loadMetaSchema($ref) {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, { $ref }, true);\n }\n }\n async function _compileAsync(sch) {\n try {\n return this._compileSchemaEnv(sch);\n }\n catch (e) {\n if (!(e instanceof ref_error_1.default))\n throw e;\n checkLoaded.call(this, e);\n await loadMissingSchema.call(this, e.missingSchema);\n return _compileAsync.call(this, sch);\n }\n }\n function checkLoaded({ missingSchema: ref, missingRef }) {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`);\n }\n }\n async function loadMissingSchema(ref) {\n const _schema = await _loadSchema.call(this, ref);\n if (!this.refs[ref])\n await loadMetaSchema.call(this, _schema.$schema);\n if (!this.refs[ref])\n this.addSchema(_schema, ref, meta);\n }\n async function _loadSchema(ref) {\n const p = this._loading[ref];\n if (p)\n return p;\n try {\n return await (this._loading[ref] = loadSchema(ref));\n }\n finally {\n delete this._loading[ref];\n }\n }\n }\n // Adds schema to the instance\n addSchema(schema, // If array is passed, `key` will be ignored\n key, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ) {\n if (Array.isArray(schema)) {\n for (const sch of schema)\n this.addSchema(sch, undefined, _meta, _validateSchema);\n return this;\n }\n let id;\n if (typeof schema === \"object\") {\n const { schemaId } = this.opts;\n id = schema[schemaId];\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`);\n }\n }\n key = (0, resolve_1.normalizeId)(key || id);\n this._checkUnique(key);\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true);\n return this;\n }\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(schema, key, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ) {\n this.addSchema(schema, key, true, _validateSchema);\n return this;\n }\n // Validate schema against its meta-schema\n validateSchema(schema, throwOrLogError) {\n if (typeof schema == \"boolean\")\n return true;\n let $schema;\n $schema = schema.$schema;\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\");\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta();\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\");\n this.errors = null;\n return true;\n }\n const valid = this.validate($schema, schema);\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText();\n if (this.opts.validateSchema === \"log\")\n this.logger.error(message);\n else\n throw new Error(message);\n }\n return valid;\n }\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema(keyRef) {\n let sch;\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\")\n keyRef = sch;\n if (sch === undefined) {\n const { schemaId } = this.opts;\n const root = new compile_1.SchemaEnv({ schema: {}, schemaId });\n sch = compile_1.resolveSchema.call(this, root, keyRef);\n if (!sch)\n return;\n this.refs[keyRef] = sch;\n }\n return (sch.validate || this._compileSchemaEnv(sch));\n }\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef) {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef);\n this._removeAllSchemas(this.refs, schemaKeyRef);\n return this;\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas);\n this._removeAllSchemas(this.refs);\n this._cache.clear();\n return this;\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef);\n if (typeof sch == \"object\")\n this._cache.delete(sch.schema);\n delete this.schemas[schemaKeyRef];\n delete this.refs[schemaKeyRef];\n return this;\n }\n case \"object\": {\n const cacheKey = schemaKeyRef;\n this._cache.delete(cacheKey);\n let id = schemaKeyRef[this.opts.schemaId];\n if (id) {\n id = (0, resolve_1.normalizeId)(id);\n delete this.schemas[id];\n delete this.refs[id];\n }\n return this;\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\");\n }\n }\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions) {\n for (const def of definitions)\n this.addKeyword(def);\n return this;\n }\n addKeyword(kwdOrDef, def // deprecated\n ) {\n let keyword;\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef;\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\");\n def.keyword = keyword;\n }\n }\n else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef;\n keyword = def.keyword;\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\");\n }\n }\n else {\n throw new Error(\"invalid addKeywords parameters\");\n }\n checkKeyword.call(this, keyword, def);\n if (!def) {\n (0, util_1.eachItem)(keyword, (kwd) => addRule.call(this, kwd));\n return this;\n }\n keywordMetaschema.call(this, def);\n const definition = {\n ...def,\n type: (0, dataType_1.getJSONTypes)(def.type),\n schemaType: (0, dataType_1.getJSONTypes)(def.schemaType),\n };\n (0, util_1.eachItem)(keyword, definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t)));\n return this;\n }\n getKeyword(keyword) {\n const rule = this.RULES.all[keyword];\n return typeof rule == \"object\" ? rule.definition : !!rule;\n }\n // Remove keyword\n removeKeyword(keyword) {\n // TODO return type should be Ajv\n const { RULES } = this;\n delete RULES.keywords[keyword];\n delete RULES.all[keyword];\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword);\n if (i >= 0)\n group.rules.splice(i, 1);\n }\n return this;\n }\n // Add format\n addFormat(name, format) {\n if (typeof format == \"string\")\n format = new RegExp(format);\n this.formats[name] = format;\n return this;\n }\n errorsText(errors = this.errors, // optional array of validation errors\n { separator = \", \", dataVar = \"data\" } = {} // optional options with properties `separator` and `dataVar`\n ) {\n if (!errors || errors.length === 0)\n return \"No errors\";\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg);\n }\n $dataMetaSchema(metaSchema, keywordsJsonPointers) {\n const rules = this.RULES.all;\n metaSchema = JSON.parse(JSON.stringify(metaSchema));\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1); // first segment is an empty string\n let keywords = metaSchema;\n for (const seg of segments)\n keywords = keywords[seg];\n for (const key in rules) {\n const rule = rules[key];\n if (typeof rule != \"object\")\n continue;\n const { $data } = rule.definition;\n const schema = keywords[key];\n if ($data && schema)\n keywords[key] = schemaOrData(schema);\n }\n }\n return metaSchema;\n }\n _removeAllSchemas(schemas, regex) {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef];\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef];\n }\n else if (sch && !sch.meta) {\n this._cache.delete(sch.schema);\n delete schemas[keyRef];\n }\n }\n }\n }\n _addSchema(schema, meta, baseId, validateSchema = this.opts.validateSchema, addSchema = this.opts.addUsedSchema) {\n let id;\n const { schemaId } = this.opts;\n if (typeof schema == \"object\") {\n id = schema[schemaId];\n }\n else {\n if (this.opts.jtd)\n throw new Error(\"schema must be object\");\n else if (typeof schema != \"boolean\")\n throw new Error(\"schema must be object or boolean\");\n }\n let sch = this._cache.get(schema);\n if (sch !== undefined)\n return sch;\n baseId = (0, resolve_1.normalizeId)(id || baseId);\n const localRefs = resolve_1.getSchemaRefs.call(this, schema, baseId);\n sch = new compile_1.SchemaEnv({ schema, schemaId, meta, baseId, localRefs });\n this._cache.set(sch.schema, sch);\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId)\n this._checkUnique(baseId);\n this.refs[baseId] = sch;\n }\n if (validateSchema)\n this.validateSchema(schema, true);\n return sch;\n }\n _checkUnique(id) {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`);\n }\n }\n _compileSchemaEnv(sch) {\n if (sch.meta)\n this._compileMetaSchema(sch);\n else\n compile_1.compileSchema.call(this, sch);\n /* istanbul ignore if */\n if (!sch.validate)\n throw new Error(\"ajv implementation error\");\n return sch.validate;\n }\n _compileMetaSchema(sch) {\n const currentOpts = this.opts;\n this.opts = this._metaOpts;\n try {\n compile_1.compileSchema.call(this, sch);\n }\n finally {\n this.opts = currentOpts;\n }\n }\n}\nAjv.ValidationError = validation_error_1.default;\nAjv.MissingRefError = ref_error_1.default;\nexports.default = Ajv;\nfunction checkOptions(checkOpts, options, msg, log = \"error\") {\n for (const key in checkOpts) {\n const opt = key;\n if (opt in options)\n this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`);\n }\n}\nfunction getSchEnv(keyRef) {\n keyRef = (0, resolve_1.normalizeId)(keyRef); // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef];\n}\nfunction addInitialSchemas() {\n const optsSchemas = this.opts.schemas;\n if (!optsSchemas)\n return;\n if (Array.isArray(optsSchemas))\n this.addSchema(optsSchemas);\n else\n for (const key in optsSchemas)\n this.addSchema(optsSchemas[key], key);\n}\nfunction addInitialFormats() {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name];\n if (format)\n this.addFormat(name, format);\n }\n}\nfunction addInitialKeywords(defs) {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs);\n return;\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\");\n for (const keyword in defs) {\n const def = defs[keyword];\n if (!def.keyword)\n def.keyword = keyword;\n this.addKeyword(def);\n }\n}\nfunction getMetaSchemaOptions() {\n const metaOpts = { ...this.opts };\n for (const opt of META_IGNORE_OPTIONS)\n delete metaOpts[opt];\n return metaOpts;\n}\nconst noLogs = { log() { }, warn() { }, error() { } };\nfunction getLogger(logger) {\n if (logger === false)\n return noLogs;\n if (logger === undefined)\n return console;\n if (logger.log && logger.warn && logger.error)\n return logger;\n throw new Error(\"logger must implement log, warn and error methods\");\n}\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i;\nfunction checkKeyword(keyword, def) {\n const { RULES } = this;\n (0, util_1.eachItem)(keyword, (kwd) => {\n if (RULES.keywords[kwd])\n throw new Error(`Keyword ${kwd} is already defined`);\n if (!KEYWORD_NAME.test(kwd))\n throw new Error(`Keyword ${kwd} has invalid name`);\n });\n if (!def)\n return;\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function');\n }\n}\nfunction addRule(keyword, definition, dataType) {\n var _a;\n const post = definition === null || definition === void 0 ? void 0 : definition.post;\n if (dataType && post)\n throw new Error('keyword with \"post\" flag cannot have \"type\"');\n const { RULES } = this;\n let ruleGroup = post ? RULES.post : RULES.rules.find(({ type: t }) => t === dataType);\n if (!ruleGroup) {\n ruleGroup = { type: dataType, rules: [] };\n RULES.rules.push(ruleGroup);\n }\n RULES.keywords[keyword] = true;\n if (!definition)\n return;\n const rule = {\n keyword,\n definition: {\n ...definition,\n type: (0, dataType_1.getJSONTypes)(definition.type),\n schemaType: (0, dataType_1.getJSONTypes)(definition.schemaType),\n },\n };\n if (definition.before)\n addBeforeRule.call(this, ruleGroup, rule, definition.before);\n else\n ruleGroup.rules.push(rule);\n RULES.all[keyword] = rule;\n (_a = definition.implements) === null || _a === void 0 ? void 0 : _a.forEach((kwd) => this.addKeyword(kwd));\n}\nfunction addBeforeRule(ruleGroup, rule, before) {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before);\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule);\n }\n else {\n ruleGroup.rules.push(rule);\n this.logger.warn(`rule ${before} is not defined`);\n }\n}\nfunction keywordMetaschema(def) {\n let { metaSchema } = def;\n if (metaSchema === undefined)\n return;\n if (def.$data && this.opts.$data)\n metaSchema = schemaOrData(metaSchema);\n def.validateSchema = this.compile(metaSchema, true);\n}\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n};\nfunction schemaOrData(schema) {\n return { anyOf: [schema, $dataRef] };\n}\n//# sourceMappingURL=core.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.callRef = exports.getValidate = void 0;\nconst ref_error_1 = require(\"../../compile/ref_error\");\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst names_1 = require(\"../../compile/names\");\nconst compile_1 = require(\"../../compile\");\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt) {\n const { gen, schema: $ref, it } = cxt;\n const { baseId, schemaEnv: env, validateName, opts, self } = it;\n const { root } = env;\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId)\n return callRootRef();\n const schOrEnv = compile_1.resolveRef.call(self, root, baseId, $ref);\n if (schOrEnv === undefined)\n throw new ref_error_1.default(it.opts.uriResolver, baseId, $ref);\n if (schOrEnv instanceof compile_1.SchemaEnv)\n return callValidate(schOrEnv);\n return inlineRefSchema(schOrEnv);\n function callRootRef() {\n if (env === root)\n return callRef(cxt, validateName, env, env.$async);\n const rootName = gen.scopeValue(\"root\", { ref: root });\n return callRef(cxt, (0, codegen_1._) `${rootName}.validate`, root, root.$async);\n }\n function callValidate(sch) {\n const v = getValidate(cxt, sch);\n callRef(cxt, v, sch, sch.$async);\n }\n function inlineRefSchema(sch) {\n const schName = gen.scopeValue(\"schema\", opts.code.source === true ? { ref: sch, code: (0, codegen_1.stringify)(sch) } : { ref: sch });\n const valid = gen.name(\"valid\");\n const schCxt = cxt.subschema({\n schema: sch,\n dataTypes: [],\n schemaPath: codegen_1.nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n }, valid);\n cxt.mergeEvaluated(schCxt);\n cxt.ok(valid);\n }\n },\n};\nfunction getValidate(cxt, sch) {\n const { gen } = cxt;\n return sch.validate\n ? gen.scopeValue(\"validate\", { ref: sch.validate })\n : (0, codegen_1._) `${gen.scopeValue(\"wrapper\", { ref: sch })}.validate`;\n}\nexports.getValidate = getValidate;\nfunction callRef(cxt, v, sch, $async) {\n const { gen, it } = cxt;\n const { allErrors, schemaEnv: env, opts } = it;\n const passCxt = opts.passContext ? names_1.default.this : codegen_1.nil;\n if ($async)\n callAsyncRef();\n else\n callSyncRef();\n function callAsyncRef() {\n if (!env.$async)\n throw new Error(\"async schema referenced by sync schema\");\n const valid = gen.let(\"valid\");\n gen.try(() => {\n gen.code((0, codegen_1._) `await ${(0, code_1.callValidateCode)(cxt, v, passCxt)}`);\n addEvaluatedFrom(v); // TODO will not work with async, it has to be returned with the result\n if (!allErrors)\n gen.assign(valid, true);\n }, (e) => {\n gen.if((0, codegen_1._) `!(${e} instanceof ${it.ValidationError})`, () => gen.throw(e));\n addErrorsFrom(e);\n if (!allErrors)\n gen.assign(valid, false);\n });\n cxt.ok(valid);\n }\n function callSyncRef() {\n cxt.result((0, code_1.callValidateCode)(cxt, v, passCxt), () => addEvaluatedFrom(v), () => addErrorsFrom(v));\n }\n function addErrorsFrom(source) {\n const errs = (0, codegen_1._) `${source}.errors`;\n gen.assign(names_1.default.vErrors, (0, codegen_1._) `${names_1.default.vErrors} === null ? ${errs} : ${names_1.default.vErrors}.concat(${errs})`); // TODO tagged\n gen.assign(names_1.default.errors, (0, codegen_1._) `${names_1.default.vErrors}.length`);\n }\n function addEvaluatedFrom(source) {\n var _a;\n if (!it.opts.unevaluated)\n return;\n const schEvaluated = (_a = sch === null || sch === void 0 ? void 0 : sch.validate) === null || _a === void 0 ? void 0 : _a.evaluated;\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = util_1.mergeEvaluated.props(gen, schEvaluated.props, it.props);\n }\n }\n else {\n const props = gen.var(\"props\", (0, codegen_1._) `${source}.evaluated.props`);\n it.props = util_1.mergeEvaluated.props(gen, props, it.props, codegen_1.Name);\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = util_1.mergeEvaluated.items(gen, schEvaluated.items, it.items);\n }\n }\n else {\n const items = gen.var(\"items\", (0, codegen_1._) `${source}.evaluated.items`);\n it.items = util_1.mergeEvaluated.items(gen, items, it.items, codegen_1.Name);\n }\n }\n }\n}\nexports.callRef = callRef;\nexports.default = def;\n//# sourceMappingURL=ref.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_1 = require(\"ajv/dist/vocabularies/core/ref\");\nconst core = [\n \"$schema\",\n \"id\",\n \"$defs\",\n { keyword: \"$comment\" },\n \"definitions\",\n ref_1.default,\n];\nexports.default = core;\n//# sourceMappingURL=core.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core_1 = require(\"ajv/dist/core\");\nconst codegen_1 = require(\"ajv/dist/compile/codegen\");\nconst ops = codegen_1.operators;\nconst KWDs = {\n maximum: {\n exclusive: \"exclusiveMaximum\",\n ops: [\n { okStr: \"<=\", ok: ops.LTE, fail: ops.GT },\n { okStr: \"<\", ok: ops.LT, fail: ops.GTE },\n ],\n },\n minimum: {\n exclusive: \"exclusiveMinimum\",\n ops: [\n { okStr: \">=\", ok: ops.GTE, fail: ops.LT },\n { okStr: \">\", ok: ops.GT, fail: ops.LTE },\n ],\n },\n};\nconst error = {\n message: (cxt) => core_1.str `must be ${kwdOp(cxt).okStr} ${cxt.schemaCode}`,\n params: (cxt) => core_1._ `{comparison: ${kwdOp(cxt).okStr}, limit: ${cxt.schemaCode}}`,\n};\nconst def = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { data, schemaCode } = cxt;\n cxt.fail$data(core_1._ `${data} ${kwdOp(cxt).fail} ${schemaCode} || isNaN(${data})`);\n },\n};\nfunction kwdOp(cxt) {\n var _a;\n const keyword = cxt.keyword;\n const opsIdx = ((_a = cxt.parentSchema) === null || _a === void 0 ? void 0 : _a[KWDs[keyword].exclusive]) ? 1 : 0;\n return KWDs[keyword].ops[opsIdx];\n}\nexports.default = def;\n//# sourceMappingURL=limitNumber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst KWDs = {\n exclusiveMaximum: \"maximum\",\n exclusiveMinimum: \"minimum\",\n};\nconst def = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"boolean\",\n code({ keyword, parentSchema }) {\n const limitKwd = KWDs[keyword];\n if (parentSchema[limitKwd] === undefined) {\n throw new Error(`${keyword} can only be used with ${limitKwd}`);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitNumberExclusive.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must be multiple of ${schemaCode}`,\n params: ({ schemaCode }) => (0, codegen_1._) `{multipleOf: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, schemaCode, it } = cxt;\n // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision;\n const res = gen.let(\"res\");\n const invalid = prec\n ? (0, codegen_1._) `Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : (0, codegen_1._) `${res} !== parseInt(${res})`;\n cxt.fail$data((0, codegen_1._) `(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=multipleOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nfunction ucs2length(str) {\n const len = str.length;\n let length = 0;\n let pos = 0;\n let value;\n while (pos < len) {\n length++;\n value = str.charCodeAt(pos++);\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos);\n if ((value & 0xfc00) === 0xdc00)\n pos++; // low surrogate\n }\n }\n return length;\n}\nexports.default = ucs2length;\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default';\n//# sourceMappingURL=ucs2length.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst ucs2length_1 = require(\"../../runtime/ucs2length\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} characters`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode, it } = cxt;\n const op = keyword === \"maxLength\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n const len = it.opts.unicode === false ? (0, codegen_1._) `${data}.length` : (0, codegen_1._) `${(0, util_1.useFunc)(cxt.gen, ucs2length_1.default)}(${data})`;\n cxt.fail$data((0, codegen_1._) `${len} ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitLength.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst util_1 = require(\"../../compile/util\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must match pattern \"${schemaCode}\"`,\n params: ({ schemaCode }) => (0, codegen_1._) `{pattern: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schema, schemaCode, it } = cxt;\n const u = it.opts.unicodeRegExp ? \"u\" : \"\";\n if ($data) {\n const { regExp } = it.opts.code;\n const regExpCode = regExp.code === \"new RegExp\" ? (0, codegen_1._) `new RegExp` : (0, util_1.useFunc)(gen, regExp);\n const valid = gen.let(\"valid\");\n gen.try(() => gen.assign(valid, (0, codegen_1._) `${regExpCode}(${schemaCode}, ${u}).test(${data})`), () => gen.assign(valid, false));\n cxt.fail$data((0, codegen_1._) `!${valid}`);\n }\n else {\n const regExp = (0, code_1.usePattern)(cxt, schema);\n cxt.fail$data((0, codegen_1._) `!${regExp}.test(${data})`);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=pattern.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} properties`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n const op = keyword === \"maxProperties\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n cxt.fail$data((0, codegen_1._) `Object.keys(${data}).length ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { missingProperty } }) => (0, codegen_1.str) `must have required property '${missingProperty}'`,\n params: ({ params: { missingProperty } }) => (0, codegen_1._) `{missingProperty: ${missingProperty}}`,\n};\nconst def = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt) {\n const { gen, schema, schemaCode, data, $data, it } = cxt;\n const { opts } = it;\n if (!$data && schema.length === 0)\n return;\n const useLoop = schema.length >= opts.loopRequired;\n if (it.allErrors)\n allErrorsMode();\n else\n exitOnErrorMode();\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties;\n const { definedProperties } = cxt.it;\n for (const requiredKey of schema) {\n if ((props === null || props === void 0 ? void 0 : props[requiredKey]) === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath;\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`;\n (0, util_1.checkStrictMode)(it, msg, it.opts.strictRequired);\n }\n }\n }\n function allErrorsMode() {\n if (useLoop || $data) {\n cxt.block$data(codegen_1.nil, loopAllRequired);\n }\n else {\n for (const prop of schema) {\n (0, code_1.checkReportMissingProp)(cxt, prop);\n }\n }\n }\n function exitOnErrorMode() {\n const missing = gen.let(\"missing\");\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true);\n cxt.block$data(valid, () => loopUntilMissing(missing, valid));\n cxt.ok(valid);\n }\n else {\n gen.if((0, code_1.checkMissingProp)(cxt, schema, missing));\n (0, code_1.reportMissingProp)(cxt, missing);\n gen.else();\n }\n }\n function loopAllRequired() {\n gen.forOf(\"prop\", schemaCode, (prop) => {\n cxt.setParams({ missingProperty: prop });\n gen.if((0, code_1.noPropertyInData)(gen, data, prop, opts.ownProperties), () => cxt.error());\n });\n }\n function loopUntilMissing(missing, valid) {\n cxt.setParams({ missingProperty: missing });\n gen.forOf(missing, schemaCode, () => {\n gen.assign(valid, (0, code_1.propertyInData)(gen, data, missing, opts.ownProperties));\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.error();\n gen.break();\n });\n }, codegen_1.nil);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=required.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message({ keyword, schemaCode }) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\";\n return (0, codegen_1.str) `must NOT have ${comp} than ${schemaCode} items`;\n },\n params: ({ schemaCode }) => (0, codegen_1._) `{limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n const op = keyword === \"maxItems\" ? codegen_1.operators.GT : codegen_1.operators.LT;\n cxt.fail$data((0, codegen_1._) `${data}.length ${op} ${schemaCode}`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://github.com/ajv-validator/ajv/issues/889\nconst equal = require(\"fast-deep-equal\");\nequal.code = 'require(\"ajv/dist/runtime/equal\").default';\nexports.default = equal;\n//# sourceMappingURL=equal.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dataType_1 = require(\"../../compile/validate/dataType\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: ({ params: { i, j } }) => (0, codegen_1.str) `must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({ params: { i, j } }) => (0, codegen_1._) `{i: ${i}, j: ${j}}`,\n};\nconst def = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schema, parentSchema, schemaCode, it } = cxt;\n if (!$data && !schema)\n return;\n const valid = gen.let(\"valid\");\n const itemTypes = parentSchema.items ? (0, dataType_1.getSchemaTypes)(parentSchema.items) : [];\n cxt.block$data(valid, validateUniqueItems, (0, codegen_1._) `${schemaCode} === false`);\n cxt.ok(valid);\n function validateUniqueItems() {\n const i = gen.let(\"i\", (0, codegen_1._) `${data}.length`);\n const j = gen.let(\"j\");\n cxt.setParams({ i, j });\n gen.assign(valid, true);\n gen.if((0, codegen_1._) `${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j));\n }\n function canOptimize() {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\");\n }\n function loopN(i, j) {\n const item = gen.name(\"item\");\n const wrongType = (0, dataType_1.checkDataTypes)(itemTypes, item, it.opts.strictNumbers, dataType_1.DataType.Wrong);\n const indices = gen.const(\"indices\", (0, codegen_1._) `{}`);\n gen.for((0, codegen_1._) `;${i}--;`, () => {\n gen.let(item, (0, codegen_1._) `${data}[${i}]`);\n gen.if(wrongType, (0, codegen_1._) `continue`);\n if (itemTypes.length > 1)\n gen.if((0, codegen_1._) `typeof ${item} == \"string\"`, (0, codegen_1._) `${item} += \"_\"`);\n gen\n .if((0, codegen_1._) `typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, (0, codegen_1._) `${indices}[${item}]`);\n cxt.error();\n gen.assign(valid, false).break();\n })\n .code((0, codegen_1._) `${indices}[${item}] = ${i}`);\n });\n }\n function loopN2(i, j) {\n const eql = (0, util_1.useFunc)(gen, equal_1.default);\n const outer = gen.name(\"outer\");\n gen.label(outer).for((0, codegen_1._) `;${i}--;`, () => gen.for((0, codegen_1._) `${j} = ${i}; ${j}--;`, () => gen.if((0, codegen_1._) `${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error();\n gen.assign(valid, false).break(outer);\n })));\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=uniqueItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: \"must be equal to constant\",\n params: ({ schemaCode }) => (0, codegen_1._) `{allowedValue: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schemaCode, schema } = cxt;\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data((0, codegen_1._) `!${(0, util_1.useFunc)(gen, equal_1.default)}(${data}, ${schemaCode})`);\n }\n else {\n cxt.fail((0, codegen_1._) `${schema} !== ${data}`);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=const.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst equal_1 = require(\"../../runtime/equal\");\nconst error = {\n message: \"must be equal to one of the allowed values\",\n params: ({ schemaCode }) => (0, codegen_1._) `{allowedValues: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt) {\n const { gen, data, $data, schema, schemaCode, it } = cxt;\n if (!$data && schema.length === 0)\n throw new Error(\"enum must have non-empty array\");\n const useLoop = schema.length >= it.opts.loopEnum;\n let eql;\n const getEql = () => (eql !== null && eql !== void 0 ? eql : (eql = (0, util_1.useFunc)(gen, equal_1.default)));\n let valid;\n if (useLoop || $data) {\n valid = gen.let(\"valid\");\n cxt.block$data(valid, loopEnum);\n }\n else {\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const vSchema = gen.const(\"vSchema\", schemaCode);\n valid = (0, codegen_1.or)(...schema.map((_x, i) => equalCode(vSchema, i)));\n }\n cxt.pass(valid);\n function loopEnum() {\n gen.assign(valid, false);\n gen.forOf(\"v\", schemaCode, (v) => gen.if((0, codegen_1._) `${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break()));\n }\n function equalCode(vSchema, i) {\n const sch = schema[i];\n return typeof sch === \"object\" && sch !== null\n ? (0, codegen_1._) `${getEql()}(${data}, ${vSchema}[${i}])`\n : (0, codegen_1._) `${data} === ${sch}`;\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=enum.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst limitNumber_1 = require(\"./limitNumber\");\nconst limitNumberExclusive_1 = require(\"./limitNumberExclusive\");\nconst multipleOf_1 = require(\"ajv/dist/vocabularies/validation/multipleOf\");\nconst limitLength_1 = require(\"ajv/dist/vocabularies/validation/limitLength\");\nconst pattern_1 = require(\"ajv/dist/vocabularies/validation/pattern\");\nconst limitProperties_1 = require(\"ajv/dist/vocabularies/validation/limitProperties\");\nconst required_1 = require(\"ajv/dist/vocabularies/validation/required\");\nconst limitItems_1 = require(\"ajv/dist/vocabularies/validation/limitItems\");\nconst uniqueItems_1 = require(\"ajv/dist/vocabularies/validation/uniqueItems\");\nconst const_1 = require(\"ajv/dist/vocabularies/validation/const\");\nconst enum_1 = require(\"ajv/dist/vocabularies/validation/enum\");\nconst validation = [\n // number\n limitNumber_1.default,\n limitNumberExclusive_1.default,\n multipleOf_1.default,\n // string\n limitLength_1.default,\n pattern_1.default,\n // object\n limitProperties_1.default,\n required_1.default,\n // array\n limitItems_1.default,\n uniqueItems_1.default,\n // any\n { keyword: \"type\", schemaType: [\"string\", \"array\"] },\n { keyword: \"nullable\", schemaType: \"boolean\" },\n const_1.default,\n enum_1.default,\n];\nexports.default = validation;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateAdditionalItems = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`,\n params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`,\n};\nconst def = {\n keyword: \"additionalItems\",\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt) {\n const { parentSchema, it } = cxt;\n const { items } = parentSchema;\n if (!Array.isArray(items)) {\n (0, util_1.checkStrictMode)(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas');\n return;\n }\n validateAdditionalItems(cxt, items);\n },\n};\nfunction validateAdditionalItems(cxt, items) {\n const { gen, schema, data, keyword, it } = cxt;\n it.items = true;\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n if (schema === false) {\n cxt.setParams({ len: items.length });\n cxt.pass((0, codegen_1._) `${len} <= ${items.length}`);\n }\n else if (typeof schema == \"object\" && !(0, util_1.alwaysValidSchema)(it, schema)) {\n const valid = gen.var(\"valid\", (0, codegen_1._) `${len} <= ${items.length}`); // TODO var\n gen.if((0, codegen_1.not)(valid), () => validateItems(valid));\n cxt.ok(valid);\n }\n function validateItems(valid) {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({ keyword, dataProp: i, dataPropType: util_1.Type.Num }, valid);\n if (!it.allErrors)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n });\n }\n}\nexports.validateAdditionalItems = validateAdditionalItems;\nexports.default = def;\n//# sourceMappingURL=additionalItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateTuple = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nconst def = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt) {\n const { schema, it } = cxt;\n if (Array.isArray(schema))\n return validateTuple(cxt, \"additionalItems\", schema);\n it.items = true;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n cxt.ok((0, code_1.validateArray)(cxt));\n },\n};\nfunction validateTuple(cxt, extraItems, schArr = cxt.schema) {\n const { gen, parentSchema, data, keyword, it } = cxt;\n checkStrictTuple(parentSchema);\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = util_1.mergeEvaluated.items(gen, schArr.length, it.items);\n }\n const valid = gen.name(\"valid\");\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n schArr.forEach((sch, i) => {\n if ((0, util_1.alwaysValidSchema)(it, sch))\n return;\n gen.if((0, codegen_1._) `${len} > ${i}`, () => cxt.subschema({\n keyword,\n schemaProp: i,\n dataProp: i,\n }, valid));\n cxt.ok(valid);\n });\n function checkStrictTuple(sch) {\n const { opts, errSchemaPath } = it;\n const l = schArr.length;\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false);\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`;\n (0, util_1.checkStrictMode)(it, msg, opts.strictTuples);\n }\n }\n}\nexports.validateTuple = validateTuple;\nexports.default = def;\n//# sourceMappingURL=items.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst items_1 = require(\"./items\");\nconst def = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => (0, items_1.validateTuple)(cxt, \"items\"),\n};\nexports.default = def;\n//# sourceMappingURL=prefixItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nconst additionalItems_1 = require(\"./additionalItems\");\nconst error = {\n message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`,\n params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`,\n};\nconst def = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt) {\n const { schema, parentSchema, it } = cxt;\n const { prefixItems } = parentSchema;\n it.items = true;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n if (prefixItems)\n (0, additionalItems_1.validateAdditionalItems)(cxt, prefixItems);\n else\n cxt.ok((0, code_1.validateArray)(cxt));\n },\n};\nexports.default = def;\n//# sourceMappingURL=items2020.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { min, max } }) => max === undefined\n ? (0, codegen_1.str) `must contain at least ${min} valid item(s)`\n : (0, codegen_1.str) `must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({ params: { min, max } }) => max === undefined ? (0, codegen_1._) `{minContains: ${min}}` : (0, codegen_1._) `{minContains: ${min}, maxContains: ${max}}`,\n};\nconst def = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, data, it } = cxt;\n let min;\n let max;\n const { minContains, maxContains } = parentSchema;\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains;\n max = maxContains;\n }\n else {\n min = 1;\n }\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n cxt.setParams({ min, max });\n if (max === undefined && min === 0) {\n (0, util_1.checkStrictMode)(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`);\n return;\n }\n if (max !== undefined && min > max) {\n (0, util_1.checkStrictMode)(it, `\"minContains\" > \"maxContains\" is always invalid`);\n cxt.fail();\n return;\n }\n if ((0, util_1.alwaysValidSchema)(it, schema)) {\n let cond = (0, codegen_1._) `${len} >= ${min}`;\n if (max !== undefined)\n cond = (0, codegen_1._) `${cond} && ${len} <= ${max}`;\n cxt.pass(cond);\n return;\n }\n it.items = true;\n const valid = gen.name(\"valid\");\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()));\n }\n else if (min === 0) {\n gen.let(valid, true);\n if (max !== undefined)\n gen.if((0, codegen_1._) `${data}.length > 0`, validateItemsWithCount);\n }\n else {\n gen.let(valid, false);\n validateItemsWithCount();\n }\n cxt.result(valid, () => cxt.reset());\n function validateItemsWithCount() {\n const schValid = gen.name(\"_valid\");\n const count = gen.let(\"count\", 0);\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)));\n }\n function validateItems(_valid, block) {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema({\n keyword: \"contains\",\n dataProp: i,\n dataPropType: util_1.Type.Num,\n compositeRule: true,\n }, _valid);\n block();\n });\n }\n function checkLimits(count) {\n gen.code((0, codegen_1._) `${count}++`);\n if (max === undefined) {\n gen.if((0, codegen_1._) `${count} >= ${min}`, () => gen.assign(valid, true).break());\n }\n else {\n gen.if((0, codegen_1._) `${count} > ${max}`, () => gen.assign(valid, false).break());\n if (min === 1)\n gen.assign(valid, true);\n else\n gen.if((0, codegen_1._) `${count} >= ${min}`, () => gen.assign(valid, true));\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=contains.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateSchemaDeps = exports.validatePropertyDeps = exports.error = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst code_1 = require(\"../code\");\nexports.error = {\n message: ({ params: { property, depsCount, deps } }) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\";\n return (0, codegen_1.str) `must have ${property_ies} ${deps} when property ${property} is present`;\n },\n params: ({ params: { property, depsCount, deps, missingProperty } }) => (0, codegen_1._) `{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n};\nconst def = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error: exports.error,\n code(cxt) {\n const [propDeps, schDeps] = splitDependencies(cxt);\n validatePropertyDeps(cxt, propDeps);\n validateSchemaDeps(cxt, schDeps);\n },\n};\nfunction splitDependencies({ schema }) {\n const propertyDeps = {};\n const schemaDeps = {};\n for (const key in schema) {\n if (key === \"__proto__\")\n continue;\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps;\n deps[key] = schema[key];\n }\n return [propertyDeps, schemaDeps];\n}\nfunction validatePropertyDeps(cxt, propertyDeps = cxt.schema) {\n const { gen, data, it } = cxt;\n if (Object.keys(propertyDeps).length === 0)\n return;\n const missing = gen.let(\"missing\");\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop];\n if (deps.length === 0)\n continue;\n const hasProperty = (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties);\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n });\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n (0, code_1.checkReportMissingProp)(cxt, depProp);\n }\n });\n }\n else {\n gen.if((0, codegen_1._) `${hasProperty} && (${(0, code_1.checkMissingProp)(cxt, deps, missing)})`);\n (0, code_1.reportMissingProp)(cxt, missing);\n gen.else();\n }\n }\n}\nexports.validatePropertyDeps = validatePropertyDeps;\nfunction validateSchemaDeps(cxt, schemaDeps = cxt.schema) {\n const { gen, data, keyword, it } = cxt;\n const valid = gen.name(\"valid\");\n for (const prop in schemaDeps) {\n if ((0, util_1.alwaysValidSchema)(it, schemaDeps[prop]))\n continue;\n gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties), () => {\n const schCxt = cxt.subschema({ keyword, schemaProp: prop }, valid);\n cxt.mergeValidEvaluated(schCxt, valid);\n }, () => gen.var(valid, true) // TODO var\n );\n cxt.ok(valid);\n }\n}\nexports.validateSchemaDeps = validateSchemaDeps;\nexports.default = def;\n//# sourceMappingURL=dependencies.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"property name must be valid\",\n params: ({ params }) => (0, codegen_1._) `{propertyName: ${params.propertyName}}`,\n};\nconst def = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt) {\n const { gen, schema, data, it } = cxt;\n if ((0, util_1.alwaysValidSchema)(it, schema))\n return;\n const valid = gen.name(\"valid\");\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({ propertyName: key });\n cxt.subschema({\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n }, valid);\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.error(true);\n if (!it.allErrors)\n gen.break();\n });\n });\n cxt.ok(valid);\n },\n};\nexports.default = def;\n//# sourceMappingURL=propertyNames.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst names_1 = require(\"../../compile/names\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"must NOT have additional properties\",\n params: ({ params }) => (0, codegen_1._) `{additionalProperty: ${params.additionalProperty}}`,\n};\nconst def = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, data, errsCount, it } = cxt;\n /* istanbul ignore if */\n if (!errsCount)\n throw new Error(\"ajv implementation error\");\n const { allErrors, opts } = it;\n it.props = true;\n if (opts.removeAdditional !== \"all\" && (0, util_1.alwaysValidSchema)(it, schema))\n return;\n const props = (0, code_1.allSchemaProperties)(parentSchema.properties);\n const patProps = (0, code_1.allSchemaProperties)(parentSchema.patternProperties);\n checkAdditionalProperties();\n cxt.ok((0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n function checkAdditionalProperties() {\n gen.forIn(\"key\", data, (key) => {\n if (!props.length && !patProps.length)\n additionalPropertyCode(key);\n else\n gen.if(isAdditional(key), () => additionalPropertyCode(key));\n });\n }\n function isAdditional(key) {\n let definedProp;\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = (0, util_1.schemaRefOrVal)(it, parentSchema.properties, \"properties\");\n definedProp = (0, code_1.isOwnProperty)(gen, propsSchema, key);\n }\n else if (props.length) {\n definedProp = (0, codegen_1.or)(...props.map((p) => (0, codegen_1._) `${key} === ${p}`));\n }\n else {\n definedProp = codegen_1.nil;\n }\n if (patProps.length) {\n definedProp = (0, codegen_1.or)(definedProp, ...patProps.map((p) => (0, codegen_1._) `${(0, code_1.usePattern)(cxt, p)}.test(${key})`));\n }\n return (0, codegen_1.not)(definedProp);\n }\n function deleteAdditional(key) {\n gen.code((0, codegen_1._) `delete ${data}[${key}]`);\n }\n function additionalPropertyCode(key) {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key);\n return;\n }\n if (schema === false) {\n cxt.setParams({ additionalProperty: key });\n cxt.error();\n if (!allErrors)\n gen.break();\n return;\n }\n if (typeof schema == \"object\" && !(0, util_1.alwaysValidSchema)(it, schema)) {\n const valid = gen.name(\"valid\");\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false);\n gen.if((0, codegen_1.not)(valid), () => {\n cxt.reset();\n deleteAdditional(key);\n });\n }\n else {\n applyAdditionalSchema(key, valid);\n if (!allErrors)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n }\n }\n }\n function applyAdditionalSchema(key, valid, errors) {\n const subschema = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: util_1.Type.Str,\n };\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n });\n }\n cxt.subschema(subschema, valid);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=additionalProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst validate_1 = require(\"../../compile/validate\");\nconst code_1 = require(\"../code\");\nconst util_1 = require(\"../../compile/util\");\nconst additionalProperties_1 = require(\"./additionalProperties\");\nconst def = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt) {\n const { gen, schema, parentSchema, data, it } = cxt;\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n additionalProperties_1.default.code(new validate_1.KeywordCxt(it, additionalProperties_1.default, \"additionalProperties\"));\n }\n const allProps = (0, code_1.allSchemaProperties)(schema);\n for (const prop of allProps) {\n it.definedProperties.add(prop);\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = util_1.mergeEvaluated.props(gen, (0, util_1.toHash)(allProps), it.props);\n }\n const properties = allProps.filter((p) => !(0, util_1.alwaysValidSchema)(it, schema[p]));\n if (properties.length === 0)\n return;\n const valid = gen.name(\"valid\");\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop);\n }\n else {\n gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties));\n applyPropertySchema(prop);\n if (!it.allErrors)\n gen.else().var(valid, true);\n gen.endIf();\n }\n cxt.it.definedProperties.add(prop);\n cxt.ok(valid);\n }\n function hasDefault(prop) {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined;\n }\n function applyPropertySchema(prop) {\n cxt.subschema({\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n }, valid);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=properties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst util_2 = require(\"../../compile/util\");\nconst def = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt) {\n const { gen, schema, data, parentSchema, it } = cxt;\n const { opts } = it;\n const patterns = (0, code_1.allSchemaProperties)(schema);\n const alwaysValidPatterns = patterns.filter((p) => (0, util_1.alwaysValidSchema)(it, schema[p]));\n if (patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))) {\n return;\n }\n const checkProperties = opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties;\n const valid = gen.name(\"valid\");\n if (it.props !== true && !(it.props instanceof codegen_1.Name)) {\n it.props = (0, util_2.evaluatedPropsToName)(gen, it.props);\n }\n const { props } = it;\n validatePatternProperties();\n function validatePatternProperties() {\n for (const pat of patterns) {\n if (checkProperties)\n checkMatchingProperties(pat);\n if (it.allErrors) {\n validateProperties(pat);\n }\n else {\n gen.var(valid, true); // TODO var\n validateProperties(pat);\n gen.if(valid);\n }\n }\n }\n function checkMatchingProperties(pat) {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n (0, util_1.checkStrictMode)(it, `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`);\n }\n }\n }\n function validateProperties(pat) {\n gen.forIn(\"key\", data, (key) => {\n gen.if((0, codegen_1._) `${(0, code_1.usePattern)(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat);\n if (!alwaysValid) {\n cxt.subschema({\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: util_2.Type.Str,\n }, valid);\n }\n if (it.opts.unevaluated && props !== true) {\n gen.assign((0, codegen_1._) `${props}[${key}]`, true);\n }\n else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n }\n });\n });\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=patternProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt) {\n const { gen, schema, it } = cxt;\n if ((0, util_1.alwaysValidSchema)(it, schema)) {\n cxt.fail();\n return;\n }\n const valid = gen.name(\"valid\");\n cxt.subschema({\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n }, valid);\n cxt.failResult(valid, () => cxt.reset(), () => cxt.error());\n },\n error: { message: \"must NOT be valid\" },\n};\nexports.default = def;\n//# sourceMappingURL=not.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst code_1 = require(\"../code\");\nconst def = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: code_1.validateUnion,\n error: { message: \"must match a schema in anyOf\" },\n};\nexports.default = def;\n//# sourceMappingURL=anyOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: \"must match exactly one schema in oneOf\",\n params: ({ params }) => (0, codegen_1._) `{passingSchemas: ${params.passing}}`,\n};\nconst def = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, parentSchema, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n if (it.opts.discriminator && parentSchema.discriminator)\n return;\n const schArr = schema;\n const valid = gen.let(\"valid\", false);\n const passing = gen.let(\"passing\", null);\n const schValid = gen.name(\"_valid\");\n cxt.setParams({ passing });\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n gen.block(validateOneOf);\n cxt.result(valid, () => cxt.reset(), () => cxt.error(true));\n function validateOneOf() {\n schArr.forEach((sch, i) => {\n let schCxt;\n if ((0, util_1.alwaysValidSchema)(it, sch)) {\n gen.var(schValid, true);\n }\n else {\n schCxt = cxt.subschema({\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n }, schValid);\n }\n if (i > 0) {\n gen\n .if((0, codegen_1._) `${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, (0, codegen_1._) `[${passing}, ${i}]`)\n .else();\n }\n gen.if(schValid, () => {\n gen.assign(valid, true);\n gen.assign(passing, i);\n if (schCxt)\n cxt.mergeEvaluated(schCxt, codegen_1.Name);\n });\n });\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=oneOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt) {\n const { gen, schema, it } = cxt;\n /* istanbul ignore if */\n if (!Array.isArray(schema))\n throw new Error(\"ajv implementation error\");\n const valid = gen.name(\"valid\");\n schema.forEach((sch, i) => {\n if ((0, util_1.alwaysValidSchema)(it, sch))\n return;\n const schCxt = cxt.subschema({ keyword: \"allOf\", schemaProp: i }, valid);\n cxt.ok(valid);\n cxt.mergeEvaluated(schCxt);\n });\n },\n};\nexports.default = def;\n//# sourceMappingURL=allOf.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params }) => (0, codegen_1.str) `must match \"${params.ifClause}\" schema`,\n params: ({ params }) => (0, codegen_1._) `{failingKeyword: ${params.ifClause}}`,\n};\nconst def = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, parentSchema, it } = cxt;\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n (0, util_1.checkStrictMode)(it, '\"if\" without \"then\" and \"else\" is ignored');\n }\n const hasThen = hasSchema(it, \"then\");\n const hasElse = hasSchema(it, \"else\");\n if (!hasThen && !hasElse)\n return;\n const valid = gen.let(\"valid\", true);\n const schValid = gen.name(\"_valid\");\n validateIf();\n cxt.reset();\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\");\n cxt.setParams({ ifClause });\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause));\n }\n else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"));\n }\n else {\n gen.if((0, codegen_1.not)(schValid), validateClause(\"else\"));\n }\n cxt.pass(valid, () => cxt.error(true));\n function validateIf() {\n const schCxt = cxt.subschema({\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n }, schValid);\n cxt.mergeEvaluated(schCxt);\n }\n function validateClause(keyword, ifClause) {\n return () => {\n const schCxt = cxt.subschema({ keyword }, schValid);\n gen.assign(valid, schValid);\n cxt.mergeValidEvaluated(schCxt, valid);\n if (ifClause)\n gen.assign(ifClause, (0, codegen_1._) `${keyword}`);\n else\n cxt.setParams({ ifClause: keyword });\n };\n }\n },\n};\nfunction hasSchema(it, keyword) {\n const schema = it.schema[keyword];\n return schema !== undefined && !(0, util_1.alwaysValidSchema)(it, schema);\n}\nexports.default = def;\n//# sourceMappingURL=if.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({ keyword, parentSchema, it }) {\n if (parentSchema.if === undefined)\n (0, util_1.checkStrictMode)(it, `\"${keyword}\" without \"if\" is ignored`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=thenElse.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst additionalItems_1 = require(\"./additionalItems\");\nconst prefixItems_1 = require(\"./prefixItems\");\nconst items_1 = require(\"./items\");\nconst items2020_1 = require(\"./items2020\");\nconst contains_1 = require(\"./contains\");\nconst dependencies_1 = require(\"./dependencies\");\nconst propertyNames_1 = require(\"./propertyNames\");\nconst additionalProperties_1 = require(\"./additionalProperties\");\nconst properties_1 = require(\"./properties\");\nconst patternProperties_1 = require(\"./patternProperties\");\nconst not_1 = require(\"./not\");\nconst anyOf_1 = require(\"./anyOf\");\nconst oneOf_1 = require(\"./oneOf\");\nconst allOf_1 = require(\"./allOf\");\nconst if_1 = require(\"./if\");\nconst thenElse_1 = require(\"./thenElse\");\nfunction getApplicator(draft2020 = false) {\n const applicator = [\n // any\n not_1.default,\n anyOf_1.default,\n oneOf_1.default,\n allOf_1.default,\n if_1.default,\n thenElse_1.default,\n // object\n propertyNames_1.default,\n additionalProperties_1.default,\n dependencies_1.default,\n properties_1.default,\n patternProperties_1.default,\n ];\n // array\n if (draft2020)\n applicator.push(prefixItems_1.default, items2020_1.default);\n else\n applicator.push(additionalItems_1.default, items_1.default);\n applicator.push(contains_1.default);\n return applicator;\n}\nexports.default = getApplicator;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst error = {\n message: ({ schemaCode }) => (0, codegen_1.str) `must match format \"${schemaCode}\"`,\n params: ({ schemaCode }) => (0, codegen_1._) `{format: ${schemaCode}}`,\n};\nconst def = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt, ruleType) {\n const { gen, data, $data, schema, schemaCode, it } = cxt;\n const { opts, errSchemaPath, schemaEnv, self } = it;\n if (!opts.validateFormats)\n return;\n if ($data)\n validate$DataFormat();\n else\n validateFormat();\n function validate$DataFormat() {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n });\n const fDef = gen.const(\"fDef\", (0, codegen_1._) `${fmts}[${schemaCode}]`);\n const fType = gen.let(\"fType\");\n const format = gen.let(\"format\");\n // TODO simplify\n gen.if((0, codegen_1._) `typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`, () => gen.assign(fType, (0, codegen_1._) `${fDef}.type || \"string\"`).assign(format, (0, codegen_1._) `${fDef}.validate`), () => gen.assign(fType, (0, codegen_1._) `\"string\"`).assign(format, fDef));\n cxt.fail$data((0, codegen_1.or)(unknownFmt(), invalidFmt()));\n function unknownFmt() {\n if (opts.strictSchema === false)\n return codegen_1.nil;\n return (0, codegen_1._) `${schemaCode} && !${format}`;\n }\n function invalidFmt() {\n const callFormat = schemaEnv.$async\n ? (0, codegen_1._) `(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : (0, codegen_1._) `${format}(${data})`;\n const validData = (0, codegen_1._) `(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`;\n return (0, codegen_1._) `${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`;\n }\n }\n function validateFormat() {\n const formatDef = self.formats[schema];\n if (!formatDef) {\n unknownFormat();\n return;\n }\n if (formatDef === true)\n return;\n const [fmtType, format, fmtRef] = getFormat(formatDef);\n if (fmtType === ruleType)\n cxt.pass(validCondition());\n function unknownFormat() {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg());\n return;\n }\n throw new Error(unknownMsg());\n function unknownMsg() {\n return `unknown format \"${schema}\" ignored in schema at path \"${errSchemaPath}\"`;\n }\n }\n function getFormat(fmtDef) {\n const code = fmtDef instanceof RegExp\n ? (0, codegen_1.regexpCode)(fmtDef)\n : opts.code.formats\n ? (0, codegen_1._) `${opts.code.formats}${(0, codegen_1.getProperty)(schema)}`\n : undefined;\n const fmt = gen.scopeValue(\"formats\", { key: schema, ref: fmtDef, code });\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, (0, codegen_1._) `${fmt}.validate`];\n }\n return [\"string\", fmtDef, fmt];\n }\n function validCondition() {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async)\n throw new Error(\"async format in sync schema\");\n return (0, codegen_1._) `await ${fmtRef}(${data})`;\n }\n return typeof format == \"function\" ? (0, codegen_1._) `${fmtRef}(${data})` : (0, codegen_1._) `${fmtRef}.test(${data})`;\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=format.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst format_1 = require(\"./format\");\nconst format = [format_1.default];\nexports.default = format;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core_1 = require(\"./core\");\nconst validation_1 = require(\"./validation\");\nconst applicator_1 = require(\"ajv/dist/vocabularies/applicator\");\nconst format_1 = require(\"ajv/dist/vocabularies/format\");\nconst metadataVocabulary = [\"title\", \"description\", \"default\"];\nconst draft4Vocabularies = [\n core_1.default,\n validation_1.default,\n applicator_1.default(),\n format_1.default,\n metadataVocabulary,\n];\nexports.default = draft4Vocabularies;\n//# sourceMappingURL=draft4.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiscrError = void 0;\nvar DiscrError;\n(function (DiscrError) {\n DiscrError[\"Tag\"] = \"tag\";\n DiscrError[\"Mapping\"] = \"mapping\";\n})(DiscrError || (exports.DiscrError = DiscrError = {}));\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst types_1 = require(\"../discriminator/types\");\nconst compile_1 = require(\"../../compile\");\nconst ref_error_1 = require(\"../../compile/ref_error\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { discrError, tagName } }) => discrError === types_1.DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({ params: { discrError, tag, tagName } }) => (0, codegen_1._) `{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n};\nconst def = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt) {\n const { gen, data, schema, parentSchema, it } = cxt;\n const { oneOf } = parentSchema;\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\");\n }\n const tagName = schema.propertyName;\n if (typeof tagName != \"string\")\n throw new Error(\"discriminator: requires propertyName\");\n if (schema.mapping)\n throw new Error(\"discriminator: mapping is not supported\");\n if (!oneOf)\n throw new Error(\"discriminator: requires oneOf keyword\");\n const valid = gen.let(\"valid\", false);\n const tag = gen.const(\"tag\", (0, codegen_1._) `${data}${(0, codegen_1.getProperty)(tagName)}`);\n gen.if((0, codegen_1._) `typeof ${tag} == \"string\"`, () => validateMapping(), () => cxt.error(false, { discrError: types_1.DiscrError.Tag, tag, tagName }));\n cxt.ok(valid);\n function validateMapping() {\n const mapping = getMapping();\n gen.if(false);\n for (const tagValue in mapping) {\n gen.elseIf((0, codegen_1._) `${tag} === ${tagValue}`);\n gen.assign(valid, applyTagSchema(mapping[tagValue]));\n }\n gen.else();\n cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag, tagName });\n gen.endIf();\n }\n function applyTagSchema(schemaProp) {\n const _valid = gen.name(\"valid\");\n const schCxt = cxt.subschema({ keyword: \"oneOf\", schemaProp }, _valid);\n cxt.mergeEvaluated(schCxt, codegen_1.Name);\n return _valid;\n }\n function getMapping() {\n var _a;\n const oneOfMapping = {};\n const topRequired = hasRequired(parentSchema);\n let tagRequired = true;\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i];\n if ((sch === null || sch === void 0 ? void 0 : sch.$ref) && !(0, util_1.schemaHasRulesButRef)(sch, it.self.RULES)) {\n const ref = sch.$ref;\n sch = compile_1.resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref);\n if (sch instanceof compile_1.SchemaEnv)\n sch = sch.schema;\n if (sch === undefined)\n throw new ref_error_1.default(it.opts.uriResolver, it.baseId, ref);\n }\n const propSch = (_a = sch === null || sch === void 0 ? void 0 : sch.properties) === null || _a === void 0 ? void 0 : _a[tagName];\n if (typeof propSch != \"object\") {\n throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`);\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch));\n addMappings(propSch, i);\n }\n if (!tagRequired)\n throw new Error(`discriminator: \"${tagName}\" must be required`);\n return oneOfMapping;\n function hasRequired({ required }) {\n return Array.isArray(required) && required.includes(tagName);\n }\n function addMappings(sch, i) {\n if (sch.const) {\n addMapping(sch.const, i);\n }\n else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i);\n }\n }\n else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`);\n }\n }\n function addMapping(tagValue, i) {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`);\n }\n oneOfMapping[tagValue] = i;\n }\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0;\nconst core_1 = require(\"ajv/dist/core\");\nconst draft4_1 = require(\"./vocabulary/draft4\");\nconst discriminator_1 = require(\"ajv/dist/vocabularies/discriminator\");\nconst draft4MetaSchema = require(\"./refs/json-schema-draft-04.json\");\nconst META_SUPPORT_DATA = [\"/properties\"];\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-04/schema\";\nclass Ajv extends core_1.default {\n constructor(opts = {}) {\n super({\n ...opts,\n schemaId: \"id\",\n });\n }\n _addVocabularies() {\n super._addVocabularies();\n draft4_1.default.forEach((v) => this.addVocabulary(v));\n if (this.opts.discriminator)\n this.addKeyword(discriminator_1.default);\n }\n _addDefaultMetaSchema() {\n super._addDefaultMetaSchema();\n if (!this.opts.meta)\n return;\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft4MetaSchema, META_SUPPORT_DATA)\n : draft4MetaSchema;\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false);\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID;\n }\n defaultMeta() {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined));\n }\n}\nmodule.exports = exports = Ajv;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Ajv;\nvar core_2 = require(\"ajv/dist/core\");\nObject.defineProperty(exports, \"KeywordCxt\", { enumerable: true, get: function () { return core_2.KeywordCxt; } });\nvar core_3 = require(\"ajv/dist/core\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return core_3._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return core_3.str; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return core_3.stringify; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return core_3.nil; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return core_3.Name; } });\nObject.defineProperty(exports, \"CodeGen\", { enumerable: true, get: function () { return core_3.CodeGen; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst def = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID');\n },\n};\nexports.default = def;\n//# sourceMappingURL=id.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst id_1 = require(\"./id\");\nconst ref_1 = require(\"./ref\");\nconst core = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n { keyword: \"$comment\" },\n \"definitions\",\n id_1.default,\n ref_1.default,\n];\nexports.default = core;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst ops = codegen_1.operators;\nconst KWDs = {\n maximum: { okStr: \"<=\", ok: ops.LTE, fail: ops.GT },\n minimum: { okStr: \">=\", ok: ops.GTE, fail: ops.LT },\n exclusiveMaximum: { okStr: \"<\", ok: ops.LT, fail: ops.GTE },\n exclusiveMinimum: { okStr: \">\", ok: ops.GT, fail: ops.LTE },\n};\nconst error = {\n message: ({ keyword, schemaCode }) => (0, codegen_1.str) `must be ${KWDs[keyword].okStr} ${schemaCode}`,\n params: ({ keyword, schemaCode }) => (0, codegen_1._) `{comparison: ${KWDs[keyword].okStr}, limit: ${schemaCode}}`,\n};\nconst def = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt) {\n const { keyword, data, schemaCode } = cxt;\n cxt.fail$data((0, codegen_1._) `${data} ${KWDs[keyword].fail} ${schemaCode} || isNaN(${data})`);\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitNumber.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst limitNumber_1 = require(\"./limitNumber\");\nconst multipleOf_1 = require(\"./multipleOf\");\nconst limitLength_1 = require(\"./limitLength\");\nconst pattern_1 = require(\"./pattern\");\nconst limitProperties_1 = require(\"./limitProperties\");\nconst required_1 = require(\"./required\");\nconst limitItems_1 = require(\"./limitItems\");\nconst uniqueItems_1 = require(\"./uniqueItems\");\nconst const_1 = require(\"./const\");\nconst enum_1 = require(\"./enum\");\nconst validation = [\n // number\n limitNumber_1.default,\n multipleOf_1.default,\n // string\n limitLength_1.default,\n pattern_1.default,\n // object\n limitProperties_1.default,\n required_1.default,\n // array\n limitItems_1.default,\n uniqueItems_1.default,\n // any\n { keyword: \"type\", schemaType: [\"string\", \"array\"] },\n { keyword: \"nullable\", schemaType: \"boolean\" },\n const_1.default,\n enum_1.default,\n];\nexports.default = validation;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dynamicAnchor = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst names_1 = require(\"../../compile/names\");\nconst compile_1 = require(\"../../compile\");\nconst ref_1 = require(\"../core/ref\");\nconst def = {\n keyword: \"$dynamicAnchor\",\n schemaType: \"string\",\n code: (cxt) => dynamicAnchor(cxt, cxt.schema),\n};\nfunction dynamicAnchor(cxt, anchor) {\n const { gen, it } = cxt;\n it.schemaEnv.root.dynamicAnchors[anchor] = true;\n const v = (0, codegen_1._) `${names_1.default.dynamicAnchors}${(0, codegen_1.getProperty)(anchor)}`;\n const validate = it.errSchemaPath === \"#\" ? it.validateName : _getValidate(cxt);\n gen.if((0, codegen_1._) `!${v}`, () => gen.assign(v, validate));\n}\nexports.dynamicAnchor = dynamicAnchor;\nfunction _getValidate(cxt) {\n const { schemaEnv, schema, self } = cxt.it;\n const { root, baseId, localRefs, meta } = schemaEnv.root;\n const { schemaId } = self.opts;\n const sch = new compile_1.SchemaEnv({ schema, schemaId, root, baseId, localRefs, meta });\n compile_1.compileSchema.call(self, sch);\n return (0, ref_1.getValidate)(cxt, sch);\n}\nexports.default = def;\n//# sourceMappingURL=dynamicAnchor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.dynamicRef = void 0;\nconst codegen_1 = require(\"../../compile/codegen\");\nconst names_1 = require(\"../../compile/names\");\nconst ref_1 = require(\"../core/ref\");\nconst def = {\n keyword: \"$dynamicRef\",\n schemaType: \"string\",\n code: (cxt) => dynamicRef(cxt, cxt.schema),\n};\nfunction dynamicRef(cxt, ref) {\n const { gen, keyword, it } = cxt;\n if (ref[0] !== \"#\")\n throw new Error(`\"${keyword}\" only supports hash fragment reference`);\n const anchor = ref.slice(1);\n if (it.allErrors) {\n _dynamicRef();\n }\n else {\n const valid = gen.let(\"valid\", false);\n _dynamicRef(valid);\n cxt.ok(valid);\n }\n function _dynamicRef(valid) {\n // TODO the assumption here is that `recursiveRef: #` always points to the root\n // of the schema object, which is not correct, because there may be $id that\n // makes # point to it, and the target schema may not contain dynamic/recursiveAnchor.\n // Because of that 2 tests in recursiveRef.json fail.\n // This is a similar problem to #815 (`$id` doesn't alter resolution scope for `{ \"$ref\": \"#\" }`).\n // (This problem is not tested in JSON-Schema-Test-Suite)\n if (it.schemaEnv.root.dynamicAnchors[anchor]) {\n const v = gen.let(\"_v\", (0, codegen_1._) `${names_1.default.dynamicAnchors}${(0, codegen_1.getProperty)(anchor)}`);\n gen.if(v, _callRef(v, valid), _callRef(it.validateName, valid));\n }\n else {\n _callRef(it.validateName, valid)();\n }\n }\n function _callRef(validate, valid) {\n return valid\n ? () => gen.block(() => {\n (0, ref_1.callRef)(cxt, validate);\n gen.let(valid, true);\n })\n : () => (0, ref_1.callRef)(cxt, validate);\n }\n}\nexports.dynamicRef = dynamicRef;\nexports.default = def;\n//# sourceMappingURL=dynamicRef.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dynamicAnchor_1 = require(\"./dynamicAnchor\");\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: \"$recursiveAnchor\",\n schemaType: \"boolean\",\n code(cxt) {\n if (cxt.schema)\n (0, dynamicAnchor_1.dynamicAnchor)(cxt, \"\");\n else\n (0, util_1.checkStrictMode)(cxt.it, \"$recursiveAnchor: false is ignored\");\n },\n};\nexports.default = def;\n//# sourceMappingURL=recursiveAnchor.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dynamicRef_1 = require(\"./dynamicRef\");\nconst def = {\n keyword: \"$recursiveRef\",\n schemaType: \"string\",\n code: (cxt) => (0, dynamicRef_1.dynamicRef)(cxt, cxt.schema),\n};\nexports.default = def;\n//# sourceMappingURL=recursiveRef.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dynamicAnchor_1 = require(\"./dynamicAnchor\");\nconst dynamicRef_1 = require(\"./dynamicRef\");\nconst recursiveAnchor_1 = require(\"./recursiveAnchor\");\nconst recursiveRef_1 = require(\"./recursiveRef\");\nconst dynamic = [dynamicAnchor_1.default, dynamicRef_1.default, recursiveAnchor_1.default, recursiveRef_1.default];\nexports.default = dynamic;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dependencies_1 = require(\"../applicator/dependencies\");\nconst def = {\n keyword: \"dependentRequired\",\n type: \"object\",\n schemaType: \"object\",\n error: dependencies_1.error,\n code: (cxt) => (0, dependencies_1.validatePropertyDeps)(cxt),\n};\nexports.default = def;\n//# sourceMappingURL=dependentRequired.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dependencies_1 = require(\"./dependencies\");\nconst def = {\n keyword: \"dependentSchemas\",\n type: \"object\",\n schemaType: \"object\",\n code: (cxt) => (0, dependencies_1.validateSchemaDeps)(cxt),\n};\nexports.default = def;\n//# sourceMappingURL=dependentSchemas.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst util_1 = require(\"../../compile/util\");\nconst def = {\n keyword: [\"maxContains\", \"minContains\"],\n type: \"array\",\n schemaType: \"number\",\n code({ keyword, parentSchema, it }) {\n if (parentSchema.contains === undefined) {\n (0, util_1.checkStrictMode)(it, `\"${keyword}\" without \"contains\" is ignored`);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=limitContains.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst dependentRequired_1 = require(\"./validation/dependentRequired\");\nconst dependentSchemas_1 = require(\"./applicator/dependentSchemas\");\nconst limitContains_1 = require(\"./validation/limitContains\");\nconst next = [dependentRequired_1.default, dependentSchemas_1.default, limitContains_1.default];\nexports.default = next;\n//# sourceMappingURL=next.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst names_1 = require(\"../../compile/names\");\nconst error = {\n message: \"must NOT have unevaluated properties\",\n params: ({ params }) => (0, codegen_1._) `{unevaluatedProperty: ${params.unevaluatedProperty}}`,\n};\nconst def = {\n keyword: \"unevaluatedProperties\",\n type: \"object\",\n schemaType: [\"boolean\", \"object\"],\n trackErrors: true,\n error,\n code(cxt) {\n const { gen, schema, data, errsCount, it } = cxt;\n /* istanbul ignore if */\n if (!errsCount)\n throw new Error(\"ajv implementation error\");\n const { allErrors, props } = it;\n if (props instanceof codegen_1.Name) {\n gen.if((0, codegen_1._) `${props} !== true`, () => gen.forIn(\"key\", data, (key) => gen.if(unevaluatedDynamic(props, key), () => unevaluatedPropCode(key))));\n }\n else if (props !== true) {\n gen.forIn(\"key\", data, (key) => props === undefined\n ? unevaluatedPropCode(key)\n : gen.if(unevaluatedStatic(props, key), () => unevaluatedPropCode(key)));\n }\n it.props = true;\n cxt.ok((0, codegen_1._) `${errsCount} === ${names_1.default.errors}`);\n function unevaluatedPropCode(key) {\n if (schema === false) {\n cxt.setParams({ unevaluatedProperty: key });\n cxt.error();\n if (!allErrors)\n gen.break();\n return;\n }\n if (!(0, util_1.alwaysValidSchema)(it, schema)) {\n const valid = gen.name(\"valid\");\n cxt.subschema({\n keyword: \"unevaluatedProperties\",\n dataProp: key,\n dataPropType: util_1.Type.Str,\n }, valid);\n if (!allErrors)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n }\n }\n function unevaluatedDynamic(evaluatedProps, key) {\n return (0, codegen_1._) `!${evaluatedProps} || !${evaluatedProps}[${key}]`;\n }\n function unevaluatedStatic(evaluatedProps, key) {\n const ps = [];\n for (const p in evaluatedProps) {\n if (evaluatedProps[p] === true)\n ps.push((0, codegen_1._) `${key} !== ${p}`);\n }\n return (0, codegen_1.and)(...ps);\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=unevaluatedProperties.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst codegen_1 = require(\"../../compile/codegen\");\nconst util_1 = require(\"../../compile/util\");\nconst error = {\n message: ({ params: { len } }) => (0, codegen_1.str) `must NOT have more than ${len} items`,\n params: ({ params: { len } }) => (0, codegen_1._) `{limit: ${len}}`,\n};\nconst def = {\n keyword: \"unevaluatedItems\",\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n error,\n code(cxt) {\n const { gen, schema, data, it } = cxt;\n const items = it.items || 0;\n if (items === true)\n return;\n const len = gen.const(\"len\", (0, codegen_1._) `${data}.length`);\n if (schema === false) {\n cxt.setParams({ len: items });\n cxt.fail((0, codegen_1._) `${len} > ${items}`);\n }\n else if (typeof schema == \"object\" && !(0, util_1.alwaysValidSchema)(it, schema)) {\n const valid = gen.var(\"valid\", (0, codegen_1._) `${len} <= ${items}`);\n gen.if((0, codegen_1.not)(valid), () => validateItems(valid, items));\n cxt.ok(valid);\n }\n it.items = true;\n function validateItems(valid, from) {\n gen.forRange(\"i\", from, len, (i) => {\n cxt.subschema({ keyword: \"unevaluatedItems\", dataProp: i, dataPropType: util_1.Type.Num }, valid);\n if (!it.allErrors)\n gen.if((0, codegen_1.not)(valid), () => gen.break());\n });\n }\n },\n};\nexports.default = def;\n//# sourceMappingURL=unevaluatedItems.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst unevaluatedProperties_1 = require(\"./unevaluatedProperties\");\nconst unevaluatedItems_1 = require(\"./unevaluatedItems\");\nconst unevaluated = [unevaluatedProperties_1.default, unevaluatedItems_1.default];\nexports.default = unevaluated;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.contentVocabulary = exports.metadataVocabulary = void 0;\nexports.metadataVocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n];\nexports.contentVocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n];\n//# sourceMappingURL=metadata.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core_1 = require(\"./core\");\nconst validation_1 = require(\"./validation\");\nconst applicator_1 = require(\"./applicator\");\nconst dynamic_1 = require(\"./dynamic\");\nconst next_1 = require(\"./next\");\nconst unevaluated_1 = require(\"./unevaluated\");\nconst format_1 = require(\"./format\");\nconst metadata_1 = require(\"./metadata\");\nconst draft2020Vocabularies = [\n dynamic_1.default,\n core_1.default,\n validation_1.default,\n (0, applicator_1.default)(true),\n format_1.default,\n metadata_1.metadataVocabulary,\n metadata_1.contentVocabulary,\n next_1.default,\n unevaluated_1.default,\n];\nexports.default = draft2020Vocabularies;\n//# sourceMappingURL=draft2020.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst metaSchema = require(\"./schema.json\");\nconst applicator = require(\"./meta/applicator.json\");\nconst unevaluated = require(\"./meta/unevaluated.json\");\nconst content = require(\"./meta/content.json\");\nconst core = require(\"./meta/core.json\");\nconst format = require(\"./meta/format-annotation.json\");\nconst metadata = require(\"./meta/meta-data.json\");\nconst validation = require(\"./meta/validation.json\");\nconst META_SUPPORT_DATA = [\"/properties\"];\nfunction addMetaSchema2020($data) {\n ;\n [\n metaSchema,\n applicator,\n unevaluated,\n content,\n core,\n with$data(this, format),\n metadata,\n with$data(this, validation),\n ].forEach((sch) => this.addMetaSchema(sch, undefined, false));\n return this;\n function with$data(ajv, sch) {\n return $data ? ajv.$dataMetaSchema(sch, META_SUPPORT_DATA) : sch;\n }\n}\nexports.default = addMetaSchema2020;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv2020 = void 0;\nconst core_1 = require(\"./core\");\nconst draft2020_1 = require(\"./vocabularies/draft2020\");\nconst discriminator_1 = require(\"./vocabularies/discriminator\");\nconst json_schema_2020_12_1 = require(\"./refs/json-schema-2020-12\");\nconst META_SCHEMA_ID = \"https://json-schema.org/draft/2020-12/schema\";\nclass Ajv2020 extends core_1.default {\n constructor(opts = {}) {\n super({\n ...opts,\n dynamicRef: true,\n next: true,\n unevaluated: true,\n });\n }\n _addVocabularies() {\n super._addVocabularies();\n draft2020_1.default.forEach((v) => this.addVocabulary(v));\n if (this.opts.discriminator)\n this.addKeyword(discriminator_1.default);\n }\n _addDefaultMetaSchema() {\n super._addDefaultMetaSchema();\n const { $data, meta } = this.opts;\n if (!meta)\n return;\n json_schema_2020_12_1.default.call(this, $data);\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID;\n }\n defaultMeta() {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined));\n }\n}\nexports.Ajv2020 = Ajv2020;\nmodule.exports = exports = Ajv2020;\nmodule.exports.Ajv2020 = Ajv2020;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Ajv2020;\nvar validate_1 = require(\"./compile/validate\");\nObject.defineProperty(exports, \"KeywordCxt\", { enumerable: true, get: function () { return validate_1.KeywordCxt; } });\nvar codegen_1 = require(\"./compile/codegen\");\nObject.defineProperty(exports, \"_\", { enumerable: true, get: function () { return codegen_1._; } });\nObject.defineProperty(exports, \"str\", { enumerable: true, get: function () { return codegen_1.str; } });\nObject.defineProperty(exports, \"stringify\", { enumerable: true, get: function () { return codegen_1.stringify; } });\nObject.defineProperty(exports, \"nil\", { enumerable: true, get: function () { return codegen_1.nil; } });\nObject.defineProperty(exports, \"Name\", { enumerable: true, get: function () { return codegen_1.Name; } });\nObject.defineProperty(exports, \"CodeGen\", { enumerable: true, get: function () { return codegen_1.CodeGen; } });\nvar validation_error_1 = require(\"./runtime/validation_error\");\nObject.defineProperty(exports, \"ValidationError\", { enumerable: true, get: function () { return validation_error_1.default; } });\nvar ref_error_1 = require(\"./compile/ref_error\");\nObject.defineProperty(exports, \"MissingRefError\", { enumerable: true, get: function () { return ref_error_1.default; } });\n//# sourceMappingURL=2020.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.openapi = exports.openapiV31 = exports.openapiV3 = exports.openapiV2 = exports.openapiV1 = void 0;\n/**\n * JSON Schema for OpenAPI Specification v1.2\n */\nexports.openapiV1 = require(\"../schemas/v1.2/apiDeclaration.json\");\n/**\n * JSON Schema for OpenAPI Specification v2.0\n */\nexports.openapiV2 = require(\"../schemas/v2.0/schema.json\");\n/**\n * JSON Schema for OpenAPI Specification v3.0\n */\nexports.openapiV3 = require(\"../schemas/v3.0/schema.json\");\n/**\n * JSON Schema for OpenAPI Specification v3.1\n */\nexports.openapiV31 = require(\"../schemas/v3.1/schema.json\");\n/**\n * JSON Schemas for every version of the OpenAPI Specification\n */\nexports.openapi = {\n v1: exports.openapiV1,\n v2: exports.openapiV2,\n v3: exports.openapiV3,\n v31: exports.openapiV31,\n};\n// Export `openapi` as the default export\nexports.default = exports.openapi;\n// CommonJS default export hack\n/* eslint-env commonjs */\nif (typeof module === \"object\" && typeof module.exports === \"object\") {\n module.exports = Object.assign(module.exports.default, module.exports);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nconst util = require(\"../util\");\nconst { ono } = require(\"@jsdevtools/ono\");\nconst AjvDraft4 = require(\"ajv-draft-04\");\nconst Ajv = require(\"ajv/dist/2020\");\nconst { openapi } = require(\"@apidevtools/openapi-schemas\");\n\nmodule.exports = validateSchema;\n\n/**\n * Validates the given Swagger API against the Swagger 2.0 or OpenAPI 3.0 and 3.1 schemas.\n *\n * @param {SwaggerObject} api\n */\nfunction validateSchema (api) {\n let ajv;\n\n // Choose the appropriate schema (Swagger or OpenAPI)\n let schema;\n\n if (api.swagger) {\n schema = openapi.v2;\n ajv = initializeAjv();\n }\n else {\n if (api.openapi.startsWith(\"3.1\")) {\n schema = openapi.v31;\n\n // There's a bug with Ajv in how it handles `$dynamicRef` in the way that it's used within the 3.1 schema so we\n // need to do some adhoc workarounds.\n // https://github.com/OAI/OpenAPI-Specification/issues/2689\n // https://github.com/ajv-validator/ajv/issues/1573\n const schemaDynamicRef = schema.$defs.schema;\n delete schemaDynamicRef.$dynamicAnchor;\n\n schema.$defs.components.properties.schemas.additionalProperties = schemaDynamicRef;\n schema.$defs.header.dependentSchemas.schema.properties.schema = schemaDynamicRef;\n schema.$defs[\"media-type\"].properties.schema = schemaDynamicRef;\n schema.$defs.parameter.properties.schema = schemaDynamicRef;\n\n ajv = initializeAjv(false);\n }\n else {\n schema = openapi.v3;\n ajv = initializeAjv();\n }\n }\n\n // Validate against the schema\n let isValid = ajv.validate(schema, api);\n if (!isValid) {\n let err = ajv.errors;\n let message = \"Swagger schema validation failed.\\n\" + formatAjvError(err);\n throw ono.syntax(err, { details: err }, message);\n }\n}\n\n/**\n * Determines which version of Ajv to load and prepares it for use.\n *\n * @param {bool} draft04\n * @returns {Ajv}\n */\nfunction initializeAjv (draft04 = true) {\n const opts = {\n allErrors: true,\n strict: false,\n validateFormats: false,\n };\n\n if (draft04) {\n return new AjvDraft4(opts);\n }\n\n return new Ajv(opts);\n}\n\n/**\n * Run through a set of Ajv errors and compile them into an error message string.\n *\n * @param {object[]} errors - The Ajv errors\n * @param {string} [indent] - The whitespace used to indent the error message\n * @returns {string}\n */\nfunction formatAjvError (errors, indent) {\n indent = indent || \" \";\n let message = \"\";\n for (let error of errors) {\n message += util.format(`${indent}#${error.instancePath.length ? error.instancePath : \"/\"} ${error.message}\\n`);\n }\n return message;\n}\n","\"use strict\";\n\nmodule.exports = [\n \"get\", \"put\", \"post\", \"delete\", \"options\", \"head\", \"patch\"\n];\n","\"use strict\";\n\nconst util = require(\"../util\");\nconst { ono } = require(\"@jsdevtools/ono\");\nconst swaggerMethods = require(\"@apidevtools/swagger-methods\");\nconst primitiveTypes = [\"array\", \"boolean\", \"integer\", \"number\", \"string\"];\nconst schemaTypes = [\"array\", \"boolean\", \"integer\", \"number\", \"string\", \"object\", \"null\", undefined];\n\nmodule.exports = validateSpec;\n\n/**\n * Validates parts of the Swagger 2.0 spec that aren't covered by the Swagger 2.0 JSON Schema.\n *\n * @param {SwaggerObject} api\n */\nfunction validateSpec (api) {\n if (api.openapi) {\n // We don't (yet) support validating against the OpenAPI spec\n return;\n }\n\n let paths = Object.keys(api.paths || {});\n let operationIds = [];\n for (let pathName of paths) {\n let path = api.paths[pathName];\n let pathId = \"/paths\" + pathName;\n\n if (path && pathName.indexOf(\"/\") === 0) {\n validatePath(api, path, pathId, operationIds);\n }\n }\n\n let definitions = Object.keys(api.definitions || {});\n for (let definitionName of definitions) {\n let definition = api.definitions[definitionName];\n let definitionId = \"/definitions/\" + definitionName;\n validateRequiredPropertiesExist(definition, definitionId);\n }\n}\n\n/**\n * Validates the given path.\n *\n * @param {SwaggerObject} api - The entire Swagger API object\n * @param {object} path - A Path object, from the Swagger API\n * @param {string} pathId - A value that uniquely identifies the path\n * @param {string} operationIds - An array of collected operationIds found in other paths\n */\nfunction validatePath (api, path, pathId, operationIds) {\n for (let operationName of swaggerMethods) {\n let operation = path[operationName];\n let operationId = pathId + \"/\" + operationName;\n\n if (operation) {\n let declaredOperationId = operation.operationId;\n if (declaredOperationId) {\n if (operationIds.indexOf(declaredOperationId) === -1) {\n operationIds.push(declaredOperationId);\n }\n else {\n throw ono.syntax(`Validation failed. Duplicate operation id '${declaredOperationId}'`);\n }\n }\n validateParameters(api, path, pathId, operation, operationId);\n\n let responses = Object.keys(operation.responses || {});\n for (let responseName of responses) {\n let response = operation.responses[responseName];\n let responseId = operationId + \"/responses/\" + responseName;\n validateResponse(responseName, (response || {}), responseId);\n }\n }\n }\n}\n\n/**\n * Validates the parameters for the given operation.\n *\n * @param {SwaggerObject} api - The entire Swagger API object\n * @param {object} path - A Path object, from the Swagger API\n * @param {string} pathId - A value that uniquely identifies the path\n * @param {object} operation - An Operation object, from the Swagger API\n * @param {string} operationId - A value that uniquely identifies the operation\n */\nfunction validateParameters (api, path, pathId, operation, operationId) {\n let pathParams = path.parameters || [];\n let operationParams = operation.parameters || [];\n\n // Check for duplicate path parameters\n try {\n checkForDuplicates(pathParams);\n }\n catch (e) {\n throw ono.syntax(e, `Validation failed. ${pathId} has duplicate parameters`);\n }\n\n // Check for duplicate operation parameters\n try {\n checkForDuplicates(operationParams);\n }\n catch (e) {\n throw ono.syntax(e, `Validation failed. ${operationId} has duplicate parameters`);\n }\n\n // Combine the path and operation parameters,\n // with the operation params taking precedence over the path params\n let params = pathParams.reduce((combinedParams, value) => {\n let duplicate = combinedParams.some((param) => {\n return param.in === value.in && param.name === value.name;\n });\n if (!duplicate) {\n combinedParams.push(value);\n }\n return combinedParams;\n }, operationParams.slice());\n\n validateBodyParameters(params, operationId);\n validatePathParameters(params, pathId, operationId);\n validateParameterTypes(params, api, operation, operationId);\n}\n\n/**\n * Validates body and formData parameters for the given operation.\n *\n * @param {object[]} params - An array of Parameter objects\n * @param {string} operationId - A value that uniquely identifies the operation\n */\nfunction validateBodyParameters (params, operationId) {\n let bodyParams = params.filter((param) => { return param.in === \"body\"; });\n let formParams = params.filter((param) => { return param.in === \"formData\"; });\n\n // There can only be one \"body\" parameter\n if (bodyParams.length > 1) {\n throw ono.syntax(\n `Validation failed. ${operationId} has ${bodyParams.length} body parameters. Only one is allowed.`,\n );\n }\n else if (bodyParams.length > 0 && formParams.length > 0) {\n // \"body\" params and \"formData\" params are mutually exclusive\n throw ono.syntax(\n `Validation failed. ${operationId} has body parameters and formData parameters. Only one or the other is allowed.`,\n );\n }\n}\n\n/**\n * Validates path parameters for the given path.\n *\n * @param {object[]} params - An array of Parameter objects\n * @param {string} pathId - A value that uniquely identifies the path\n * @param {string} operationId - A value that uniquely identifies the operation\n */\nfunction validatePathParameters (params, pathId, operationId) {\n // Find all {placeholders} in the path string\n let placeholders = pathId.match(util.swaggerParamRegExp) || [];\n\n // Check for duplicates\n for (let i = 0; i < placeholders.length; i++) {\n for (let j = i + 1; j < placeholders.length; j++) {\n if (placeholders[i] === placeholders[j]) {\n throw ono.syntax(\n `Validation failed. ${operationId} has multiple path placeholders named ${placeholders[i]}`);\n }\n }\n }\n\n params = params.filter((param) => { return param.in === \"path\"; });\n\n for (let param of params) {\n if (param.required !== true) {\n throw ono.syntax(\n \"Validation failed. Path parameters cannot be optional. \" +\n `Set required=true for the \"${param.name}\" parameter at ${operationId}`,\n );\n }\n let match = placeholders.indexOf(\"{\" + param.name + \"}\");\n if (match === -1) {\n throw ono.syntax(\n `Validation failed. ${operationId} has a path parameter named \"${param.name}\", ` +\n `but there is no corresponding {${param.name}} in the path string`\n );\n }\n placeholders.splice(match, 1);\n }\n\n if (placeholders.length > 0) {\n throw ono.syntax(`Validation failed. ${operationId} is missing path parameter(s) for ${placeholders}`);\n }\n}\n\n/**\n * Validates data types of parameters for the given operation.\n *\n * @param {object[]} params - An array of Parameter objects\n * @param {object} api - The entire Swagger API object\n * @param {object} operation - An Operation object, from the Swagger API\n * @param {string} operationId - A value that uniquely identifies the operation\n */\nfunction validateParameterTypes (params, api, operation, operationId) {\n for (let param of params) {\n let parameterId = operationId + \"/parameters/\" + param.name;\n let schema, validTypes;\n\n switch (param.in) {\n case \"body\":\n schema = param.schema;\n validTypes = schemaTypes;\n break;\n case \"formData\":\n schema = param;\n validTypes = primitiveTypes.concat(\"file\");\n break;\n default:\n schema = param;\n validTypes = primitiveTypes;\n }\n\n validateSchema(schema, parameterId, validTypes);\n validateRequiredPropertiesExist(schema, parameterId);\n\n if (schema.type === \"file\") {\n // \"file\" params must consume at least one of these MIME types\n let formData = /multipart\\/(.*\\+)?form-data/;\n let urlEncoded = /application\\/(.*\\+)?x-www-form-urlencoded/;\n\n let consumes = operation.consumes || api.consumes || [];\n\n let hasValidMimeType = consumes.some((consume) => {\n return formData.test(consume) || urlEncoded.test(consume);\n });\n\n if (!hasValidMimeType) {\n throw ono.syntax(\n `Validation failed. ${operationId} has a file parameter, so it must consume multipart/form-data ` +\n \"or application/x-www-form-urlencoded\",\n );\n }\n }\n }\n}\n\n/**\n * Checks the given parameter list for duplicates, and throws an error if found.\n *\n * @param {object[]} params - An array of Parameter objects\n */\nfunction checkForDuplicates (params) {\n for (let i = 0; i < params.length - 1; i++) {\n let outer = params[i];\n for (let j = i + 1; j < params.length; j++) {\n let inner = params[j];\n if (outer.name === inner.name && outer.in === inner.in) {\n throw ono.syntax(`Validation failed. Found multiple ${outer.in} parameters named \"${outer.name}\"`);\n }\n }\n }\n}\n\n/**\n * Validates the given response object.\n *\n * @param {string} code - The HTTP response code (or \"default\")\n * @param {object} response - A Response object, from the Swagger API\n * @param {string} responseId - A value that uniquely identifies the response\n */\nfunction validateResponse (code, response, responseId) {\n if (code !== \"default\" && (code < 100 || code > 599)) {\n throw ono.syntax(`Validation failed. ${responseId} has an invalid response code (${code})`);\n }\n\n let headers = Object.keys(response.headers || {});\n for (let headerName of headers) {\n let header = response.headers[headerName];\n let headerId = responseId + \"/headers/\" + headerName;\n validateSchema(header, headerId, primitiveTypes);\n }\n\n if (response.schema) {\n let validTypes = schemaTypes.concat(\"file\");\n if (validTypes.indexOf(response.schema.type) === -1) {\n throw ono.syntax(\n `Validation failed. ${responseId} has an invalid response schema type (${response.schema.type})`);\n }\n else {\n validateSchema(response.schema, responseId + \"/schema\", validTypes);\n }\n }\n}\n\n/**\n * Validates the given Swagger schema object.\n *\n * @param {object} schema - A Schema object, from the Swagger API\n * @param {string} schemaId - A value that uniquely identifies the schema object\n * @param {string[]} validTypes - An array of the allowed schema types\n */\nfunction validateSchema (schema, schemaId, validTypes) {\n if (validTypes.indexOf(schema.type) === -1) {\n throw ono.syntax(\n `Validation failed. ${schemaId} has an invalid type (${schema.type})`);\n }\n\n if (schema.type === \"array\" && !schema.items) {\n throw ono.syntax(`Validation failed. ${schemaId} is an array, so it must include an \"items\" schema`);\n }\n}\n\n/**\n * Validates that the declared properties of the given Swagger schema object actually exist.\n *\n * @param {object} schema - A Schema object, from the Swagger API\n * @param {string} schemaId - A value that uniquely identifies the schema object\n */\nfunction validateRequiredPropertiesExist (schema, schemaId) {\n /**\n * Recursively collects all properties of the schema and its ancestors. They are added to the props object.\n */\n function collectProperties (schemaObj, props) {\n if (schemaObj.properties) {\n for (let property in schemaObj.properties) {\n if (schemaObj.properties.hasOwnProperty(property)) {\n props[property] = schemaObj.properties[property];\n }\n }\n }\n if (schemaObj.allOf) {\n for (let parent of schemaObj.allOf) {\n collectProperties(parent, props);\n }\n }\n }\n\n // The \"required\" keyword is only applicable for objects\n if (Array.isArray(schema.type) && !schema.type.includes(\"object\")) {\n return;\n }\n else if (!Array.isArray(schema.type) && schema.type !== \"object\") {\n return;\n }\n\n if (schema.required && Array.isArray(schema.required)) {\n let props = {};\n collectProperties(schema, props);\n for (let requiredProperty of schema.required) {\n if (!props[requiredProperty]) {\n throw ono.syntax(\n `Validation failed. Property '${requiredProperty}' listed as required but does not exist in '${schemaId}'`\n );\n }\n }\n }\n}\n","// Minimal shim for Node.js 'path' module used by swagger-parser\r\nexport function resolve(...parts: string[]): string {\r\n // In browser context, join URL-like paths\r\n return parts.reduce((resolved, part) => {\r\n if (part.startsWith('/') || part.match(/^https?:\\/\\//)) return part;\r\n return resolved.replace(/\\/?$/, '/') + part;\r\n }, '');\r\n}\r\n\r\nexport function join(...parts: string[]): string {\r\n return parts.filter(Boolean).join('/').replace(/\\/+/g, '/');\r\n}\r\n\r\nexport function dirname(p: string): string {\r\n const idx = p.lastIndexOf('/');\r\n return idx >= 0 ? p.substring(0, idx) : '.';\r\n}\r\n\r\nexport function basename(p: string, ext?: string): string {\r\n const base = p.split('/').pop() ?? p;\r\n if (ext && base.endsWith(ext)) {\r\n return base.slice(0, -ext.length);\r\n }\r\n return base;\r\n}\r\n\r\nexport function extname(p: string): string {\r\n const base = basename(p);\r\n const idx = base.lastIndexOf('.');\r\n return idx > 0 ? base.substring(idx) : '';\r\n}\r\n\r\nexport function isAbsolute(p: string): boolean {\r\n return p.startsWith('/') || /^[a-zA-Z]:[\\\\/]/.test(p) || /^https?:\\/\\//.test(p);\r\n}\r\n\r\nexport const posix = { resolve, join, dirname, basename, extname, isAbsolute, sep: '/' };\r\nexport const sep = '/';\r\n\r\nexport default { resolve, join, dirname, basename, extname, isAbsolute, posix, sep };\r\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = convertPathToPosix;\nconst path_1 = __importDefault(require(\"path\"));\nfunction convertPathToPosix(filePath) {\n const isExtendedLengthPath = filePath.startsWith(\"\\\\\\\\?\\\\\");\n if (isExtendedLengthPath) {\n return filePath;\n }\n return filePath.split(path_1.default?.win32?.sep).join(path_1.default?.posix?.sep ?? \"/\");\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWindows = void 0;\nconst isWindowsConst = /^win/.test(globalThis.process ? globalThis.process.platform : \"\");\nconst isWindows = () => isWindowsConst;\nexports.isWindows = isWindows;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parse = void 0;\nexports.resolve = resolve;\nexports.cwd = cwd;\nexports.getProtocol = getProtocol;\nexports.getExtension = getExtension;\nexports.stripQuery = stripQuery;\nexports.getHash = getHash;\nexports.stripHash = stripHash;\nexports.isHttp = isHttp;\nexports.isFileSystemPath = isFileSystemPath;\nexports.fromFileSystemPath = fromFileSystemPath;\nexports.toFileSystemPath = toFileSystemPath;\nexports.safePointerToPath = safePointerToPath;\nexports.relative = relative;\nconst convert_path_to_posix_1 = __importDefault(require(\"./convert-path-to-posix\"));\nconst path_1 = __importStar(require(\"path\"));\nconst forwardSlashPattern = /\\//g;\nconst protocolPattern = /^(\\w{2,}):\\/\\//i;\nconst jsonPointerSlash = /~1/g;\nconst jsonPointerTilde = /~0/g;\nconst path_2 = require(\"path\");\nconst is_windows_1 = require(\"./is-windows\");\n// RegExp patterns to URL-encode special characters in local filesystem paths\nconst urlEncodePatterns = [\n [/\\?/g, \"%3F\"],\n [/#/g, \"%23\"],\n];\n// RegExp patterns to URL-decode special characters for local filesystem paths\nconst urlDecodePatterns = [/%23/g, \"#\", /%24/g, \"$\", /%26/g, \"&\", /%2C/g, \",\", /%40/g, \"@\"];\nconst parse = (u) => new URL(u);\nexports.parse = parse;\n/**\n * Returns resolved target URL relative to a base URL in a manner similar to that of a Web browser resolving an anchor tag HREF.\n *\n * @returns\n */\nfunction resolve(from, to) {\n const fromUrl = new URL((0, convert_path_to_posix_1.default)(from), \"resolve://\");\n const resolvedUrl = new URL((0, convert_path_to_posix_1.default)(to), fromUrl);\n const endSpaces = to.match(/(\\s*)$/)?.[1] || \"\";\n if (resolvedUrl.protocol === \"resolve:\") {\n // `from` is a relative URL.\n const { pathname, search, hash } = resolvedUrl;\n return pathname + search + hash + endSpaces;\n }\n return resolvedUrl.toString() + endSpaces;\n}\n/**\n * Returns the current working directory (in Node) or the current page URL (in browsers).\n *\n * @returns\n */\nfunction cwd() {\n if (typeof window !== \"undefined\") {\n return location.href;\n }\n const path = process.cwd();\n const lastChar = path.slice(-1);\n if (lastChar === \"/\" || lastChar === \"\\\\\") {\n return path;\n }\n else {\n return path + \"/\";\n }\n}\n/**\n * Returns the protocol of the given URL, or `undefined` if it has no protocol.\n *\n * @param path\n * @returns\n */\nfunction getProtocol(path) {\n const match = protocolPattern.exec(path || \"\");\n if (match) {\n return match[1].toLowerCase();\n }\n return undefined;\n}\n/**\n * Returns the lowercased file extension of the given URL,\n * or an empty string if it has no extension.\n *\n * @param path\n * @returns\n */\nfunction getExtension(path) {\n const lastDot = path.lastIndexOf(\".\");\n if (lastDot >= 0) {\n return stripQuery(path.substr(lastDot).toLowerCase());\n }\n return \"\";\n}\n/**\n * Removes the query, if any, from the given path.\n *\n * @param path\n * @returns\n */\nfunction stripQuery(path) {\n const queryIndex = path.indexOf(\"?\");\n if (queryIndex >= 0) {\n path = path.substr(0, queryIndex);\n }\n return path;\n}\n/**\n * Returns the hash (URL fragment), of the given path.\n * If there is no hash, then the root hash (\"#\") is returned.\n *\n * @param path\n * @returns\n */\nfunction getHash(path) {\n if (!path) {\n return \"#\";\n }\n const hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n return path.substring(hashIndex);\n }\n return \"#\";\n}\n/**\n * Removes the hash (URL fragment), if any, from the given path.\n *\n * @param path\n * @returns\n */\nfunction stripHash(path) {\n if (!path) {\n return \"\";\n }\n const hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n path = path.substring(0, hashIndex);\n }\n return path;\n}\n/**\n * Determines whether the given path is an HTTP(S) URL.\n *\n * @param path\n * @returns\n */\nfunction isHttp(path) {\n const protocol = getProtocol(path);\n if (protocol === \"http\" || protocol === \"https\") {\n return true;\n }\n else if (protocol === undefined) {\n // There is no protocol. If we're running in a browser, then assume it's HTTP.\n return typeof window !== \"undefined\";\n }\n else {\n // It's some other protocol, such as \"ftp://\", \"mongodb://\", etc.\n return false;\n }\n}\n/**\n * Determines whether the given path is a filesystem path.\n * This includes \"file://\" URLs.\n *\n * @param path\n * @returns\n */\nfunction isFileSystemPath(path) {\n // @ts-ignore\n if (typeof window !== \"undefined\" || (typeof process !== \"undefined\" && process.browser)) {\n // We're running in a browser, so assume that all paths are URLs.\n // This way, even relative paths will be treated as URLs rather than as filesystem paths\n return false;\n }\n const protocol = getProtocol(path);\n return protocol === undefined || protocol === \"file\";\n}\n/**\n * Converts a filesystem path to a properly-encoded URL.\n *\n * This is intended to handle situations where JSON Schema $Ref Parser is called\n * with a filesystem path that contains characters which are not allowed in URLs.\n *\n * @example\n * The following filesystem paths would be converted to the following URLs:\n *\n * <\"!@#$%^&*+=?'>.json ==> %3C%22!@%23$%25%5E&*+=%3F\\'%3E.json\n * C:\\\\My Documents\\\\File (1).json ==> C:/My%20Documents/File%20(1).json\n * file://Project #42/file.json ==> file://Project%20%2342/file.json\n *\n * @param path\n * @returns\n */\nfunction fromFileSystemPath(path) {\n // Step 1: On Windows, replace backslashes with forward slashes,\n // rather than encoding them as \"%5C\"\n if ((0, is_windows_1.isWindows)()) {\n const projectDir = cwd();\n const upperPath = path.toUpperCase();\n const projectDirPosixPath = (0, convert_path_to_posix_1.default)(projectDir);\n const posixUpper = projectDirPosixPath.toUpperCase();\n const hasProjectDir = upperPath.includes(posixUpper);\n const hasProjectUri = upperPath.includes(posixUpper);\n const isAbsolutePath = path_1.win32?.isAbsolute(path) ||\n path.startsWith(\"http://\") ||\n path.startsWith(\"https://\") ||\n path.startsWith(\"file://\");\n if (!(hasProjectDir || hasProjectUri || isAbsolutePath) && !projectDir.startsWith(\"http\")) {\n path = (0, path_2.join)(projectDir, path);\n }\n path = (0, convert_path_to_posix_1.default)(path);\n }\n // Step 2: `encodeURI` will take care of MOST characters\n path = encodeURI(path);\n // Step 3: Manually encode characters that are not encoded by `encodeURI`.\n // This includes characters such as \"#\" and \"?\", which have special meaning in URLs,\n // but are just normal characters in a filesystem path.\n for (const pattern of urlEncodePatterns) {\n path = path.replace(pattern[0], pattern[1]);\n }\n return path;\n}\n/**\n * Converts a URL to a local filesystem path.\n */\nfunction toFileSystemPath(path, keepFileProtocol) {\n // Step 1: `decodeURI` will decode characters such as Cyrillic characters, spaces, etc.\n path = decodeURI(path);\n // Step 2: Manually decode characters that are not decoded by `decodeURI`.\n // This includes characters such as \"#\" and \"?\", which have special meaning in URLs,\n // but are just normal characters in a filesystem path.\n for (let i = 0; i < urlDecodePatterns.length; i += 2) {\n path = path.replace(urlDecodePatterns[i], urlDecodePatterns[i + 1]);\n }\n // Step 3: If it's a \"file://\" URL, then format it consistently\n // or convert it to a local filesystem path\n let isFileUrl = path.substr(0, 7).toLowerCase() === \"file://\";\n if (isFileUrl) {\n // Strip-off the protocol, and the initial \"/\", if there is one\n path = path[7] === \"/\" ? path.substr(8) : path.substr(7);\n // insert a colon (\":\") after the drive letter on Windows\n if ((0, is_windows_1.isWindows)() && path[1] === \"/\") {\n path = path[0] + \":\" + path.substr(1);\n }\n if (keepFileProtocol) {\n // Return the consistently-formatted \"file://\" URL\n path = \"file:///\" + path;\n }\n else {\n // Convert the \"file://\" URL to a local filesystem path.\n // On Windows, it will start with something like \"C:/\".\n // On Posix, it will start with \"/\"\n isFileUrl = false;\n path = (0, is_windows_1.isWindows)() ? path : \"/\" + path;\n }\n }\n // Step 4: Normalize Windows paths (unless it's a \"file://\" URL)\n if ((0, is_windows_1.isWindows)() && !isFileUrl) {\n // Replace forward slashes with backslashes\n path = path.replace(forwardSlashPattern, \"\\\\\");\n // Capitalize the drive letter\n if (path.substr(1, 2) === \":\\\\\") {\n path = path[0].toUpperCase() + path.substr(1);\n }\n }\n return path;\n}\n/**\n * Converts a $ref pointer to a valid JSON Path.\n *\n * @param pointer\n * @returns\n */\nfunction safePointerToPath(pointer) {\n if (pointer.length <= 1 || pointer[0] !== \"#\" || pointer[1] !== \"/\") {\n return [];\n }\n return pointer\n .slice(2)\n .split(\"/\")\n .map((value) => {\n return decodeURIComponent(value).replace(jsonPointerSlash, \"/\").replace(jsonPointerTilde, \"~\");\n });\n}\nfunction relative(from, to) {\n if (!isFileSystemPath(from) || !isFileSystemPath(to)) {\n return resolve(from, to);\n }\n const fromDir = path_1.default.dirname(stripHash(from));\n const toPath = stripHash(to);\n const result = path_1.default.relative(fromDir, toPath);\n return result + getHash(to);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InvalidPointerError = exports.TimeoutError = exports.MissingPointerError = exports.UnmatchedResolverError = exports.ResolverError = exports.UnmatchedParserError = exports.ParserError = exports.JSONParserErrorGroup = exports.JSONParserError = void 0;\nexports.isHandledError = isHandledError;\nexports.normalizeError = normalizeError;\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst url_js_1 = require(\"./url.js\");\nclass JSONParserError extends Error {\n constructor(message, source) {\n super();\n this.code = \"EUNKNOWN\";\n this.name = \"JSONParserError\";\n this.message = message;\n this.source = source;\n this.path = null;\n ono_1.Ono.extend(this);\n }\n get footprint() {\n return `${this.path}+${this.source}+${this.code}+${this.message}`;\n }\n}\nexports.JSONParserError = JSONParserError;\nclass JSONParserErrorGroup extends Error {\n constructor(parser) {\n super();\n this.files = parser;\n this.name = \"JSONParserErrorGroup\";\n this.message = `${this.errors.length} error${this.errors.length > 1 ? \"s\" : \"\"} occurred while reading '${(0, url_js_1.toFileSystemPath)(parser.$refs._root$Ref.path)}'`;\n ono_1.Ono.extend(this);\n }\n static getParserErrors(parser) {\n const errors = [];\n for (const $ref of Object.values(parser.$refs._$refs)) {\n if ($ref.errors) {\n errors.push(...$ref.errors);\n }\n }\n return errors;\n }\n get errors() {\n return JSONParserErrorGroup.getParserErrors(this.files);\n }\n}\nexports.JSONParserErrorGroup = JSONParserErrorGroup;\nclass ParserError extends JSONParserError {\n constructor(message, source) {\n super(`Error parsing ${source}: ${message}`, source);\n this.code = \"EPARSER\";\n this.name = \"ParserError\";\n }\n}\nexports.ParserError = ParserError;\nclass UnmatchedParserError extends JSONParserError {\n constructor(source) {\n super(`Could not find parser for \"${source}\"`, source);\n this.code = \"EUNMATCHEDPARSER\";\n this.name = \"UnmatchedParserError\";\n }\n}\nexports.UnmatchedParserError = UnmatchedParserError;\nclass ResolverError extends JSONParserError {\n constructor(ex, source) {\n super(ex.message || `Error reading file \"${source}\"`, source);\n this.code = \"ERESOLVER\";\n this.name = \"ResolverError\";\n if (\"code\" in ex) {\n this.ioErrorCode = String(ex.code);\n }\n }\n}\nexports.ResolverError = ResolverError;\nclass UnmatchedResolverError extends JSONParserError {\n constructor(source) {\n super(`Could not find resolver for \"${source}\"`, source);\n this.code = \"EUNMATCHEDRESOLVER\";\n this.name = \"UnmatchedResolverError\";\n }\n}\nexports.UnmatchedResolverError = UnmatchedResolverError;\nclass MissingPointerError extends JSONParserError {\n constructor(token, path) {\n super(`Token \"${token}\" does not exist.`, (0, url_js_1.stripHash)(path));\n this.code = \"EUNMATCHEDRESOLVER\";\n this.name = \"MissingPointerError\";\n }\n}\nexports.MissingPointerError = MissingPointerError;\nclass TimeoutError extends JSONParserError {\n constructor(timeout) {\n super(`Dereferencing timeout reached: ${timeout}ms`);\n this.code = \"ETIMEOUT\";\n this.name = \"TimeoutError\";\n }\n}\nexports.TimeoutError = TimeoutError;\nclass InvalidPointerError extends JSONParserError {\n constructor(pointer, path) {\n super(`Invalid $ref pointer \"${pointer}\". Pointers must begin with \"#/\"`, (0, url_js_1.stripHash)(path));\n this.code = \"EUNMATCHEDRESOLVER\";\n this.name = \"InvalidPointerError\";\n }\n}\nexports.InvalidPointerError = InvalidPointerError;\nfunction isHandledError(err) {\n return err instanceof JSONParserError || err instanceof JSONParserErrorGroup;\n}\nfunction normalizeError(err) {\n if (err.path === null) {\n err.path = [];\n }\n return err;\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\nconst slashes = /\\//g;\nconst tildes = /~/g;\nconst escapedSlash = /~1/g;\nconst escapedTilde = /~0/g;\nconst safeDecodeURIComponent = (encodedURIComponent) => {\n try {\n return decodeURIComponent(encodedURIComponent);\n }\n catch {\n return encodedURIComponent;\n }\n};\n/**\n * This class represents a single JSON pointer and its resolved value.\n *\n * @param $ref\n * @param path\n * @param [friendlyPath] - The original user-specified path (used for error messages)\n * @class\n */\nclass Pointer {\n constructor($ref, path, friendlyPath) {\n this.$ref = $ref;\n this.path = path;\n this.originalPath = friendlyPath || path;\n this.value = undefined;\n this.circular = false;\n this.indirections = 0;\n }\n /**\n * Resolves the value of a nested property within the given object.\n *\n * @param obj - The object that will be crawled\n * @param options\n * @param pathFromRoot - the path of place that initiated resolving\n *\n * @returns\n * Returns a JSON pointer whose {@link Pointer#value} is the resolved value.\n * If resolving this value required resolving other JSON references, then\n * the {@link Pointer#$ref} and {@link Pointer#path} will reflect the resolution path\n * of the resolved value.\n */\n resolve(obj, options, pathFromRoot) {\n const tokens = Pointer.parse(this.path, this.originalPath);\n // Crawl the object, one token at a time\n this.value = unwrapOrThrow(obj);\n for (let i = 0; i < tokens.length; i++) {\n if (resolveIf$Ref(this, options, pathFromRoot)) {\n // The $ref path has changed, so append the remaining tokens to the path\n this.path = Pointer.join(this.path, tokens.slice(i));\n }\n if (typeof this.value === \"object\" && this.value !== null && !isRootPath(pathFromRoot) && \"$ref\" in this.value) {\n return this;\n }\n const token = tokens[i];\n if (this.value[token] === undefined || (this.value[token] === null && i === tokens.length - 1)) {\n // one final case is if the entry itself includes slashes, and was parsed out as a token - we can join the remaining tokens and try again\n let didFindSubstringSlashMatch = false;\n for (let j = tokens.length - 1; j > i; j--) {\n const joinedToken = tokens.slice(i, j + 1).join(\"/\");\n if (this.value[joinedToken] !== undefined) {\n this.value = this.value[joinedToken];\n i = j;\n didFindSubstringSlashMatch = true;\n break;\n }\n }\n if (didFindSubstringSlashMatch) {\n continue;\n }\n this.value = null;\n throw new errors_js_1.MissingPointerError(token, decodeURI(this.originalPath));\n }\n else {\n this.value = this.value[token];\n }\n }\n // Resolve the final value\n if (!this.value || (this.value.$ref && url.resolve(this.path, this.value.$ref) !== pathFromRoot)) {\n resolveIf$Ref(this, options, pathFromRoot);\n }\n return this;\n }\n /**\n * Sets the value of a nested property within the given object.\n *\n * @param obj - The object that will be crawled\n * @param value - the value to assign\n * @param options\n *\n * @returns\n * Returns the modified object, or an entirely new object if the entire object is overwritten.\n */\n set(obj, value, options) {\n const tokens = Pointer.parse(this.path);\n let token;\n if (tokens.length === 0) {\n // There are no tokens, replace the entire object with the new value\n this.value = value;\n return value;\n }\n // Crawl the object, one token at a time\n this.value = unwrapOrThrow(obj);\n for (let i = 0; i < tokens.length - 1; i++) {\n resolveIf$Ref(this, options);\n token = tokens[i];\n if (this.value && this.value[token] !== undefined) {\n // The token exists\n this.value = this.value[token];\n }\n else {\n // The token doesn't exist, so create it\n this.value = setValue(this, token, {});\n }\n }\n // Set the value of the final token\n resolveIf$Ref(this, options);\n token = tokens[tokens.length - 1];\n setValue(this, token, value);\n // Return the updated object\n return obj;\n }\n /**\n * Parses a JSON pointer (or a path containing a JSON pointer in the hash)\n * and returns an array of the pointer's tokens.\n * (e.g. \"schema.json#/definitions/person/name\" => [\"definitions\", \"person\", \"name\"])\n *\n * The pointer is parsed according to RFC 6901\n * {@link https://tools.ietf.org/html/rfc6901#section-3}\n *\n * @param path\n * @param [originalPath]\n * @returns\n */\n static parse(path, originalPath) {\n // Get the JSON pointer from the path's hash\n const pointer = url.getHash(path).substring(1);\n // If there's no pointer, then there are no tokens,\n // so return an empty array\n if (!pointer) {\n return [];\n }\n // Split into an array\n const split = pointer.split(\"/\");\n // Decode each part, according to RFC 6901\n for (let i = 0; i < split.length; i++) {\n split[i] = safeDecodeURIComponent(split[i].replace(escapedSlash, \"/\").replace(escapedTilde, \"~\"));\n }\n if (split[0] !== \"\") {\n throw new errors_js_1.InvalidPointerError(split, originalPath === undefined ? path : originalPath);\n }\n return split.slice(1);\n }\n /**\n * Creates a JSON pointer path, by joining one or more tokens to a base path.\n *\n * @param base - The base path (e.g. \"schema.json#/definitions/person\")\n * @param tokens - The token(s) to append (e.g. [\"name\", \"first\"])\n * @returns\n */\n static join(base, tokens) {\n // Ensure that the base path contains a hash\n if (base.indexOf(\"#\") === -1) {\n base += \"#\";\n }\n // Append each token to the base path\n tokens = Array.isArray(tokens) ? tokens : [tokens];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Encode the token, according to RFC 6901\n base += \"/\" + encodeURIComponent(token.replace(tildes, \"~0\").replace(slashes, \"~1\"));\n }\n return base;\n }\n}\n/**\n * If the given pointer's {@link Pointer#value} is a JSON reference,\n * then the reference is resolved and {@link Pointer#value} is replaced with the resolved value.\n * In addition, {@link Pointer#path} and {@link Pointer#$ref} are updated to reflect the\n * resolution path of the new value.\n *\n * @param pointer\n * @param options\n * @param [pathFromRoot] - the path of place that initiated resolving\n * @returns - Returns `true` if the resolution path changed\n */\nfunction resolveIf$Ref(pointer, options, pathFromRoot) {\n // Is the value a JSON reference? (and allowed?)\n if (ref_js_1.default.isAllowed$Ref(pointer.value, options)) {\n const $refPath = url.resolve(pointer.path, pointer.value.$ref);\n if ($refPath === pointer.path && !isRootPath(pathFromRoot)) {\n // The value is a reference to itself, so there's nothing to do.\n pointer.circular = true;\n }\n else {\n const resolved = pointer.$ref.$refs._resolve($refPath, pointer.path, options);\n if (resolved === null) {\n return false;\n }\n pointer.indirections += resolved.indirections + 1;\n if (ref_js_1.default.isExtended$Ref(pointer.value)) {\n // This JSON reference \"extends\" the resolved value, rather than simply pointing to it.\n // So the resolved path does NOT change. Just the value does.\n pointer.value = ref_js_1.default.dereference(pointer.value, resolved.value);\n return false;\n }\n else {\n // Resolve the reference\n pointer.$ref = resolved.$ref;\n pointer.path = resolved.path;\n pointer.value = resolved.value;\n }\n return true;\n }\n }\n return undefined;\n}\nexports.default = Pointer;\n/**\n * Sets the specified token value of the {@link Pointer#value}.\n *\n * The token is evaluated according to RFC 6901.\n * {@link https://tools.ietf.org/html/rfc6901#section-4}\n *\n * @param pointer - The JSON Pointer whose value will be modified\n * @param token - A JSON Pointer token that indicates how to modify `obj`\n * @param value - The value to assign\n * @returns - Returns the assigned value\n */\nfunction setValue(pointer, token, value) {\n if (pointer.value && typeof pointer.value === \"object\") {\n if (token === \"-\" && Array.isArray(pointer.value)) {\n pointer.value.push(value);\n }\n else {\n pointer.value[token] = value;\n }\n }\n else {\n throw new errors_js_1.JSONParserError(`Error assigning $ref pointer \"${pointer.path}\". \\nCannot set \"${token}\" of a non-object.`);\n }\n return value;\n}\nfunction unwrapOrThrow(value) {\n if ((0, errors_js_1.isHandledError)(value)) {\n throw value;\n }\n return value;\n}\nfunction isRootPath(pathFromRoot) {\n return typeof pathFromRoot == \"string\" && Pointer.parse(pathFromRoot).length == 0;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst pointer_js_1 = __importDefault(require(\"./pointer.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\nconst url_js_1 = require(\"./util/url.js\");\n/**\n * This class represents a single JSON reference and its resolved value.\n *\n * @class\n */\nclass $Ref {\n constructor($refs) {\n /**\n * List of all errors. Undefined if no errors.\n */\n this.errors = [];\n this.$refs = $refs;\n }\n /**\n * Pushes an error to errors array.\n *\n * @param err - The error to be pushed\n * @returns\n */\n addError(err) {\n if (this.errors === undefined) {\n this.errors = [];\n }\n const existingErrors = this.errors.map(({ footprint }) => footprint);\n // the path has been almost certainly set at this point,\n // but just in case something went wrong, normalizeError injects path if necessary\n // moreover, certain errors might point at the same spot, so filter them out to reduce noise\n if (\"errors\" in err && Array.isArray(err.errors)) {\n this.errors.push(...err.errors.map(errors_js_1.normalizeError).filter(({ footprint }) => !existingErrors.includes(footprint)));\n }\n else if (!(\"footprint\" in err) || !existingErrors.includes(err.footprint)) {\n this.errors.push((0, errors_js_1.normalizeError)(err));\n }\n }\n /**\n * Determines whether the given JSON reference exists within this {@link $Ref#value}.\n *\n * @param path - The full path being resolved, optionally with a JSON pointer in the hash\n * @param options\n * @returns\n */\n exists(path, options) {\n try {\n this.resolve(path, options);\n return true;\n }\n catch {\n return false;\n }\n }\n /**\n * Resolves the given JSON reference within this {@link $Ref#value} and returns the resolved value.\n *\n * @param path - The full path being resolved, optionally with a JSON pointer in the hash\n * @param options\n * @returns - Returns the resolved value\n */\n get(path, options) {\n return this.resolve(path, options)?.value;\n }\n /**\n * Resolves the given JSON reference within this {@link $Ref#value}.\n *\n * @param path - The full path being resolved, optionally with a JSON pointer in the hash\n * @param options\n * @param friendlyPath - The original user-specified path (used for error messages)\n * @param pathFromRoot - The path of `obj` from the schema root\n * @returns\n */\n resolve(path, options, friendlyPath, pathFromRoot) {\n const pointer = new pointer_js_1.default(this, path, friendlyPath);\n try {\n return pointer.resolve(this.value, options, pathFromRoot);\n }\n catch (err) {\n if (!options || !options.continueOnError || !(0, errors_js_1.isHandledError)(err)) {\n throw err;\n }\n if (err.path === null) {\n err.path = (0, url_js_1.safePointerToPath)((0, url_js_1.getHash)(pathFromRoot));\n }\n if (err instanceof errors_js_1.InvalidPointerError) {\n err.source = decodeURI((0, url_js_1.stripHash)(pathFromRoot));\n }\n this.addError(err);\n return null;\n }\n }\n /**\n * Sets the value of a nested property within this {@link $Ref#value}.\n * If the property, or any of its parents don't exist, they will be created.\n *\n * @param path - The full path of the property to set, optionally with a JSON pointer in the hash\n * @param value - The value to assign\n */\n set(path, value) {\n const pointer = new pointer_js_1.default(this, path);\n this.value = pointer.set(this.value, value);\n }\n /**\n * Determines whether the given value is a JSON reference.\n *\n * @param value - The value to inspect\n * @returns\n */\n static is$Ref(value) {\n return (Boolean(value) &&\n typeof value === \"object\" &&\n value !== null &&\n \"$ref\" in value &&\n typeof value.$ref === \"string\" &&\n value.$ref.length > 0);\n }\n /**\n * Determines whether the given value is an external JSON reference.\n *\n * @param value - The value to inspect\n * @returns\n */\n static isExternal$Ref(value) {\n return $Ref.is$Ref(value) && value.$ref[0] !== \"#\";\n }\n /**\n * Determines whether the given value is a JSON reference, and whether it is allowed by the options.\n * For example, if it references an external file, then options.resolve.external must be true.\n *\n * @param value - The value to inspect\n * @param options\n * @returns\n */\n static isAllowed$Ref(value, options) {\n if (this.is$Ref(value)) {\n if (value.$ref.substring(0, 2) === \"#/\" || value.$ref === \"#\") {\n // It's a JSON Pointer reference, which is always allowed\n return true;\n }\n else if (value.$ref[0] !== \"#\" && (!options || options.resolve?.external)) {\n // It's an external reference, which is allowed by the options\n return true;\n }\n }\n return undefined;\n }\n /**\n * Determines whether the given value is a JSON reference that \"extends\" its resolved value.\n * That is, it has extra properties (in addition to \"$ref\"), so rather than simply pointing to\n * an existing value, this $ref actually creates a NEW value that is a shallow copy of the resolved\n * value, plus the extra properties.\n *\n * @example: {\n person: {\n properties: {\n firstName: { type: string }\n lastName: { type: string }\n }\n }\n employee: {\n properties: {\n $ref: #/person/properties\n salary: { type: number }\n }\n }\n }\n * In this example, \"employee\" is an extended $ref, since it extends \"person\" with an additional\n * property (salary). The result is a NEW value that looks like this:\n *\n * {\n * properties: {\n * firstName: { type: string }\n * lastName: { type: string }\n * salary: { type: number }\n * }\n * }\n *\n * @param value - The value to inspect\n * @returns\n */\n static isExtended$Ref(value) {\n return $Ref.is$Ref(value) && Object.keys(value).length > 1;\n }\n /**\n * Returns the resolved value of a JSON Reference.\n * If necessary, the resolved value is merged with the JSON Reference to create a new object\n *\n * @example: {\n person: {\n properties: {\n firstName: { type: string }\n lastName: { type: string }\n }\n }\n employee: {\n properties: {\n $ref: #/person/properties\n salary: { type: number }\n }\n }\n } When \"person\" and \"employee\" are merged, you end up with the following object:\n *\n * {\n * properties: {\n * firstName: { type: string }\n * lastName: { type: string }\n * salary: { type: number }\n * }\n * }\n *\n * @param $ref - The JSON reference object (the one with the \"$ref\" property)\n * @param resolvedValue - The resolved value, which can be any type\n * @returns - Returns the dereferenced value\n */\n static dereference($ref, resolvedValue) {\n if (resolvedValue && typeof resolvedValue === \"object\" && $Ref.isExtended$Ref($ref)) {\n const merged = {};\n for (const key of Object.keys($ref)) {\n if (key !== \"$ref\") {\n // @ts-expect-error TS(7053): Element implicitly has an 'any' type because expre... Remove this comment to see the full error message\n merged[key] = $ref[key];\n }\n }\n for (const key of Object.keys(resolvedValue)) {\n if (!(key in merged)) {\n // @ts-expect-error TS(7053): Element implicitly has an 'any' type because expre... Remove this comment to see the full error message\n merged[key] = resolvedValue[key];\n }\n }\n return merged;\n }\n else {\n // Completely replace the original reference with the resolved value\n return resolvedValue;\n }\n }\n}\nexports.default = $Ref;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\nconst convert_path_to_posix_1 = __importDefault(require(\"./util/convert-path-to-posix\"));\n/**\n * When you call the resolve method, the value that gets passed to the callback function (or Promise) is a $Refs object. This same object is accessible via the parser.$refs property of $RefParser objects.\n *\n * This object is a map of JSON References and their resolved values. It also has several convenient helper methods that make it easy for you to navigate and manipulate the JSON References.\n *\n * See https://apitools.dev/json-schema-ref-parser/docs/refs.html\n */\nclass $Refs {\n /**\n * Returns the paths/URLs of all the files in your schema (including the main schema file).\n *\n * See https://apitools.dev/json-schema-ref-parser/docs/refs.html#pathstypes\n *\n * @param types (optional) Optionally only return certain types of paths (\"file\", \"http\", etc.)\n */\n paths(...types) {\n const paths = getPaths(this._$refs, types.flat());\n return paths.map((path) => {\n return (0, convert_path_to_posix_1.default)(path.decoded);\n });\n }\n /**\n * Returns a map of paths/URLs and their correspond values.\n *\n * See https://apitools.dev/json-schema-ref-parser/docs/refs.html#valuestypes\n *\n * @param types (optional) Optionally only return values from certain locations (\"file\", \"http\", etc.)\n */\n values(...types) {\n const $refs = this._$refs;\n const paths = getPaths($refs, types.flat());\n return paths.reduce((obj, path) => {\n obj[(0, convert_path_to_posix_1.default)(path.decoded)] = $refs[path.encoded].value;\n return obj;\n }, {});\n }\n /**\n * Returns `true` if the given path exists in the schema; otherwise, returns `false`\n *\n * See https://apitools.dev/json-schema-ref-parser/docs/refs.html#existsref\n *\n * @param $ref The JSON Reference path, optionally with a JSON Pointer in the hash\n */\n /**\n * Determines whether the given JSON reference exists.\n *\n * @param path - The path being resolved, optionally with a JSON pointer in the hash\n * @param [options]\n * @returns\n */\n exists(path, options) {\n try {\n this._resolve(path, \"\", options);\n return true;\n }\n catch {\n return false;\n }\n }\n /**\n * Resolves the given JSON reference and returns the resolved value.\n *\n * @param path - The path being resolved, with a JSON pointer in the hash\n * @param [options]\n * @returns - Returns the resolved value\n */\n get(path, options) {\n return this._resolve(path, \"\", options).value;\n }\n /**\n * Sets the value at the given path in the schema. If the property, or any of its parents, don't exist, they will be created.\n *\n * @param path The JSON Reference path, optionally with a JSON Pointer in the hash\n * @param value The value to assign. Can be anything (object, string, number, etc.)\n */\n set(path, value) {\n const absPath = url.resolve(this._root$Ref.path, path);\n const withoutHash = url.stripHash(absPath);\n const $ref = this._$refs[withoutHash];\n if (!$ref) {\n throw (0, ono_1.ono)(`Error resolving $ref pointer \"${path}\". \\n\"${withoutHash}\" not found.`);\n }\n $ref.set(absPath, value);\n }\n /**\n * Returns the specified {@link $Ref} object, or undefined.\n *\n * @param path - The path being resolved, optionally with a JSON pointer in the hash\n * @returns\n * @protected\n */\n _get$Ref(path) {\n path = url.resolve(this._root$Ref.path, path);\n const withoutHash = url.stripHash(path);\n return this._$refs[withoutHash];\n }\n /**\n * Creates a new {@link $Ref} object and adds it to this {@link $Refs} object.\n *\n * @param path - The file path or URL of the referenced file\n */\n _add(path) {\n const withoutHash = url.stripHash(path);\n const $ref = new ref_js_1.default(this);\n $ref.path = withoutHash;\n this._$refs[withoutHash] = $ref;\n this._root$Ref = this._root$Ref || $ref;\n return $ref;\n }\n /**\n * Resolves the given JSON reference.\n *\n * @param path - The path being resolved, optionally with a JSON pointer in the hash\n * @param pathFromRoot - The path of `obj` from the schema root\n * @param [options]\n * @returns\n * @protected\n */\n _resolve(path, pathFromRoot, options) {\n const absPath = url.resolve(this._root$Ref.path, path);\n const withoutHash = url.stripHash(absPath);\n const $ref = this._$refs[withoutHash];\n if (!$ref) {\n throw (0, ono_1.ono)(`Error resolving $ref pointer \"${path}\". \\n\"${withoutHash}\" not found.`);\n }\n return $ref.resolve(absPath, options, path, pathFromRoot);\n }\n constructor() {\n /**\n * A map of paths/urls to {@link $Ref} objects\n *\n * @type {object}\n * @protected\n */\n this._$refs = {};\n /**\n * Returns the paths of all the files/URLs that are referenced by the JSON schema,\n * including the schema itself.\n *\n * @param [types] - Only return paths of the given types (\"file\", \"http\", etc.)\n * @returns\n */\n /**\n * Returns the map of JSON references and their resolved values.\n *\n * @param [types] - Only return references of the given types (\"file\", \"http\", etc.)\n * @returns\n */\n /**\n * Returns a POJO (plain old JavaScript object) for serialization as JSON.\n *\n * @returns {object}\n */\n this.toJSON = this.values;\n /**\n * Indicates whether the schema contains any circular references.\n *\n * @type {boolean}\n */\n this.circular = false;\n this._$refs = {};\n // @ts-ignore\n this._root$Ref = null;\n }\n}\nexports.default = $Refs;\n/**\n * Returns the encoded and decoded paths keys of the given object.\n *\n * @param $refs - The object whose keys are URL-encoded paths\n * @param [types] - Only return paths of the given types (\"file\", \"http\", etc.)\n * @returns\n */\nfunction getPaths($refs, types) {\n let paths = Object.keys($refs);\n // Filter the paths by type\n types = Array.isArray(types[0]) ? types[0] : Array.prototype.slice.call(types);\n if (types.length > 0 && types[0]) {\n paths = paths.filter((key) => {\n return types.includes($refs[key].pathType);\n });\n }\n // Decode local filesystem paths\n return paths.map((path) => {\n return {\n encoded: path,\n decoded: $refs[path].pathType === \"file\" ? url.toFileSystemPath(path, true) : path,\n };\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.all = all;\nexports.filter = filter;\nexports.sort = sort;\nexports.run = run;\n/**\n * Returns the given plugins as an array, rather than an object map.\n * All other methods in this module expect an array of plugins rather than an object map.\n *\n * @returns\n */\nfunction all(plugins) {\n return Object.keys(plugins || {})\n .filter((key) => {\n return typeof plugins[key] === \"object\";\n })\n .map((key) => {\n plugins[key].name = key;\n return plugins[key];\n });\n}\n/**\n * Filters the given plugins, returning only the ones return `true` for the given method.\n */\nfunction filter(plugins, method, file) {\n return plugins.filter((plugin) => {\n return !!getResult(plugin, method, file);\n });\n}\n/**\n * Sorts the given plugins, in place, by their `order` property.\n */\nfunction sort(plugins) {\n for (const plugin of plugins) {\n plugin.order = plugin.order || Number.MAX_SAFE_INTEGER;\n }\n return plugins.sort((a, b) => {\n return a.order - b.order;\n });\n}\n/**\n * Runs the specified method of the given plugins, in order, until one of them returns a successful result.\n * Each method can return a synchronous value, a Promise, or call an error-first callback.\n * If the promise resolves successfully, or the callback is called without an error, then the result\n * is immediately returned and no further plugins are called.\n * If the promise rejects, or the callback is called with an error, then the next plugin is called.\n * If ALL plugins fail, then the last error is thrown.\n */\nasync function run(plugins, method, file, $refs) {\n let plugin;\n let lastError;\n let index = 0;\n return new Promise((resolve, reject) => {\n runNextPlugin();\n function runNextPlugin() {\n plugin = plugins[index++];\n if (!plugin) {\n // There are no more functions, so re-throw the last error\n return reject(lastError);\n }\n try {\n // console.log(' %s', plugin.name);\n const result = getResult(plugin, method, file, callback, $refs);\n if (result && typeof result.then === \"function\") {\n // A promise was returned\n result.then(onSuccess, onError);\n }\n else if (result !== undefined) {\n // A synchronous result was returned\n onSuccess(result);\n }\n else if (index === plugins.length) {\n throw new Error(\"No promise has been returned or callback has been called.\");\n }\n }\n catch (e) {\n onError(e);\n }\n }\n function callback(err, result) {\n if (err) {\n onError(err);\n }\n else {\n onSuccess(result);\n }\n }\n function onSuccess(result) {\n // console.log(' success');\n resolve({\n plugin,\n result,\n });\n }\n function onError(error) {\n // console.log(' %s', err.message || err);\n lastError = {\n plugin,\n error,\n };\n runNextPlugin();\n }\n });\n}\n/**\n * Returns the value of the given property.\n * If the property is a function, then the result of the function is returned.\n * If the value is a RegExp, then it will be tested against the file URL.\n * If the value is an array, then it will be compared against the file extension.\n */\nfunction getResult(obj, prop, file, callback, $refs) {\n const value = obj[prop];\n if (typeof value === \"function\") {\n return value.apply(obj, [file, callback, $refs]);\n }\n if (!callback) {\n // The synchronous plugin functions (canParse and canRead)\n // allow a \"shorthand\" syntax, where the user can match\n // files by RegExp or by file extension.\n if (value instanceof RegExp) {\n return value.test(file.url);\n }\n else if (typeof value === \"string\") {\n return value === file.extension;\n }\n else if (Array.isArray(value)) {\n return value.indexOf(file.extension) !== -1;\n }\n }\n return value;\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst url = __importStar(require(\"./util/url.js\"));\nconst plugins = __importStar(require(\"./util/plugins.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\n/**\n * Reads and parses the specified file path or URL.\n */\nasync function parse(path, $refs, options) {\n // Remove the URL fragment, if any\n const hashIndex = path.indexOf(\"#\");\n let hash = \"\";\n if (hashIndex >= 0) {\n hash = path.substring(hashIndex);\n // Remove the URL fragment, if any\n path = path.substring(0, hashIndex);\n }\n // Add a new $Ref for this file, even though we don't have the value yet.\n // This ensures that we don't simultaneously read & parse the same file multiple times\n const $ref = $refs._add(path);\n // This \"file object\" will be passed to all resolvers and parsers.\n const file = {\n url: path,\n hash,\n extension: url.getExtension(path),\n };\n // Read the file and then parse the data\n try {\n const resolver = await readFile(file, options, $refs);\n $ref.pathType = resolver.plugin.name;\n file.data = resolver.result;\n const parser = await parseFile(file, options, $refs);\n $ref.value = parser.result;\n return parser.result;\n }\n catch (err) {\n if ((0, errors_js_1.isHandledError)(err)) {\n $ref.value = err;\n }\n throw err;\n }\n}\n/**\n * Reads the given file, using the configured resolver plugins\n *\n * @param file - An object containing information about the referenced file\n * @param file.url - The full URL of the referenced file\n * @param file.extension - The lowercased file extension (e.g. \".txt\", \".html\", etc.)\n * @param options\n * @param $refs\n * @returns\n * The promise resolves with the raw file contents and the resolver that was used.\n */\nasync function readFile(file, options, $refs) {\n // console.log('Reading %s', file.url);\n // Find the resolvers that can read this file\n let resolvers = plugins.all(options.resolve);\n resolvers = plugins.filter(resolvers, \"canRead\", file);\n // Run the resolvers, in order, until one of them succeeds\n plugins.sort(resolvers);\n try {\n const data = await plugins.run(resolvers, \"read\", file, $refs);\n return data;\n }\n catch (err) {\n if (!err && options.continueOnError) {\n // No resolver could be matched\n throw new errors_js_1.UnmatchedResolverError(file.url);\n }\n else if (!err || !(\"error\" in err)) {\n // Throw a generic, friendly error.\n throw ono_1.ono.syntax(`Unable to resolve $ref pointer \"${file.url}\"`);\n }\n // Throw the original error, if it's one of our own (user-friendly) errors.\n else if (err.error instanceof errors_js_1.ResolverError) {\n throw err.error;\n }\n else {\n throw new errors_js_1.ResolverError(err, file.url);\n }\n }\n}\n/**\n * Parses the given file's contents, using the configured parser plugins.\n *\n * @param file - An object containing information about the referenced file\n * @param file.url - The full URL of the referenced file\n * @param file.extension - The lowercased file extension (e.g. \".txt\", \".html\", etc.)\n * @param file.data - The file contents. This will be whatever data type was returned by the resolver\n * @param options\n * @param $refs\n *\n * @returns\n * The promise resolves with the parsed file contents and the parser that was used.\n */\nasync function parseFile(file, options, $refs) {\n // Find the parsers that can read this file type.\n // If none of the parsers are an exact match for this file, then we'll try ALL of them.\n // This handles situations where the file IS a supported type, just with an unknown extension.\n const allParsers = plugins.all(options.parse);\n const filteredParsers = plugins.filter(allParsers, \"canParse\", file);\n const parsers = filteredParsers.length > 0 ? filteredParsers : allParsers;\n // Run the parsers, in order, until one of them succeeds\n plugins.sort(parsers);\n try {\n const parser = await plugins.run(parsers, \"parse\", file, $refs);\n if (!parser.plugin.allowEmpty && isEmpty(parser.result)) {\n throw ono_1.ono.syntax(`Error parsing \"${file.url}\" as ${parser.plugin.name}. \\nParsed value is empty`);\n }\n else {\n return parser;\n }\n }\n catch (err) {\n if (!err && options.continueOnError) {\n // No resolver could be matched\n throw new errors_js_1.UnmatchedParserError(file.url);\n }\n else if (err && err.message && err.message.startsWith(\"Error parsing\")) {\n throw err;\n }\n else if (!err || !(\"error\" in err)) {\n throw ono_1.ono.syntax(`Unable to parse ${file.url}`);\n }\n else if (err.error instanceof errors_js_1.ParserError) {\n throw err.error;\n }\n else {\n throw new errors_js_1.ParserError(err.error.message, file.url);\n }\n }\n}\n/**\n * Determines whether the parsed value is \"empty\".\n *\n * @param value\n * @returns\n */\nfunction isEmpty(value) {\n return (value === undefined ||\n (typeof value === \"object\" && Object.keys(value).length === 0) ||\n (typeof value === \"string\" && value.trim().length === 0) ||\n (Buffer.isBuffer(value) && value.length === 0));\n}\nexports.default = parse;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nexports.default = {\n /**\n * The order that this parser will run, in relation to other parsers.\n */\n order: 100,\n /**\n * Whether to allow \"empty\" files. This includes zero-byte files, as well as empty JSON objects.\n */\n allowEmpty: true,\n /**\n * Determines whether this parser can parse a given file reference.\n * Parsers that match will be tried, in order, until one successfully parses the file.\n * Parsers that don't match will be skipped, UNLESS none of the parsers match, in which case\n * every parser will be tried.\n */\n canParse: \".json\",\n /**\n * Allow JSON files with byte order marks (BOM)\n */\n allowBOM: true,\n /**\n * Parses the given file as JSON\n */\n async parse(file) {\n let data = file.data;\n if (Buffer.isBuffer(data)) {\n data = data.toString();\n }\n if (typeof data === \"string\") {\n if (data.trim().length === 0) {\n return; // This mirrors the YAML behavior\n }\n else {\n try {\n return JSON.parse(data);\n }\n catch (e) {\n if (this.allowBOM) {\n try {\n // find the first curly brace\n const firstCurlyBrace = data.indexOf(\"{\");\n // remove any characters before the first curly brace\n data = data.slice(firstCurlyBrace);\n return JSON.parse(data);\n }\n catch (e) {\n throw new errors_js_1.ParserError(e.message, file.url);\n }\n }\n throw new errors_js_1.ParserError(e.message, file.url);\n }\n }\n }\n else {\n // data is already a JavaScript value (object, array, number, null, NaN, etc.)\n return data;\n }\n },\n};\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\n\nfunction formatError(exception, compact) {\n var where = '', message = exception.reason || '(unknown reason)';\n\n if (!exception.mark) return message;\n\n if (exception.mark.name) {\n where += 'in \"' + exception.mark.name + '\" ';\n }\n\n where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')';\n\n if (!compact && exception.mark.snippet) {\n where += '\\n\\n' + exception.mark.snippet;\n }\n\n return message + ' ' + where;\n}\n\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = formatError(this, false);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n return this.name + ': ' + formatError(this, compact);\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\n// get snippet for a single line, respecting maxLength\nfunction getLine(buffer, lineStart, lineEnd, position, maxLineLength) {\n var head = '';\n var tail = '';\n var maxHalfLength = Math.floor(maxLineLength / 2) - 1;\n\n if (position - lineStart > maxHalfLength) {\n head = ' ... ';\n lineStart = position - maxHalfLength + head.length;\n }\n\n if (lineEnd - position > maxHalfLength) {\n tail = ' ...';\n lineEnd = position + maxHalfLength - tail.length;\n }\n\n return {\n str: head + buffer.slice(lineStart, lineEnd).replace(/\\t/g, '→') + tail,\n pos: position - lineStart + head.length // relative position\n };\n}\n\n\nfunction padStart(string, max) {\n return common.repeat(' ', max - string.length) + string;\n}\n\n\nfunction makeSnippet(mark, options) {\n options = Object.create(options || null);\n\n if (!mark.buffer) return null;\n\n if (!options.maxLength) options.maxLength = 79;\n if (typeof options.indent !== 'number') options.indent = 1;\n if (typeof options.linesBefore !== 'number') options.linesBefore = 3;\n if (typeof options.linesAfter !== 'number') options.linesAfter = 2;\n\n var re = /\\r?\\n|\\r|\\0/g;\n var lineStarts = [ 0 ];\n var lineEnds = [];\n var match;\n var foundLineNo = -1;\n\n while ((match = re.exec(mark.buffer))) {\n lineEnds.push(match.index);\n lineStarts.push(match.index + match[0].length);\n\n if (mark.position <= match.index && foundLineNo < 0) {\n foundLineNo = lineStarts.length - 2;\n }\n }\n\n if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;\n\n var result = '', i, line;\n var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;\n var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);\n\n for (i = 1; i <= options.linesBefore; i++) {\n if (foundLineNo - i < 0) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo - i],\n lineEnds[foundLineNo - i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),\n maxLineLength\n );\n result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n' + result;\n }\n\n line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);\n result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\\n';\n\n for (i = 1; i <= options.linesAfter; i++) {\n if (foundLineNo + i >= lineEnds.length) break;\n line = getLine(\n mark.buffer,\n lineStarts[foundLineNo + i],\n lineEnds[foundLineNo + i],\n mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),\n maxLineLength\n );\n result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) +\n ' | ' + line.str + '\\n';\n }\n\n return result.replace(/\\n$/, '');\n}\n\n\nmodule.exports = makeSnippet;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'multi',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'representName',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.options = options; // keep original options in case user wants to extend this type later\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.representName = options['representName'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.multi = options['multi'] || false;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name) {\n var result = [];\n\n schema[name].forEach(function (currentType) {\n var newIndex = result.length;\n\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag &&\n previousType.kind === currentType.kind &&\n previousType.multi === currentType.multi) {\n\n newIndex = previousIndex;\n }\n });\n\n result[newIndex] = currentType;\n });\n\n return result;\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {},\n multi: {\n scalar: [],\n sequence: [],\n mapping: [],\n fallback: []\n }\n }, index, length;\n\n function collectType(type) {\n if (type.multi) {\n result.multi[type.kind].push(type);\n result.multi['fallback'].push(type);\n } else {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n return this.extend(definition);\n}\n\n\nSchema.prototype.extend = function extend(definition) {\n var implicit = [];\n var explicit = [];\n\n if (definition instanceof Type) {\n // Schema.extend(type)\n explicit.push(definition);\n\n } else if (Array.isArray(definition)) {\n // Schema.extend([ type1, type2, ... ])\n explicit = explicit.concat(definition);\n\n } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {\n // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] })\n if (definition.implicit) implicit = implicit.concat(definition.implicit);\n if (definition.explicit) explicit = explicit.concat(definition.explicit);\n\n } else {\n throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' +\n 'or a schema definition ({ implicit: [...], explicit: [...] })');\n }\n\n implicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n\n if (type.multi) {\n throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.');\n }\n });\n\n explicit.forEach(function (type) {\n if (!(type instanceof Type)) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n });\n\n var result = Object.create(Schema.prototype);\n\n result.implicit = (this.implicit || []).concat(implicit);\n result.explicit = (this.explicit || []).concat(explicit);\n\n result.compiledImplicit = compileList(result, 'implicit');\n result.compiledExplicit = compileList(result, 'explicit');\n result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);\n\n return result;\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; },\n empty: function () { return ''; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n\n\n if (ch === 'o') {\n // base 8\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits && ch !== '_';\n }\n }\n\n // base 10 (except 0)\n\n // value should not start with `_`;\n if (ch === '_') return false;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n // Should have digits and should not end with `_`\n if (!hasDigits || ch === '_') return false;\n\n return true;\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch;\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value.slice(2), 16);\n if (value[1] === 'o') return sign * parseInt(value.slice(2), 8);\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); },\n octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); },\n decimal: function (obj) { return obj.toString(10); },\n /* eslint-disable max-len */\n hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n // 2.5e4, 2.5 and integers\n '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' +\n // .2e4, .2\n // special case, seems not from spec\n '|\\\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' +\n // .inf\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n // .nan\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data) ||\n // Quick hack to not allow integers end with `_`\n // Probably should update regexp & check speed\n data[data.length - 1] === '_') {\n return false;\n }\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nmodule.exports = require('./failsafe').extend({\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nmodule.exports = require('./json');\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n return new Uint8Array(result);\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(obj) {\n return Object.prototype.toString.call(obj) === '[object Uint8Array]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nmodule.exports = require('./core').extend({\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar makeSnippet = require('./snippet');\nvar DEFAULT_SCHEMA = require('./schema/default');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n /* eslint-disable indent */\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(\n ((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00\n );\n}\n\n// set a property of a literal object, while protecting against prototype pollution,\n// see https://github.com/nodeca/js-yaml/issues/164 for more details\nfunction setProperty(object, key, value) {\n // used for this specific key only because Object.defineProperty is slow\n if (key === '__proto__') {\n Object.defineProperty(object, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: value\n });\n } else {\n object[key] = value;\n }\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n // (Hidden) Remove? makes the loader to expect YAML 1.1 documents\n // if such documents have no explicit %YAML directive\n this.legacy = options['legacy'] || false;\n\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n // position of first leading tab in the current line,\n // used to make sure there are no tabs in the indentation\n this.firstTabInLine = -1;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n var mark = {\n name: state.filename,\n buffer: state.input.slice(0, -1), // omit trailing \\0\n position: state.position,\n line: state.line,\n column: state.position - state.lineStart\n };\n\n mark.snippet = makeSnippet(mark);\n\n return new YAMLException(message, mark);\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n try {\n prefix = decodeURIComponent(prefix);\n } catch (err) {\n throwError(state, 'tag prefix is malformed: ' + prefix);\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length; _position < _length; _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n setProperty(destination, key, source[key]);\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode,\n startLine, startLineStart, startPos) {\n\n var index, quantity;\n\n // The output is a plain object here, so keys can only be strings.\n // We need to convert keyNode to a string, but doing so can hang the process\n // (deeply nested arrays that explode exponentially using aliases).\n if (Array.isArray(keyNode)) {\n keyNode = Array.prototype.slice.call(keyNode);\n\n for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {\n if (Array.isArray(keyNode[index])) {\n throwError(state, 'nested arrays are not supported inside keys');\n }\n\n if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {\n keyNode[index] = '[object Object]';\n }\n }\n }\n\n // Avoid code execution in load() via toString property\n // (still use its own toString for arrays, timestamps,\n // and whatever user schema extensions happen to have @@toStringTag)\n if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {\n keyNode = '[object Object]';\n }\n\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n state.line = startLine || state.line;\n state.lineStart = startLineStart || state.lineStart;\n state.position = startPos || state.position;\n throwError(state, 'duplicated mapping key');\n }\n\n setProperty(_result, keyNode, valueNode);\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n state.firstTabInLine = -1;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) {\n state.firstTabInLine = state.position;\n }\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _lineStart,\n _pos,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = Object.create(null),\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n } else if (ch === 0x2C/* , */) {\n // \"flow collection entries can never be completely empty\", as per YAML 1.2, section 7.4\n throwError(state, \"expected the node content, but found ','\");\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line; // Save the current line.\n _lineStart = state.lineStart;\n _pos = state.position;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _keyLine,\n _keyLineStart,\n _keyPos,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = Object.create(null),\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n // there is a leading tab before this token, so it can't be a block sequence/mapping;\n // it can still be flow sequence/mapping or a scalar\n if (state.firstTabInLine !== -1) return false;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n if (!atExplicitKey && state.firstTabInLine !== -1) {\n state.position = state.firstTabInLine;\n throwError(state, 'tab characters must not be used in indentation');\n }\n\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n\n if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n // Neither implicit nor explicit notation.\n // Reading is done. Go to the epilogue.\n break;\n }\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (atExplicitKey) {\n _keyLine = state.line;\n _keyLineStart = state.lineStart;\n _keyPos = state.position;\n }\n\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n try {\n tagName = decodeURIComponent(tagName);\n } catch (err) {\n throwError(state, 'tag name is malformed: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!_hasOwnProperty.call(state.anchorMap, alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this<parent\n atNewLine = false,\n hasContent = false,\n typeIndex,\n typeQuantity,\n typeList,\n type,\n flowIndent,\n blockIndent;\n\n if (state.listener !== null) {\n state.listener('open', state);\n }\n\n state.tag = null;\n state.anchor = null;\n state.kind = null;\n state.result = null;\n\n allowBlockStyles = allowBlockScalars = allowBlockCollections =\n CONTEXT_BLOCK_OUT === nodeContext ||\n CONTEXT_BLOCK_IN === nodeContext;\n\n if (allowToSeek) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag === null) {\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n\n } else if (state.tag === '?') {\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only automatically assigned to plain scalars.\n //\n // We only need to check kind conformity in case user explicitly assigns '?'\n // tag, for example like this: \"!<?> [0]\"\n //\n if (state.result !== null && state.kind !== 'scalar') {\n throwError(state, 'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"' + state.kind + '\"');\n }\n\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (state.tag !== '!') {\n if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n } else {\n // looking for multi type\n type = null;\n typeList = state.typeMap.multi[state.kind || 'fallback'];\n\n for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {\n if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {\n type = typeList[typeIndex];\n break;\n }\n }\n }\n\n if (!type) {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result, state.tag);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = Object.create(null);\n state.anchorMap = Object.create(null);\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n var nullpos = input.indexOf('\\0');\n\n if (nullpos !== -1) {\n state.position = nullpos;\n throwError(state, 'null byte is not allowed in input');\n }\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') {\n options = iterator;\n iterator = null;\n }\n\n var documents = loadDocuments(input, options);\n\n if (typeof iterator !== 'function') {\n return documents;\n }\n\n for (var index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_SCHEMA = require('./schema/default');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_BOM = 0xFEFF;\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_CARRIAGE_RETURN = 0x0D; /* CR */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_EQUALS = 0x3D; /* = */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nvar DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\\.[0-9_]*)?$/;\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\n\nvar QUOTING_TYPE_SINGLE = 1,\n QUOTING_TYPE_DOUBLE = 2;\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.noArrayIndent = options['noArrayIndent'] || false;\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n this.condenseFlow = options['condenseFlow'] || false;\n this.quotingType = options['quotingType'] === '\"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;\n this.forceQuotes = options['forceQuotes'] || false;\n this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// [34] ns-char ::= nb-char - s-white\n// [27] nb-char ::= c-printable - b-char - c-byte-order-mark\n// [26] b-char ::= b-line-feed | b-carriage-return\n// Including s-white (for some reason, examples doesn't match specs in this aspect)\n// ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark\nfunction isNsCharOrWhitespace(c) {\n return isPrintable(c)\n && c !== CHAR_BOM\n // - b-char\n && c !== CHAR_CARRIAGE_RETURN\n && c !== CHAR_LINE_FEED;\n}\n\n// [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out\n// c = flow-in ⇒ ns-plain-safe-in\n// c = block-key ⇒ ns-plain-safe-out\n// c = flow-key ⇒ ns-plain-safe-in\n// [128] ns-plain-safe-out ::= ns-char\n// [129] ns-plain-safe-in ::= ns-char - c-flow-indicator\n// [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” )\n// | ( /* An ns-char preceding */ “#” )\n// | ( “:” /* Followed by an ns-plain-safe(c) */ )\nfunction isPlainSafe(c, prev, inblock) {\n var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);\n var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);\n return (\n // ns-plain-safe\n inblock ? // c = flow-in\n cIsNsCharOrWhitespace\n : cIsNsCharOrWhitespace\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n )\n // ns-plain-char\n && c !== CHAR_SHARP // false on '#'\n && !(prev === CHAR_COLON && !cIsNsChar) // false on ': '\n || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#'\n || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]'\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part\n return isPrintable(c) && c !== CHAR_BOM\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_EQUALS\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\n// Simplified test for values allowed as the last character in plain style.\nfunction isPlainSafeLast(c) {\n // just not whitespace or colon, it will be checked to be plain character later\n return !isWhitespace(c) && c !== CHAR_COLON;\n}\n\n// Same as 'string'.codePointAt(pos), but works in older browsers.\nfunction codePointAt(string, pos) {\n var first = string.charCodeAt(pos), second;\n if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) {\n second = string.charCodeAt(pos + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\n\n// Determines whether block indentation indicator is required.\nfunction needIndentIndicator(string) {\n var leadingSpaceRe = /^\\n* /;\n return leadingSpaceRe.test(string);\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth,\n testAmbiguousType, quotingType, forceQuotes, inblock) {\n\n var i;\n var char = 0;\n var prevChar = null;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(codePointAt(string, 0))\n && isPlainSafeLast(codePointAt(string, string.length - 1));\n\n if (singleLineOnly || forceQuotes) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char, prevChar, inblock);\n prevChar = char;\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n if (plain && !forceQuotes && !testAmbiguousType(string)) {\n return STYLE_PLAIN;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (indentPerLevel > 9 && needIndentIndicator(string)) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n if (!forceQuotes) {\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n }\n return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey, inblock) {\n state.dump = (function () {\n if (string.length === 0) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? '\"\"' : \"''\";\n }\n if (!state.noCompatMode) {\n if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) {\n return state.quotingType === QUOTING_TYPE_DOUBLE ? ('\"' + string + '\"') : (\"'\" + string + \"'\");\n }\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth,\n testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) {\n\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char = 0;\n var escapeSeq;\n\n for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) {\n char = codePointAt(string, i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n\n if (!escapeSeq && isPrintable(char)) {\n result += string[i];\n if (char >= 0x10000) result += string[i + 1];\n } else {\n result += escapeSeq || encodeHex(char);\n }\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level, value, false, false) ||\n (typeof value === 'undefined' &&\n writeNode(state, level, null, false, false))) {\n\n if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '');\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length,\n value;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n value = object[index];\n\n if (state.replacer) {\n value = state.replacer.call(object, String(index), value);\n }\n\n // Write only valid elements, put null instead of invalid elements.\n if (writeNode(state, level + 1, value, true, true, false, true) ||\n (typeof value === 'undefined' &&\n writeNode(state, level + 1, null, true, true, false, true))) {\n\n if (!compact || _result !== '') {\n _result += generateNextLine(state, level);\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n _result += '-';\n } else {\n _result += '- ';\n }\n\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n\n pairBuffer = '';\n if (_result !== '') pairBuffer += ', ';\n\n if (state.condenseFlow) pairBuffer += '\"';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + (state.condenseFlow ? '\"' : '') + ':' + (state.condenseFlow ? '' : ' ');\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || _result !== '') {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (state.replacer) {\n objectValue = state.replacer.call(object, objectKey, objectValue);\n }\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n if (explicit) {\n if (type.multi && type.representName) {\n state.tag = type.representName(object);\n } else {\n state.tag = type.tag;\n }\n } else {\n state.tag = '?';\n }\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey, isblockseq) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n var inblock = block;\n var tagStr;\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n if (state.noArrayIndent && !isblockseq && level > 0) {\n writeBlockSequence(state, level - 1, state.dump, compact);\n } else {\n writeBlockSequence(state, level, state.dump, compact);\n }\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey, inblock);\n }\n } else if (type === '[object Undefined]') {\n return false;\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n // Need to encode all characters except those allowed by the spec:\n //\n // [35] ns-dec-digit ::= [#x30-#x39] /* 0-9 */\n // [36] ns-hex-digit ::= ns-dec-digit\n // | [#x41-#x46] /* A-F */ | [#x61-#x66] /* a-f */\n // [37] ns-ascii-letter ::= [#x41-#x5A] /* A-Z */ | [#x61-#x7A] /* a-z */\n // [38] ns-word-char ::= ns-dec-digit | ns-ascii-letter | “-”\n // [39] ns-uri-char ::= “%” ns-hex-digit ns-hex-digit | ns-word-char | “#”\n // | “;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” | “$” | “,”\n // | “_” | “.” | “!” | “~” | “*” | “'” | “(” | “)” | “[” | “]”\n //\n // Also need to encode '!' because it has special meaning (end of tag prefix).\n //\n tagStr = encodeURI(\n state.tag[0] === '!' ? state.tag.slice(1) : state.tag\n ).replace(/!/g, '%21');\n\n if (state.tag[0] === '!') {\n tagStr = '!' + tagStr;\n } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') {\n tagStr = '!!' + tagStr.slice(18);\n } else {\n tagStr = '!<' + tagStr + '>';\n }\n\n state.dump = tagStr + ' ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n var value = input;\n\n if (state.replacer) {\n value = state.replacer.call({ '': value }, '', value);\n }\n\n if (writeNode(state, 0, value, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nmodule.exports.dump = dump;\n","'use strict';\n\n\nvar loader = require('./lib/loader');\nvar dumper = require('./lib/dumper');\n\n\nfunction renamed(from, to) {\n return function () {\n throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' +\n 'Use yaml.' + to + ' instead, which is now safe by default.');\n };\n}\n\n\nmodule.exports.Type = require('./lib/type');\nmodule.exports.Schema = require('./lib/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./lib/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./lib/schema/json');\nmodule.exports.CORE_SCHEMA = require('./lib/schema/core');\nmodule.exports.DEFAULT_SCHEMA = require('./lib/schema/default');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.YAMLException = require('./lib/exception');\n\n// Re-export all types in case user wants to create custom schema\nmodule.exports.types = {\n binary: require('./lib/type/binary'),\n float: require('./lib/type/float'),\n map: require('./lib/type/map'),\n null: require('./lib/type/null'),\n pairs: require('./lib/type/pairs'),\n set: require('./lib/type/set'),\n timestamp: require('./lib/type/timestamp'),\n bool: require('./lib/type/bool'),\n int: require('./lib/type/int'),\n merge: require('./lib/type/merge'),\n omap: require('./lib/type/omap'),\n seq: require('./lib/type/seq'),\n str: require('./lib/type/str')\n};\n\n// Removed functions from JS-YAML 3.0.x\nmodule.exports.safeLoad = renamed('safeLoad', 'load');\nmodule.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll');\nmodule.exports.safeDump = renamed('safeDump', 'dump');\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nconst js_yaml_1 = __importDefault(require(\"js-yaml\"));\nconst js_yaml_2 = require(\"js-yaml\");\nexports.default = {\n /**\n * The order that this parser will run, in relation to other parsers.\n */\n order: 200,\n /**\n * Whether to allow \"empty\" files. This includes zero-byte files, as well as empty JSON objects.\n */\n allowEmpty: true,\n /**\n * Determines whether this parser can parse a given file reference.\n * Parsers that match will be tried, in order, until one successfully parses the file.\n * Parsers that don't match will be skipped, UNLESS none of the parsers match, in which case\n * every parser will be tried.\n */\n canParse: [\".yaml\", \".yml\", \".json\"], // JSON is valid YAML\n /**\n * Parses the given file as YAML\n *\n * @param file - An object containing information about the referenced file\n * @param file.url - The full URL of the referenced file\n * @param file.extension - The lowercased file extension (e.g. \".txt\", \".html\", etc.)\n * @param file.data - The file contents. This will be whatever data type was returned by the resolver\n * @returns\n */\n async parse(file) {\n let data = file.data;\n if (Buffer.isBuffer(data)) {\n data = data.toString();\n }\n if (typeof data === \"string\") {\n try {\n return js_yaml_1.default.load(data, { schema: js_yaml_2.JSON_SCHEMA });\n }\n catch (e) {\n throw new errors_js_1.ParserError(e?.message || \"Parser Error\", file.url);\n }\n }\n else {\n // data is already a JavaScript value (object, array, number, null, NaN, etc.)\n return data;\n }\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_js_1 = require(\"../util/errors.js\");\nconst TEXT_REGEXP = /\\.(txt|htm|html|md|xml|js|min|map|css|scss|less|svg)$/i;\nexports.default = {\n /**\n * The order that this parser will run, in relation to other parsers.\n */\n order: 300,\n /**\n * Whether to allow \"empty\" files (zero bytes).\n */\n allowEmpty: true,\n /**\n * The encoding that the text is expected to be in.\n */\n encoding: \"utf8\",\n /**\n * Determines whether this parser can parse a given file reference.\n * Parsers that return true will be tried, in order, until one successfully parses the file.\n * Parsers that return false will be skipped, UNLESS all parsers returned false, in which case\n * every parser will be tried.\n */\n canParse(file) {\n // Use this parser if the file is a string or Buffer, and has a known text-based extension\n return (typeof file.data === \"string\" || Buffer.isBuffer(file.data)) && TEXT_REGEXP.test(file.url);\n },\n /**\n * Parses the given file as text\n */\n parse(file) {\n if (typeof file.data === \"string\") {\n return file.data;\n }\n else if (Buffer.isBuffer(file.data)) {\n return file.data.toString(this.encoding);\n }\n else {\n throw new errors_js_1.ParserError(\"data is not text\", file.url);\n }\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst BINARY_REGEXP = /\\.(jpeg|jpg|gif|png|bmp|ico)$/i;\nexports.default = {\n /**\n * The order that this parser will run, in relation to other parsers.\n */\n order: 400,\n /**\n * Whether to allow \"empty\" files (zero bytes).\n */\n allowEmpty: true,\n /**\n * Determines whether this parser can parse a given file reference.\n * Parsers that return true will be tried, in order, until one successfully parses the file.\n * Parsers that return false will be skipped, UNLESS all parsers returned false, in which case\n * every parser will be tried.\n */\n canParse(file) {\n // Use this parser if the file is a Buffer, and has a known binary extension\n return Buffer.isBuffer(file.data) && BINARY_REGEXP.test(file.url);\n },\n /**\n * Parses the given data as a Buffer (byte array).\n */\n parse(file) {\n if (Buffer.isBuffer(file.data)) {\n return file.data;\n }\n else {\n // This will reject if data is anything other than a string or typed array\n return Buffer.from(file.data);\n }\n },\n};\n","export default {}","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs_1 = __importDefault(require(\"fs\"));\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst url = __importStar(require(\"../util/url.js\"));\nconst errors_js_1 = require(\"../util/errors.js\");\nexports.default = {\n /**\n * The order that this resolver will run, in relation to other resolvers.\n */\n order: 100,\n /**\n * Determines whether this resolver can read a given file reference.\n * Resolvers that return true will be tried, in order, until one successfully resolves the file.\n * Resolvers that return false will not be given a chance to resolve the file.\n */\n canRead(file) {\n return url.isFileSystemPath(file.url);\n },\n /**\n * Reads the given file and returns its raw contents as a Buffer.\n */\n async read(file) {\n let path;\n try {\n path = url.toFileSystemPath(file.url);\n }\n catch (err) {\n throw new errors_js_1.ResolverError(ono_1.ono.uri(err, `Malformed URI: ${file.url}`), file.url);\n }\n try {\n return await fs_1.default.promises.readFile(path);\n }\n catch (err) {\n throw new errors_js_1.ResolverError((0, ono_1.ono)(err, `Error opening file \"${path}\"`), path);\n }\n },\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst url = __importStar(require(\"../util/url.js\"));\nconst errors_js_1 = require(\"../util/errors.js\");\nexports.default = {\n /**\n * The order that this resolver will run, in relation to other resolvers.\n */\n order: 200,\n /**\n * HTTP headers to send when downloading files.\n *\n * @example:\n * {\n * \"User-Agent\": \"JSON Schema $Ref Parser\",\n * Accept: \"application/json\"\n * }\n */\n headers: null,\n /**\n * HTTP request timeout (in milliseconds).\n */\n timeout: 60000, // 60 seconds\n /**\n * The maximum number of HTTP redirects to follow.\n * To disable automatic following of redirects, set this to zero.\n */\n redirects: 5,\n /**\n * The `withCredentials` option of XMLHttpRequest.\n * Set this to `true` if you're downloading files from a CORS-enabled server that requires authentication\n */\n withCredentials: false,\n /**\n * Determines whether this resolver can read a given file reference.\n * Resolvers that return true will be tried in order, until one successfully resolves the file.\n * Resolvers that return false will not be given a chance to resolve the file.\n */\n canRead(file) {\n return url.isHttp(file.url);\n },\n /**\n * Reads the given URL and returns its raw contents as a Buffer.\n */\n read(file) {\n const u = url.parse(file.url);\n if (typeof window !== \"undefined\" && !u.protocol) {\n // Use the protocol of the current page\n u.protocol = url.parse(location.href).protocol;\n }\n return download(u, this);\n },\n};\n/**\n * Downloads the given file.\n * @returns\n * The promise resolves with the raw downloaded data, or rejects if there is an HTTP error.\n */\nasync function download(u, httpOptions, _redirects) {\n u = url.parse(u);\n const redirects = _redirects || [];\n redirects.push(u.href);\n try {\n const res = await get(u, httpOptions);\n if (res.status >= 400) {\n throw (0, ono_1.ono)({ status: res.status }, `HTTP ERROR ${res.status}`);\n }\n else if (res.status >= 300) {\n if (!Number.isNaN(httpOptions.redirects) && redirects.length > httpOptions.redirects) {\n throw new errors_js_1.ResolverError((0, ono_1.ono)({ status: res.status }, `Error downloading ${redirects[0]}. \\nToo many redirects: \\n ${redirects.join(\" \\n \")}`));\n }\n else if (!(\"location\" in res.headers) || !res.headers.location) {\n throw (0, ono_1.ono)({ status: res.status }, `HTTP ${res.status} redirect with no location header`);\n }\n else {\n const redirectTo = url.resolve(u.href, res.headers.location);\n return download(redirectTo, httpOptions, redirects);\n }\n }\n else {\n if (res.body) {\n const buf = await res.arrayBuffer();\n return Buffer.from(buf);\n }\n return Buffer.alloc(0);\n }\n }\n catch (err) {\n throw new errors_js_1.ResolverError((0, ono_1.ono)(err, `Error downloading ${u.href}`), u.href);\n }\n}\n/**\n * Sends an HTTP GET request.\n * The promise resolves with the HTTP Response object.\n */\nasync function get(u, httpOptions) {\n let controller;\n let timeoutId;\n if (httpOptions.timeout) {\n controller = new AbortController();\n timeoutId = setTimeout(() => controller.abort(), httpOptions.timeout);\n }\n const response = await fetch(u, {\n method: \"GET\",\n headers: httpOptions.headers || {},\n credentials: httpOptions.withCredentials ? \"include\" : \"same-origin\",\n signal: controller ? controller.signal : null,\n });\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n return response;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getNewOptions = exports.getJsonSchemaRefParserDefaultOptions = void 0;\nconst json_js_1 = __importDefault(require(\"./parsers/json.js\"));\nconst yaml_js_1 = __importDefault(require(\"./parsers/yaml.js\"));\nconst text_js_1 = __importDefault(require(\"./parsers/text.js\"));\nconst binary_js_1 = __importDefault(require(\"./parsers/binary.js\"));\nconst file_js_1 = __importDefault(require(\"./resolvers/file.js\"));\nconst http_js_1 = __importDefault(require(\"./resolvers/http.js\"));\nconst getJsonSchemaRefParserDefaultOptions = () => {\n const defaults = {\n /**\n * Determines how different types of files will be parsed.\n *\n * You can add additional parsers of your own, replace an existing one with\n * your own implementation, or disable any parser by setting it to false.\n */\n parse: {\n json: { ...json_js_1.default },\n yaml: { ...yaml_js_1.default },\n text: { ...text_js_1.default },\n binary: { ...binary_js_1.default },\n },\n /**\n * Determines how JSON References will be resolved.\n *\n * You can add additional resolvers of your own, replace an existing one with\n * your own implementation, or disable any resolver by setting it to false.\n */\n resolve: {\n file: { ...file_js_1.default },\n http: { ...http_js_1.default },\n /**\n * Determines whether external $ref pointers will be resolved.\n * If this option is disabled, then none of above resolvers will be called.\n * Instead, external $ref pointers will simply be ignored.\n *\n * @type {boolean}\n */\n external: true,\n },\n /**\n * By default, JSON Schema $Ref Parser throws the first error it encounters. Setting `continueOnError` to `true`\n * causes it to keep processing as much as possible and then throw a single error that contains all errors\n * that were encountered.\n */\n continueOnError: false,\n /**\n * Determines the types of JSON references that are allowed.\n */\n dereference: {\n /**\n * Dereference circular (recursive) JSON references?\n * If false, then a {@link ReferenceError} will be thrown if a circular reference is found.\n * If \"ignore\", then circular references will not be dereferenced.\n *\n * @type {boolean|string}\n */\n circular: true,\n /**\n * A function, called for each path, which can return true to stop this path and all\n * subpaths from being dereferenced further. This is useful in schemas where some\n * subpaths contain literal $ref keys that should not be dereferenced.\n *\n * @type {function}\n */\n excludedPathMatcher: () => false,\n referenceResolution: \"relative\",\n },\n mutateInputSchema: true,\n };\n return defaults;\n};\nexports.getJsonSchemaRefParserDefaultOptions = getJsonSchemaRefParserDefaultOptions;\nconst getNewOptions = (options) => {\n const newOptions = (0, exports.getJsonSchemaRefParserDefaultOptions)();\n if (options) {\n merge(newOptions, options);\n }\n return newOptions;\n};\nexports.getNewOptions = getNewOptions;\n/**\n * Merges the properties of the source object into the target object.\n *\n * @param target - The object that we're populating\n * @param source - The options that are being merged\n * @returns\n */\nfunction merge(target, source) {\n if (isMergeable(source)) {\n // prevent prototype pollution\n const keys = Object.keys(source).filter((key) => ![\"__proto__\", \"constructor\", \"prototype\"].includes(key));\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const sourceSetting = source[key];\n const targetSetting = target[key];\n if (isMergeable(sourceSetting)) {\n // It's a nested object, so merge it recursively\n target[key] = merge(targetSetting || {}, sourceSetting);\n }\n else if (sourceSetting !== undefined) {\n // It's a scalar value, function, or array. No merging necessary. Just overwrite the target value.\n target[key] = sourceSetting;\n }\n }\n }\n return target;\n}\n/**\n * Determines whether the given value can be merged,\n * or if it is a scalar value that should just override the target value.\n *\n * @param val\n * @returns\n */\nfunction isMergeable(val) {\n return val && typeof val === \"object\" && !Array.isArray(val) && !(val instanceof RegExp) && !(val instanceof Date);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeArgs = normalizeArgs;\nconst options_js_1 = require(\"./options.js\");\n/**\n * Normalizes the given arguments, accounting for optional args.\n */\nfunction normalizeArgs(_args) {\n let path;\n let schema;\n let options;\n let callback;\n const args = Array.prototype.slice.call(_args);\n if (typeof args[args.length - 1] === \"function\") {\n // The last parameter is a callback function\n callback = args.pop();\n }\n if (typeof args[0] === \"string\") {\n // The first parameter is the path\n path = args[0];\n if (typeof args[2] === \"object\") {\n // The second parameter is the schema, and the third parameter is the options\n schema = args[1];\n options = args[2];\n }\n else {\n // The second parameter is the options\n schema = undefined;\n options = args[1];\n }\n }\n else {\n // The first parameter is the schema\n path = \"\";\n schema = args[0];\n options = args[1];\n }\n try {\n options = (0, options_js_1.getNewOptions)(options);\n }\n catch (e) {\n console.error(`JSON Schema Ref Parser: Error normalizing options: ${e}`);\n }\n if (!options.mutateInputSchema && typeof schema === \"object\") {\n // Make a deep clone of the schema, so that we don't alter the original object\n schema = JSON.parse(JSON.stringify(schema));\n }\n return {\n path,\n schema,\n options,\n callback,\n };\n}\nexports.default = normalizeArgs;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst pointer_js_1 = __importDefault(require(\"./pointer.js\"));\nconst parse_js_1 = __importDefault(require(\"./parse.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\n/**\n * Crawls the JSON schema, finds all external JSON references, and resolves their values.\n * This method does not mutate the JSON schema. The resolved values are added to {@link $RefParser#$refs}.\n *\n * NOTE: We only care about EXTERNAL references here. INTERNAL references are only relevant when dereferencing.\n *\n * @returns\n * The promise resolves once all JSON references in the schema have been resolved,\n * including nested references that are contained in externally-referenced files.\n */\nfunction resolveExternal(parser, options) {\n if (!options.resolve?.external) {\n // Nothing to resolve, so exit early\n return Promise.resolve();\n }\n try {\n // console.log('Resolving $ref pointers in %s', parser.$refs._root$Ref.path);\n const promises = crawl(parser.schema, parser.$refs._root$Ref.path + \"#\", parser.$refs, options);\n return Promise.all(promises);\n }\n catch (e) {\n return Promise.reject(e);\n }\n}\n/**\n * Recursively crawls the given value, and resolves any external JSON references.\n *\n * @param obj - The value to crawl. If it's not an object or array, it will be ignored.\n * @param path - The full path of `obj`, possibly with a JSON Pointer in the hash\n * @param {boolean} external - Whether `obj` was found in an external document.\n * @param $refs\n * @param options\n * @param seen - Internal.\n *\n * @returns\n * Returns an array of promises. There will be one promise for each JSON reference in `obj`.\n * If `obj` does not contain any JSON references, then the array will be empty.\n * If any of the JSON references point to files that contain additional JSON references,\n * then the corresponding promise will internally reference an array of promises.\n */\nfunction crawl(obj, path, $refs, options, seen, external) {\n seen || (seen = new Set());\n let promises = [];\n if (obj && typeof obj === \"object\" && !ArrayBuffer.isView(obj) && !seen.has(obj)) {\n seen.add(obj); // Track previously seen objects to avoid infinite recursion\n if (ref_js_1.default.isExternal$Ref(obj)) {\n promises.push(resolve$Ref(obj, path, $refs, options));\n }\n const keys = Object.keys(obj);\n for (const key of keys) {\n const keyPath = pointer_js_1.default.join(path, key);\n const value = obj[key];\n promises = promises.concat(crawl(value, keyPath, $refs, options, seen, external));\n }\n }\n return promises;\n}\n/**\n * Resolves the given JSON Reference, and then crawls the resulting value.\n *\n * @param $ref - The JSON Reference to resolve\n * @param path - The full path of `$ref`, possibly with a JSON Pointer in the hash\n * @param $refs\n * @param options\n *\n * @returns\n * The promise resolves once all JSON references in the object have been resolved,\n * including nested references that are contained in externally-referenced files.\n */\nasync function resolve$Ref($ref, path, $refs, options) {\n const shouldResolveOnCwd = options.dereference?.externalReferenceResolution === \"root\";\n const resolvedPath = url.resolve(shouldResolveOnCwd ? url.cwd() : path, $ref.$ref);\n const withoutHash = url.stripHash(resolvedPath);\n // $ref.$ref = url.relative($refs._root$Ref.path, resolvedPath);\n // Do we already have this $ref?\n const ref = $refs._$refs[withoutHash];\n if (ref) {\n // We've already parsed this $ref, so use the existing value\n return Promise.resolve(ref.value);\n }\n // Parse the $referenced file/url\n try {\n const result = await (0, parse_js_1.default)(resolvedPath, $refs, options);\n // Crawl the parsed value\n // console.log('Resolving $ref pointers in %s', withoutHash);\n const promises = crawl(result, withoutHash + \"#\", $refs, options, new Set(), true);\n return Promise.all(promises);\n }\n catch (err) {\n if (!options?.continueOnError || !(0, errors_js_1.isHandledError)(err)) {\n throw err;\n }\n if ($refs._$refs[withoutHash]) {\n err.source = decodeURI(url.stripHash(path));\n err.path = url.safePointerToPath(url.getHash(path));\n }\n return [];\n }\n}\nexports.default = resolveExternal;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst pointer_js_1 = __importDefault(require(\"./pointer.js\"));\nconst url = __importStar(require(\"./util/url.js\"));\n/**\n * Bundles all external JSON references into the main JSON schema, thus resulting in a schema that\n * only has *internal* references, not any *external* references.\n * This method mutates the JSON schema object, adding new references and re-mapping existing ones.\n *\n * @param parser\n * @param options\n */\nfunction bundle(parser, options) {\n // console.log('Bundling $ref pointers in %s', parser.$refs._root$Ref.path);\n // Build an inventory of all $ref pointers in the JSON Schema\n const inventory = [];\n crawl(parser, \"schema\", parser.$refs._root$Ref.path + \"#\", \"#\", 0, inventory, parser.$refs, options);\n // Remap all $ref pointers\n remap(inventory);\n}\n/**\n * Recursively crawls the given value, and inventories all JSON references.\n *\n * @param parent - The object containing the value to crawl. If the value is not an object or array, it will be ignored.\n * @param key - The property key of `parent` to be crawled\n * @param path - The full path of the property being crawled, possibly with a JSON Pointer in the hash\n * @param pathFromRoot - The path of the property being crawled, from the schema root\n * @param indirections\n * @param inventory - An array of already-inventoried $ref pointers\n * @param $refs\n * @param options\n */\nfunction crawl(parent, key, path, pathFromRoot, indirections, inventory, $refs, options) {\n const obj = key === null ? parent : parent[key];\n if (obj && typeof obj === \"object\" && !ArrayBuffer.isView(obj)) {\n if (ref_js_1.default.isAllowed$Ref(obj)) {\n inventory$Ref(parent, key, path, pathFromRoot, indirections, inventory, $refs, options);\n }\n else {\n // Crawl the object in a specific order that's optimized for bundling.\n // This is important because it determines how `pathFromRoot` gets built,\n // which later determines which keys get dereferenced and which ones get remapped\n const keys = Object.keys(obj).sort((a, b) => {\n // Most people will expect references to be bundled into the the \"definitions\" property,\n // so we always crawl that property first, if it exists.\n if (a === \"definitions\") {\n return -1;\n }\n else if (b === \"definitions\") {\n return 1;\n }\n else {\n // Otherwise, crawl the keys based on their length.\n // This produces the shortest possible bundled references\n return a.length - b.length;\n }\n });\n for (const key of keys) {\n const keyPath = pointer_js_1.default.join(path, key);\n const keyPathFromRoot = pointer_js_1.default.join(pathFromRoot, key);\n const value = obj[key];\n if (ref_js_1.default.isAllowed$Ref(value)) {\n inventory$Ref(obj, key, path, keyPathFromRoot, indirections, inventory, $refs, options);\n }\n else {\n crawl(obj, key, keyPath, keyPathFromRoot, indirections, inventory, $refs, options);\n }\n }\n }\n }\n}\n/**\n * Inventories the given JSON Reference (i.e. records detailed information about it so we can\n * optimize all $refs in the schema), and then crawls the resolved value.\n *\n * @param $refParent - The object that contains a JSON Reference as one of its keys\n * @param $refKey - The key in `$refParent` that is a JSON Reference\n * @param path - The full path of the JSON Reference at `$refKey`, possibly with a JSON Pointer in the hash\n * @param indirections - unknown\n * @param pathFromRoot - The path of the JSON Reference at `$refKey`, from the schema root\n * @param inventory - An array of already-inventoried $ref pointers\n * @param $refs\n * @param options\n */\nfunction inventory$Ref($refParent, $refKey, path, pathFromRoot, indirections, inventory, $refs, options) {\n const $ref = $refKey === null ? $refParent : $refParent[$refKey];\n const $refPath = url.resolve(path, $ref.$ref);\n const pointer = $refs._resolve($refPath, pathFromRoot, options);\n if (pointer === null) {\n return;\n }\n const parsed = pointer_js_1.default.parse(pathFromRoot);\n const depth = parsed.length;\n const file = url.stripHash(pointer.path);\n const hash = url.getHash(pointer.path);\n const external = file !== $refs._root$Ref.path;\n const extended = ref_js_1.default.isExtended$Ref($ref);\n indirections += pointer.indirections;\n const existingEntry = findInInventory(inventory, $refParent, $refKey);\n if (existingEntry) {\n // This $Ref has already been inventoried, so we don't need to process it again\n if (depth < existingEntry.depth || indirections < existingEntry.indirections) {\n removeFromInventory(inventory, existingEntry);\n }\n else {\n return;\n }\n }\n inventory.push({\n $ref, // The JSON Reference (e.g. {$ref: string})\n parent: $refParent, // The object that contains this $ref pointer\n key: $refKey, // The key in `parent` that is the $ref pointer\n pathFromRoot, // The path to the $ref pointer, from the JSON Schema root\n depth, // How far from the JSON Schema root is this $ref pointer?\n file, // The file that the $ref pointer resolves to\n hash, // The hash within `file` that the $ref pointer resolves to\n value: pointer.value, // The resolved value of the $ref pointer\n circular: pointer.circular, // Is this $ref pointer DIRECTLY circular? (i.e. it references itself)\n extended, // Does this $ref extend its resolved value? (i.e. it has extra properties, in addition to \"$ref\")\n external, // Does this $ref pointer point to a file other than the main JSON Schema file?\n indirections, // The number of indirect references that were traversed to resolve the value\n });\n // Recursively crawl the resolved value\n if (!existingEntry || external) {\n crawl(pointer.value, null, pointer.path, pathFromRoot, indirections + 1, inventory, $refs, options);\n }\n}\n/**\n * Re-maps every $ref pointer, so that they're all relative to the root of the JSON Schema.\n * Each referenced value is dereferenced EXACTLY ONCE. All subsequent references to the same\n * value are re-mapped to point to the first reference.\n *\n * @example: {\n * first: { $ref: somefile.json#/some/part },\n * second: { $ref: somefile.json#/another/part },\n * third: { $ref: somefile.json },\n * fourth: { $ref: somefile.json#/some/part/sub/part }\n * }\n *\n * In this example, there are four references to the same file, but since the third reference points\n * to the ENTIRE file, that's the only one we need to dereference. The other three can just be\n * remapped to point inside the third one.\n *\n * On the other hand, if the third reference DIDN'T exist, then the first and second would both need\n * to be dereferenced, since they point to different parts of the file. The fourth reference does NOT\n * need to be dereferenced, because it can be remapped to point inside the first one.\n *\n * @param inventory\n */\nfunction remap(inventory) {\n // Group & sort all the $ref pointers, so they're in the order that we need to dereference/remap them\n inventory.sort((a, b) => {\n if (a.file !== b.file) {\n // Group all the $refs that point to the same file\n return a.file < b.file ? -1 : +1;\n }\n else if (a.hash !== b.hash) {\n // Group all the $refs that point to the same part of the file\n return a.hash < b.hash ? -1 : +1;\n }\n else if (a.circular !== b.circular) {\n // If the $ref points to itself, then sort it higher than other $refs that point to this $ref\n return a.circular ? -1 : +1;\n }\n else if (a.extended !== b.extended) {\n // If the $ref extends the resolved value, then sort it lower than other $refs that don't extend the value\n return a.extended ? +1 : -1;\n }\n else if (a.indirections !== b.indirections) {\n // Sort direct references higher than indirect references\n return a.indirections - b.indirections;\n }\n else if (a.depth !== b.depth) {\n // Sort $refs by how close they are to the JSON Schema root\n return a.depth - b.depth;\n }\n else {\n // Determine how far each $ref is from the \"definitions\" property.\n // Most people will expect references to be bundled into the the \"definitions\" property if possible.\n const aDefinitionsIndex = a.pathFromRoot.lastIndexOf(\"/definitions\");\n const bDefinitionsIndex = b.pathFromRoot.lastIndexOf(\"/definitions\");\n if (aDefinitionsIndex !== bDefinitionsIndex) {\n // Give higher priority to the $ref that's closer to the \"definitions\" property\n return bDefinitionsIndex - aDefinitionsIndex;\n }\n else {\n // All else is equal, so use the shorter path, which will produce the shortest possible reference\n return a.pathFromRoot.length - b.pathFromRoot.length;\n }\n }\n });\n let file, hash, pathFromRoot;\n for (const entry of inventory) {\n // console.log('Re-mapping $ref pointer \"%s\" at %s', entry.$ref.$ref, entry.pathFromRoot);\n if (!entry.external) {\n // This $ref already resolves to the main JSON Schema file\n entry.$ref.$ref = entry.hash;\n }\n else if (entry.file === file && entry.hash === hash) {\n // This $ref points to the same value as the prevous $ref, so remap it to the same path\n entry.$ref.$ref = pathFromRoot;\n }\n else if (entry.file === file && entry.hash.indexOf(hash + \"/\") === 0) {\n // This $ref points to a sub-value of the prevous $ref, so remap it beneath that path\n entry.$ref.$ref = pointer_js_1.default.join(pathFromRoot, pointer_js_1.default.parse(entry.hash.replace(hash, \"#\")));\n }\n else {\n // We've moved to a new file or new hash\n file = entry.file;\n hash = entry.hash;\n pathFromRoot = entry.pathFromRoot;\n // This is the first $ref to point to this value, so dereference the value.\n // Any other $refs that point to the same value will point to this $ref instead\n entry.$ref = entry.parent[entry.key] = ref_js_1.default.dereference(entry.$ref, entry.value);\n if (entry.circular) {\n // This $ref points to itself\n entry.$ref.$ref = entry.pathFromRoot;\n }\n }\n }\n // we want to ensure that any $refs that point to another $ref are remapped to point to the final value\n // let hadChange = true;\n // while (hadChange) {\n // hadChange = false;\n // for (const entry of inventory) {\n // if (entry.$ref && typeof entry.$ref === \"object\" && \"$ref\" in entry.$ref) {\n // const resolved = inventory.find((e: InventoryEntry) => e.pathFromRoot === entry.$ref.$ref);\n // if (resolved) {\n // const resolvedPointsToAnotherRef =\n // resolved.$ref && typeof resolved.$ref === \"object\" && \"$ref\" in resolved.$ref;\n // if (resolvedPointsToAnotherRef && entry.$ref.$ref !== resolved.$ref.$ref) {\n // // console.log('Re-mapping $ref pointer \"%s\" at %s', entry.$ref.$ref, entry.pathFromRoot);\n // entry.$ref.$ref = resolved.$ref.$ref;\n // hadChange = true;\n // }\n // }\n // }\n // }\n // }\n}\n/**\n * TODO\n */\nfunction findInInventory(inventory, $refParent, $refKey) {\n for (const existingEntry of inventory) {\n if (existingEntry && existingEntry.parent === $refParent && existingEntry.key === $refKey) {\n return existingEntry;\n }\n }\n return undefined;\n}\nfunction removeFromInventory(inventory, entry) {\n const index = inventory.indexOf(entry);\n inventory.splice(index, 1);\n}\nexports.default = bundle;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ref_js_1 = __importDefault(require(\"./ref.js\"));\nconst pointer_js_1 = __importDefault(require(\"./pointer.js\"));\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst url = __importStar(require(\"./util/url.js\"));\nconst errors_1 = require(\"./util/errors\");\nexports.default = dereference;\n/**\n * Crawls the JSON schema, finds all JSON references, and dereferences them.\n * This method mutates the JSON schema object, replacing JSON references with their resolved value.\n *\n * @param parser\n * @param options\n */\nfunction dereference(parser, options) {\n const start = Date.now();\n // console.log('Dereferencing $ref pointers in %s', parser.$refs._root$Ref.path);\n const dereferenced = crawl(parser.schema, parser.$refs._root$Ref.path, \"#\", new Set(), new Set(), new Map(), parser.$refs, options, start);\n parser.$refs.circular = dereferenced.circular;\n parser.schema = dereferenced.value;\n}\n/**\n * Recursively crawls the given value, and dereferences any JSON references.\n *\n * @param obj - The value to crawl. If it's not an object or array, it will be ignored.\n * @param path - The full path of `obj`, possibly with a JSON Pointer in the hash\n * @param pathFromRoot - The path of `obj` from the schema root\n * @param parents - An array of the parent objects that have already been dereferenced\n * @param processedObjects - An array of all the objects that have already been processed\n * @param dereferencedCache - An map of all the dereferenced objects\n * @param $refs\n * @param options\n * @param startTime - The time when the dereferencing started\n * @returns\n */\nfunction crawl(obj, path, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime) {\n let dereferenced;\n const result = {\n value: obj,\n circular: false,\n };\n if (options && options.timeoutMs) {\n if (Date.now() - startTime > options.timeoutMs) {\n throw new errors_1.TimeoutError(options.timeoutMs);\n }\n }\n const derefOptions = (options.dereference || {});\n const isExcludedPath = derefOptions.excludedPathMatcher || (() => false);\n if (derefOptions?.circular === \"ignore\" || !processedObjects.has(obj)) {\n if (obj && typeof obj === \"object\" && !ArrayBuffer.isView(obj) && !isExcludedPath(pathFromRoot)) {\n parents.add(obj);\n processedObjects.add(obj);\n if (ref_js_1.default.isAllowed$Ref(obj, options)) {\n dereferenced = dereference$Ref(obj, path, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime);\n result.circular = dereferenced.circular;\n result.value = dereferenced.value;\n }\n else {\n for (const key of Object.keys(obj)) {\n const keyPath = pointer_js_1.default.join(path, key);\n const keyPathFromRoot = pointer_js_1.default.join(pathFromRoot, key);\n if (isExcludedPath(keyPathFromRoot)) {\n continue;\n }\n const value = obj[key];\n let circular = false;\n if (ref_js_1.default.isAllowed$Ref(value, options)) {\n dereferenced = dereference$Ref(value, keyPath, keyPathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime);\n circular = dereferenced.circular;\n // Avoid pointless mutations; breaks frozen objects to no profit\n if (obj[key] !== dereferenced.value) {\n obj[key] = dereferenced.value;\n derefOptions?.onDereference?.(value.$ref, obj[key], obj, key);\n }\n }\n else {\n if (!parents.has(value)) {\n dereferenced = crawl(value, keyPath, keyPathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime);\n circular = dereferenced.circular;\n // Avoid pointless mutations; breaks frozen objects to no profit\n if (obj[key] !== dereferenced.value) {\n obj[key] = dereferenced.value;\n }\n }\n else {\n circular = foundCircularReference(keyPath, $refs, options);\n }\n }\n // Set the \"isCircular\" flag if this or any other property is circular\n result.circular = result.circular || circular;\n }\n }\n parents.delete(obj);\n }\n }\n return result;\n}\n/**\n * Dereferences the given JSON Reference, and then crawls the resulting value.\n *\n * @param $ref - The JSON Reference to resolve\n * @param path - The full path of `$ref`, possibly with a JSON Pointer in the hash\n * @param pathFromRoot - The path of `$ref` from the schema root\n * @param parents - An array of the parent objects that have already been dereferenced\n * @param processedObjects - An array of all the objects that have already been dereferenced\n * @param dereferencedCache - An map of all the dereferenced objects\n * @param $refs\n * @param options\n * @returns\n */\nfunction dereference$Ref($ref, path, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime) {\n const isExternalRef = ref_js_1.default.isExternal$Ref($ref);\n const shouldResolveOnCwd = isExternalRef && options?.dereference?.externalReferenceResolution === \"root\";\n const $refPath = url.resolve(shouldResolveOnCwd ? url.cwd() : path, $ref.$ref);\n const cache = dereferencedCache.get($refPath);\n if (cache && !cache.circular) {\n const refKeys = Object.keys($ref);\n if (refKeys.length > 1) {\n const extraKeys = {};\n for (const key of refKeys) {\n if (key !== \"$ref\" && !(key in cache.value)) {\n // @ts-expect-error TS(7053): Element implicitly has an 'any' type because expre... Remove this comment to see the full error message\n extraKeys[key] = $ref[key];\n }\n }\n return {\n circular: cache.circular,\n value: Object.assign({}, cache.value, extraKeys),\n };\n }\n return cache;\n }\n const pointer = $refs._resolve($refPath, path, options);\n if (pointer === null) {\n return {\n circular: false,\n value: null,\n };\n }\n // Check for circular references\n const directCircular = pointer.circular;\n let circular = directCircular || parents.has(pointer.value);\n if (circular) {\n foundCircularReference(path, $refs, options);\n }\n // Dereference the JSON reference\n let dereferencedValue = ref_js_1.default.dereference($ref, pointer.value);\n // Crawl the dereferenced value (unless it's circular)\n if (!circular) {\n // Determine if the dereferenced value is circular\n const dereferenced = crawl(dereferencedValue, pointer.path, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime);\n circular = dereferenced.circular;\n dereferencedValue = dereferenced.value;\n }\n if (circular && !directCircular && options.dereference?.circular === \"ignore\") {\n // The user has chosen to \"ignore\" circular references, so don't change the value\n dereferencedValue = $ref;\n }\n if (directCircular) {\n // The pointer is a DIRECT circular reference (i.e. it references itself).\n // So replace the $ref path with the absolute path from the JSON Schema root\n dereferencedValue.$ref = pathFromRoot;\n }\n const dereferencedObject = {\n circular,\n value: dereferencedValue,\n };\n // only cache if no extra properties than $ref\n if (Object.keys($ref).length === 1) {\n dereferencedCache.set($refPath, dereferencedObject);\n }\n return dereferencedObject;\n}\n/**\n * Called when a circular reference is found.\n * It sets the {@link $Refs#circular} flag, and throws an error if options.dereference.circular is false.\n *\n * @param keyPath - The JSON Reference path of the circular reference\n * @param $refs\n * @param options\n * @returns - always returns true, to indicate that a circular reference was found\n */\nfunction foundCircularReference(keyPath, $refs, options) {\n $refs.circular = true;\n if (!options.dereference.circular) {\n throw ono_1.ono.reference(`Circular $ref pointer found at ${keyPath}`);\n }\n return true;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction makeNext() {\n if (typeof process === \"object\" && typeof process.nextTick === \"function\") {\n return process.nextTick;\n }\n else if (typeof setImmediate === \"function\") {\n return setImmediate;\n }\n else {\n return function next(f) {\n setTimeout(f, 0);\n };\n }\n}\nexports.default = makeNext();\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = maybe;\nconst next_js_1 = __importDefault(require(\"./next.js\"));\nfunction maybe(cb, promise) {\n if (cb) {\n promise.then(function (result) {\n (0, next_js_1.default)(function () {\n cb(null, result);\n });\n }, function (err) {\n (0, next_js_1.default)(function () {\n cb(err);\n });\n });\n return undefined;\n }\n else {\n return promise;\n }\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getJsonSchemaRefParserDefaultOptions = exports.jsonSchemaParserNormalizeArgs = exports.dereferenceInternal = exports.JSONParserErrorGroup = exports.isHandledError = exports.UnmatchedParserError = exports.ParserError = exports.ResolverError = exports.MissingPointerError = exports.InvalidPointerError = exports.JSONParserError = exports.UnmatchedResolverError = exports.dereference = exports.bundle = exports.resolve = exports.parse = exports.$RefParser = void 0;\nconst refs_js_1 = __importDefault(require(\"./refs.js\"));\nconst parse_js_1 = __importDefault(require(\"./parse.js\"));\nconst normalize_args_js_1 = __importDefault(require(\"./normalize-args.js\"));\nexports.jsonSchemaParserNormalizeArgs = normalize_args_js_1.default;\nconst resolve_external_js_1 = __importDefault(require(\"./resolve-external.js\"));\nconst bundle_js_1 = __importDefault(require(\"./bundle.js\"));\nconst dereference_js_1 = __importDefault(require(\"./dereference.js\"));\nexports.dereferenceInternal = dereference_js_1.default;\nconst url = __importStar(require(\"./util/url.js\"));\nconst errors_js_1 = require(\"./util/errors.js\");\nObject.defineProperty(exports, \"JSONParserError\", { enumerable: true, get: function () { return errors_js_1.JSONParserError; } });\nObject.defineProperty(exports, \"InvalidPointerError\", { enumerable: true, get: function () { return errors_js_1.InvalidPointerError; } });\nObject.defineProperty(exports, \"MissingPointerError\", { enumerable: true, get: function () { return errors_js_1.MissingPointerError; } });\nObject.defineProperty(exports, \"ResolverError\", { enumerable: true, get: function () { return errors_js_1.ResolverError; } });\nObject.defineProperty(exports, \"ParserError\", { enumerable: true, get: function () { return errors_js_1.ParserError; } });\nObject.defineProperty(exports, \"UnmatchedParserError\", { enumerable: true, get: function () { return errors_js_1.UnmatchedParserError; } });\nObject.defineProperty(exports, \"UnmatchedResolverError\", { enumerable: true, get: function () { return errors_js_1.UnmatchedResolverError; } });\nObject.defineProperty(exports, \"isHandledError\", { enumerable: true, get: function () { return errors_js_1.isHandledError; } });\nObject.defineProperty(exports, \"JSONParserErrorGroup\", { enumerable: true, get: function () { return errors_js_1.JSONParserErrorGroup; } });\nconst ono_1 = require(\"@jsdevtools/ono\");\nconst maybe_js_1 = __importDefault(require(\"./util/maybe.js\"));\nconst options_js_1 = require(\"./options.js\");\nObject.defineProperty(exports, \"getJsonSchemaRefParserDefaultOptions\", { enumerable: true, get: function () { return options_js_1.getJsonSchemaRefParserDefaultOptions; } });\n/**\n * This class parses a JSON schema, builds a map of its JSON references and their resolved values,\n * and provides methods for traversing, manipulating, and dereferencing those references.\n *\n * @class\n */\nclass $RefParser {\n constructor() {\n /**\n * The parsed (and possibly dereferenced) JSON schema object\n *\n * @type {object}\n * @readonly\n */\n this.schema = null;\n /**\n * The resolved JSON references\n *\n * @type {$Refs}\n * @readonly\n */\n this.$refs = new refs_js_1.default();\n }\n async parse() {\n const args = (0, normalize_args_js_1.default)(arguments);\n let promise;\n if (!args.path && !args.schema) {\n const err = (0, ono_1.ono)(`Expected a file path, URL, or object. Got ${args.path || args.schema}`);\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n // Reset everything\n this.schema = null;\n this.$refs = new refs_js_1.default();\n // If the path is a filesystem path, then convert it to a URL.\n // NOTE: According to the JSON Reference spec, these should already be URLs,\n // but, in practice, many people use local filesystem paths instead.\n // So we're being generous here and doing the conversion automatically.\n // This is not intended to be a 100% bulletproof solution.\n // If it doesn't work for your use-case, then use a URL instead.\n let pathType = \"http\";\n if (url.isFileSystemPath(args.path)) {\n args.path = url.fromFileSystemPath(args.path);\n pathType = \"file\";\n }\n else if (!args.path && args.schema && \"$id\" in args.schema && args.schema.$id) {\n // when schema id has defined an URL should use that hostname to request the references,\n // instead of using the current page URL\n const params = url.parse(args.schema.$id);\n const port = params.protocol === \"https:\" ? 443 : 80;\n args.path = `${params.protocol}//${params.hostname}:${port}`;\n }\n // Resolve the absolute path of the schema\n args.path = url.resolve(url.cwd(), args.path);\n if (args.schema && typeof args.schema === \"object\") {\n // A schema object was passed-in.\n // So immediately add a new $Ref with the schema object as its value\n const $ref = this.$refs._add(args.path);\n $ref.value = args.schema;\n $ref.pathType = pathType;\n promise = Promise.resolve(args.schema);\n }\n else {\n // Parse the schema file/url\n promise = (0, parse_js_1.default)(args.path, this.$refs, args.options);\n }\n try {\n const result = await promise;\n if (result !== null && typeof result === \"object\" && !Buffer.isBuffer(result)) {\n this.schema = result;\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.schema));\n }\n else if (args.options.continueOnError) {\n this.schema = null; // it's already set to null at line 79, but let's set it again for the sake of readability\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.schema));\n }\n else {\n throw ono_1.ono.syntax(`\"${this.$refs._root$Ref.path || result}\" is not a valid JSON Schema`);\n }\n }\n catch (err) {\n if (!args.options.continueOnError || !(0, errors_js_1.isHandledError)(err)) {\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n if (this.$refs._$refs[url.stripHash(args.path)]) {\n this.$refs._$refs[url.stripHash(args.path)].addError(err);\n }\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(null));\n }\n }\n static parse() {\n const parser = new $RefParser();\n return parser.parse.apply(parser, arguments);\n }\n async resolve() {\n const args = (0, normalize_args_js_1.default)(arguments);\n try {\n await this.parse(args.path, args.schema, args.options);\n await (0, resolve_external_js_1.default)(this, args.options);\n finalize(this);\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.$refs));\n }\n catch (err) {\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n }\n static resolve() {\n const instance = new $RefParser();\n return instance.resolve.apply(instance, arguments);\n }\n static bundle() {\n const instance = new $RefParser();\n return instance.bundle.apply(instance, arguments);\n }\n async bundle() {\n const args = (0, normalize_args_js_1.default)(arguments);\n try {\n await this.resolve(args.path, args.schema, args.options);\n (0, bundle_js_1.default)(this, args.options);\n finalize(this);\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.schema));\n }\n catch (err) {\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n }\n static dereference() {\n const instance = new $RefParser();\n return instance.dereference.apply(instance, arguments);\n }\n async dereference() {\n const args = (0, normalize_args_js_1.default)(arguments);\n try {\n await this.resolve(args.path, args.schema, args.options);\n (0, dereference_js_1.default)(this, args.options);\n finalize(this);\n return (0, maybe_js_1.default)(args.callback, Promise.resolve(this.schema));\n }\n catch (err) {\n return (0, maybe_js_1.default)(args.callback, Promise.reject(err));\n }\n }\n}\nexports.$RefParser = $RefParser;\nexports.default = $RefParser;\nfunction finalize(parser) {\n const errors = errors_js_1.JSONParserErrorGroup.getParserErrors(parser);\n if (errors.length > 0) {\n throw new errors_js_1.JSONParserErrorGroup(parser);\n }\n}\nexports.parse = $RefParser.parse;\nexports.resolve = $RefParser.resolve;\nexports.bundle = $RefParser.bundle;\nexports.dereference = $RefParser.dereference;\n","\"use strict\";\n\nconst { getJsonSchemaRefParserDefaultOptions } = require(\"@apidevtools/json-schema-ref-parser\");\nconst schemaValidator = require(\"./validators/schema\");\nconst specValidator = require(\"./validators/spec\");\n\nmodule.exports = ParserOptions;\n\n\n\n/**\n * Merges the properties of the source object into the target object.\n *\n * @param target - The object that we're populating\n * @param source - The options that are being merged\n * @returns\n */\nfunction merge (target, source) {\n if (isMergeable(source)) {\n // prevent prototype pollution\n const keys = Object.keys(source).filter((key) => ![\"__proto__\", \"constructor\", \"prototype\"].includes(key));\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n const sourceSetting = source[key];\n const targetSetting = target[key];\n\n if (isMergeable(sourceSetting)) {\n // It's a nested object, so merge it recursively\n target[key] = merge(targetSetting || {}, sourceSetting);\n }\n else if (sourceSetting !== undefined) {\n // It's a scalar value, function, or array. No merging necessary. Just overwrite the target value.\n target[key] = sourceSetting;\n }\n }\n }\n return target;\n}\n/**\n * Determines whether the given value can be merged,\n * or if it is a scalar value that should just override the target value.\n *\n * @param val\n * @returns\n */\nfunction isMergeable (val) {\n return val && typeof val === \"object\" && !Array.isArray(val) && !(val instanceof RegExp) && !(val instanceof Date);\n}\n\n/**\n * Options that determine how Swagger APIs are parsed, resolved, dereferenced, and validated.\n *\n * @param {object|ParserOptions} [_options] - Overridden options\n * @class\n * @augments $RefParserOptions\n */\nfunction ParserOptions (_options) {\n const defaultOptions = getJsonSchemaRefParserDefaultOptions();\n const options = merge(defaultOptions, ParserOptions.defaults);\n return merge(options, _options);\n}\n\nParserOptions.defaults = {\n /**\n * Determines how the API definition will be validated.\n *\n * You can add additional validators of your own, replace an existing one with\n * your own implemenation, or disable any validator by setting it to false.\n */\n validate: {\n schema: schemaValidator,\n spec: specValidator,\n },\n};\n","'use strict'\n\nfunction makeNext () {\n if (typeof process === 'object' && typeof process.nextTick === 'function') {\n return process.nextTick\n } else if (typeof setImmediate === 'function') {\n return setImmediate\n } else {\n return function next (f) {\n setTimeout(f, 0)\n }\n }\n}\n\nmodule.exports = makeNext()\n","\"use strict\"\n\nvar next = require('./next.js')\n\nmodule.exports = function maybe (cb, promise) {\n if (cb) {\n promise\n .then(function (result) {\n next(function () { cb(null, result) })\n }, function (err) {\n next(function () { cb(err) })\n })\n return undefined\n }\n else {\n return promise\n }\n}\n","/* eslint-disable no-unused-vars */\n\"use strict\";\n\nconst validateSchema = require(\"./validators/schema\");\nconst validateSpec = require(\"./validators/spec\");\nconst { jsonSchemaParserNormalizeArgs: normalizeArgs } = require(\"@apidevtools/json-schema-ref-parser\");\nconst util = require(\"./util\");\nconst Options = require(\"./options\");\nconst maybe = require(\"call-me-maybe\");\nconst { ono } = require(\"@jsdevtools/ono\");\nconst { $RefParser } = require(\"@apidevtools/json-schema-ref-parser\");\nconst { dereferenceInternal: dereference } = require(\"@apidevtools/json-schema-ref-parser\");\n\nconst supported31Versions = [\"3.1.0\", \"3.1.1\"];\nconst supported30Versions = [\"3.0.0\", \"3.0.1\", \"3.0.2\", \"3.0.3\", \"3.0.4\"];\nconst supportedVersions = [...supported31Versions, ...supported30Versions];\n\n/**\n * This class parses a Swagger 2.0 or 3.0 API, resolves its JSON references and their resolved values,\n * and provides methods for traversing, dereferencing, and validating the API.\n *\n * @class\n * @augments $RefParser\n */\nclass SwaggerParser extends $RefParser {\n\n /**\n * Parses the given Swagger API.\n * This method does not resolve any JSON references.\n * It just reads a single file in JSON or YAML format, and parse it as a JavaScript object.\n *\n * @param {string} [path] - The file path or URL of the JSON schema\n * @param {object} [api] - The Swagger API object. This object will be used instead of reading from `path`.\n * @param {ParserOptions} [options] - Options that determine how the API is parsed\n * @param {Function} [callback] - An error-first callback. The second parameter is the parsed API object.\n * @returns {Promise} - The returned promise resolves with the parsed API object.\n */\n async parse (path, api, options, callback) {\n let args = normalizeArgs(arguments);\n args.options = new Options(args.options);\n\n try {\n let schema = await super.parse(args.path, args.schema, args.options);\n\n if (schema.swagger) {\n // Verify that the parsed object is a Swagger API\n if (schema.swagger === undefined || schema.info === undefined || schema.paths === undefined) {\n throw ono.syntax(`${args.path || args.schema} is not a valid Swagger API definition`);\n }\n else if (typeof schema.swagger === \"number\") {\n // This is a very common mistake, so give a helpful error message\n throw ono.syntax('Swagger version number must be a string (e.g. \"2.0\") not a number.');\n }\n else if (typeof schema.info.version === \"number\") {\n // This is a very common mistake, so give a helpful error message\n throw ono.syntax('API version number must be a string (e.g. \"1.0.0\") not a number.');\n }\n else if (schema.swagger !== \"2.0\") {\n throw ono.syntax(`Unrecognized Swagger version: ${schema.swagger}. Expected 2.0`);\n }\n }\n else {\n // Verify that the parsed object is a Openapi API\n if (schema.openapi === undefined || schema.info === undefined) {\n throw ono.syntax(`${args.path || args.schema} is not a valid Openapi API definition`);\n }\n else if (schema.paths === undefined) {\n if (supported31Versions.indexOf(schema.openapi) !== -1) {\n if (schema.webhooks === undefined) {\n throw ono.syntax(`${args.path || args.schema} is not a valid Openapi API definition`);\n }\n }\n else {\n throw ono.syntax(`${args.path || args.schema} is not a valid Openapi API definition`);\n }\n }\n else if (typeof schema.openapi === \"number\") {\n // This is a very common mistake, so give a helpful error message\n throw ono.syntax('Openapi version number must be a string (e.g. \"3.0.0\") not a number.');\n }\n else if (typeof schema.info.version === \"number\") {\n // This is a very common mistake, so give a helpful error message\n throw ono.syntax('API version number must be a string (e.g. \"1.0.0\") not a number.');\n }\n else if (supportedVersions.indexOf(schema.openapi) === -1) {\n throw ono.syntax(\n `Unsupported OpenAPI version: ${schema.openapi}. ` +\n `Swagger Parser only supports versions ${supportedVersions.join(\", \")}`\n );\n }\n\n // This is an OpenAPI v3 schema, check if the \"servers\" have any relative paths and\n // fix them if the content was pulled from a web resource\n util.fixOasRelativeServers(schema, args.path);\n }\n\n // Looks good!\n return maybe(args.callback, Promise.resolve(schema));\n }\n catch (err) {\n return maybe(args.callback, Promise.reject(err));\n }\n }\n\n /**\n * Parses, dereferences, and validates the given Swagger API.\n * Depending on the options, validation can include JSON Schema validation and/or Swagger Spec validation.\n *\n * @param {string} [path] - The file path or URL of the JSON schema\n * @param {object} [api] - The Swagger API object. This object will be used instead of reading from `path`.\n * @param {ParserOptions} [options] - Options that determine how the API is parsed, dereferenced, and validated\n * @param {Function} [callback] - An error-first callback. The second parameter is the parsed API object.\n * @returns {Promise} - The returned promise resolves with the parsed API object.\n */\n async validate (path, api, options, callback) {\n let me = this;\n let args = normalizeArgs(arguments);\n args.options = new Options(args.options);\n\n // ZSchema doesn't support circular objects, so don't dereference circular $refs yet\n // (see https://github.com/zaggino/z-schema/issues/137)\n let circular$RefOption = args.options.dereference.circular;\n args.options.validate.schema && (args.options.dereference.circular = \"ignore\");\n\n try {\n await this.dereference(args.path, args.schema, args.options);\n\n // Restore the original options, now that we're done dereferencing\n args.options.dereference.circular = circular$RefOption;\n\n if (args.options.validate.schema) {\n // Validate the API against the Swagger schema\n // NOTE: This is safe to do, because we haven't dereferenced circular $refs yet\n validateSchema(me.api);\n\n if (me.$refs.circular) {\n if (circular$RefOption === true) {\n // The API has circular references,\n // so we need to do a second-pass to fully-dereference it\n dereference(me, args.options);\n }\n else if (circular$RefOption === false) {\n // The API has circular references, and they're not allowed, so throw an error\n throw ono.reference(\"The API contains circular references\");\n }\n }\n }\n\n if (args.options.validate.spec) {\n // Validate the API against the Swagger spec\n validateSpec(me.api);\n }\n\n return maybe(args.callback, Promise.resolve(me.schema));\n }\n catch (err) {\n return maybe(args.callback, Promise.reject(err));\n }\n }\n}\n\n\n/**\n * Alias {@link $RefParser#schema} as {@link SwaggerParser#api}\n */\nObject.defineProperty(SwaggerParser.prototype, \"api\", {\n configurable: true,\n enumerable: true,\n get () {\n return this.schema;\n }\n});\n\n/**\n * The Swagger object\n * https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#swagger-object\n *\n * @typedef {{swagger: string, info: {}, paths: {}}} SwaggerObject\n */\n\nconst defaultExport = SwaggerParser;\n\ndefaultExport.validate = (...args) => {\n const defaultInstance = new SwaggerParser();\n return defaultInstance.validate(...args);\n};\ndefaultExport.dereference = (...args) => {\n const defaultInstance = new SwaggerParser();\n return defaultInstance.dereference(...args);\n};\ndefaultExport.bundle = (...args) => {\n const defaultInstance = new SwaggerParser();\n return defaultInstance.bundle(...args);\n};\ndefaultExport.parse = (...args) => {\n const defaultInstance = new SwaggerParser();\n return defaultInstance.parse(...args);\n};\ndefaultExport.resolve = (...args) => {\n const defaultInstance = new SwaggerParser();\n return defaultInstance.resolve(...args);\n};\ndefaultExport.default = defaultExport;\ndefaultExport.SwaggerParser = defaultExport;\n\nmodule.exports = defaultExport;\n","import type { OpenAPI, OpenAPIV3, OpenAPIV3_1 } from 'openapi-types';\r\n\r\n// ── Public Configuration ────────────────────────────────────────────\r\n\r\nexport interface SpecLensConfig {\r\n /** URL to an OpenAPI spec (JSON or YAML). */\r\n specUrl?: string;\r\n /** Inline OpenAPI spec object. Takes precedence over specUrl. */\r\n spec?: object;\r\n /** Proxy URL for Try It requests (CORS bypass). The target URL is appended. */\r\n proxyUrl?: string;\r\n /** Color theme. Defaults to 'auto' (follows prefers-color-scheme). */\r\n theme?: 'light' | 'dark' | 'auto';\r\n /** Default language for code samples. Defaults to 'curl'. */\r\n defaultLanguage?: string;\r\n /** Hide the Try It console. */\r\n hideTryIt?: boolean;\r\n /** Hide code sample panels. */\r\n hideCodeSamples?: boolean;\r\n}\r\n\r\n// ── Internal Normalized Types ───────────────────────────────────────\r\n\r\nexport type OASDocument = OpenAPIV3.Document | OpenAPIV3_1.Document;\r\n\r\nexport type HttpMethod = 'get' | 'post' | 'put' | 'delete' | 'patch' | 'options' | 'head' | 'trace';\r\n\r\nexport const HTTP_METHODS: HttpMethod[] = [\r\n 'get', 'post', 'put', 'delete', 'patch', 'options', 'head', 'trace',\r\n];\r\n\r\nexport interface ParsedParameter {\r\n name: string;\r\n in: 'path' | 'query' | 'header' | 'cookie';\r\n required: boolean;\r\n deprecated: boolean;\r\n description: string;\r\n schema: object | null;\r\n example: unknown;\r\n}\r\n\r\nexport interface ParsedMediaType {\r\n mediaType: string;\r\n schema: object | null;\r\n example: unknown;\r\n examples: Record<string, unknown>;\r\n}\r\n\r\nexport interface ParsedRequestBody {\r\n required: boolean;\r\n description: string;\r\n content: ParsedMediaType[];\r\n}\r\n\r\nexport interface ParsedResponse {\r\n statusCode: string;\r\n description: string;\r\n headers: Record<string, { description: string; schema: object | null }>;\r\n content: ParsedMediaType[];\r\n}\r\n\r\nexport interface ParsedOperation {\r\n operationId: string;\r\n path: string;\r\n method: HttpMethod;\r\n summary: string;\r\n description: string;\r\n tags: string[];\r\n deprecated: boolean;\r\n parameters: ParsedParameter[];\r\n requestBody: ParsedRequestBody | null;\r\n responses: ParsedResponse[];\r\n security: SecurityRequirement[];\r\n servers: ParsedServer[];\r\n codeSamples: CodeSample[];\r\n}\r\n\r\nexport interface ParsedServer {\r\n url: string;\r\n description: string;\r\n variables: Record<string, {\r\n default: string;\r\n enum?: string[];\r\n description: string;\r\n }>;\r\n}\r\n\r\nexport interface SecurityScheme {\r\n key: string;\r\n type: 'apiKey' | 'http' | 'oauth2' | 'openIdConnect' | 'mutualTLS';\r\n name?: string;\r\n in?: 'query' | 'header' | 'cookie';\r\n scheme?: string;\r\n bearerFormat?: string;\r\n description: string;\r\n}\r\n\r\nexport interface SecurityRequirement {\r\n [schemeName: string]: string[];\r\n}\r\n\r\nexport interface CodeSample {\r\n lang: string;\r\n label: string;\r\n source: string;\r\n}\r\n\r\nexport interface TagGroup {\r\n name: string;\r\n description: string;\r\n operations: ParsedOperation[];\r\n}\r\n\r\nexport interface ParsedSpec {\r\n title: string;\r\n version: string;\r\n description: string;\r\n contact: { name?: string; url?: string; email?: string } | null;\r\n license: { name: string; url?: string } | null;\r\n termsOfService: string;\r\n servers: ParsedServer[];\r\n securitySchemes: SecurityScheme[];\r\n globalSecurity: SecurityRequirement[];\r\n tagGroups: TagGroup[];\r\n allOperations: ParsedOperation[];\r\n externalDocs: { url: string; description: string } | null;\r\n raw: OASDocument;\r\n}\r\n\r\n// ── Search Types ────────────────────────────────────────────────────\r\n\r\nexport interface SearchResult {\r\n operationId: string;\r\n path: string;\r\n method: HttpMethod;\r\n summary: string;\r\n tags: string[];\r\n score: number;\r\n}\r\n\r\n// ── Search Engine Interface ──────────────────────────────────────\r\n\r\nexport interface SearchEngine {\r\n search(query: string): SearchResult[];\r\n autoSuggest(query: string): string[];\r\n}\r\n\r\n// ── Auth State ──────────────────────────────────────────────────────\r\n\r\nexport interface AuthState {\r\n /** API key values keyed by security scheme name. */\r\n apiKeys: Record<string, string>;\r\n /** Bearer token values keyed by security scheme name. */\r\n bearerTokens: Record<string, string>;\r\n}\r\n","import SwaggerParser from '@apidevtools/swagger-parser';\r\nimport type { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types';\r\nimport type {\r\n OASDocument,\r\n ParsedSpec,\r\n ParsedOperation,\r\n ParsedParameter,\r\n ParsedRequestBody,\r\n ParsedResponse,\r\n ParsedMediaType,\r\n ParsedServer,\r\n SecurityScheme,\r\n TagGroup,\r\n HttpMethod,\r\n CodeSample,\r\n SecurityRequirement,\r\n} from './types.js';\r\nimport { HTTP_METHODS } from './types.js';\r\n\r\n/**\r\n * Parse an OpenAPI spec from a URL string or inline object.\r\n * Returns a fully dereferenced and normalized ParsedSpec.\r\n */\r\nexport async function parseSpec(source: string | object): Promise<ParsedSpec> {\r\n const raw = await SwaggerParser.dereference(source as string) as OASDocument;\r\n return normalizeSpec(raw);\r\n}\r\n\r\nfunction normalizeSpec(doc: OASDocument): ParsedSpec {\r\n const info = doc.info;\r\n const servers = (doc.servers ?? []).map(normalizeServer);\r\n const securitySchemes = extractSecuritySchemes(doc);\r\n const globalSecurity = (doc.security ?? []) as SecurityRequirement[];\r\n\r\n // Build operations grouped by tag\r\n const operationsByTag = new Map<string, ParsedOperation[]>();\r\n const tagMeta = new Map<string, string>();\r\n\r\n // Collect tag descriptions\r\n for (const tag of doc.tags ?? []) {\r\n tagMeta.set(tag.name, tag.description ?? '');\r\n }\r\n\r\n const allOperations: ParsedOperation[] = [];\r\n let unnamedCounter = 0;\r\n\r\n const paths = doc.paths ?? {};\r\n for (const [path, pathItem] of Object.entries(paths)) {\r\n if (!pathItem) continue;\r\n const pi = pathItem as OpenAPIV3.PathItemObject;\r\n\r\n // Path-level parameters\r\n const pathParams = (pi.parameters ?? []) as OpenAPIV3.ParameterObject[];\r\n\r\n for (const method of HTTP_METHODS) {\r\n const operation = pi[method] as OpenAPIV3.OperationObject | undefined;\r\n if (!operation) continue;\r\n\r\n const operationId = operation.operationId || `unnamed-${++unnamedCounter}-${method}-${path}`;\r\n const tags = operation.tags?.length ? operation.tags : ['default'];\r\n\r\n const parsed = normalizeOperation(\r\n operationId, path, method, operation, pathParams, servers, globalSecurity\r\n );\r\n\r\n allOperations.push(parsed);\r\n\r\n for (const tag of tags) {\r\n if (!operationsByTag.has(tag)) {\r\n operationsByTag.set(tag, []);\r\n }\r\n operationsByTag.get(tag)!.push(parsed);\r\n }\r\n }\r\n }\r\n\r\n // Build tag groups in tag definition order, then remaining\r\n const tagOrder = (doc.tags ?? []).map(t => t.name);\r\n const seenTags = new Set<string>();\r\n const tagGroups: TagGroup[] = [];\r\n\r\n for (const tagName of tagOrder) {\r\n seenTags.add(tagName);\r\n const ops = operationsByTag.get(tagName);\r\n if (ops?.length) {\r\n tagGroups.push({\r\n name: tagName,\r\n description: tagMeta.get(tagName) ?? '',\r\n operations: ops,\r\n });\r\n }\r\n }\r\n\r\n // Any remaining tags not in the tags array\r\n for (const [tagName, ops] of operationsByTag) {\r\n if (!seenTags.has(tagName) && ops.length) {\r\n tagGroups.push({\r\n name: tagName,\r\n description: tagMeta.get(tagName) ?? '',\r\n operations: ops,\r\n });\r\n }\r\n }\r\n\r\n const externalDocs = (doc as OpenAPIV3.Document).externalDocs\r\n ? { url: (doc as OpenAPIV3.Document).externalDocs!.url, description: (doc as OpenAPIV3.Document).externalDocs!.description ?? '' }\r\n : null;\r\n\r\n return {\r\n title: info.title,\r\n version: info.version,\r\n description: info.description ?? '',\r\n contact: info.contact ? { name: info.contact.name, url: info.contact.url, email: info.contact.email } : null,\r\n license: info.license ? { name: info.license.name, url: (info.license as OpenAPIV3.LicenseObject).url } : null,\r\n termsOfService: info.termsOfService ?? '',\r\n servers,\r\n securitySchemes,\r\n globalSecurity,\r\n tagGroups,\r\n allOperations,\r\n externalDocs,\r\n raw: doc,\r\n };\r\n}\r\n\r\nfunction normalizeServer(server: OpenAPIV3.ServerObject): ParsedServer {\r\n const variables: ParsedServer['variables'] = {};\r\n for (const [key, val] of Object.entries(server.variables ?? {})) {\r\n variables[key] = {\r\n default: val.default,\r\n enum: val.enum,\r\n description: val.description ?? '',\r\n };\r\n }\r\n return {\r\n url: server.url,\r\n description: server.description ?? '',\r\n variables,\r\n };\r\n}\r\n\r\nfunction extractSecuritySchemes(doc: OASDocument): SecurityScheme[] {\r\n const schemes: SecurityScheme[] = [];\r\n const components = (doc as OpenAPIV3.Document).components;\r\n if (!components?.securitySchemes) return schemes;\r\n\r\n for (const [key, scheme] of Object.entries(components.securitySchemes)) {\r\n const s = scheme as OpenAPIV3.SecuritySchemeObject;\r\n schemes.push({\r\n key,\r\n type: s.type as SecurityScheme['type'],\r\n name: (s as OpenAPIV3.ApiKeySecurityScheme).name,\r\n in: (s as OpenAPIV3.ApiKeySecurityScheme).in as SecurityScheme['in'],\r\n scheme: (s as OpenAPIV3.HttpSecurityScheme).scheme,\r\n bearerFormat: (s as OpenAPIV3.HttpSecurityScheme).bearerFormat,\r\n description: s.description ?? '',\r\n });\r\n }\r\n return schemes;\r\n}\r\n\r\nfunction normalizeOperation(\r\n operationId: string,\r\n path: string,\r\n method: HttpMethod,\r\n operation: OpenAPIV3.OperationObject,\r\n pathParams: OpenAPIV3.ParameterObject[],\r\n globalServers: ParsedServer[],\r\n _globalSecurity: SecurityRequirement[],\r\n): ParsedOperation {\r\n // Merge path-level + operation-level parameters (operation takes precedence)\r\n const mergedParams = new Map<string, OpenAPIV3.ParameterObject>();\r\n for (const p of pathParams) {\r\n mergedParams.set(`${p.in}:${p.name}`, p);\r\n }\r\n for (const p of (operation.parameters ?? []) as OpenAPIV3.ParameterObject[]) {\r\n mergedParams.set(`${p.in}:${p.name}`, p);\r\n }\r\n\r\n const parameters: ParsedParameter[] = Array.from(mergedParams.values()).map(p => ({\r\n name: p.name,\r\n in: p.in as ParsedParameter['in'],\r\n required: p.required ?? false,\r\n deprecated: p.deprecated ?? false,\r\n description: p.description ?? '',\r\n schema: (p.schema as object) ?? null,\r\n example: p.example ?? (p.schema as OpenAPIV3.SchemaObject)?.example ?? undefined,\r\n }));\r\n\r\n // Request body\r\n let requestBody: ParsedRequestBody | null = null;\r\n if (operation.requestBody) {\r\n const rb = operation.requestBody as OpenAPIV3.RequestBodyObject;\r\n requestBody = {\r\n required: rb.required ?? false,\r\n description: rb.description ?? '',\r\n content: normalizeContent(rb.content),\r\n };\r\n }\r\n\r\n // Responses\r\n const responses: ParsedResponse[] = [];\r\n for (const [statusCode, resp] of Object.entries(operation.responses ?? {})) {\r\n const r = resp as OpenAPIV3.ResponseObject;\r\n const headers: ParsedResponse['headers'] = {};\r\n for (const [hName, hVal] of Object.entries(r.headers ?? {})) {\r\n const h = hVal as OpenAPIV3.HeaderObject;\r\n headers[hName] = {\r\n description: h.description ?? '',\r\n schema: (h.schema as object) ?? null,\r\n };\r\n }\r\n responses.push({\r\n statusCode,\r\n description: r.description ?? '',\r\n headers,\r\n content: r.content ? normalizeContent(r.content) : [],\r\n });\r\n }\r\n\r\n // Sort responses: 2xx first, then 3xx, 4xx, 5xx, then default\r\n responses.sort((a, b) => {\r\n if (a.statusCode === 'default') return 1;\r\n if (b.statusCode === 'default') return -1;\r\n return a.statusCode.localeCompare(b.statusCode);\r\n });\r\n\r\n // Code samples from vendor extension\r\n const codeSamples: CodeSample[] = [];\r\n const xSamples = (operation as Record<string, unknown>)['x-codeSamples']\r\n ?? (operation as Record<string, unknown>)['x-code-samples'];\r\n if (Array.isArray(xSamples)) {\r\n for (const s of xSamples) {\r\n if (s && typeof s === 'object' && 'lang' in s && 'source' in s) {\r\n codeSamples.push({\r\n lang: String(s.lang),\r\n label: String(s.label ?? s.lang),\r\n source: String(s.source),\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Servers (operation-level or global)\r\n const servers = (operation.servers ?? []).map(normalizeServer);\r\n\r\n return {\r\n operationId,\r\n path,\r\n method,\r\n summary: operation.summary ?? '',\r\n description: operation.description ?? '',\r\n tags: operation.tags ?? ['default'],\r\n deprecated: operation.deprecated ?? false,\r\n parameters,\r\n requestBody,\r\n responses,\r\n security: (operation.security ?? _globalSecurity) as SecurityRequirement[],\r\n servers: servers.length > 0 ? servers : globalServers,\r\n codeSamples,\r\n };\r\n}\r\n\r\nfunction normalizeContent(content: Record<string, OpenAPIV3.MediaTypeObject>): ParsedMediaType[] {\r\n return Object.entries(content).map(([mediaType, mt]) => ({\r\n mediaType,\r\n schema: (mt.schema as object) ?? null,\r\n example: mt.example ?? undefined,\r\n examples: mt.examples\r\n ? Object.fromEntries(\r\n Object.entries(mt.examples).map(([k, v]) => [\r\n k,\r\n (v as OpenAPIV3.ExampleObject).value ?? v,\r\n ])\r\n )\r\n : {},\r\n }));\r\n}\r\n","/** @ignore */\nconst ENTRIES = 'ENTRIES';\n/** @ignore */\nconst KEYS = 'KEYS';\n/** @ignore */\nconst VALUES = 'VALUES';\n/** @ignore */\nconst LEAF = '';\n/**\n * @private\n */\nclass TreeIterator {\n constructor(set, type) {\n const node = set._tree;\n const keys = Array.from(node.keys());\n this.set = set;\n this._type = type;\n this._path = keys.length > 0 ? [{ node, keys }] : [];\n }\n next() {\n const value = this.dive();\n this.backtrack();\n return value;\n }\n dive() {\n if (this._path.length === 0) {\n return { done: true, value: undefined };\n }\n const { node, keys } = last$1(this._path);\n if (last$1(keys) === LEAF) {\n return { done: false, value: this.result() };\n }\n const child = node.get(last$1(keys));\n this._path.push({ node: child, keys: Array.from(child.keys()) });\n return this.dive();\n }\n backtrack() {\n if (this._path.length === 0) {\n return;\n }\n const keys = last$1(this._path).keys;\n keys.pop();\n if (keys.length > 0) {\n return;\n }\n this._path.pop();\n this.backtrack();\n }\n key() {\n return this.set._prefix + this._path\n .map(({ keys }) => last$1(keys))\n .filter(key => key !== LEAF)\n .join('');\n }\n value() {\n return last$1(this._path).node.get(LEAF);\n }\n result() {\n switch (this._type) {\n case VALUES: return this.value();\n case KEYS: return this.key();\n default: return [this.key(), this.value()];\n }\n }\n [Symbol.iterator]() {\n return this;\n }\n}\nconst last$1 = (array) => {\n return array[array.length - 1];\n};\n\n/* eslint-disable no-labels */\n/**\n * @ignore\n */\nconst fuzzySearch = (node, query, maxDistance) => {\n const results = new Map();\n if (query === undefined)\n return results;\n // Number of columns in the Levenshtein matrix.\n const n = query.length + 1;\n // Matching terms can never be longer than N + maxDistance.\n const m = n + maxDistance;\n // Fill first matrix row and column with numbers: 0 1 2 3 ...\n const matrix = new Uint8Array(m * n).fill(maxDistance + 1);\n for (let j = 0; j < n; ++j)\n matrix[j] = j;\n for (let i = 1; i < m; ++i)\n matrix[i * n] = i;\n recurse(node, query, maxDistance, results, matrix, 1, n, '');\n return results;\n};\n// Modified version of http://stevehanov.ca/blog/?id=114\n// This builds a Levenshtein matrix for a given query and continuously updates\n// it for nodes in the radix tree that fall within the given maximum edit\n// distance. Keeping the same matrix around is beneficial especially for larger\n// edit distances.\n//\n// k a t e <-- query\n// 0 1 2 3 4\n// c 1 1 2 3 4\n// a 2 2 1 2 3\n// t 3 3 2 1 [2] <-- edit distance\n// ^\n// ^ term in radix tree, rows are added and removed as needed\nconst recurse = (node, query, maxDistance, results, matrix, m, n, prefix) => {\n const offset = m * n;\n key: for (const key of node.keys()) {\n if (key === LEAF) {\n // We've reached a leaf node. Check if the edit distance acceptable and\n // store the result if it is.\n const distance = matrix[offset - 1];\n if (distance <= maxDistance) {\n results.set(prefix, [node.get(key), distance]);\n }\n }\n else {\n // Iterate over all characters in the key. Update the Levenshtein matrix\n // and check if the minimum distance in the last row is still within the\n // maximum edit distance. If it is, we can recurse over all child nodes.\n let i = m;\n for (let pos = 0; pos < key.length; ++pos, ++i) {\n const char = key[pos];\n const thisRowOffset = n * i;\n const prevRowOffset = thisRowOffset - n;\n // Set the first column based on the previous row, and initialize the\n // minimum distance in the current row.\n let minDistance = matrix[thisRowOffset];\n const jmin = Math.max(0, i - maxDistance - 1);\n const jmax = Math.min(n - 1, i + maxDistance);\n // Iterate over remaining columns (characters in the query).\n for (let j = jmin; j < jmax; ++j) {\n const different = char !== query[j];\n // It might make sense to only read the matrix positions used for\n // deletion/insertion if the characters are different. But we want to\n // avoid conditional reads for performance reasons.\n const rpl = matrix[prevRowOffset + j] + +different;\n const del = matrix[prevRowOffset + j + 1] + 1;\n const ins = matrix[thisRowOffset + j] + 1;\n const dist = matrix[thisRowOffset + j + 1] = Math.min(rpl, del, ins);\n if (dist < minDistance)\n minDistance = dist;\n }\n // Because distance will never decrease, we can stop. There will be no\n // matching child nodes.\n if (minDistance > maxDistance) {\n continue key;\n }\n }\n recurse(node.get(key), query, maxDistance, results, matrix, i, n, prefix + key);\n }\n }\n};\n\n/* eslint-disable no-labels */\n/**\n * A class implementing the same interface as a standard JavaScript\n * [`Map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)\n * with string keys, but adding support for efficiently searching entries with\n * prefix or fuzzy search. This class is used internally by {@link MiniSearch}\n * as the inverted index data structure. The implementation is a radix tree\n * (compressed prefix tree).\n *\n * Since this class can be of general utility beyond _MiniSearch_, it is\n * exported by the `minisearch` package and can be imported (or required) as\n * `minisearch/SearchableMap`.\n *\n * @typeParam T The type of the values stored in the map.\n */\nclass SearchableMap {\n /**\n * The constructor is normally called without arguments, creating an empty\n * map. In order to create a {@link SearchableMap} from an iterable or from an\n * object, check {@link SearchableMap.from} and {@link\n * SearchableMap.fromObject}.\n *\n * The constructor arguments are for internal use, when creating derived\n * mutable views of a map at a prefix.\n */\n constructor(tree = new Map(), prefix = '') {\n this._size = undefined;\n this._tree = tree;\n this._prefix = prefix;\n }\n /**\n * Creates and returns a mutable view of this {@link SearchableMap},\n * containing only entries that share the given prefix.\n *\n * ### Usage:\n *\n * ```javascript\n * let map = new SearchableMap()\n * map.set(\"unicorn\", 1)\n * map.set(\"universe\", 2)\n * map.set(\"university\", 3)\n * map.set(\"unique\", 4)\n * map.set(\"hello\", 5)\n *\n * let uni = map.atPrefix(\"uni\")\n * uni.get(\"unique\") // => 4\n * uni.get(\"unicorn\") // => 1\n * uni.get(\"hello\") // => undefined\n *\n * let univer = map.atPrefix(\"univer\")\n * univer.get(\"unique\") // => undefined\n * univer.get(\"universe\") // => 2\n * univer.get(\"university\") // => 3\n * ```\n *\n * @param prefix The prefix\n * @return A {@link SearchableMap} representing a mutable view of the original\n * Map at the given prefix\n */\n atPrefix(prefix) {\n if (!prefix.startsWith(this._prefix)) {\n throw new Error('Mismatched prefix');\n }\n const [node, path] = trackDown(this._tree, prefix.slice(this._prefix.length));\n if (node === undefined) {\n const [parentNode, key] = last(path);\n for (const k of parentNode.keys()) {\n if (k !== LEAF && k.startsWith(key)) {\n const node = new Map();\n node.set(k.slice(key.length), parentNode.get(k));\n return new SearchableMap(node, prefix);\n }\n }\n }\n return new SearchableMap(node, prefix);\n }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/clear\n */\n clear() {\n this._size = undefined;\n this._tree.clear();\n }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/delete\n * @param key Key to delete\n */\n delete(key) {\n this._size = undefined;\n return remove(this._tree, key);\n }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/entries\n * @return An iterator iterating through `[key, value]` entries.\n */\n entries() {\n return new TreeIterator(this, ENTRIES);\n }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/forEach\n * @param fn Iteration function\n */\n forEach(fn) {\n for (const [key, value] of this) {\n fn(key, value, this);\n }\n }\n /**\n * Returns a Map of all the entries that have a key within the given edit\n * distance from the search key. The keys of the returned Map are the matching\n * keys, while the values are two-element arrays where the first element is\n * the value associated to the key, and the second is the edit distance of the\n * key to the search key.\n *\n * ### Usage:\n *\n * ```javascript\n * let map = new SearchableMap()\n * map.set('hello', 'world')\n * map.set('hell', 'yeah')\n * map.set('ciao', 'mondo')\n *\n * // Get all entries that match the key 'hallo' with a maximum edit distance of 2\n * map.fuzzyGet('hallo', 2)\n * // => Map(2) { 'hello' => ['world', 1], 'hell' => ['yeah', 2] }\n *\n * // In the example, the \"hello\" key has value \"world\" and edit distance of 1\n * // (change \"e\" to \"a\"), the key \"hell\" has value \"yeah\" and edit distance of 2\n * // (change \"e\" to \"a\", delete \"o\")\n * ```\n *\n * @param key The search key\n * @param maxEditDistance The maximum edit distance (Levenshtein)\n * @return A Map of the matching keys to their value and edit distance\n */\n fuzzyGet(key, maxEditDistance) {\n return fuzzySearch(this._tree, key, maxEditDistance);\n }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get\n * @param key Key to get\n * @return Value associated to the key, or `undefined` if the key is not\n * found.\n */\n get(key) {\n const node = lookup(this._tree, key);\n return node !== undefined ? node.get(LEAF) : undefined;\n }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/has\n * @param key Key\n * @return True if the key is in the map, false otherwise\n */\n has(key) {\n const node = lookup(this._tree, key);\n return node !== undefined && node.has(LEAF);\n }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/keys\n * @return An `Iterable` iterating through keys\n */\n keys() {\n return new TreeIterator(this, KEYS);\n }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/set\n * @param key Key to set\n * @param value Value to associate to the key\n * @return The {@link SearchableMap} itself, to allow chaining\n */\n set(key, value) {\n if (typeof key !== 'string') {\n throw new Error('key must be a string');\n }\n this._size = undefined;\n const node = createPath(this._tree, key);\n node.set(LEAF, value);\n return this;\n }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/size\n */\n get size() {\n if (this._size) {\n return this._size;\n }\n /** @ignore */\n this._size = 0;\n const iter = this.entries();\n while (!iter.next().done)\n this._size += 1;\n return this._size;\n }\n /**\n * Updates the value at the given key using the provided function. The function\n * is called with the current value at the key, and its return value is used as\n * the new value to be set.\n *\n * ### Example:\n *\n * ```javascript\n * // Increment the current value by one\n * searchableMap.update('somekey', (currentValue) => currentValue == null ? 0 : currentValue + 1)\n * ```\n *\n * If the value at the given key is or will be an object, it might not require\n * re-assignment. In that case it is better to use `fetch()`, because it is\n * faster.\n *\n * @param key The key to update\n * @param fn The function used to compute the new value from the current one\n * @return The {@link SearchableMap} itself, to allow chaining\n */\n update(key, fn) {\n if (typeof key !== 'string') {\n throw new Error('key must be a string');\n }\n this._size = undefined;\n const node = createPath(this._tree, key);\n node.set(LEAF, fn(node.get(LEAF)));\n return this;\n }\n /**\n * Fetches the value of the given key. If the value does not exist, calls the\n * given function to create a new value, which is inserted at the given key\n * and subsequently returned.\n *\n * ### Example:\n *\n * ```javascript\n * const map = searchableMap.fetch('somekey', () => new Map())\n * map.set('foo', 'bar')\n * ```\n *\n * @param key The key to update\n * @param initial A function that creates a new value if the key does not exist\n * @return The existing or new value at the given key\n */\n fetch(key, initial) {\n if (typeof key !== 'string') {\n throw new Error('key must be a string');\n }\n this._size = undefined;\n const node = createPath(this._tree, key);\n let value = node.get(LEAF);\n if (value === undefined) {\n node.set(LEAF, value = initial());\n }\n return value;\n }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/values\n * @return An `Iterable` iterating through values.\n */\n values() {\n return new TreeIterator(this, VALUES);\n }\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/@@iterator\n */\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * Creates a {@link SearchableMap} from an `Iterable` of entries\n *\n * @param entries Entries to be inserted in the {@link SearchableMap}\n * @return A new {@link SearchableMap} with the given entries\n */\n static from(entries) {\n const tree = new SearchableMap();\n for (const [key, value] of entries) {\n tree.set(key, value);\n }\n return tree;\n }\n /**\n * Creates a {@link SearchableMap} from the iterable properties of a JavaScript object\n *\n * @param object Object of entries for the {@link SearchableMap}\n * @return A new {@link SearchableMap} with the given entries\n */\n static fromObject(object) {\n return SearchableMap.from(Object.entries(object));\n }\n}\nconst trackDown = (tree, key, path = []) => {\n if (key.length === 0 || tree == null) {\n return [tree, path];\n }\n for (const k of tree.keys()) {\n if (k !== LEAF && key.startsWith(k)) {\n path.push([tree, k]); // performance: update in place\n return trackDown(tree.get(k), key.slice(k.length), path);\n }\n }\n path.push([tree, key]); // performance: update in place\n return trackDown(undefined, '', path);\n};\nconst lookup = (tree, key) => {\n if (key.length === 0 || tree == null) {\n return tree;\n }\n for (const k of tree.keys()) {\n if (k !== LEAF && key.startsWith(k)) {\n return lookup(tree.get(k), key.slice(k.length));\n }\n }\n};\n// Create a path in the radix tree for the given key, and returns the deepest\n// node. This function is in the hot path for indexing. It avoids unnecessary\n// string operations and recursion for performance.\nconst createPath = (node, key) => {\n const keyLength = key.length;\n outer: for (let pos = 0; node && pos < keyLength;) {\n for (const k of node.keys()) {\n // Check whether this key is a candidate: the first characters must match.\n if (k !== LEAF && key[pos] === k[0]) {\n const len = Math.min(keyLength - pos, k.length);\n // Advance offset to the point where key and k no longer match.\n let offset = 1;\n while (offset < len && key[pos + offset] === k[offset])\n ++offset;\n const child = node.get(k);\n if (offset === k.length) {\n // The existing key is shorter than the key we need to create.\n node = child;\n }\n else {\n // Partial match: we need to insert an intermediate node to contain\n // both the existing subtree and the new node.\n const intermediate = new Map();\n intermediate.set(k.slice(offset), child);\n node.set(key.slice(pos, pos + offset), intermediate);\n node.delete(k);\n node = intermediate;\n }\n pos += offset;\n continue outer;\n }\n }\n // Create a final child node to contain the final suffix of the key.\n const child = new Map();\n node.set(key.slice(pos), child);\n return child;\n }\n return node;\n};\nconst remove = (tree, key) => {\n const [node, path] = trackDown(tree, key);\n if (node === undefined) {\n return;\n }\n node.delete(LEAF);\n if (node.size === 0) {\n cleanup(path);\n }\n else if (node.size === 1) {\n const [key, value] = node.entries().next().value;\n merge(path, key, value);\n }\n};\nconst cleanup = (path) => {\n if (path.length === 0) {\n return;\n }\n const [node, key] = last(path);\n node.delete(key);\n if (node.size === 0) {\n cleanup(path.slice(0, -1));\n }\n else if (node.size === 1) {\n const [key, value] = node.entries().next().value;\n if (key !== LEAF) {\n merge(path.slice(0, -1), key, value);\n }\n }\n};\nconst merge = (path, key, value) => {\n if (path.length === 0) {\n return;\n }\n const [node, nodeKey] = last(path);\n node.set(nodeKey + key, value);\n node.delete(nodeKey);\n};\nconst last = (array) => {\n return array[array.length - 1];\n};\n\nconst OR = 'or';\nconst AND = 'and';\nconst AND_NOT = 'and_not';\n/**\n * {@link MiniSearch} is the main entrypoint class, implementing a full-text\n * search engine in memory.\n *\n * @typeParam T The type of the documents being indexed.\n *\n * ### Basic example:\n *\n * ```javascript\n * const documents = [\n * {\n * id: 1,\n * title: 'Moby Dick',\n * text: 'Call me Ishmael. Some years ago...',\n * category: 'fiction'\n * },\n * {\n * id: 2,\n * title: 'Zen and the Art of Motorcycle Maintenance',\n * text: 'I can see by my watch...',\n * category: 'fiction'\n * },\n * {\n * id: 3,\n * title: 'Neuromancer',\n * text: 'The sky above the port was...',\n * category: 'fiction'\n * },\n * {\n * id: 4,\n * title: 'Zen and the Art of Archery',\n * text: 'At first sight it must seem...',\n * category: 'non-fiction'\n * },\n * // ...and more\n * ]\n *\n * // Create a search engine that indexes the 'title' and 'text' fields for\n * // full-text search. Search results will include 'title' and 'category' (plus the\n * // id field, that is always stored and returned)\n * const miniSearch = new MiniSearch({\n * fields: ['title', 'text'],\n * storeFields: ['title', 'category']\n * })\n *\n * // Add documents to the index\n * miniSearch.addAll(documents)\n *\n * // Search for documents:\n * let results = miniSearch.search('zen art motorcycle')\n * // => [\n * // { id: 2, title: 'Zen and the Art of Motorcycle Maintenance', category: 'fiction', score: 2.77258 },\n * // { id: 4, title: 'Zen and the Art of Archery', category: 'non-fiction', score: 1.38629 }\n * // ]\n * ```\n */\nclass MiniSearch {\n /**\n * @param options Configuration options\n *\n * ### Examples:\n *\n * ```javascript\n * // Create a search engine that indexes the 'title' and 'text' fields of your\n * // documents:\n * const miniSearch = new MiniSearch({ fields: ['title', 'text'] })\n * ```\n *\n * ### ID Field:\n *\n * ```javascript\n * // Your documents are assumed to include a unique 'id' field, but if you want\n * // to use a different field for document identification, you can set the\n * // 'idField' option:\n * const miniSearch = new MiniSearch({ idField: 'key', fields: ['title', 'text'] })\n * ```\n *\n * ### Options and defaults:\n *\n * ```javascript\n * // The full set of options (here with their default value) is:\n * const miniSearch = new MiniSearch({\n * // idField: field that uniquely identifies a document\n * idField: 'id',\n *\n * // extractField: function used to get the value of a field in a document.\n * // By default, it assumes the document is a flat object with field names as\n * // property keys and field values as string property values, but custom logic\n * // can be implemented by setting this option to a custom extractor function.\n * extractField: (document, fieldName) => document[fieldName],\n *\n * // tokenize: function used to split fields into individual terms. By\n * // default, it is also used to tokenize search queries, unless a specific\n * // `tokenize` search option is supplied. When tokenizing an indexed field,\n * // the field name is passed as the second argument.\n * tokenize: (string, _fieldName) => string.split(SPACE_OR_PUNCTUATION),\n *\n * // processTerm: function used to process each tokenized term before\n * // indexing. It can be used for stemming and normalization. Return a falsy\n * // value in order to discard a term. By default, it is also used to process\n * // search queries, unless a specific `processTerm` option is supplied as a\n * // search option. When processing a term from a indexed field, the field\n * // name is passed as the second argument.\n * processTerm: (term, _fieldName) => term.toLowerCase(),\n *\n * // searchOptions: default search options, see the `search` method for\n * // details\n * searchOptions: undefined,\n *\n * // fields: document fields to be indexed. Mandatory, but not set by default\n * fields: undefined\n *\n * // storeFields: document fields to be stored and returned as part of the\n * // search results.\n * storeFields: []\n * })\n * ```\n */\n constructor(options) {\n if ((options === null || options === void 0 ? void 0 : options.fields) == null) {\n throw new Error('MiniSearch: option \"fields\" must be provided');\n }\n const autoVacuum = (options.autoVacuum == null || options.autoVacuum === true) ? defaultAutoVacuumOptions : options.autoVacuum;\n this._options = {\n ...defaultOptions,\n ...options,\n autoVacuum,\n searchOptions: { ...defaultSearchOptions, ...(options.searchOptions || {}) },\n autoSuggestOptions: { ...defaultAutoSuggestOptions, ...(options.autoSuggestOptions || {}) }\n };\n this._index = new SearchableMap();\n this._documentCount = 0;\n this._documentIds = new Map();\n this._idToShortId = new Map();\n // Fields are defined during initialization, don't change, are few in\n // number, rarely need iterating over, and have string keys. Therefore in\n // this case an object is a better candidate than a Map to store the mapping\n // from field key to ID.\n this._fieldIds = {};\n this._fieldLength = new Map();\n this._avgFieldLength = [];\n this._nextId = 0;\n this._storedFields = new Map();\n this._dirtCount = 0;\n this._currentVacuum = null;\n this._enqueuedVacuum = null;\n this._enqueuedVacuumConditions = defaultVacuumConditions;\n this.addFields(this._options.fields);\n }\n /**\n * Adds a document to the index\n *\n * @param document The document to be indexed\n */\n add(document) {\n const { extractField, stringifyField, tokenize, processTerm, fields, idField } = this._options;\n const id = extractField(document, idField);\n if (id == null) {\n throw new Error(`MiniSearch: document does not have ID field \"${idField}\"`);\n }\n if (this._idToShortId.has(id)) {\n throw new Error(`MiniSearch: duplicate ID ${id}`);\n }\n const shortDocumentId = this.addDocumentId(id);\n this.saveStoredFields(shortDocumentId, document);\n for (const field of fields) {\n const fieldValue = extractField(document, field);\n if (fieldValue == null)\n continue;\n const tokens = tokenize(stringifyField(fieldValue, field), field);\n const fieldId = this._fieldIds[field];\n const uniqueTerms = new Set(tokens).size;\n this.addFieldLength(shortDocumentId, fieldId, this._documentCount - 1, uniqueTerms);\n for (const term of tokens) {\n const processedTerm = processTerm(term, field);\n if (Array.isArray(processedTerm)) {\n for (const t of processedTerm) {\n this.addTerm(fieldId, shortDocumentId, t);\n }\n }\n else if (processedTerm) {\n this.addTerm(fieldId, shortDocumentId, processedTerm);\n }\n }\n }\n }\n /**\n * Adds all the given documents to the index\n *\n * @param documents An array of documents to be indexed\n */\n addAll(documents) {\n for (const document of documents)\n this.add(document);\n }\n /**\n * Adds all the given documents to the index asynchronously.\n *\n * Returns a promise that resolves (to `undefined`) when the indexing is done.\n * This method is useful when index many documents, to avoid blocking the main\n * thread. The indexing is performed asynchronously and in chunks.\n *\n * @param documents An array of documents to be indexed\n * @param options Configuration options\n * @return A promise resolving to `undefined` when the indexing is done\n */\n addAllAsync(documents, options = {}) {\n const { chunkSize = 10 } = options;\n const acc = { chunk: [], promise: Promise.resolve() };\n const { chunk, promise } = documents.reduce(({ chunk, promise }, document, i) => {\n chunk.push(document);\n if ((i + 1) % chunkSize === 0) {\n return {\n chunk: [],\n promise: promise\n .then(() => new Promise(resolve => setTimeout(resolve, 0)))\n .then(() => this.addAll(chunk))\n };\n }\n else {\n return { chunk, promise };\n }\n }, acc);\n return promise.then(() => this.addAll(chunk));\n }\n /**\n * Removes the given document from the index.\n *\n * The document to remove must NOT have changed between indexing and removal,\n * otherwise the index will be corrupted.\n *\n * This method requires passing the full document to be removed (not just the\n * ID), and immediately removes the document from the inverted index, allowing\n * memory to be released. A convenient alternative is {@link\n * MiniSearch#discard}, which needs only the document ID, and has the same\n * visible effect, but delays cleaning up the index until the next vacuuming.\n *\n * @param document The document to be removed\n */\n remove(document) {\n const { tokenize, processTerm, extractField, stringifyField, fields, idField } = this._options;\n const id = extractField(document, idField);\n if (id == null) {\n throw new Error(`MiniSearch: document does not have ID field \"${idField}\"`);\n }\n const shortId = this._idToShortId.get(id);\n if (shortId == null) {\n throw new Error(`MiniSearch: cannot remove document with ID ${id}: it is not in the index`);\n }\n for (const field of fields) {\n const fieldValue = extractField(document, field);\n if (fieldValue == null)\n continue;\n const tokens = tokenize(stringifyField(fieldValue, field), field);\n const fieldId = this._fieldIds[field];\n const uniqueTerms = new Set(tokens).size;\n this.removeFieldLength(shortId, fieldId, this._documentCount, uniqueTerms);\n for (const term of tokens) {\n const processedTerm = processTerm(term, field);\n if (Array.isArray(processedTerm)) {\n for (const t of processedTerm) {\n this.removeTerm(fieldId, shortId, t);\n }\n }\n else if (processedTerm) {\n this.removeTerm(fieldId, shortId, processedTerm);\n }\n }\n }\n this._storedFields.delete(shortId);\n this._documentIds.delete(shortId);\n this._idToShortId.delete(id);\n this._fieldLength.delete(shortId);\n this._documentCount -= 1;\n }\n /**\n * Removes all the given documents from the index. If called with no arguments,\n * it removes _all_ documents from the index.\n *\n * @param documents The documents to be removed. If this argument is omitted,\n * all documents are removed. Note that, for removing all documents, it is\n * more efficient to call this method with no arguments than to pass all\n * documents.\n */\n removeAll(documents) {\n if (documents) {\n for (const document of documents)\n this.remove(document);\n }\n else if (arguments.length > 0) {\n throw new Error('Expected documents to be present. Omit the argument to remove all documents.');\n }\n else {\n this._index = new SearchableMap();\n this._documentCount = 0;\n this._documentIds = new Map();\n this._idToShortId = new Map();\n this._fieldLength = new Map();\n this._avgFieldLength = [];\n this._storedFields = new Map();\n this._nextId = 0;\n }\n }\n /**\n * Discards the document with the given ID, so it won't appear in search results\n *\n * It has the same visible effect of {@link MiniSearch.remove} (both cause the\n * document to stop appearing in searches), but a different effect on the\n * internal data structures:\n *\n * - {@link MiniSearch#remove} requires passing the full document to be\n * removed as argument, and removes it from the inverted index immediately.\n *\n * - {@link MiniSearch#discard} instead only needs the document ID, and\n * works by marking the current version of the document as discarded, so it\n * is immediately ignored by searches. This is faster and more convenient\n * than {@link MiniSearch#remove}, but the index is not immediately\n * modified. To take care of that, vacuuming is performed after a certain\n * number of documents are discarded, cleaning up the index and allowing\n * memory to be released.\n *\n * After discarding a document, it is possible to re-add a new version, and\n * only the new version will appear in searches. In other words, discarding\n * and re-adding a document works exactly like removing and re-adding it. The\n * {@link MiniSearch.replace} method can also be used to replace a document\n * with a new version.\n *\n * #### Details about vacuuming\n *\n * Repetite calls to this method would leave obsolete document references in\n * the index, invisible to searches. Two mechanisms take care of cleaning up:\n * clean up during search, and vacuuming.\n *\n * - Upon search, whenever a discarded ID is found (and ignored for the\n * results), references to the discarded document are removed from the\n * inverted index entries for the search terms. This ensures that subsequent\n * searches for the same terms do not need to skip these obsolete references\n * again.\n *\n * - In addition, vacuuming is performed automatically by default (see the\n * `autoVacuum` field in {@link Options}) after a certain number of\n * documents are discarded. Vacuuming traverses all terms in the index,\n * cleaning up all references to discarded documents. Vacuuming can also be\n * triggered manually by calling {@link MiniSearch#vacuum}.\n *\n * @param id The ID of the document to be discarded\n */\n discard(id) {\n const shortId = this._idToShortId.get(id);\n if (shortId == null) {\n throw new Error(`MiniSearch: cannot discard document with ID ${id}: it is not in the index`);\n }\n this._idToShortId.delete(id);\n this._documentIds.delete(shortId);\n this._storedFields.delete(shortId);\n (this._fieldLength.get(shortId) || []).forEach((fieldLength, fieldId) => {\n this.removeFieldLength(shortId, fieldId, this._documentCount, fieldLength);\n });\n this._fieldLength.delete(shortId);\n this._documentCount -= 1;\n this._dirtCount += 1;\n this.maybeAutoVacuum();\n }\n maybeAutoVacuum() {\n if (this._options.autoVacuum === false) {\n return;\n }\n const { minDirtFactor, minDirtCount, batchSize, batchWait } = this._options.autoVacuum;\n this.conditionalVacuum({ batchSize, batchWait }, { minDirtCount, minDirtFactor });\n }\n /**\n * Discards the documents with the given IDs, so they won't appear in search\n * results\n *\n * It is equivalent to calling {@link MiniSearch#discard} for all the given\n * IDs, but with the optimization of triggering at most one automatic\n * vacuuming at the end.\n *\n * Note: to remove all documents from the index, it is faster and more\n * convenient to call {@link MiniSearch.removeAll} with no argument, instead\n * of passing all IDs to this method.\n */\n discardAll(ids) {\n const autoVacuum = this._options.autoVacuum;\n try {\n this._options.autoVacuum = false;\n for (const id of ids) {\n this.discard(id);\n }\n }\n finally {\n this._options.autoVacuum = autoVacuum;\n }\n this.maybeAutoVacuum();\n }\n /**\n * It replaces an existing document with the given updated version\n *\n * It works by discarding the current version and adding the updated one, so\n * it is functionally equivalent to calling {@link MiniSearch#discard}\n * followed by {@link MiniSearch#add}. The ID of the updated document should\n * be the same as the original one.\n *\n * Since it uses {@link MiniSearch#discard} internally, this method relies on\n * vacuuming to clean up obsolete document references from the index, allowing\n * memory to be released (see {@link MiniSearch#discard}).\n *\n * @param updatedDocument The updated document to replace the old version\n * with\n */\n replace(updatedDocument) {\n const { idField, extractField } = this._options;\n const id = extractField(updatedDocument, idField);\n this.discard(id);\n this.add(updatedDocument);\n }\n /**\n * Triggers a manual vacuuming, cleaning up references to discarded documents\n * from the inverted index\n *\n * Vacuuming is only useful for applications that use the {@link\n * MiniSearch#discard} or {@link MiniSearch#replace} methods.\n *\n * By default, vacuuming is performed automatically when needed (controlled by\n * the `autoVacuum` field in {@link Options}), so there is usually no need to\n * call this method, unless one wants to make sure to perform vacuuming at a\n * specific moment.\n *\n * Vacuuming traverses all terms in the inverted index in batches, and cleans\n * up references to discarded documents from the posting list, allowing memory\n * to be released.\n *\n * The method takes an optional object as argument with the following keys:\n *\n * - `batchSize`: the size of each batch (1000 by default)\n *\n * - `batchWait`: the number of milliseconds to wait between batches (10 by\n * default)\n *\n * On large indexes, vacuuming could have a non-negligible cost: batching\n * avoids blocking the thread for long, diluting this cost so that it is not\n * negatively affecting the application. Nonetheless, this method should only\n * be called when necessary, and relying on automatic vacuuming is usually\n * better.\n *\n * It returns a promise that resolves (to undefined) when the clean up is\n * completed. If vacuuming is already ongoing at the time this method is\n * called, a new one is enqueued immediately after the ongoing one, and a\n * corresponding promise is returned. However, no more than one vacuuming is\n * enqueued on top of the ongoing one, even if this method is called more\n * times (enqueuing multiple ones would be useless).\n *\n * @param options Configuration options for the batch size and delay. See\n * {@link VacuumOptions}.\n */\n vacuum(options = {}) {\n return this.conditionalVacuum(options);\n }\n conditionalVacuum(options, conditions) {\n // If a vacuum is already ongoing, schedule another as soon as it finishes,\n // unless there's already one enqueued. If one was already enqueued, do not\n // enqueue another on top, but make sure that the conditions are the\n // broadest.\n if (this._currentVacuum) {\n this._enqueuedVacuumConditions = this._enqueuedVacuumConditions && conditions;\n if (this._enqueuedVacuum != null) {\n return this._enqueuedVacuum;\n }\n this._enqueuedVacuum = this._currentVacuum.then(() => {\n const conditions = this._enqueuedVacuumConditions;\n this._enqueuedVacuumConditions = defaultVacuumConditions;\n return this.performVacuuming(options, conditions);\n });\n return this._enqueuedVacuum;\n }\n if (this.vacuumConditionsMet(conditions) === false) {\n return Promise.resolve();\n }\n this._currentVacuum = this.performVacuuming(options);\n return this._currentVacuum;\n }\n async performVacuuming(options, conditions) {\n const initialDirtCount = this._dirtCount;\n if (this.vacuumConditionsMet(conditions)) {\n const batchSize = options.batchSize || defaultVacuumOptions.batchSize;\n const batchWait = options.batchWait || defaultVacuumOptions.batchWait;\n let i = 1;\n for (const [term, fieldsData] of this._index) {\n for (const [fieldId, fieldIndex] of fieldsData) {\n for (const [shortId] of fieldIndex) {\n if (this._documentIds.has(shortId)) {\n continue;\n }\n if (fieldIndex.size <= 1) {\n fieldsData.delete(fieldId);\n }\n else {\n fieldIndex.delete(shortId);\n }\n }\n }\n if (this._index.get(term).size === 0) {\n this._index.delete(term);\n }\n if (i % batchSize === 0) {\n await new Promise((resolve) => setTimeout(resolve, batchWait));\n }\n i += 1;\n }\n this._dirtCount -= initialDirtCount;\n }\n // Make the next lines always async, so they execute after this function returns\n await null;\n this._currentVacuum = this._enqueuedVacuum;\n this._enqueuedVacuum = null;\n }\n vacuumConditionsMet(conditions) {\n if (conditions == null) {\n return true;\n }\n let { minDirtCount, minDirtFactor } = conditions;\n minDirtCount = minDirtCount || defaultAutoVacuumOptions.minDirtCount;\n minDirtFactor = minDirtFactor || defaultAutoVacuumOptions.minDirtFactor;\n return this.dirtCount >= minDirtCount && this.dirtFactor >= minDirtFactor;\n }\n /**\n * Is `true` if a vacuuming operation is ongoing, `false` otherwise\n */\n get isVacuuming() {\n return this._currentVacuum != null;\n }\n /**\n * The number of documents discarded since the most recent vacuuming\n */\n get dirtCount() {\n return this._dirtCount;\n }\n /**\n * A number between 0 and 1 giving an indication about the proportion of\n * documents that are discarded, and can therefore be cleaned up by vacuuming.\n * A value close to 0 means that the index is relatively clean, while a higher\n * value means that the index is relatively dirty, and vacuuming could release\n * memory.\n */\n get dirtFactor() {\n return this._dirtCount / (1 + this._documentCount + this._dirtCount);\n }\n /**\n * Returns `true` if a document with the given ID is present in the index and\n * available for search, `false` otherwise\n *\n * @param id The document ID\n */\n has(id) {\n return this._idToShortId.has(id);\n }\n /**\n * Returns the stored fields (as configured in the `storeFields` constructor\n * option) for the given document ID. Returns `undefined` if the document is\n * not present in the index.\n *\n * @param id The document ID\n */\n getStoredFields(id) {\n const shortId = this._idToShortId.get(id);\n if (shortId == null) {\n return undefined;\n }\n return this._storedFields.get(shortId);\n }\n /**\n * Search for documents matching the given search query.\n *\n * The result is a list of scored document IDs matching the query, sorted by\n * descending score, and each including data about which terms were matched and\n * in which fields.\n *\n * ### Basic usage:\n *\n * ```javascript\n * // Search for \"zen art motorcycle\" with default options: terms have to match\n * // exactly, and individual terms are joined with OR\n * miniSearch.search('zen art motorcycle')\n * // => [ { id: 2, score: 2.77258, match: { ... } }, { id: 4, score: 1.38629, match: { ... } } ]\n * ```\n *\n * ### Restrict search to specific fields:\n *\n * ```javascript\n * // Search only in the 'title' field\n * miniSearch.search('zen', { fields: ['title'] })\n * ```\n *\n * ### Field boosting:\n *\n * ```javascript\n * // Boost a field\n * miniSearch.search('zen', { boost: { title: 2 } })\n * ```\n *\n * ### Prefix search:\n *\n * ```javascript\n * // Search for \"moto\" with prefix search (it will match documents\n * // containing terms that start with \"moto\" or \"neuro\")\n * miniSearch.search('moto neuro', { prefix: true })\n * ```\n *\n * ### Fuzzy search:\n *\n * ```javascript\n * // Search for \"ismael\" with fuzzy search (it will match documents containing\n * // terms similar to \"ismael\", with a maximum edit distance of 0.2 term.length\n * // (rounded to nearest integer)\n * miniSearch.search('ismael', { fuzzy: 0.2 })\n * ```\n *\n * ### Combining strategies:\n *\n * ```javascript\n * // Mix of exact match, prefix search, and fuzzy search\n * miniSearch.search('ismael mob', {\n * prefix: true,\n * fuzzy: 0.2\n * })\n * ```\n *\n * ### Advanced prefix and fuzzy search:\n *\n * ```javascript\n * // Perform fuzzy and prefix search depending on the search term. Here\n * // performing prefix and fuzzy search only on terms longer than 3 characters\n * miniSearch.search('ismael mob', {\n * prefix: term => term.length > 3\n * fuzzy: term => term.length > 3 ? 0.2 : null\n * })\n * ```\n *\n * ### Combine with AND:\n *\n * ```javascript\n * // Combine search terms with AND (to match only documents that contain both\n * // \"motorcycle\" and \"art\")\n * miniSearch.search('motorcycle art', { combineWith: 'AND' })\n * ```\n *\n * ### Combine with AND_NOT:\n *\n * There is also an AND_NOT combinator, that finds documents that match the\n * first term, but do not match any of the other terms. This combinator is\n * rarely useful with simple queries, and is meant to be used with advanced\n * query combinations (see later for more details).\n *\n * ### Filtering results:\n *\n * ```javascript\n * // Filter only results in the 'fiction' category (assuming that 'category'\n * // is a stored field)\n * miniSearch.search('motorcycle art', {\n * filter: (result) => result.category === 'fiction'\n * })\n * ```\n *\n * ### Wildcard query\n *\n * Searching for an empty string (assuming the default tokenizer) returns no\n * results. Sometimes though, one needs to match all documents, like in a\n * \"wildcard\" search. This is possible by passing the special value\n * {@link MiniSearch.wildcard} as the query:\n *\n * ```javascript\n * // Return search results for all documents\n * miniSearch.search(MiniSearch.wildcard)\n * ```\n *\n * Note that search options such as `filter` and `boostDocument` are still\n * applied, influencing which results are returned, and their order:\n *\n * ```javascript\n * // Return search results for all documents in the 'fiction' category\n * miniSearch.search(MiniSearch.wildcard, {\n * filter: (result) => result.category === 'fiction'\n * })\n * ```\n *\n * ### Advanced combination of queries:\n *\n * It is possible to combine different subqueries with OR, AND, and AND_NOT,\n * and even with different search options, by passing a query expression\n * tree object as the first argument, instead of a string.\n *\n * ```javascript\n * // Search for documents that contain \"zen\" and (\"motorcycle\" or \"archery\")\n * miniSearch.search({\n * combineWith: 'AND',\n * queries: [\n * 'zen',\n * {\n * combineWith: 'OR',\n * queries: ['motorcycle', 'archery']\n * }\n * ]\n * })\n *\n * // Search for documents that contain (\"apple\" or \"pear\") but not \"juice\" and\n * // not \"tree\"\n * miniSearch.search({\n * combineWith: 'AND_NOT',\n * queries: [\n * {\n * combineWith: 'OR',\n * queries: ['apple', 'pear']\n * },\n * 'juice',\n * 'tree'\n * ]\n * })\n * ```\n *\n * Each node in the expression tree can be either a string, or an object that\n * supports all {@link SearchOptions} fields, plus a `queries` array field for\n * subqueries.\n *\n * Note that, while this can become complicated to do by hand for complex or\n * deeply nested queries, it provides a formalized expression tree API for\n * external libraries that implement a parser for custom query languages.\n *\n * @param query Search query\n * @param searchOptions Search options. Each option, if not given, defaults to the corresponding value of `searchOptions` given to the constructor, or to the library default.\n */\n search(query, searchOptions = {}) {\n const { searchOptions: globalSearchOptions } = this._options;\n const searchOptionsWithDefaults = { ...globalSearchOptions, ...searchOptions };\n const rawResults = this.executeQuery(query, searchOptions);\n const results = [];\n for (const [docId, { score, terms, match }] of rawResults) {\n // terms are the matched query terms, which will be returned to the user\n // as queryTerms. The quality is calculated based on them, as opposed to\n // the matched terms in the document (which can be different due to\n // prefix and fuzzy match)\n const quality = terms.length || 1;\n const result = {\n id: this._documentIds.get(docId),\n score: score * quality,\n terms: Object.keys(match),\n queryTerms: terms,\n match\n };\n Object.assign(result, this._storedFields.get(docId));\n if (searchOptionsWithDefaults.filter == null || searchOptionsWithDefaults.filter(result)) {\n results.push(result);\n }\n }\n // If it's a wildcard query, and no document boost is applied, skip sorting\n // the results, as all results have the same score of 1\n if (query === MiniSearch.wildcard && searchOptionsWithDefaults.boostDocument == null) {\n return results;\n }\n results.sort(byScore);\n return results;\n }\n /**\n * Provide suggestions for the given search query\n *\n * The result is a list of suggested modified search queries, derived from the\n * given search query, each with a relevance score, sorted by descending score.\n *\n * By default, it uses the same options used for search, except that by\n * default it performs prefix search on the last term of the query, and\n * combine terms with `'AND'` (requiring all query terms to match). Custom\n * options can be passed as a second argument. Defaults can be changed upon\n * calling the {@link MiniSearch} constructor, by passing a\n * `autoSuggestOptions` option.\n *\n * ### Basic usage:\n *\n * ```javascript\n * // Get suggestions for 'neuro':\n * miniSearch.autoSuggest('neuro')\n * // => [ { suggestion: 'neuromancer', terms: [ 'neuromancer' ], score: 0.46240 } ]\n * ```\n *\n * ### Multiple words:\n *\n * ```javascript\n * // Get suggestions for 'zen ar':\n * miniSearch.autoSuggest('zen ar')\n * // => [\n * // { suggestion: 'zen archery art', terms: [ 'zen', 'archery', 'art' ], score: 1.73332 },\n * // { suggestion: 'zen art', terms: [ 'zen', 'art' ], score: 1.21313 }\n * // ]\n * ```\n *\n * ### Fuzzy suggestions:\n *\n * ```javascript\n * // Correct spelling mistakes using fuzzy search:\n * miniSearch.autoSuggest('neromancer', { fuzzy: 0.2 })\n * // => [ { suggestion: 'neuromancer', terms: [ 'neuromancer' ], score: 1.03998 } ]\n * ```\n *\n * ### Filtering:\n *\n * ```javascript\n * // Get suggestions for 'zen ar', but only within the 'fiction' category\n * // (assuming that 'category' is a stored field):\n * miniSearch.autoSuggest('zen ar', {\n * filter: (result) => result.category === 'fiction'\n * })\n * // => [\n * // { suggestion: 'zen archery art', terms: [ 'zen', 'archery', 'art' ], score: 1.73332 },\n * // { suggestion: 'zen art', terms: [ 'zen', 'art' ], score: 1.21313 }\n * // ]\n * ```\n *\n * @param queryString Query string to be expanded into suggestions\n * @param options Search options. The supported options and default values\n * are the same as for the {@link MiniSearch#search} method, except that by\n * default prefix search is performed on the last term in the query, and terms\n * are combined with `'AND'`.\n * @return A sorted array of suggestions sorted by relevance score.\n */\n autoSuggest(queryString, options = {}) {\n options = { ...this._options.autoSuggestOptions, ...options };\n const suggestions = new Map();\n for (const { score, terms } of this.search(queryString, options)) {\n const phrase = terms.join(' ');\n const suggestion = suggestions.get(phrase);\n if (suggestion != null) {\n suggestion.score += score;\n suggestion.count += 1;\n }\n else {\n suggestions.set(phrase, { score, terms, count: 1 });\n }\n }\n const results = [];\n for (const [suggestion, { score, terms, count }] of suggestions) {\n results.push({ suggestion, terms, score: score / count });\n }\n results.sort(byScore);\n return results;\n }\n /**\n * Total number of documents available to search\n */\n get documentCount() {\n return this._documentCount;\n }\n /**\n * Number of terms in the index\n */\n get termCount() {\n return this._index.size;\n }\n /**\n * Deserializes a JSON index (serialized with `JSON.stringify(miniSearch)`)\n * and instantiates a MiniSearch instance. It should be given the same options\n * originally used when serializing the index.\n *\n * ### Usage:\n *\n * ```javascript\n * // If the index was serialized with:\n * let miniSearch = new MiniSearch({ fields: ['title', 'text'] })\n * miniSearch.addAll(documents)\n *\n * const json = JSON.stringify(miniSearch)\n * // It can later be deserialized like this:\n * miniSearch = MiniSearch.loadJSON(json, { fields: ['title', 'text'] })\n * ```\n *\n * @param json JSON-serialized index\n * @param options configuration options, same as the constructor\n * @return An instance of MiniSearch deserialized from the given JSON.\n */\n static loadJSON(json, options) {\n if (options == null) {\n throw new Error('MiniSearch: loadJSON should be given the same options used when serializing the index');\n }\n return this.loadJS(JSON.parse(json), options);\n }\n /**\n * Async equivalent of {@link MiniSearch.loadJSON}\n *\n * This function is an alternative to {@link MiniSearch.loadJSON} that returns\n * a promise, and loads the index in batches, leaving pauses between them to avoid\n * blocking the main thread. It tends to be slower than the synchronous\n * version, but does not block the main thread, so it can be a better choice\n * when deserializing very large indexes.\n *\n * @param json JSON-serialized index\n * @param options configuration options, same as the constructor\n * @return A Promise that will resolve to an instance of MiniSearch deserialized from the given JSON.\n */\n static async loadJSONAsync(json, options) {\n if (options == null) {\n throw new Error('MiniSearch: loadJSON should be given the same options used when serializing the index');\n }\n return this.loadJSAsync(JSON.parse(json), options);\n }\n /**\n * Returns the default value of an option. It will throw an error if no option\n * with the given name exists.\n *\n * @param optionName Name of the option\n * @return The default value of the given option\n *\n * ### Usage:\n *\n * ```javascript\n * // Get default tokenizer\n * MiniSearch.getDefault('tokenize')\n *\n * // Get default term processor\n * MiniSearch.getDefault('processTerm')\n *\n * // Unknown options will throw an error\n * MiniSearch.getDefault('notExisting')\n * // => throws 'MiniSearch: unknown option \"notExisting\"'\n * ```\n */\n static getDefault(optionName) {\n if (defaultOptions.hasOwnProperty(optionName)) {\n return getOwnProperty(defaultOptions, optionName);\n }\n else {\n throw new Error(`MiniSearch: unknown option \"${optionName}\"`);\n }\n }\n /**\n * @ignore\n */\n static loadJS(js, options) {\n const { index, documentIds, fieldLength, storedFields, serializationVersion } = js;\n const miniSearch = this.instantiateMiniSearch(js, options);\n miniSearch._documentIds = objectToNumericMap(documentIds);\n miniSearch._fieldLength = objectToNumericMap(fieldLength);\n miniSearch._storedFields = objectToNumericMap(storedFields);\n for (const [shortId, id] of miniSearch._documentIds) {\n miniSearch._idToShortId.set(id, shortId);\n }\n for (const [term, data] of index) {\n const dataMap = new Map();\n for (const fieldId of Object.keys(data)) {\n let indexEntry = data[fieldId];\n // Version 1 used to nest the index entry inside a field called ds\n if (serializationVersion === 1) {\n indexEntry = indexEntry.ds;\n }\n dataMap.set(parseInt(fieldId, 10), objectToNumericMap(indexEntry));\n }\n miniSearch._index.set(term, dataMap);\n }\n return miniSearch;\n }\n /**\n * @ignore\n */\n static async loadJSAsync(js, options) {\n const { index, documentIds, fieldLength, storedFields, serializationVersion } = js;\n const miniSearch = this.instantiateMiniSearch(js, options);\n miniSearch._documentIds = await objectToNumericMapAsync(documentIds);\n miniSearch._fieldLength = await objectToNumericMapAsync(fieldLength);\n miniSearch._storedFields = await objectToNumericMapAsync(storedFields);\n for (const [shortId, id] of miniSearch._documentIds) {\n miniSearch._idToShortId.set(id, shortId);\n }\n let count = 0;\n for (const [term, data] of index) {\n const dataMap = new Map();\n for (const fieldId of Object.keys(data)) {\n let indexEntry = data[fieldId];\n // Version 1 used to nest the index entry inside a field called ds\n if (serializationVersion === 1) {\n indexEntry = indexEntry.ds;\n }\n dataMap.set(parseInt(fieldId, 10), await objectToNumericMapAsync(indexEntry));\n }\n if (++count % 1000 === 0)\n await wait(0);\n miniSearch._index.set(term, dataMap);\n }\n return miniSearch;\n }\n /**\n * @ignore\n */\n static instantiateMiniSearch(js, options) {\n const { documentCount, nextId, fieldIds, averageFieldLength, dirtCount, serializationVersion } = js;\n if (serializationVersion !== 1 && serializationVersion !== 2) {\n throw new Error('MiniSearch: cannot deserialize an index created with an incompatible version');\n }\n const miniSearch = new MiniSearch(options);\n miniSearch._documentCount = documentCount;\n miniSearch._nextId = nextId;\n miniSearch._idToShortId = new Map();\n miniSearch._fieldIds = fieldIds;\n miniSearch._avgFieldLength = averageFieldLength;\n miniSearch._dirtCount = dirtCount || 0;\n miniSearch._index = new SearchableMap();\n return miniSearch;\n }\n /**\n * @ignore\n */\n executeQuery(query, searchOptions = {}) {\n if (query === MiniSearch.wildcard) {\n return this.executeWildcardQuery(searchOptions);\n }\n if (typeof query !== 'string') {\n const options = { ...searchOptions, ...query, queries: undefined };\n const results = query.queries.map((subquery) => this.executeQuery(subquery, options));\n return this.combineResults(results, options.combineWith);\n }\n const { tokenize, processTerm, searchOptions: globalSearchOptions } = this._options;\n const options = { tokenize, processTerm, ...globalSearchOptions, ...searchOptions };\n const { tokenize: searchTokenize, processTerm: searchProcessTerm } = options;\n const terms = searchTokenize(query)\n .flatMap((term) => searchProcessTerm(term))\n .filter((term) => !!term);\n const queries = terms.map(termToQuerySpec(options));\n const results = queries.map(query => this.executeQuerySpec(query, options));\n return this.combineResults(results, options.combineWith);\n }\n /**\n * @ignore\n */\n executeQuerySpec(query, searchOptions) {\n const options = { ...this._options.searchOptions, ...searchOptions };\n const boosts = (options.fields || this._options.fields).reduce((boosts, field) => ({ ...boosts, [field]: getOwnProperty(options.boost, field) || 1 }), {});\n const { boostDocument, weights, maxFuzzy, bm25: bm25params } = options;\n const { fuzzy: fuzzyWeight, prefix: prefixWeight } = { ...defaultSearchOptions.weights, ...weights };\n const data = this._index.get(query.term);\n const results = this.termResults(query.term, query.term, 1, query.termBoost, data, boosts, boostDocument, bm25params);\n let prefixMatches;\n let fuzzyMatches;\n if (query.prefix) {\n prefixMatches = this._index.atPrefix(query.term);\n }\n if (query.fuzzy) {\n const fuzzy = (query.fuzzy === true) ? 0.2 : query.fuzzy;\n const maxDistance = fuzzy < 1 ? Math.min(maxFuzzy, Math.round(query.term.length * fuzzy)) : fuzzy;\n if (maxDistance)\n fuzzyMatches = this._index.fuzzyGet(query.term, maxDistance);\n }\n if (prefixMatches) {\n for (const [term, data] of prefixMatches) {\n const distance = term.length - query.term.length;\n if (!distance) {\n continue;\n } // Skip exact match.\n // Delete the term from fuzzy results (if present) if it is also a\n // prefix result. This entry will always be scored as a prefix result.\n fuzzyMatches === null || fuzzyMatches === void 0 ? void 0 : fuzzyMatches.delete(term);\n // Weight gradually approaches 0 as distance goes to infinity, with the\n // weight for the hypothetical distance 0 being equal to prefixWeight.\n // The rate of change is much lower than that of fuzzy matches to\n // account for the fact that prefix matches stay more relevant than\n // fuzzy matches for longer distances.\n const weight = prefixWeight * term.length / (term.length + 0.3 * distance);\n this.termResults(query.term, term, weight, query.termBoost, data, boosts, boostDocument, bm25params, results);\n }\n }\n if (fuzzyMatches) {\n for (const term of fuzzyMatches.keys()) {\n const [data, distance] = fuzzyMatches.get(term);\n if (!distance) {\n continue;\n } // Skip exact match.\n // Weight gradually approaches 0 as distance goes to infinity, with the\n // weight for the hypothetical distance 0 being equal to fuzzyWeight.\n const weight = fuzzyWeight * term.length / (term.length + distance);\n this.termResults(query.term, term, weight, query.termBoost, data, boosts, boostDocument, bm25params, results);\n }\n }\n return results;\n }\n /**\n * @ignore\n */\n executeWildcardQuery(searchOptions) {\n const results = new Map();\n const options = { ...this._options.searchOptions, ...searchOptions };\n for (const [shortId, id] of this._documentIds) {\n const score = options.boostDocument ? options.boostDocument(id, '', this._storedFields.get(shortId)) : 1;\n results.set(shortId, {\n score,\n terms: [],\n match: {}\n });\n }\n return results;\n }\n /**\n * @ignore\n */\n combineResults(results, combineWith = OR) {\n if (results.length === 0) {\n return new Map();\n }\n const operator = combineWith.toLowerCase();\n const combinator = combinators[operator];\n if (!combinator) {\n throw new Error(`Invalid combination operator: ${combineWith}`);\n }\n return results.reduce(combinator) || new Map();\n }\n /**\n * Allows serialization of the index to JSON, to possibly store it and later\n * deserialize it with {@link MiniSearch.loadJSON}.\n *\n * Normally one does not directly call this method, but rather call the\n * standard JavaScript `JSON.stringify()` passing the {@link MiniSearch}\n * instance, and JavaScript will internally call this method. Upon\n * deserialization, one must pass to {@link MiniSearch.loadJSON} the same\n * options used to create the original instance that was serialized.\n *\n * ### Usage:\n *\n * ```javascript\n * // Serialize the index:\n * let miniSearch = new MiniSearch({ fields: ['title', 'text'] })\n * miniSearch.addAll(documents)\n * const json = JSON.stringify(miniSearch)\n *\n * // Later, to deserialize it:\n * miniSearch = MiniSearch.loadJSON(json, { fields: ['title', 'text'] })\n * ```\n *\n * @return A plain-object serializable representation of the search index.\n */\n toJSON() {\n const index = [];\n for (const [term, fieldIndex] of this._index) {\n const data = {};\n for (const [fieldId, freqs] of fieldIndex) {\n data[fieldId] = Object.fromEntries(freqs);\n }\n index.push([term, data]);\n }\n return {\n documentCount: this._documentCount,\n nextId: this._nextId,\n documentIds: Object.fromEntries(this._documentIds),\n fieldIds: this._fieldIds,\n fieldLength: Object.fromEntries(this._fieldLength),\n averageFieldLength: this._avgFieldLength,\n storedFields: Object.fromEntries(this._storedFields),\n dirtCount: this._dirtCount,\n index,\n serializationVersion: 2\n };\n }\n /**\n * @ignore\n */\n termResults(sourceTerm, derivedTerm, termWeight, termBoost, fieldTermData, fieldBoosts, boostDocumentFn, bm25params, results = new Map()) {\n if (fieldTermData == null)\n return results;\n for (const field of Object.keys(fieldBoosts)) {\n const fieldBoost = fieldBoosts[field];\n const fieldId = this._fieldIds[field];\n const fieldTermFreqs = fieldTermData.get(fieldId);\n if (fieldTermFreqs == null)\n continue;\n let matchingFields = fieldTermFreqs.size;\n const avgFieldLength = this._avgFieldLength[fieldId];\n for (const docId of fieldTermFreqs.keys()) {\n if (!this._documentIds.has(docId)) {\n this.removeTerm(fieldId, docId, derivedTerm);\n matchingFields -= 1;\n continue;\n }\n const docBoost = boostDocumentFn ? boostDocumentFn(this._documentIds.get(docId), derivedTerm, this._storedFields.get(docId)) : 1;\n if (!docBoost)\n continue;\n const termFreq = fieldTermFreqs.get(docId);\n const fieldLength = this._fieldLength.get(docId)[fieldId];\n // NOTE: The total number of fields is set to the number of documents\n // `this._documentCount`. It could also make sense to use the number of\n // documents where the current field is non-blank as a normalization\n // factor. This will make a difference in scoring if the field is rarely\n // present. This is currently not supported, and may require further\n // analysis to see if it is a valid use case.\n const rawScore = calcBM25Score(termFreq, matchingFields, this._documentCount, fieldLength, avgFieldLength, bm25params);\n const weightedScore = termWeight * termBoost * fieldBoost * docBoost * rawScore;\n const result = results.get(docId);\n if (result) {\n result.score += weightedScore;\n assignUniqueTerm(result.terms, sourceTerm);\n const match = getOwnProperty(result.match, derivedTerm);\n if (match) {\n match.push(field);\n }\n else {\n result.match[derivedTerm] = [field];\n }\n }\n else {\n results.set(docId, {\n score: weightedScore,\n terms: [sourceTerm],\n match: { [derivedTerm]: [field] }\n });\n }\n }\n }\n return results;\n }\n /**\n * @ignore\n */\n addTerm(fieldId, documentId, term) {\n const indexData = this._index.fetch(term, createMap);\n let fieldIndex = indexData.get(fieldId);\n if (fieldIndex == null) {\n fieldIndex = new Map();\n fieldIndex.set(documentId, 1);\n indexData.set(fieldId, fieldIndex);\n }\n else {\n const docs = fieldIndex.get(documentId);\n fieldIndex.set(documentId, (docs || 0) + 1);\n }\n }\n /**\n * @ignore\n */\n removeTerm(fieldId, documentId, term) {\n if (!this._index.has(term)) {\n this.warnDocumentChanged(documentId, fieldId, term);\n return;\n }\n const indexData = this._index.fetch(term, createMap);\n const fieldIndex = indexData.get(fieldId);\n if (fieldIndex == null || fieldIndex.get(documentId) == null) {\n this.warnDocumentChanged(documentId, fieldId, term);\n }\n else if (fieldIndex.get(documentId) <= 1) {\n if (fieldIndex.size <= 1) {\n indexData.delete(fieldId);\n }\n else {\n fieldIndex.delete(documentId);\n }\n }\n else {\n fieldIndex.set(documentId, fieldIndex.get(documentId) - 1);\n }\n if (this._index.get(term).size === 0) {\n this._index.delete(term);\n }\n }\n /**\n * @ignore\n */\n warnDocumentChanged(shortDocumentId, fieldId, term) {\n for (const fieldName of Object.keys(this._fieldIds)) {\n if (this._fieldIds[fieldName] === fieldId) {\n this._options.logger('warn', `MiniSearch: document with ID ${this._documentIds.get(shortDocumentId)} has changed before removal: term \"${term}\" was not present in field \"${fieldName}\". Removing a document after it has changed can corrupt the index!`, 'version_conflict');\n return;\n }\n }\n }\n /**\n * @ignore\n */\n addDocumentId(documentId) {\n const shortDocumentId = this._nextId;\n this._idToShortId.set(documentId, shortDocumentId);\n this._documentIds.set(shortDocumentId, documentId);\n this._documentCount += 1;\n this._nextId += 1;\n return shortDocumentId;\n }\n /**\n * @ignore\n */\n addFields(fields) {\n for (let i = 0; i < fields.length; i++) {\n this._fieldIds[fields[i]] = i;\n }\n }\n /**\n * @ignore\n */\n addFieldLength(documentId, fieldId, count, length) {\n let fieldLengths = this._fieldLength.get(documentId);\n if (fieldLengths == null)\n this._fieldLength.set(documentId, fieldLengths = []);\n fieldLengths[fieldId] = length;\n const averageFieldLength = this._avgFieldLength[fieldId] || 0;\n const totalFieldLength = (averageFieldLength * count) + length;\n this._avgFieldLength[fieldId] = totalFieldLength / (count + 1);\n }\n /**\n * @ignore\n */\n removeFieldLength(documentId, fieldId, count, length) {\n if (count === 1) {\n this._avgFieldLength[fieldId] = 0;\n return;\n }\n const totalFieldLength = (this._avgFieldLength[fieldId] * count) - length;\n this._avgFieldLength[fieldId] = totalFieldLength / (count - 1);\n }\n /**\n * @ignore\n */\n saveStoredFields(documentId, doc) {\n const { storeFields, extractField } = this._options;\n if (storeFields == null || storeFields.length === 0) {\n return;\n }\n let documentFields = this._storedFields.get(documentId);\n if (documentFields == null)\n this._storedFields.set(documentId, documentFields = {});\n for (const fieldName of storeFields) {\n const fieldValue = extractField(doc, fieldName);\n if (fieldValue !== undefined)\n documentFields[fieldName] = fieldValue;\n }\n }\n}\n/**\n * The special wildcard symbol that can be passed to {@link MiniSearch#search}\n * to match all documents\n */\nMiniSearch.wildcard = Symbol('*');\nconst getOwnProperty = (object, property) => Object.prototype.hasOwnProperty.call(object, property) ? object[property] : undefined;\nconst combinators = {\n [OR]: (a, b) => {\n for (const docId of b.keys()) {\n const existing = a.get(docId);\n if (existing == null) {\n a.set(docId, b.get(docId));\n }\n else {\n const { score, terms, match } = b.get(docId);\n existing.score = existing.score + score;\n existing.match = Object.assign(existing.match, match);\n assignUniqueTerms(existing.terms, terms);\n }\n }\n return a;\n },\n [AND]: (a, b) => {\n const combined = new Map();\n for (const docId of b.keys()) {\n const existing = a.get(docId);\n if (existing == null)\n continue;\n const { score, terms, match } = b.get(docId);\n assignUniqueTerms(existing.terms, terms);\n combined.set(docId, {\n score: existing.score + score,\n terms: existing.terms,\n match: Object.assign(existing.match, match)\n });\n }\n return combined;\n },\n [AND_NOT]: (a, b) => {\n for (const docId of b.keys())\n a.delete(docId);\n return a;\n }\n};\nconst defaultBM25params = { k: 1.2, b: 0.7, d: 0.5 };\nconst calcBM25Score = (termFreq, matchingCount, totalCount, fieldLength, avgFieldLength, bm25params) => {\n const { k, b, d } = bm25params;\n const invDocFreq = Math.log(1 + (totalCount - matchingCount + 0.5) / (matchingCount + 0.5));\n return invDocFreq * (d + termFreq * (k + 1) / (termFreq + k * (1 - b + b * fieldLength / avgFieldLength)));\n};\nconst termToQuerySpec = (options) => (term, i, terms) => {\n const fuzzy = (typeof options.fuzzy === 'function')\n ? options.fuzzy(term, i, terms)\n : (options.fuzzy || false);\n const prefix = (typeof options.prefix === 'function')\n ? options.prefix(term, i, terms)\n : (options.prefix === true);\n const termBoost = (typeof options.boostTerm === 'function')\n ? options.boostTerm(term, i, terms)\n : 1;\n return { term, fuzzy, prefix, termBoost };\n};\nconst defaultOptions = {\n idField: 'id',\n extractField: (document, fieldName) => document[fieldName],\n stringifyField: (fieldValue, fieldName) => fieldValue.toString(),\n tokenize: (text) => text.split(SPACE_OR_PUNCTUATION),\n processTerm: (term) => term.toLowerCase(),\n fields: undefined,\n searchOptions: undefined,\n storeFields: [],\n logger: (level, message) => {\n if (typeof (console === null || console === void 0 ? void 0 : console[level]) === 'function')\n console[level](message);\n },\n autoVacuum: true\n};\nconst defaultSearchOptions = {\n combineWith: OR,\n prefix: false,\n fuzzy: false,\n maxFuzzy: 6,\n boost: {},\n weights: { fuzzy: 0.45, prefix: 0.375 },\n bm25: defaultBM25params\n};\nconst defaultAutoSuggestOptions = {\n combineWith: AND,\n prefix: (term, i, terms) => i === terms.length - 1\n};\nconst defaultVacuumOptions = { batchSize: 1000, batchWait: 10 };\nconst defaultVacuumConditions = { minDirtFactor: 0.1, minDirtCount: 20 };\nconst defaultAutoVacuumOptions = { ...defaultVacuumOptions, ...defaultVacuumConditions };\nconst assignUniqueTerm = (target, term) => {\n // Avoid adding duplicate terms.\n if (!target.includes(term))\n target.push(term);\n};\nconst assignUniqueTerms = (target, source) => {\n for (const term of source) {\n // Avoid adding duplicate terms.\n if (!target.includes(term))\n target.push(term);\n }\n};\nconst byScore = ({ score: a }, { score: b }) => b - a;\nconst createMap = () => new Map();\nconst objectToNumericMap = (object) => {\n const map = new Map();\n for (const key of Object.keys(object)) {\n map.set(parseInt(key, 10), object[key]);\n }\n return map;\n};\nconst objectToNumericMapAsync = async (object) => {\n const map = new Map();\n let count = 0;\n for (const key of Object.keys(object)) {\n map.set(parseInt(key, 10), object[key]);\n if (++count % 1000 === 0) {\n await wait(0);\n }\n }\n return map;\n};\nconst wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n// This regular expression matches any Unicode space, newline, or punctuation\n// character\nconst SPACE_OR_PUNCTUATION = /[\\n\\r\\p{Z}\\p{P}]+/u;\n\nexport { MiniSearch as default };\n//# sourceMappingURL=index.js.map\n","import MiniSearch from 'minisearch';\r\nimport type { ParsedOperation, SearchResult, SearchEngine } from './types.js';\r\n\r\n/**\r\n * Build a full-text search index from parsed operations.\r\n */\r\nexport function buildSearchIndex(operations: ParsedOperation[]): SearchEngine {\r\n const miniSearch = new MiniSearch<{\r\n id: string;\r\n operationId: string;\r\n summary: string;\r\n description: string;\r\n path: string;\r\n method: string;\r\n tags: string;\r\n }>({\r\n fields: ['operationId', 'summary', 'description', 'path', 'method', 'tags'],\r\n storeFields: ['operationId', 'summary', 'path', 'method', 'tags'],\r\n searchOptions: {\r\n prefix: true,\r\n fuzzy: 0.2,\r\n boost: {\r\n summary: 3,\r\n operationId: 2,\r\n tags: 2,\r\n path: 1.5,\r\n },\r\n },\r\n });\r\n\r\n const documents = operations.map(op => ({\r\n id: op.operationId,\r\n operationId: op.operationId,\r\n summary: op.summary,\r\n description: op.description,\r\n path: op.path,\r\n method: op.method,\r\n tags: op.tags.join(' '),\r\n }));\r\n\r\n miniSearch.addAll(documents);\r\n\r\n return {\r\n search(query: string): SearchResult[] {\r\n if (!query.trim()) return [];\r\n return miniSearch.search(query).map(result => ({\r\n operationId: result.operationId as string,\r\n path: result.path as string,\r\n method: result.method as string as SearchResult['method'],\r\n summary: result.summary as string,\r\n tags: (result.tags as string).split(' ').filter(Boolean),\r\n score: result.score,\r\n }));\r\n },\r\n\r\n autoSuggest(query: string): string[] {\r\n if (!query.trim()) return [];\r\n return miniSearch.autoSuggest(query).map(s => s.suggestion);\r\n },\r\n };\r\n}\r\n","/**\r\n * Hash-based router for deep linking to operations.\r\n * Format: #/operation/{operationId} or #/tag/{tagName}\r\n */\r\nexport class Router {\r\n private _callback: (operationId: string) => void;\r\n private _onHashChange = () => this.handleCurrentRoute();\r\n\r\n constructor(onNavigate: (operationId: string) => void) {\r\n this._callback = onNavigate;\r\n }\r\n\r\n init(): void {\r\n window.addEventListener('hashchange', this._onHashChange);\r\n }\r\n\r\n destroy(): void {\r\n window.removeEventListener('hashchange', this._onHashChange);\r\n }\r\n\r\n handleCurrentRoute(): void {\r\n const hash = window.location.hash;\r\n if (!hash) return;\r\n\r\n const match = hash.match(/^#\\/operation\\/(.+)$/);\r\n if (match) {\r\n this._callback(decodeURIComponent(match[1]));\r\n }\r\n }\r\n\r\n navigateTo(operationId: string): void {\r\n const hash = `#/operation/${encodeURIComponent(operationId)}`;\r\n if (window.location.hash !== hash) {\r\n window.location.hash = hash;\r\n } else {\r\n // Hash didn't change, manually trigger callback\r\n this._callback(operationId);\r\n }\r\n }\r\n\r\n static buildHash(operationId: string): string {\r\n return `#/operation/${encodeURIComponent(operationId)}`;\r\n }\r\n}\r\n","import type { LitElement } from 'lit';\r\n\r\nconst STORAGE_KEY = 'speclens-theme';\r\n\r\nexport type ResolvedTheme = 'light' | 'dark';\r\n\r\n/**\r\n * Manages theme state: auto-detects system preference, persists choice,\r\n * and reflects the resolved theme onto the host element.\r\n */\r\nexport class ThemeManager {\r\n private _host: LitElement;\r\n private _preference: 'light' | 'dark' | 'auto' = 'auto';\r\n private _mediaQuery: MediaQueryList | null = null;\r\n private _mediaListener = () => this._apply();\r\n\r\n resolved: ResolvedTheme = 'light';\r\n\r\n constructor(host: LitElement) {\r\n this._host = host;\r\n }\r\n\r\n init(preference: 'light' | 'dark' | 'auto'): void {\r\n // Check localStorage for saved preference\r\n const stored = this._readStorage();\r\n this._preference = stored ?? preference;\r\n\r\n // Listen for system theme changes\r\n this._mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\r\n this._mediaQuery.addEventListener('change', this._mediaListener);\r\n\r\n this._apply();\r\n }\r\n\r\n destroy(): void {\r\n this._mediaQuery?.removeEventListener('change', this._mediaListener);\r\n }\r\n\r\n setTheme(preference: 'light' | 'dark' | 'auto'): void {\r\n this._preference = preference;\r\n this._writeStorage(preference);\r\n this._apply();\r\n }\r\n\r\n toggle(): 'light' | 'dark' {\r\n const next = this.resolved === 'light' ? 'dark' : 'light';\r\n this.setTheme(next);\r\n return next;\r\n }\r\n\r\n private _apply(): void {\r\n if (this._preference === 'auto') {\r\n this.resolved = this._mediaQuery?.matches ? 'dark' : 'light';\r\n } else {\r\n this.resolved = this._preference;\r\n }\r\n\r\n this._host.setAttribute('data-theme', this.resolved);\r\n this._host.requestUpdate();\r\n }\r\n\r\n private _readStorage(): 'light' | 'dark' | 'auto' | null {\r\n try {\r\n const val = localStorage.getItem(STORAGE_KEY);\r\n if (val === 'light' || val === 'dark' || val === 'auto') return val;\r\n } catch { /* localStorage not available */ }\r\n return null;\r\n }\r\n\r\n private _writeStorage(value: string): void {\r\n try {\r\n localStorage.setItem(STORAGE_KEY, value);\r\n } catch { /* localStorage not available */ }\r\n }\r\n}\r\n","/**\n * marked v15.0.12 - a markdown parser\n * Copyright (c) 2011-2025, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n\n// src/defaults.ts\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nvar _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n// src/rules.ts\nvar noopTest = { exec: () => null };\nfunction edit(regex, opt = \"\") {\n let source = typeof regex === \"string\" ? regex : regex.source;\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === \"string\" ? val : val.source;\n valSource = valSource.replace(other.caret, \"$1\");\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nvar other = {\n codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n outputLinkReplace: /\\\\([\\[\\]])/g,\n indentCodeCompensation: /^(\\s+)(?:```)/,\n beginningSpace: /^\\s+/,\n endingHash: /#$/,\n startingSpaceChar: /^ /,\n endingSpaceChar: / $/,\n nonSpaceChar: /[^ ]/,\n newLineCharGlobal: /\\n/g,\n tabCharGlobal: /\\t/g,\n multipleSpaceGlobal: /\\s+/g,\n blankLine: /^[ \\t]*$/,\n doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n blockquoteStart: /^ {0,3}>/,\n blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n listReplaceTabs: /^\\t+/,\n listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n listIsTask: /^\\[[ xX]\\] /,\n listReplaceTask: /^\\[[ xX]\\] +/,\n anyLine: /\\n.*\\n/,\n hrefBrackets: /^<(.*)>$/,\n tableDelimiter: /[:|]/,\n tableAlignChars: /^\\||\\| *$/g,\n tableRowBlankLine: /\\n[ \\t]*$/,\n tableAlignRight: /^ *-+: *$/,\n tableAlignCenter: /^ *:-+: *$/,\n tableAlignLeft: /^ *:-+ *$/,\n startATag: /^<a /i,\n endATag: /^<\\/a>/i,\n startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n startAngleBracket: /^</,\n endAngleBracket: />$/,\n pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n escapeTest: /[&<>\"']/,\n escapeReplace: /[&<>\"']/g,\n escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n unescapeTest: /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,\n caret: /(^|[^\\[])\\^/g,\n percentDecode: /%25/g,\n findPipe: /\\|/g,\n splitPipe: / \\|/,\n slashPipe: /\\\\\\|/g,\n carriageReturn: /\\r\\n|\\r/g,\n spaceLine: /^ +$/gm,\n notSpaceStart: /^\\S*/,\n endingNewline: /\\n$/,\n listItemRegex: (bull) => new RegExp(`^( {0,3}${bull})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),\n nextBulletRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),\n hrRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),\n fencesBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`),\n headingBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),\n htmlBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, \"i\")\n};\nvar newline = /^(?:[ \\t]*(?:\\n|$))+/;\nvar blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nvar fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nvar hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nvar heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nvar bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nvar lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nvar lheading = edit(lheadingCore).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g, \"\").getRegex();\nvar lheadingGfm = edit(lheadingCore).replace(/bull/g, bullet).replace(/blockCode/g, /(?: {4}| {0,3}\\t)/).replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g, / {0,3}>/).replace(/heading/g, / {0,3}#{1,6}/).replace(/html/g, / {0,3}<[^\\n>]+>\\n/).replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex();\nvar _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nvar blockText = /^[^\\n]+/;\nvar _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nvar def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\", _blockLabel).replace(\"title\", /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex();\nvar list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g, bullet).getRegex();\nvar _tag = \"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\";\nvar _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nvar html = edit(\n \"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\n \"i\"\n).replace(\"comment\", _comment).replace(\"tag\", _tag).replace(\"attribute\", / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex();\nvar paragraph = edit(_paragraph).replace(\"hr\", hr).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\", \"\").replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", _tag).getRegex();\nvar blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\", paragraph).getRegex();\nvar blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\nvar gfmTable = edit(\n \"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\"\n).replace(\"hr\", hr).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\", \" {0,3}>\").replace(\"code\", \"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", _tag).getRegex();\nvar blockGfm = {\n ...blockNormal,\n lheading: lheadingGfm,\n table: gfmTable,\n paragraph: edit(_paragraph).replace(\"hr\", hr).replace(\"heading\", \" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\", \"\").replace(\"table\", gfmTable).replace(\"blockquote\", \" {0,3}>\").replace(\"fences\", \" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\", \" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\", \"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\", _tag).getRegex()\n};\nvar blockPedantic = {\n ...blockNormal,\n html: edit(\n `^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`\n ).replace(\"comment\", _comment).replace(/tag/g, \"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph).replace(\"hr\", hr).replace(\"heading\", \" *#{1,6} *[^\\n]\").replace(\"lheading\", lheading).replace(\"|table\", \"\").replace(\"blockquote\", \" {0,3}>\").replace(\"|fences\", \"\").replace(\"|list\", \"\").replace(\"|html\", \"\").replace(\"|tag\", \"\").getRegex()\n};\nvar escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nvar inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nvar br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nvar inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\nvar _punctuation = /[\\p{P}\\p{S}]/u;\nvar _punctuationOrSpace = /[\\s\\p{P}\\p{S}]/u;\nvar _notPunctuationOrSpace = /[^\\s\\p{P}\\p{S}]/u;\nvar punctuation = edit(/^((?![*_])punctSpace)/, \"u\").replace(/punctSpace/g, _punctuationOrSpace).getRegex();\nvar _punctuationGfmStrongEm = /(?!~)[\\p{P}\\p{S}]/u;\nvar _punctuationOrSpaceGfmStrongEm = /(?!~)[\\s\\p{P}\\p{S}]/u;\nvar _notPunctuationOrSpaceGfmStrongEm = /(?:[^\\s\\p{P}\\p{S}]|~)/u;\nvar blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nvar emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/;\nvar emStrongLDelim = edit(emStrongLDelimCore, \"u\").replace(/punct/g, _punctuation).getRegex();\nvar emStrongLDelimGfm = edit(emStrongLDelimCore, \"u\").replace(/punct/g, _punctuationGfmStrongEm).getRegex();\nvar emStrongRDelimAstCore = \"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\";\nvar emStrongRDelimAst = edit(emStrongRDelimAstCore, \"gu\").replace(/notPunctSpace/g, _notPunctuationOrSpace).replace(/punctSpace/g, _punctuationOrSpace).replace(/punct/g, _punctuation).getRegex();\nvar emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, \"gu\").replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm).replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm).replace(/punct/g, _punctuationGfmStrongEm).getRegex();\nvar emStrongRDelimUnd = edit(\n \"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\n \"gu\"\n).replace(/notPunctSpace/g, _notPunctuationOrSpace).replace(/punctSpace/g, _punctuationOrSpace).replace(/punct/g, _punctuation).getRegex();\nvar anyPunctuation = edit(/\\\\(punct)/, \"gu\").replace(/punct/g, _punctuation).getRegex();\nvar autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\", /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\", /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex();\nvar _inlineComment = edit(_comment).replace(\"(?:-->|$)\", \"-->\").getRegex();\nvar tag = edit(\n \"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\"\n).replace(\"comment\", _inlineComment).replace(\"attribute\", /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex();\nvar _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nvar link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\", _inlineLabel).replace(\"href\", /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\", /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex();\nvar reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\", _inlineLabel).replace(\"ref\", _blockLabel).getRegex();\nvar nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\", _blockLabel).getRegex();\nvar reflinkSearch = edit(\"reflink|nolink(?!\\\\()\", \"g\").replace(\"reflink\", reflink).replace(\"nolink\", nolink).getRegex();\nvar inlineNormal = {\n _backpedal: noopTest,\n // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\nvar inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\", _inlineLabel).getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\", _inlineLabel).getRegex()\n};\nvar inlineGfm = {\n ...inlineNormal,\n emStrongRDelimAst: emStrongRDelimAstGfm,\n emStrongLDelim: emStrongLDelimGfm,\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, \"i\").replace(\"email\", /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])((?:\\\\.|[^\\\\])*?(?:\\\\.|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\nvar inlineBreaks = {\n ...inlineGfm,\n br: edit(br).replace(\"{2,}\", \"*\").getRegex(),\n text: edit(inlineGfm.text).replace(\"\\\\b_\", \"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g, \"*\").getRegex()\n};\nvar block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic\n};\nvar inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic\n};\n\n// src/helpers.ts\nvar escapeReplacements = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\"\n};\nvar getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape2(html2, encode) {\n if (encode) {\n if (other.escapeTest.test(html2)) {\n return html2.replace(other.escapeReplace, getEscapeReplacement);\n }\n } else {\n if (other.escapeTestNoEncode.test(html2)) {\n return html2.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html2;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(other.percentDecode, \"%\");\n } catch {\n return null;\n }\n return href;\n}\nfunction splitCells(tableRow, count) {\n const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === \"\\\\\") escaped = !escaped;\n if (escaped) {\n return \"|\";\n } else {\n return \" |\";\n }\n }), cells = row.split(other.splitPipe);\n let i = 0;\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells.at(-1)?.trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push(\"\");\n }\n }\n for (; i < cells.length; i++) {\n cells[i] = cells[i].trim().replace(other.slashPipe, \"|\");\n }\n return cells;\n}\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return \"\";\n }\n let suffLen = 0;\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === \"\\\\\") {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n if (level > 0) {\n return -2;\n }\n return -1;\n}\n\n// src/Tokenizer.ts\nfunction outputLink(cap, link2, raw, lexer2, rules) {\n const href = link2.href;\n const title = link2.title || null;\n const text = cap[1].replace(rules.other.outputLinkReplace, \"$1\");\n lexer2.state.inLink = true;\n const token = {\n type: cap[0].charAt(0) === \"!\" ? \"image\" : \"link\",\n raw,\n href,\n title,\n text,\n tokens: lexer2.inlineTokens(text)\n };\n lexer2.state.inLink = false;\n return token;\n}\nfunction indentCodeCompensation(raw, text, rules) {\n const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text.split(\"\\n\").map((node) => {\n const matchIndentInNode = node.match(rules.other.beginningSpace);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n }).join(\"\\n\");\n}\nvar _Tokenizer = class {\n options;\n rules;\n // set by the lexer\n lexer;\n // set by the lexer\n constructor(options2) {\n this.options = options2 || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: \"space\",\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(this.rules.other.codeRemoveIndent, \"\");\n return {\n type: \"code\",\n raw: cap[0],\n codeBlockStyle: \"indented\",\n text: !this.options.pedantic ? rtrim(text, \"\\n\") : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || \"\", this.rules);\n return {\n type: \"code\",\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, \"$1\") : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n if (this.rules.other.endingHash.test(text)) {\n const trimmed = rtrim(text, \"#\");\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n text = trimmed.trim();\n }\n }\n return {\n type: \"heading\",\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: \"hr\",\n raw: rtrim(cap[0], \"\\n\")\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], \"\\n\").split(\"\\n\");\n let raw = \"\";\n let text = \"\";\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n if (this.rules.other.blockquoteStart.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n } else if (!inBlockquote) {\n currentLines.push(lines[i]);\n } else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join(\"\\n\");\n const currentText = currentRaw.replace(this.rules.other.blockquoteSetextReplace, \"\\n $1\").replace(this.rules.other.blockquoteSetextReplace2, \"\");\n raw = raw ? `${raw}\n${currentRaw}` : currentRaw;\n text = text ? `${text}\n${currentText}` : currentText;\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"code\") {\n break;\n } else if (lastToken?.type === \"blockquote\") {\n const oldToken = lastToken;\n const newText = oldToken.raw + \"\\n\" + lines.join(\"\\n\");\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n } else if (lastToken?.type === \"list\") {\n const oldToken = lastToken;\n const newText = oldToken.raw + \"\\n\" + lines.join(\"\\n\");\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens.at(-1).raw.length).split(\"\\n\");\n continue;\n }\n }\n return {\n type: \"blockquote\",\n raw,\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list2 = {\n type: \"list\",\n raw: \"\",\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : \"\",\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : \"[*+-]\";\n }\n const itemRegex = this.rules.other.listItemRegex(bull);\n let endsWithBlankLine = false;\n while (src) {\n let endEarly = false;\n let raw = \"\";\n let itemContents = \"\";\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) {\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split(\"\\n\", 1)[0].replace(this.rules.other.listReplaceTabs, (t) => \" \".repeat(3 * t.length));\n let nextLine = src.split(\"\\n\", 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n } else if (blankLine) {\n indent = cap[1].length + 1;\n } else {\n indent = cap[2].search(this.rules.other.nonSpaceChar);\n indent = indent > 4 ? 1 : indent;\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && this.rules.other.blankLine.test(nextLine)) {\n raw += nextLine + \"\\n\";\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n const hrRegex = this.rules.other.hrRegex(indent);\n const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n while (src) {\n const rawLine = src.split(\"\\n\", 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n if (this.options.pedantic) {\n nextLine = nextLine.replace(this.rules.other.listReplaceNesting, \" \");\n nextLineWithoutTabs = nextLine;\n } else {\n nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, \" \");\n }\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) {\n itemContents += \"\\n\" + nextLineWithoutTabs.slice(indent);\n } else {\n if (blankLine) {\n break;\n }\n if (line.replace(this.rules.other.tabCharGlobal, \" \").search(this.rules.other.nonSpaceChar) >= 4) {\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += \"\\n\" + nextLine;\n }\n if (!blankLine && !nextLine.trim()) {\n blankLine = true;\n }\n raw += rawLine + \"\\n\";\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list2.loose) {\n if (endsWithBlankLine) {\n list2.loose = true;\n } else if (this.rules.other.doubleBlankLine.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n if (this.options.gfm) {\n istask = this.rules.other.listIsTask.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== \"[ ] \";\n itemContents = itemContents.replace(this.rules.other.listReplaceTask, \"\");\n }\n }\n list2.items.push({\n type: \"list_item\",\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list2.raw += raw;\n }\n const lastItem = list2.items.at(-1);\n if (lastItem) {\n lastItem.raw = lastItem.raw.trimEnd();\n lastItem.text = lastItem.text.trimEnd();\n } else {\n return;\n }\n list2.raw = list2.raw.trimEnd();\n for (let i = 0; i < list2.items.length; i++) {\n this.lexer.state.top = false;\n list2.items[i].tokens = this.lexer.blockTokens(list2.items[i].text, []);\n if (!list2.loose) {\n const spacers = list2.items[i].tokens.filter((t) => t.type === \"space\");\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some((t) => this.rules.other.anyLine.test(t.raw));\n list2.loose = hasMultipleLineBreaks;\n }\n }\n if (list2.loose) {\n for (let i = 0; i < list2.items.length; i++) {\n list2.items[i].loose = true;\n }\n }\n return list2;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: \"html\",\n block: true,\n raw: cap[0],\n pre: cap[1] === \"pre\" || cap[1] === \"script\" || cap[1] === \"style\",\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag2 = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, \" \");\n const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, \"$1\").replace(this.rules.inline.anyPunctuation, \"$1\") : \"\";\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, \"$1\") : cap[3];\n return {\n type: \"def\",\n tag: tag2,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!this.rules.other.tableDelimiter.test(cap[2])) {\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(this.rules.other.tableAlignChars, \"\").split(\"|\");\n const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, \"\").split(\"\\n\") : [];\n const item = {\n type: \"table\",\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n return;\n }\n for (const align of aligns) {\n if (this.rules.other.tableAlignRight.test(align)) {\n item.align.push(\"right\");\n } else if (this.rules.other.tableAlignCenter.test(align)) {\n item.align.push(\"center\");\n } else if (this.rules.other.tableAlignLeft.test(align)) {\n item.align.push(\"left\");\n } else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i]\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i]\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: \"heading\",\n raw: cap[0],\n depth: cap[2].charAt(0) === \"=\" ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === \"\\n\" ? cap[1].slice(0, -1) : cap[1];\n return {\n type: \"paragraph\",\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: \"text\",\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: \"escape\",\n raw: cap[0],\n text: cap[1]\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n this.lexer.state.inLink = true;\n } else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: \"html\",\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n if (!this.rules.other.endAngleBracket.test(trimmedUrl)) {\n return;\n }\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), \"\\\\\");\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n const lastParenIndex = findClosingBracket(cap[2], \"()\");\n if (lastParenIndex === -2) {\n return;\n }\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf(\"!\") === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = \"\";\n }\n }\n let href = cap[2];\n let title = \"\";\n if (this.options.pedantic) {\n const link2 = this.rules.other.pedanticHrefTitle.exec(href);\n if (link2) {\n href = link2[1];\n title = link2[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : \"\";\n }\n href = href.trim();\n if (this.rules.other.startAngleBracket.test(href)) {\n if (this.options.pedantic && !this.rules.other.endAngleBracket.test(trimmedUrl)) {\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, \"$1\") : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, \"$1\") : title\n }, cap[0], this.lexer, this.rules);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, \" \");\n const link2 = links[linkString.toLowerCase()];\n if (!link2) {\n const text = cap[0].charAt(0);\n return {\n type: \"text\",\n raw: text,\n text\n };\n }\n return outputLink(cap, link2, cap[0], this.lexer, this.rules);\n }\n }\n emStrong(src, maskedSrc, prevChar = \"\") {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match) return;\n if (match[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric)) return;\n const nextChar = match[1] || match[2] || \"\";\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === \"*\" ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim) continue;\n rLength = [...rDelim].length;\n if (match[3] || match[4]) {\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) {\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue;\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0) continue;\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n if (Math.min(lLength, rLength) % 2) {\n const text2 = raw.slice(1, -1);\n return {\n type: \"em\",\n raw,\n text: text2,\n tokens: this.lexer.inlineTokens(text2)\n };\n }\n const text = raw.slice(2, -2);\n return {\n type: \"strong\",\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(this.rules.other.newLineCharGlobal, \" \");\n const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n return {\n type: \"codespan\",\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: \"br\",\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: \"del\",\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === \"@\") {\n text = cap[1];\n href = \"mailto:\" + text;\n } else {\n text = cap[1];\n href = text;\n }\n return {\n type: \"link\",\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: \"text\",\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === \"@\") {\n text = cap[0];\n href = \"mailto:\" + text;\n } else {\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? \"\";\n } while (prevCapZero !== cap[0]);\n text = cap[0];\n if (cap[1] === \"www.\") {\n href = \"http://\" + cap[0];\n } else {\n href = cap[0];\n }\n }\n return {\n type: \"link\",\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: \"text\",\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n const escaped = this.lexer.state.inRawBlock;\n return {\n type: \"text\",\n raw: cap[0],\n text: cap[0],\n escaped\n };\n }\n }\n};\n\n// src/Lexer.ts\nvar _Lexer = class __Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options2) {\n this.tokens = [];\n this.tokens.links = /* @__PURE__ */ Object.create(null);\n this.options = options2 || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n other,\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options2) {\n const lexer2 = new __Lexer(options2);\n return lexer2.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options2) {\n const lexer2 = new __Lexer(options2);\n return lexer2.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src.replace(other.carriageReturn, \"\\n\");\n this.blockTokens(src, this.tokens);\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n return this.tokens;\n }\n blockTokens(src, tokens = [], lastParagraphClipped = false) {\n if (this.options.pedantic) {\n src = src.replace(other.tabCharGlobal, \" \").replace(other.spaceLine, \"\");\n }\n while (src) {\n let token;\n if (this.options.extensions?.block?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.raw.length === 1 && lastToken !== void 0) {\n lastToken.raw += \"\\n\";\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"paragraph\" || lastToken?.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.at(-1).src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"paragraph\" || lastToken?.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.raw;\n this.inlineQueue.at(-1).src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n let cutSrc = src;\n if (this.options.extensions?.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === \"number\" && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n const lastToken = tokens.at(-1);\n if (lastParagraphClipped && lastToken?.type === \"paragraph\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1).src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"text\") {\n lastToken.raw += \"\\n\" + token.raw;\n lastToken.text += \"\\n\" + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1).src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = \"Infinite loop on byte: \" + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let maskedSrc = src;\n let match = null;\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf(\"[\") + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"[\" + \"a\".repeat(match[0].length - 2) + \"]\" + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"++\" + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + \"[\" + \"a\".repeat(match[0].length - 2) + \"]\" + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n let keepPrevChar = false;\n let prevChar = \"\";\n while (src) {\n if (!keepPrevChar) {\n prevChar = \"\";\n }\n keepPrevChar = false;\n let token;\n if (this.options.extensions?.inline?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.type === \"text\" && lastToken?.type === \"text\") {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n let cutSrc = src;\n if (this.options.extensions?.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === \"number\" && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== \"_\") {\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n const lastToken = tokens.at(-1);\n if (lastToken?.type === \"text\") {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = \"Infinite loop on byte: \" + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n};\n\n// src/Renderer.ts\nvar _Renderer = class {\n options;\n parser;\n // set by the parser\n constructor(options2) {\n this.options = options2 || _defaults;\n }\n space(token) {\n return \"\";\n }\n code({ text, lang, escaped }) {\n const langString = (lang || \"\").match(other.notSpaceStart)?.[0];\n const code = text.replace(other.endingNewline, \"\") + \"\\n\";\n if (!langString) {\n return \"<pre><code>\" + (escaped ? code : escape2(code, true)) + \"</code></pre>\\n\";\n }\n return '<pre><code class=\"language-' + escape2(langString) + '\">' + (escaped ? code : escape2(code, true)) + \"</code></pre>\\n\";\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `<blockquote>\n${body}</blockquote>\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\n`;\n }\n hr(token) {\n return \"<hr>\\n\";\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = \"\";\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? \"ol\" : \"ul\";\n const startAttr = ordered && start !== 1 ? ' start=\"' + start + '\"' : \"\";\n return \"<\" + type + startAttr + \">\\n\" + body + \"</\" + type + \">\\n\";\n }\n listitem(item) {\n let itemBody = \"\";\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens[0]?.type === \"paragraph\") {\n item.tokens[0].text = checkbox + \" \" + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === \"text\") {\n item.tokens[0].tokens[0].text = checkbox + \" \" + escape2(item.tokens[0].tokens[0].text);\n item.tokens[0].tokens[0].escaped = true;\n }\n } else {\n item.tokens.unshift({\n type: \"text\",\n raw: checkbox + \" \",\n text: checkbox + \" \",\n escaped: true\n });\n }\n } else {\n itemBody += checkbox + \" \";\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `<li>${itemBody}</li>\n`;\n }\n checkbox({ checked }) {\n return \"<input \" + (checked ? 'checked=\"\" ' : \"\") + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph({ tokens }) {\n return `<p>${this.parser.parseInline(tokens)}</p>\n`;\n }\n table(token) {\n let header = \"\";\n let cell = \"\";\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = \"\";\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = \"\";\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body) body = `<tbody>${body}</tbody>`;\n return \"<table>\\n<thead>\\n\" + header + \"</thead>\\n\" + body + \"</table>\\n\";\n }\n tablerow({ text }) {\n return `<tr>\n${text}</tr>\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? \"th\" : \"td\";\n const tag2 = token.align ? `<${type} align=\"${token.align}\">` : `<${type}>`;\n return tag2 + content + `</${type}>\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `<strong>${this.parser.parseInline(tokens)}</strong>`;\n }\n em({ tokens }) {\n return `<em>${this.parser.parseInline(tokens)}</em>`;\n }\n codespan({ text }) {\n return `<code>${escape2(text, true)}</code>`;\n }\n br(token) {\n return \"<br>\";\n }\n del({ tokens }) {\n return `<del>${this.parser.parseInline(tokens)}</del>`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + escape2(title) + '\"';\n }\n out += \">\" + text + \"</a>\";\n return out;\n }\n image({ href, title, text, tokens }) {\n if (tokens) {\n text = this.parser.parseInline(tokens, this.parser.textRenderer);\n }\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return escape2(text);\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${escape2(title)}\"`;\n }\n out += \">\";\n return out;\n }\n text(token) {\n return \"tokens\" in token && token.tokens ? this.parser.parseInline(token.tokens) : \"escaped\" in token && token.escaped ? token.text : escape2(token.text);\n }\n};\n\n// src/TextRenderer.ts\nvar _TextRenderer = class {\n // no need for block level renderers\n strong({ text }) {\n return text;\n }\n em({ text }) {\n return text;\n }\n codespan({ text }) {\n return text;\n }\n del({ text }) {\n return text;\n }\n html({ text }) {\n return text;\n }\n text({ text }) {\n return text;\n }\n link({ text }) {\n return \"\" + text;\n }\n image({ text }) {\n return \"\" + text;\n }\n br() {\n return \"\";\n }\n};\n\n// src/Parser.ts\nvar _Parser = class __Parser {\n options;\n renderer;\n textRenderer;\n constructor(options2) {\n this.options = options2 || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options2) {\n const parser2 = new __Parser(options2);\n return parser2.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options2) {\n const parser2 = new __Parser(options2);\n return parser2.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = \"\";\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const genericToken = anyToken;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || ![\"space\", \"hr\", \"heading\", \"code\", \"table\", \"blockquote\", \"list\", \"html\", \"paragraph\", \"text\"].includes(genericToken.type)) {\n out += ret || \"\";\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case \"space\": {\n out += this.renderer.space(token);\n continue;\n }\n case \"hr\": {\n out += this.renderer.hr(token);\n continue;\n }\n case \"heading\": {\n out += this.renderer.heading(token);\n continue;\n }\n case \"code\": {\n out += this.renderer.code(token);\n continue;\n }\n case \"table\": {\n out += this.renderer.table(token);\n continue;\n }\n case \"blockquote\": {\n out += this.renderer.blockquote(token);\n continue;\n }\n case \"list\": {\n out += this.renderer.list(token);\n continue;\n }\n case \"html\": {\n out += this.renderer.html(token);\n continue;\n }\n case \"paragraph\": {\n out += this.renderer.paragraph(token);\n continue;\n }\n case \"text\": {\n let textToken = token;\n let body = this.renderer.text(textToken);\n while (i + 1 < tokens.length && tokens[i + 1].type === \"text\") {\n textToken = tokens[++i];\n body += \"\\n\" + this.renderer.text(textToken);\n }\n if (top) {\n out += this.renderer.paragraph({\n type: \"paragraph\",\n raw: body,\n text: body,\n tokens: [{ type: \"text\", raw: body, text: body, escaped: true }]\n });\n } else {\n out += body;\n }\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return \"\";\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer = this.renderer) {\n let out = \"\";\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || ![\"escape\", \"html\", \"link\", \"image\", \"strong\", \"em\", \"codespan\", \"br\", \"del\", \"text\"].includes(anyToken.type)) {\n out += ret || \"\";\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case \"escape\": {\n out += renderer.text(token);\n break;\n }\n case \"html\": {\n out += renderer.html(token);\n break;\n }\n case \"link\": {\n out += renderer.link(token);\n break;\n }\n case \"image\": {\n out += renderer.image(token);\n break;\n }\n case \"strong\": {\n out += renderer.strong(token);\n break;\n }\n case \"em\": {\n out += renderer.em(token);\n break;\n }\n case \"codespan\": {\n out += renderer.codespan(token);\n break;\n }\n case \"br\": {\n out += renderer.br(token);\n break;\n }\n case \"del\": {\n out += renderer.del(token);\n break;\n }\n case \"text\": {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return \"\";\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n};\n\n// src/Hooks.ts\nvar _Hooks = class {\n options;\n block;\n constructor(options2) {\n this.options = options2 || _defaults;\n }\n static passThroughHooks = /* @__PURE__ */ new Set([\n \"preprocess\",\n \"postprocess\",\n \"processAllTokens\"\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html2) {\n return html2;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n /**\n * Provide function to tokenize markdown\n */\n provideLexer() {\n return this.block ? _Lexer.lex : _Lexer.lexInline;\n }\n /**\n * Provide function to parse tokens\n */\n provideParser() {\n return this.block ? _Parser.parse : _Parser.parseInline;\n }\n};\n\n// src/Instance.ts\nvar Marked = class {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.parseMarkdown(true);\n parseInline = this.parseMarkdown(false);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case \"table\": {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case \"list\": {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens2 = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens2, callback));\n });\n } else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n const opts = { ...pack };\n opts.async = this.defaults.async || opts.async || false;\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error(\"extension name required\");\n }\n if (\"renderer\" in ext) {\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n extensions.renderers[ext.name] = function(...args2) {\n let ret = ext.renderer.apply(this, args2);\n if (ret === false) {\n ret = prevRenderer.apply(this, args2);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (\"tokenizer\" in ext) {\n if (!ext.level || ext.level !== \"block\" && ext.level !== \"inline\") {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) {\n if (ext.level === \"block\") {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === \"inline\") {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (\"childTokens\" in ext && ext.childTokens) {\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if ([\"options\", \"parser\"].includes(prop)) {\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n renderer[rendererProp] = (...args2) => {\n let ret = rendererFunc.apply(renderer, args2);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args2);\n }\n return ret || \"\";\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if ([\"options\", \"rules\", \"lexer\"].includes(prop)) {\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n tokenizer[tokenizerProp] = (...args2) => {\n let ret = tokenizerFunc.apply(tokenizer, args2);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args2);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if ([\"options\", \"block\"].includes(prop)) {\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then((ret2) => {\n return prevHook.call(hooks, ret2);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n } else {\n hooks[hooksProp] = (...args2) => {\n let ret = hooksFunc.apply(hooks, args2);\n if (ret === false) {\n ret = prevHook.apply(hooks, args2);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n if (pack.walkTokens) {\n const walkTokens2 = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function(token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens2) {\n values = values.concat(walkTokens2.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options2) {\n return _Lexer.lex(src, options2 ?? this.defaults);\n }\n parser(tokens, options2) {\n return _Parser.parse(tokens, options2 ?? this.defaults);\n }\n parseMarkdown(blockType) {\n const parse2 = (src, options2) => {\n const origOpt = { ...options2 };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));\n }\n if (typeof src === \"undefined\" || src === null) {\n return throwError(new Error(\"marked(): input parameter is undefined or null\"));\n }\n if (typeof src !== \"string\") {\n return throwError(new Error(\"marked(): input parameter is of type \" + Object.prototype.toString.call(src) + \", string expected\"));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer2 = opt.hooks ? opt.hooks.provideLexer() : blockType ? _Lexer.lex : _Lexer.lexInline;\n const parser2 = opt.hooks ? opt.hooks.provideParser() : blockType ? _Parser.parse : _Parser.parseInline;\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then((src2) => lexer2(src2, opt)).then((tokens) => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens).then((tokens) => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens).then((tokens) => parser2(tokens, opt)).then((html2) => opt.hooks ? opt.hooks.postprocess(html2) : html2).catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer2(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html2 = parser2(tokens, opt);\n if (opt.hooks) {\n html2 = opt.hooks.postprocess(html2);\n }\n return html2;\n } catch (e) {\n return throwError(e);\n }\n };\n return parse2;\n }\n onError(silent, async) {\n return (e) => {\n e.message += \"\\nPlease report this to https://github.com/markedjs/marked.\";\n if (silent) {\n const msg = \"<p>An error occurred:</p><pre>\" + escape2(e.message + \"\", true) + \"</pre>\";\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n};\n\n// src/marked.ts\nvar markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\nmarked.options = marked.setOptions = function(options2) {\n markedInstance.setOptions(options2);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\nmarked.use = function(...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\nmarked.walkTokens = function(tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\nmarked.parseInline = markedInstance.parseInline;\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nvar options = marked.options;\nvar setOptions = marked.setOptions;\nvar use = marked.use;\nvar walkTokens = marked.walkTokens;\nvar parseInline = marked.parseInline;\nvar parse = marked;\nvar parser = _Parser.parse;\nvar lexer = _Lexer.lex;\nexport {\n _Hooks as Hooks,\n _Lexer as Lexer,\n Marked,\n _Parser as Parser,\n _Renderer as Renderer,\n _TextRenderer as TextRenderer,\n _Tokenizer as Tokenizer,\n _defaults as defaults,\n _getDefaults as getDefaults,\n lexer,\n marked,\n options,\n parse,\n parseInline,\n parser,\n setOptions,\n use,\n walkTokens\n};\n//# sourceMappingURL=marked.esm.js.map\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { resetStyles } from '../../styles/reset.css.js';\r\nimport type { ParsedSpec } from '../../core/types.js';\r\n\r\n@customElement('sl-header')\r\nexport class SlHeader extends LitElement {\r\n static override styles = [\r\n resetStyles,\r\n css`\r\n :host {\r\n display: block;\r\n position: sticky;\r\n top: 0;\r\n z-index: 100;\r\n background: var(--sl-color-surface);\r\n border-bottom: 1px solid var(--sl-color-border);\r\n backdrop-filter: blur(8px);\r\n }\r\n\r\n .header {\r\n display: flex;\r\n align-items: center;\r\n height: var(--sl-header-height);\r\n padding: 0 var(--sl-spacing-xl);\r\n gap: var(--sl-spacing-md);\r\n }\r\n\r\n .hamburger {\r\n display: none;\r\n padding: var(--sl-spacing-sm);\r\n border-radius: var(--sl-radius-md);\r\n color: var(--sl-color-text-muted);\r\n }\r\n\r\n .hamburger:hover {\r\n background: var(--sl-color-surface-raised);\r\n }\r\n\r\n @media (max-width: 768px) {\r\n .hamburger { display: flex; }\r\n }\r\n\r\n .title-area {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-sm);\r\n min-width: 0;\r\n }\r\n\r\n .title {\r\n font-size: var(--sl-font-size-lg);\r\n font-weight: 700;\r\n color: var(--sl-color-text);\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n }\r\n\r\n .version {\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n padding: 2px 8px;\r\n border-radius: var(--sl-radius-full);\r\n background: var(--sl-color-primary);\r\n color: var(--sl-color-primary-text);\r\n white-space: nowrap;\r\n }\r\n\r\n .spacer { flex: 1; }\r\n\r\n .actions {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-xs);\r\n }\r\n\r\n .action-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 36px;\r\n height: 36px;\r\n border-radius: var(--sl-radius-md);\r\n color: var(--sl-color-text-muted);\r\n transition: all var(--sl-transition-fast);\r\n }\r\n\r\n .action-btn:hover {\r\n background: var(--sl-color-surface-raised);\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .auth-btn {\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n font-size: var(--sl-font-size-sm);\r\n font-weight: 600;\r\n height: 34px;\r\n padding: 0 14px;\r\n border-radius: var(--sl-radius-full);\r\n border: 1.5px solid var(--sl-color-border);\r\n color: var(--sl-color-text-secondary);\r\n background: transparent;\r\n letter-spacing: 0.01em;\r\n transition: all var(--sl-transition-fast);\r\n }\r\n\r\n .auth-btn:hover {\r\n border-color: var(--sl-color-primary);\r\n color: var(--sl-color-primary);\r\n background: var(--sl-color-sidebar-active);\r\n }\r\n\r\n .auth-btn.active {\r\n background: var(--sl-color-primary);\r\n color: var(--sl-color-primary-text);\r\n border-color: var(--sl-color-primary);\r\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.2);\r\n }\r\n\r\n .auth-btn.active:hover {\r\n background: var(--sl-color-primary-hover);\r\n border-color: var(--sl-color-primary-hover);\r\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.3);\r\n }\r\n `,\r\n ];\r\n\r\n @property({ type: Object }) spec: ParsedSpec | null = null;\r\n @property({ type: Boolean }) authOpen = false;\r\n\r\n override render() {\r\n if (!this.spec) return html``;\r\n\r\n return html`\r\n <div class=\"header\">\r\n <button class=\"hamburger\" @click=${() => this.dispatchEvent(new CustomEvent('toggle-sidebar'))}>\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path d=\"M3 5h14M3 10h14M3 15h14\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" fill=\"none\"/>\r\n </svg>\r\n </button>\r\n\r\n <div class=\"title-area\">\r\n <span class=\"title\">${this.spec.title}</span>\r\n <span class=\"version\">${this.spec.version}</span>\r\n </div>\r\n\r\n <div class=\"spacer\"></div>\r\n\r\n <div class=\"actions\">\r\n ${this.spec.securitySchemes.length > 0 ? html`\r\n <button\r\n class=\"auth-btn ${this.authOpen ? 'active' : ''}\"\r\n @click=${() => this.dispatchEvent(new CustomEvent('toggle-auth'))}\r\n >\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <rect x=\"3\" y=\"7\" width=\"10\" height=\"7\" rx=\"1.5\"/>\r\n <path d=\"M5.5 7V5a2.5 2.5 0 015 0v2\"/>\r\n </svg>\r\n Authorize\r\n </button>\r\n ` : null}\r\n\r\n <button class=\"action-btn\" @click=${() => this.dispatchEvent(new CustomEvent('toggle-theme'))} title=\"Toggle theme\">\r\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\r\n <circle cx=\"9\" cy=\"9\" r=\"4\"/>\r\n <path d=\"M9 1v2M9 15v2M1 9h2M15 9h2M3.3 3.3l1.4 1.4M13.3 13.3l1.4 1.4M3.3 14.7l1.4-1.4M13.3 4.7l1.4-1.4\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property, state, query } from 'lit/decorators.js';\r\nimport { resetStyles } from '../../styles/reset.css.js';\r\nimport type { TagGroup, SearchEngine, SearchResult } from '../../core/types.js';\r\n\r\n@customElement('sl-sidebar')\r\nexport class SlSidebar extends LitElement {\r\n static override styles = [\r\n resetStyles,\r\n css`\r\n :host {\r\n display: block;\r\n }\r\n\r\n .sidebar {\r\n position: sticky;\r\n top: var(--sl-header-height);\r\n width: var(--sl-sidebar-width);\r\n height: calc(100vh - var(--sl-header-height));\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n background: var(--sl-color-sidebar-bg);\r\n border-right: 1px solid var(--sl-color-border);\r\n padding: 0;\r\n flex-shrink: 0;\r\n scrollbar-width: thin;\r\n scrollbar-color: var(--sl-color-border) transparent;\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n\r\n .sidebar::-webkit-scrollbar {\r\n width: 4px;\r\n }\r\n .sidebar::-webkit-scrollbar-thumb {\r\n background: var(--sl-color-border);\r\n border-radius: 2px;\r\n }\r\n\r\n .overlay {\r\n display: none;\r\n }\r\n\r\n @media (max-width: 768px) {\r\n .sidebar {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n height: 100vh;\r\n z-index: 200;\r\n transform: translateX(-100%);\r\n transition: transform var(--sl-transition-base);\r\n box-shadow: var(--sl-shadow-xl);\r\n }\r\n\r\n :host([open]) .sidebar {\r\n transform: translateX(0);\r\n }\r\n\r\n .overlay {\r\n display: block;\r\n position: fixed;\r\n inset: 0;\r\n background: var(--sl-color-overlay);\r\n z-index: 199;\r\n opacity: 0;\r\n pointer-events: none;\r\n transition: opacity var(--sl-transition-base);\r\n }\r\n\r\n :host([open]) .overlay {\r\n opacity: 1;\r\n pointer-events: auto;\r\n }\r\n }\r\n\r\n /* ── Search ────────────────────────── */\r\n .search-box {\r\n padding: var(--sl-spacing-md) var(--sl-spacing-md) var(--sl-spacing-sm);\r\n flex-shrink: 0;\r\n }\r\n\r\n .search-input-wrap {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-sm);\r\n padding: 6px 10px;\r\n border: 1px solid var(--sl-color-border);\r\n border-radius: var(--sl-radius-md);\r\n background: var(--sl-color-bg);\r\n transition: border-color var(--sl-transition-fast);\r\n }\r\n\r\n .search-input-wrap:focus-within {\r\n border-color: var(--sl-color-primary);\r\n }\r\n\r\n .search-icon {\r\n color: var(--sl-color-text-muted);\r\n flex-shrink: 0;\r\n }\r\n\r\n .search-input {\r\n flex: 1;\r\n border: none;\r\n background: none;\r\n color: var(--sl-color-text);\r\n font-size: var(--sl-font-size-sm);\r\n outline: none;\r\n min-width: 0;\r\n }\r\n\r\n .search-input::placeholder {\r\n color: var(--sl-color-text-muted);\r\n }\r\n\r\n .search-shortcut {\r\n font-size: 0.625rem;\r\n padding: 1px 5px;\r\n border-radius: 3px;\r\n background: var(--sl-color-surface-raised);\r\n border: 1px solid var(--sl-color-border);\r\n color: var(--sl-color-text-muted);\r\n font-family: var(--sl-font-mono);\r\n flex-shrink: 0;\r\n }\r\n\r\n /* ── Nav ───────────────────────────── */\r\n .nav-list {\r\n flex: 1;\r\n overflow-y: auto;\r\n padding: var(--sl-spacing-xs) 0 var(--sl-spacing-md);\r\n scrollbar-width: thin;\r\n scrollbar-color: var(--sl-color-border) transparent;\r\n }\r\n\r\n .nav-list::-webkit-scrollbar {\r\n width: 4px;\r\n }\r\n .nav-list::-webkit-scrollbar-thumb {\r\n background: var(--sl-color-border);\r\n border-radius: 2px;\r\n }\r\n\r\n .intro-link {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-sm);\r\n padding: 8px var(--sl-spacing-lg);\r\n font-size: var(--sl-font-size-sm);\r\n font-weight: 600;\r\n color: var(--sl-color-text-secondary);\r\n cursor: pointer;\r\n transition: all var(--sl-transition-fast);\r\n border-left: 2px solid transparent;\r\n }\r\n\r\n .intro-link:hover {\r\n background: var(--sl-color-sidebar-hover);\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .intro-link.active {\r\n background: var(--sl-color-sidebar-active);\r\n color: var(--sl-color-primary);\r\n border-left-color: var(--sl-color-primary);\r\n }\r\n\r\n .tag-group {\r\n margin-bottom: var(--sl-spacing-xs);\r\n }\r\n\r\n .tag-header {\r\n display: flex;\r\n align-items: center;\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-lg);\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n text-transform: uppercase;\r\n letter-spacing: 0.05em;\r\n color: var(--sl-color-text-muted);\r\n cursor: default;\r\n user-select: none;\r\n }\r\n\r\n .op-link {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-sm);\r\n padding: 5px var(--sl-spacing-lg) 5px calc(var(--sl-spacing-lg) + 4px);\r\n font-size: var(--sl-font-size-sm);\r\n color: var(--sl-color-text-secondary);\r\n cursor: pointer;\r\n transition: all var(--sl-transition-fast);\r\n text-decoration: none;\r\n border-left: 2px solid transparent;\r\n }\r\n\r\n .op-link:hover {\r\n background: var(--sl-color-sidebar-hover);\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .op-link.active {\r\n background: var(--sl-color-sidebar-active);\r\n color: var(--sl-color-primary);\r\n border-left-color: var(--sl-color-primary);\r\n }\r\n\r\n .method-badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 42px;\r\n min-width: 42px;\r\n padding: 1px 0;\r\n border-radius: var(--sl-radius-sm);\r\n font-size: 0.625rem;\r\n font-weight: 700;\r\n font-family: var(--sl-font-mono);\r\n text-transform: uppercase;\r\n letter-spacing: 0.02em;\r\n }\r\n\r\n .method-get { background: var(--sl-color-get-bg); color: var(--sl-color-get); }\r\n .method-post { background: var(--sl-color-post-bg); color: var(--sl-color-post); }\r\n .method-put { background: var(--sl-color-put-bg); color: var(--sl-color-put); }\r\n .method-delete { background: var(--sl-color-delete-bg); color: var(--sl-color-delete); }\r\n .method-patch { background: var(--sl-color-patch-bg); color: var(--sl-color-patch); }\r\n .method-options,\r\n .method-head,\r\n .method-trace { background: var(--sl-color-options-bg); color: var(--sl-color-options); }\r\n\r\n .op-path {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n font-size: var(--sl-font-size-xs);\r\n }\r\n\r\n .no-results {\r\n padding: var(--sl-spacing-md) var(--sl-spacing-lg);\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n text-align: center;\r\n }\r\n `,\r\n ];\r\n\r\n @property({ type: Array }) tagGroups: TagGroup[] = [];\r\n @property({ type: String }) activeOperationId = '';\r\n @property({ type: Boolean, reflect: true }) open = false;\r\n @property({ type: Object }) searchEngine: SearchEngine | null = null;\r\n\r\n @state() private _searchQuery = '';\r\n @state() private _searchResults: SearchResult[] = [];\r\n\r\n @query('.search-input') private _searchInput!: HTMLInputElement;\r\n\r\n focusSearch() {\r\n this._searchInput?.focus();\r\n }\r\n\r\n private _handleSearchInput(e: Event) {\r\n this._searchQuery = (e.target as HTMLInputElement).value;\r\n if (this.searchEngine && this._searchQuery.trim()) {\r\n this._searchResults = this.searchEngine.search(this._searchQuery).slice(0, 30);\r\n } else {\r\n this._searchResults = [];\r\n }\r\n }\r\n\r\n private _navigate(operationId: string) {\r\n this._searchQuery = '';\r\n this._searchResults = [];\r\n this.dispatchEvent(new CustomEvent('navigate', { detail: operationId }));\r\n this.dispatchEvent(new CustomEvent('close-sidebar'));\r\n }\r\n\r\n private _navigateIntro() {\r\n this._searchQuery = '';\r\n this._searchResults = [];\r\n this.dispatchEvent(new CustomEvent('navigate-intro'));\r\n this.dispatchEvent(new CustomEvent('close-sidebar'));\r\n }\r\n\r\n private _isIntroActive(): boolean {\r\n return !this.activeOperationId;\r\n }\r\n\r\n override render() {\r\n const isSearching = this._searchQuery.trim().length > 0;\r\n\r\n return html`\r\n <div class=\"overlay\" @click=${() => this.dispatchEvent(new CustomEvent('close-sidebar'))}></div>\r\n <nav class=\"sidebar\">\r\n <div class=\"search-box\">\r\n <div class=\"search-input-wrap\">\r\n <svg class=\"search-icon\" width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\r\n <circle cx=\"7\" cy=\"7\" r=\"4.5\"/>\r\n <path d=\"M10.5 10.5L14 14\" stroke-linecap=\"round\"/>\r\n </svg>\r\n <input\r\n class=\"search-input\"\r\n type=\"text\"\r\n placeholder=\"Search endpoints…\"\r\n .value=${this._searchQuery}\r\n @input=${this._handleSearchInput}\r\n />\r\n <span class=\"search-shortcut\">⌘K</span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"nav-list\">\r\n ${isSearching ? html`\r\n ${this._searchResults.length > 0 ? this._searchResults.map(r => html`\r\n <a\r\n class=\"op-link ${r.operationId === this.activeOperationId ? 'active' : ''}\"\r\n @click=${() => this._navigate(r.operationId)}\r\n title=\"${r.method.toUpperCase()} ${r.path}\"\r\n >\r\n <span class=\"method-badge method-${r.method}\">${r.method}</span>\r\n <span class=\"op-path\">${r.summary || r.path}</span>\r\n </a>\r\n `) : html`<div class=\"no-results\">No matching endpoints</div>`}\r\n ` : html`\r\n <a class=\"intro-link ${this._isIntroActive() ? 'active' : ''}\" @click=${this._navigateIntro}>\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\r\n <path d=\"M8 2v12M4 6l4-4 4 4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n Introduction\r\n </a>\r\n ${this.tagGroups.map(group => html`\r\n <div class=\"tag-group\">\r\n <div class=\"tag-header\">${group.name}</div>\r\n ${group.operations.map(op => html`\r\n <a\r\n class=\"op-link ${op.operationId === this.activeOperationId ? 'active' : ''}\"\r\n @click=${() => this._navigate(op.operationId)}\r\n title=\"${op.method.toUpperCase()} ${op.path}\"\r\n >\r\n <span class=\"method-badge method-${op.method}\">${op.method}</span>\r\n <span class=\"op-path\">${op.summary || op.path}</span>\r\n </a>\r\n `)}\r\n </div>\r\n `)}\r\n `}\r\n </div>\r\n </nav>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { resetStyles } from '../../styles/reset.css.js';\r\nimport type { ParsedParameter } from '../../core/types.js';\r\n\r\n@customElement('sl-parameters')\r\nexport class SlParameters extends LitElement {\r\n static override styles = [\r\n resetStyles,\r\n css`\r\n :host {\r\n display: block;\r\n }\r\n\r\n .param-group {\r\n margin-bottom: var(--sl-spacing-md);\r\n }\r\n\r\n .param-group-label {\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n text-transform: uppercase;\r\n letter-spacing: 0.04em;\r\n color: var(--sl-color-text-muted);\r\n margin-bottom: var(--sl-spacing-xs);\r\n padding: var(--sl-spacing-xs) 0;\r\n }\r\n\r\n .param-row {\r\n display: grid;\r\n grid-template-columns: 180px 100px 1fr;\r\n gap: var(--sl-spacing-sm);\r\n padding: var(--sl-spacing-sm) 0;\r\n border-bottom: 1px solid var(--sl-color-border);\r\n font-size: var(--sl-font-size-sm);\r\n align-items: start;\r\n }\r\n\r\n .param-row:last-child {\r\n border-bottom: none;\r\n }\r\n\r\n .param-name-cell {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 2px;\r\n }\r\n\r\n .param-name {\r\n font-family: var(--sl-font-mono);\r\n font-weight: 500;\r\n color: var(--sl-color-text);\r\n word-break: break-all;\r\n }\r\n\r\n .param-required {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-badge-required);\r\n font-weight: 600;\r\n }\r\n\r\n .param-deprecated {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-badge-deprecated);\r\n font-weight: 600;\r\n }\r\n\r\n .param-type {\r\n font-family: var(--sl-font-mono);\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n padding-top: 2px;\r\n }\r\n\r\n .param-desc {\r\n color: var(--sl-color-text-secondary);\r\n line-height: 1.5;\r\n }\r\n\r\n .param-example {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n margin-top: 2px;\r\n }\r\n\r\n .param-example code {\r\n background: var(--sl-color-code-bg);\r\n padding: 1px 4px;\r\n border-radius: var(--sl-radius-sm);\r\n font-size: var(--sl-font-size-xs);\r\n }\r\n\r\n .param-enum {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 4px;\r\n margin-top: 4px;\r\n }\r\n\r\n .enum-value {\r\n font-family: var(--sl-font-mono);\r\n font-size: 0.6875rem;\r\n padding: 1px 6px;\r\n border-radius: var(--sl-radius-sm);\r\n background: var(--sl-color-surface-raised);\r\n color: var(--sl-color-text-secondary);\r\n }\r\n\r\n @media (max-width: 768px) {\r\n .param-row {\r\n grid-template-columns: 1fr;\r\n gap: var(--sl-spacing-xs);\r\n }\r\n }\r\n `,\r\n ];\r\n\r\n @property({ type: Array }) parameters: ParsedParameter[] = [];\r\n\r\n private _getType(schema: Record<string, unknown> | null): string {\r\n if (!schema) return 'any';\r\n if (schema.type === 'array' && schema.items) {\r\n const items = schema.items as Record<string, unknown>;\r\n return `${items.type ?? 'any'}[]`;\r\n }\r\n return (schema.type as string) ?? (schema.oneOf ? 'oneOf' : schema.anyOf ? 'anyOf' : 'any');\r\n }\r\n\r\n private _getEnum(schema: Record<string, unknown> | null): string[] {\r\n if (!schema) return [];\r\n return (schema.enum as string[]) ?? [];\r\n }\r\n\r\n override render() {\r\n // Group by location\r\n const groups = new Map<string, ParsedParameter[]>();\r\n const order = ['path', 'query', 'header', 'cookie'];\r\n\r\n for (const p of this.parameters) {\r\n if (!groups.has(p.in)) groups.set(p.in, []);\r\n groups.get(p.in)!.push(p);\r\n }\r\n\r\n return html`\r\n ${order.filter(loc => groups.has(loc)).map(loc => html`\r\n <div class=\"param-group\">\r\n <div class=\"param-group-label\">${loc} parameters</div>\r\n ${groups.get(loc)!.map(param => html`\r\n <div class=\"param-row\">\r\n <div class=\"param-name-cell\">\r\n <span class=\"param-name\">${param.name}</span>\r\n ${param.required ? html`<span class=\"param-required\">required</span>` : null}\r\n ${param.deprecated ? html`<span class=\"param-deprecated\">deprecated</span>` : null}\r\n </div>\r\n <div class=\"param-type\">${this._getType(param.schema as Record<string, unknown>)}</div>\r\n <div>\r\n <div class=\"param-desc\">${param.description}</div>\r\n ${param.example !== undefined ? html`\r\n <div class=\"param-example\">Example: <code>${JSON.stringify(param.example)}</code></div>\r\n ` : null}\r\n ${this._getEnum(param.schema as Record<string, unknown>).length > 0 ? html`\r\n <div class=\"param-enum\">\r\n ${this._getEnum(param.schema as Record<string, unknown>).map(v => html`<span class=\"enum-value\">${v}</span>`)}\r\n </div>\r\n ` : null}\r\n </div>\r\n </div>\r\n `)}\r\n </div>\r\n `)}\r\n `;\r\n }\r\n}\r\n","'use strict';\n\nexport const SKIP_SYMBOL = Symbol('skip');\n\nfunction pad(number) {\n if (number < 10) {\n return '0' + number;\n }\n return number;\n}\n\nexport function toRFCDateTime(date, omitTime, omitDate, milliseconds) {\n var res = omitDate ? '' : (date.getUTCFullYear() +\n '-' + pad(date.getUTCMonth() + 1) +\n '-' + pad(date.getUTCDate()));\n if (!omitTime) {\n res += 'T' + pad(date.getUTCHours()) +\n ':' + pad(date.getUTCMinutes()) +\n ':' + pad(date.getUTCSeconds()) +\n (milliseconds ? '.' + (date.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) : '') +\n 'Z';\n }\n return res;\n};\n\nexport function ensureMinLength(sample, min) {\n if (min > sample.length) {\n return sample.repeat(Math.trunc(min / sample.length) + 1).substring(0, min);\n }\n return sample;\n}\n\nexport function mergeDeep(...objects) {\n const isObject = obj => obj && typeof obj === 'object';\n\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach(key => {\n const pVal = prev[key];\n const oVal = obj[key];\n\n if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n\n return prev;\n }, Array.isArray(objects[objects.length - 1]) ? [] : {});\n}\n\n// deterministic UUID sampler\n\nexport function uuid(str) {\n var hash = hashCode(str);\n var random = jsf32(hash, hash, hash, hash);\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n var r = (random() * 16) % 16 | 0;\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n });\n return uuid;\n}\n\nexport function getResultForCircular(type) {\n return {\n value: type === 'object' ?\n {}\n : type === 'array' ? [] : undefined\n };\n}\n\nexport function popSchemaStack(seenSchemasStack, context) {\n if (context) seenSchemasStack.pop();\n}\n\nexport function getXMLAttributes(schema) {\n return {\n name: schema?.xml?.name || '',\n prefix: schema?.xml?.prefix || '',\n namespace: schema?.xml?.namespace || null,\n attribute: schema?.xml?.attribute ?? false,\n wrapped: schema?.xml?.wrapped ?? false,\n };\n}\n\nfunction resolveNodeType(schema) {\n const xml = schema?.xml;\n\n if (xml?.nodeType) {\n return xml.nodeType;\n }\n\n if (xml?.attribute === true) {\n return 'attribute';\n }\n\n if (xml?.wrapped === true && schema?.type === 'array') {\n return 'element';\n }\n\n if (schema?.$ref || schema?.$dynamicRef || schema?.type === 'array') {\n return 'none';\n }\n\n if (schema?.oneOf || schema?.anyOf || schema?.allOf) {\n return 'none';\n }\n\n return 'element';\n}\n\nexport function applyXMLAttributes(result, schema = {}, context = {}) {\n const { value: oldValue } = result;\n const { propertyName: oldPropertyName } = context;\n const { name, prefix, namespace } = getXMLAttributes(schema);\n const effectiveNodeType = resolveNodeType(schema);\n\n let propertyName = name || oldPropertyName ? `${prefix ? prefix + ':' : ''}${name || oldPropertyName}` : null;\n\n let value = typeof oldValue === 'object'\n ? Array.isArray(oldValue)\n ? [...oldValue]\n : { ...oldValue }\n : oldValue;\n\n switch (effectiveNodeType) {\n case 'attribute':\n if (propertyName) {\n propertyName = `$${propertyName}`;\n }\n break;\n\n case 'text':\n propertyName = '#text';\n break;\n\n case 'cdata':\n propertyName = '#cdata';\n break;\n\n case 'none':\n if (schema.type === 'array') {\n propertyName = null;\n if (schema.example !== undefined) {\n propertyName = schema.items?.xml?.name || propertyName;\n }\n } else {\n propertyName = null;\n }\n break;\n\n default:\n if (schema.type === 'array') {\n if (Array.isArray(value)) {\n value = { [propertyName]: [...value] };\n }\n }\n break;\n }\n\n if (namespace && effectiveNodeType !== 'text' && effectiveNodeType !== 'cdata' && effectiveNodeType !== 'none') {\n if (typeof value === 'object') {\n value[`$xmlns${prefix ? ':' + prefix : ''}`] = namespace;\n } else {\n value = { [`$xmlns${prefix ? ':' + prefix : ''}`]: namespace, ['#text']: value };\n }\n }\n\n return {\n propertyName,\n value,\n };\n}\n\nfunction hashCode(str) {\n var hash = 0;\n if (str.length == 0) return hash;\n for (var i = 0; i < str.length; i++) {\n var char = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash;\n }\n return hash;\n}\n\nfunction jsf32(a, b, c, d) {\n return function () {\n a |= 0; b |= 0; c |= 0; d |= 0;\n var t = a - (b << 27 | b >>> 5) | 0;\n a = b ^ (c << 17 | c >>> 15);\n b = c + d | 0;\n c = d + t | 0;\n d = a + t | 0;\n return (d >>> 0) / 4294967296;\n }\n}\n","import { traverse } from './traverse';\nimport { mergeDeep, SKIP_SYMBOL } from './utils';\n\n\nexport function allOfSample(into, children, options, spec, context) {\n let res = traverse(into, options, spec);\n const subSamples = [];\n\n for (let subSchema of children) {\n const { type, readOnly, writeOnly, value } = traverse({ type: res.type, ...subSchema }, options, spec, {\n ...context,\n isAllOfChild: true,\n });\n if (res.type && type && type !== res.type) {\n console.warn('allOf: schemas with different types can\\'t be merged');\n res.type = type;\n }\n res.type = res.type || type;\n res.readOnly = res.readOnly || readOnly;\n res.writeOnly = res.writeOnly || writeOnly;\n if (value != null) subSamples.push(value);\n }\n\n if (res.type === 'object') {\n res.value = mergeDeep(res.value || {}, ...subSamples.filter(sample => typeof sample === 'object'));\n for (const key in res.value) {\n if (res.value[key] === SKIP_SYMBOL) {\n delete res.value[key];\n }\n }\n return res;\n } else {\n if (res.type === 'array') {\n // TODO: implement arrays\n if (!options.quiet) console.warn('OpenAPI Sampler: found allOf with \"array\" type. Result may be incorrect');\n }\n const lastSample = subSamples[subSamples.length - 1];\n res.value = lastSample != null ? lastSample : res.value;\n return res;\n }\n}\n","const schemaKeywordTypes = {\n multipleOf: 'number',\n maximum: 'number',\n exclusiveMaximum: 'number',\n minimum: 'number',\n exclusiveMinimum: 'number',\n\n maxLength: 'string',\n minLength: 'string',\n pattern: 'string',\n\n items: 'array',\n maxItems: 'array',\n minItems: 'array',\n uniqueItems: 'array',\n additionalItems: 'array',\n\n maxProperties: 'object',\n minProperties: 'object',\n required: 'object',\n additionalProperties: 'object',\n properties: 'object',\n patternProperties: 'object',\n dependencies: 'object'\n};\n\nexport function inferType(schema) {\n if (schema.type !== undefined) {\n return Array.isArray(schema.type) ? schema.type.length === 0 ? null : schema.type[0] : schema.type;\n }\n const keywords = Object.keys(schemaKeywordTypes);\n for (var i = 0; i < keywords.length; i++) {\n let keyword = keywords[i];\n let type = schemaKeywordTypes[keyword];\n if (schema[keyword] !== undefined) {\n return type;\n }\n }\n\n return null;\n}\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\nvar each = require('foreach');\nmodule.exports = api;\n\n\n/**\n * Convenience wrapper around the api.\n * Calls `.get` when called with an `object` and a `pointer`.\n * Calls `.set` when also called with `value`.\n * If only supplied `object`, returns a partially applied function, mapped to the object.\n *\n * @param {Object} obj\n * @param {String|Array} pointer\n * @param value\n * @returns {*}\n */\n\nfunction api (obj, pointer, value) {\n // .set()\n if (arguments.length === 3) {\n return api.set(obj, pointer, value);\n }\n // .get()\n if (arguments.length === 2) {\n return api.get(obj, pointer);\n }\n // Return a partially applied function on `obj`.\n var wrapped = api.bind(api, obj);\n\n // Support for oo style\n for (var name in api) {\n if (api.hasOwnProperty(name)) {\n wrapped[name] = api[name].bind(wrapped, obj);\n }\n }\n return wrapped;\n}\n\n\n/**\n * Lookup a json pointer in an object\n *\n * @param {Object} obj\n * @param {String|Array} pointer\n * @returns {*}\n */\napi.get = function get (obj, pointer) {\n var refTokens = Array.isArray(pointer) ? pointer : api.parse(pointer);\n\n for (var i = 0; i < refTokens.length; ++i) {\n var tok = refTokens[i];\n if (!(typeof obj == 'object' && tok in obj)) {\n throw new Error('Invalid reference token: ' + tok);\n }\n obj = obj[tok];\n }\n return obj;\n};\n\n/**\n * Sets a value on an object\n *\n * @param {Object} obj\n * @param {String|Array} pointer\n * @param value\n */\napi.set = function set (obj, pointer, value) {\n var refTokens = Array.isArray(pointer) ? pointer : api.parse(pointer),\n nextTok = refTokens[0];\n\n if (refTokens.length === 0) {\n throw Error('Can not set the root object');\n }\n\n for (var i = 0; i < refTokens.length - 1; ++i) {\n var tok = refTokens[i];\n if (typeof tok !== 'string' && typeof tok !== 'number') {\n tok = String(tok)\n }\n if (tok === \"__proto__\" || tok === \"constructor\" || tok === \"prototype\") {\n continue\n }\n if (tok === '-' && Array.isArray(obj)) {\n tok = obj.length;\n }\n nextTok = refTokens[i + 1];\n\n if (!(tok in obj)) {\n if (nextTok.match(/^(\\d+|-)$/)) {\n obj[tok] = [];\n } else {\n obj[tok] = {};\n }\n }\n obj = obj[tok];\n }\n if (nextTok === '-' && Array.isArray(obj)) {\n nextTok = obj.length;\n }\n obj[nextTok] = value;\n return this;\n};\n\n/**\n * Removes an attribute\n *\n * @param {Object} obj\n * @param {String|Array} pointer\n */\napi.remove = function (obj, pointer) {\n var refTokens = Array.isArray(pointer) ? pointer : api.parse(pointer);\n var finalToken = refTokens[refTokens.length -1];\n if (finalToken === undefined) {\n throw new Error('Invalid JSON pointer for remove: \"' + pointer + '\"');\n }\n\n var parent = api.get(obj, refTokens.slice(0, -1));\n if (Array.isArray(parent)) {\n var index = +finalToken;\n if (finalToken === '' && isNaN(index)) {\n throw new Error('Invalid array index: \"' + finalToken + '\"');\n }\n\n Array.prototype.splice.call(parent, index, 1);\n } else {\n delete parent[finalToken];\n }\n};\n\n/**\n * Returns a (pointer -> value) dictionary for an object\n *\n * @param obj\n * @param {function} descend\n * @returns {}\n */\napi.dict = function dict (obj, descend) {\n var results = {};\n api.walk(obj, function (value, pointer) {\n results[pointer] = value;\n }, descend);\n return results;\n};\n\n/**\n * Iterates over an object\n * Iterator: function (value, pointer) {}\n *\n * @param obj\n * @param {function} iterator\n * @param {function} descend\n */\napi.walk = function walk (obj, iterator, descend) {\n var refTokens = [];\n\n descend = descend || function (value) {\n var type = Object.prototype.toString.call(value);\n return type === '[object Object]' || type === '[object Array]';\n };\n\n (function next (cur) {\n each(cur, function (value, key) {\n refTokens.push(String(key));\n if (descend(value)) {\n next(value);\n } else {\n iterator(value, api.compile(refTokens));\n }\n refTokens.pop();\n });\n }(obj));\n};\n\n/**\n * Tests if an object has a value for a json pointer\n *\n * @param obj\n * @param pointer\n * @returns {boolean}\n */\napi.has = function has (obj, pointer) {\n try {\n api.get(obj, pointer);\n } catch (e) {\n return false;\n }\n return true;\n};\n\n/**\n * Escapes a reference token\n *\n * @param str\n * @returns {string}\n */\napi.escape = function escape (str) {\n return str.toString().replace(/~/g, '~0').replace(/\\//g, '~1');\n};\n\n/**\n * Unescapes a reference token\n *\n * @param str\n * @returns {string}\n */\napi.unescape = function unescape (str) {\n return str.replace(/~1/g, '/').replace(/~0/g, '~');\n};\n\n/**\n * Converts a json pointer into a array of reference tokens\n *\n * @param pointer\n * @returns {Array}\n */\napi.parse = function parse (pointer) {\n if (pointer === '') { return []; }\n if (pointer.charAt(0) !== '/') { throw new Error('Invalid JSON pointer: ' + pointer); }\n return pointer.substring(1).split(/\\//).map(api.unescape);\n};\n\n/**\n * Builds a json pointer from a array of reference tokens\n *\n * @param refTokens\n * @returns {string}\n */\napi.compile = function compile (refTokens) {\n if (refTokens.length === 0) { return ''; }\n return '/' + refTokens.map(api.escape).join('/');\n};\n","import { _samplers } from './openapi-sampler';\nimport { allOfSample } from './allOf';\nimport { inferType } from './infer';\nimport { getResultForCircular, mergeDeep, popSchemaStack } from './utils';\nimport JsonPointer from 'json-pointer';\nimport { applyXMLAttributes } from './utils';\n\nlet $refCache = {};\n// for circular JS references we use additional array and not object as we need to compare entire schemas and not strings\nlet seenSchemasStack = [];\n\nexport function clearCache() {\n $refCache = {};\n seenSchemasStack = [];\n}\n\nfunction inferExample(schema) {\n let example;\n if (schema.const !== undefined) {\n example = schema.const;\n } else if (schema.examples !== undefined && schema.examples.length) {\n example = schema.examples[0];\n } else if (schema.enum !== undefined && schema.enum.length) {\n example = schema.enum[0];\n } else if (schema.default !== undefined) {\n example = schema.default;\n }\n return example;\n}\n\nfunction tryInferExample(schema) {\n const example = inferExample(schema);\n // case when we don't infer example from schema but take from `const`, `examples`, `default` or `enum` keywords\n if (example !== undefined) {\n return {\n value: example,\n readOnly: schema.readOnly,\n writeOnly: schema.writeOnly,\n type: null,\n };\n }\n return;\n}\n\nexport function traverse(schema, options, spec, context) {\n // checking circular JS references by checking context\n // because context is passed only when traversing through nested objects happens\n if (context) {\n if (seenSchemasStack.includes(schema)) return getResultForCircular(inferType(schema));\n seenSchemasStack.push(schema);\n }\n\n\n if (context && context.depth > options.maxSampleDepth) {\n popSchemaStack(seenSchemasStack, context);\n return getResultForCircular(inferType(schema));\n }\n\n if (schema.$ref) {\n if (!spec) {\n throw new Error('Your schema contains $ref. You must provide full specification in the third parameter.');\n }\n let ref = decodeURIComponent(schema.$ref);\n if (ref.startsWith('#')) {\n ref = ref.substring(1);\n }\n\n const referenced = JsonPointer.get(spec, ref);\n let result;\n\n if ($refCache[ref] !== true) {\n $refCache[ref] = true;\n const traverseResult = traverse(referenced, options, spec, context);\n if (options.format === 'xml') {\n const refName = ref.split('/').pop();\n const xmlContext = { ...context, propertyName: context?.propertyName || refName };\n const { propertyName, value } = applyXMLAttributes(traverseResult, referenced, xmlContext);\n result = { ...traverseResult, value: { [propertyName || 'root']: value } };\n } else {\n result = traverseResult;\n }\n\n $refCache[ref] = false;\n } else {\n const referencedType = inferType(referenced);\n result = getResultForCircular(referencedType);\n }\n popSchemaStack(seenSchemasStack, context);\n return result;\n }\n\n if (schema.example !== undefined) {\n popSchemaStack(seenSchemasStack, context);\n return {\n value: schema.example,\n readOnly: schema.readOnly,\n writeOnly: schema.writeOnly,\n type: schema.type,\n };\n }\n\n if (schema.allOf !== undefined) {\n popSchemaStack(seenSchemasStack, context);\n return tryInferExample(schema) || allOfSample(\n { ...schema, allOf: undefined },\n schema.allOf,\n options,\n spec,\n context,\n );\n }\n\n if (schema.oneOf && schema.oneOf.length) {\n if (schema.anyOf) {\n if (!options.quiet) console.warn('oneOf and anyOf are not supported on the same level. Skipping anyOf');\n }\n popSchemaStack(seenSchemasStack, context);\n\n // Make sure to pass down readOnly and writeOnly annotations from the parent\n const firstOneOf = Object.assign({\n readOnly: schema.readOnly,\n writeOnly: schema.writeOnly\n }, schema.oneOf[0]);\n\n return traverseOneOrAnyOf(schema, firstOneOf)\n }\n\n if (schema.anyOf && schema.anyOf.length) {\n popSchemaStack(seenSchemasStack, context);\n\n // Make sure to pass down readOnly and writeOnly annotations from the parent\n const firstAnyOf = Object.assign({\n readOnly: schema.readOnly,\n writeOnly: schema.writeOnly\n }, schema.anyOf[0]);\n\n return traverseOneOrAnyOf(schema, firstAnyOf)\n }\n\n if (schema.if && schema.then) {\n popSchemaStack(seenSchemasStack, context);\n const { if: ifSchema, then, ...rest } = schema;\n return traverse(mergeDeep(rest, ifSchema, then), options, spec, context);\n }\n\n let example = inferExample(schema);\n let type = null;\n if (example === undefined) {\n example = null;\n type = schema.type;\n if (Array.isArray(type) && schema.type.length > 0) {\n type = schema.type[0];\n }\n if (!type) {\n type = inferType(schema);\n }\n let sampler = _samplers[type];\n if (sampler) {\n example = sampler(schema, options, spec, context);\n }\n }\n\n popSchemaStack(seenSchemasStack, context);\n return {\n value: example,\n readOnly: schema.readOnly,\n writeOnly: schema.writeOnly,\n type: type\n };\n\n function traverseOneOrAnyOf(schema, selectedSubSchema) {\n const inferred = tryInferExample(schema);\n if (inferred !== undefined) {\n return inferred;\n }\n\n const localExample = traverse({ ...schema, oneOf: undefined, anyOf: undefined }, options, spec, context);\n const subSchemaExample = traverse(selectedSubSchema, options, spec, context);\n\n if (typeof localExample.value === 'object' && typeof subSchemaExample.value === 'object') {\n const mergedExample = mergeDeep(localExample.value, subSchemaExample.value);\n return { ...subSchemaExample, value: mergedExample };\n }\n\n return subSchemaExample;\n }\n}\n","import { traverse } from '../traverse';\nimport { applyXMLAttributes } from '../utils';\n\nexport function sampleArray(schema, options = {}, spec, context) {\n const depth = (context && context.depth || 1);\n\n let arrayLength = Math.min(schema.maxItems != undefined ? schema.maxItems : Infinity, schema.minItems || 1);\n // for the sake of simplicity, we're treating `contains` in a similar way to `items`\n const items = schema.prefixItems || schema.items || schema.contains;\n if (Array.isArray(items)) {\n arrayLength = Math.max(arrayLength, items.length);\n }\n\n let itemSchemaGetter = itemNumber => {\n if (Array.isArray(items)) {\n return items[itemNumber] || {};\n }\n return items || {};\n };\n\n let res = [];\n if (!items) return res;\n\n for (let i = 0; i < arrayLength; i++) {\n let itemSchema = itemSchemaGetter(i);\n let { value: sample } = traverse(itemSchema, options, spec, { depth: depth + 1 });\n if (options?.format === 'xml') {\n const { value, propertyName } = applyXMLAttributes({ value: sample }, itemSchema, context);\n if (propertyName) {\n if (!res?.[propertyName]) {\n res = { ...res, [propertyName]: [] };\n }\n res[propertyName].push(value);\n } else {\n res = { ...res, ...value };\n }\n } else {\n res.push(sample);\n }\n }\n\n if (options?.format === 'xml' && depth === 1) {\n const { value, propertyName } = applyXMLAttributes({ value: null }, schema, context);\n if (propertyName) {\n if (value) {\n res = Array.isArray(res) ? { [propertyName]: { ...value, ...res.map(item => ({ ['#text']: { ...item } })) } } : { [propertyName]: { ...res, ...value } };\n } else {\n res = { [propertyName]: res };\n }\n }\n }\n return res;\n}\n","export function sampleBoolean(schema) {\n return true; // let be optimistic :)\n}\n","export function sampleNumber(schema) {\n let res = 0;\n if (schema.type === 'number' && (schema.format === 'float' || schema.format === 'double')) {\n res = 0.1;\n }\n if (typeof schema.exclusiveMinimum === 'boolean' || typeof schema.exclusiveMaximum === 'boolean') { //legacy support for jsonschema draft 4 of exclusiveMaximum/exclusiveMinimum as booleans\n if (schema.maximum && schema.minimum) {\n res = schema.exclusiveMinimum ? Math.floor(schema.minimum) + 1 : schema.minimum;\n if ((schema.exclusiveMaximum && res >= schema.maximum) ||\n ((!schema.exclusiveMaximum && res > schema.maximum))) {\n res = (schema.maximum + schema.minimum) / 2;\n }\n return res;\n }\n if (schema.minimum) {\n if (schema.exclusiveMinimum) {\n return Math.floor(schema.minimum) + 1;\n } else {\n return schema.minimum;\n }\n }\n if (schema.maximum) {\n if (schema.exclusiveMaximum) {\n return (schema.maximum > 0) ? 0 : Math.floor(schema.maximum) - 1;\n } else {\n return (schema.maximum > 0) ? 0 : schema.maximum;\n }\n }\n } else {\n if (schema.minimum) {\n return schema.minimum;\n }\n if (schema.exclusiveMinimum) {\n res = Math.floor(schema.exclusiveMinimum) + 1;\n\n if (res === schema.exclusiveMaximum) {\n res = (res + Math.floor(schema.exclusiveMaximum) - 1) / 2;\n }\n } else if (schema.exclusiveMaximum) {\n res = Math.floor(schema.exclusiveMaximum) - 1;\n } else if (schema.maximum) {\n res = schema.maximum;\n }\n }\n\n return res;\n}\n","import { traverse } from '../traverse';\nimport { applyXMLAttributes } from '../utils';\nimport { SKIP_SYMBOL } from '../utils';\n\nexport function sampleObject(schema, options = {}, spec, context) {\n let res = {};\n const depth = (context && context.depth || 1);\n\n if (schema && typeof schema.properties === 'object') {\n\n // Prepare for skipNonRequired option\n const requiredProperties = Array.isArray(schema.required) ? schema.required : [];\n const requiredPropertiesMap = {};\n\n for (const requiredProperty of requiredProperties) {\n requiredPropertiesMap[requiredProperty] = true;\n }\n\n Object.keys(schema.properties).forEach(propertyName => {\n // skip before traverse that could be costly\n if (options.skipNonRequired && !requiredPropertiesMap.hasOwnProperty(propertyName)) {\n return;\n }\n\n const sample = traverse(schema.properties[propertyName], options, spec, { propertyName, depth: depth + 1 });\n if (options.skipReadOnly && sample.readOnly) {\n if (context?.isAllOfChild) {\n res[propertyName] = SKIP_SYMBOL;\n }\n return;\n }\n\n if (options.skipWriteOnly && sample.writeOnly) {\n if (context?.isAllOfChild) {\n res[propertyName] = SKIP_SYMBOL;\n }\n return;\n }\n\n if (options?.format === 'xml') {\n const { propertyName: newPropertyName, value } = applyXMLAttributes(sample, schema.properties[propertyName], { propertyName });\n if (newPropertyName) {\n res[newPropertyName] = value;\n } else if (value !== null && typeof value === 'object') {\n res = { ...res, ...value };\n }\n } else {\n res[propertyName] = sample.value;\n }\n });\n }\n\n if (schema && typeof schema.additionalProperties === 'object') {\n const propertyName = schema.additionalProperties['x-additionalPropertiesName'] || 'property';\n res[`${String(propertyName)}1`] = traverse(schema.additionalProperties, options, spec, { depth: depth + 1 }).value;\n res[`${String(propertyName)}2`] = traverse(schema.additionalProperties, options, spec, { depth: depth + 1 }).value;\n }\n\n // Strictly enforce maxProperties constraint\n if (schema && typeof schema.properties === 'object' && schema.maxProperties !== undefined && Object.keys(res).length > schema.maxProperties) {\n const filteredResult = {};\n let propertiesAdded = 0;\n\n // Always include required properties first, if present\n const requiredProperties = Array.isArray(schema.required) ? schema.required : [];\n requiredProperties.forEach(propName => {\n if (res[propName] !== undefined) {\n filteredResult[propName] = res[propName];\n propertiesAdded++;\n }\n });\n\n // Add other properties until maxProperties is reached\n Object.keys(res).forEach(propName => {\n if (propertiesAdded < schema.maxProperties && !filteredResult.hasOwnProperty(propName)) {\n filteredResult[propName] = res[propName];\n propertiesAdded++;\n }\n });\n\n res = filteredResult;\n }\n\n return res;\n}\n","/**\nFaker - Copyright (c) 2022-2023\n\nThis software consists of voluntary contributions made by many individuals.\nFor exact contribution history, see the revision history\navailable at https://github.com/faker-js/faker\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n===\n\nFrom: https://github.com/faker-js/faker/commit/a9f98046c7d5eeaabe12fc587024c06d683800b8\nTo: https://github.com/faker-js/faker/commit/29234378807c4141588861f69421bf20b5ac635e\n\nBased on faker.js, copyright Marak Squires and contributor, what follows below is the original license.\n\n===\n\nfaker.js - Copyright (c) 2020\nMarak Squires\nhttp://github.com/marak/faker.js/\n\nfaker.js was inspired by and has used data definitions from:\n\n * https://github.com/stympy/faker/ - Copyright (c) 2007-2010 Benjamin Curtis\n * http://search.cpan.org/~jasonk/Data-Faker-0.07/ - Copyright 2004-2005 by Jason Kohles\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n/** @returns {boolean} */\nfunction boolSample() {\n return true;\n}\n\n/**\n * @param {number} min - inclusive\n * @param {number} _max - inclusive\n * @returns {number}\n */\nfunction intSample(min, _max) {\n return min;\n}\n\n/**\n * Returns a number based on given RegEx-based quantifier symbol or quantifier values.\n *\n * @param {string} quantifierSymbol Quantifier symbols can be either of these: `?`, `*`, `+`.\n * @param {string} quantifierMin Quantifier minimum value. If given without a maximum, this will be used as the quantifier value.\n * @param {string} quantifierMax Quantifier maximum value. Will randomly get a value between the minimum and maximum if both are provided.\n *\n * @returns {number} a random number based on the given quantifier parameters.\n *\n * @example\n * getRepetitionsBasedOnQuantifierParameters('*', null, null) // 3\n * getRepetitionsBasedOnQuantifierParameters(null, 10, null) // 10\n * getRepetitionsBasedOnQuantifierParameters(null, 5, 8) // 6\n *\n * @since 8.0.0\n */\nfunction getRepetitionsBasedOnQuantifierParameters(\n quantifierSymbol,\n quantifierMin,\n quantifierMax\n) {\n let repetitions = 1;\n if (quantifierSymbol) {\n switch (quantifierSymbol) {\n case '?': {\n repetitions = boolSample() ? 0 : 1;\n break;\n }\n\n case '*': {\n const limit = 8;\n repetitions = intSample(0, limit);\n break;\n }\n\n case '+': {\n const limit = 8;\n repetitions = intSample(1, limit);\n break;\n }\n\n default:\n throw new Error('Unknown quantifier symbol provided.');\n }\n } else if (quantifierMin != null && quantifierMax != null) {\n repetitions = intSample(parseInt(quantifierMin), parseInt(quantifierMax));\n } else if (quantifierMin != null && quantifierMax == null) {\n repetitions = parseInt(quantifierMin);\n }\n\n return repetitions;\n}\n\n/**\n * Generates a string matching the given regex like expressions.\n *\n * This function doesn't provide full support of actual `RegExp`.\n * Features such as grouping, anchors and character classes are not supported.\n * If you are looking for a library that randomly generates strings based on\n * `RegExp`s, see [randexp.js](https://github.com/fent/randexp.js)\n *\n * Supported patterns:\n * - `x{times}` => Repeat the `x` exactly `times` times.\n * - `x{min,max}` => Repeat the `x` `min` to `max` times.\n * - `[x-y]` => Randomly get a character between `x` and `y` (inclusive).\n * - `[x-y]{times}` => Randomly get a character between `x` and `y` (inclusive) and repeat it `times` times.\n * - `[x-y]{min,max}` => Randomly get a character between `x` and `y` (inclusive) and repeat it `min` to `max` times.\n * - `[^...]` => Randomly get an ASCII number or letter character that is not in the given range. (e.g. `[^0-9]` will get a random non-numeric character).\n * - `[-...]` => Include dashes in the range. Must be placed after the negate character `^` and before any character sets if used (e.g. `[^-0-9]` will not get any numeric characters or dashes).\n * - `/[x-y]/i` => Randomly gets an uppercase or lowercase character between `x` and `y` (inclusive).\n * - `x?` => Randomly decide to include or not include `x`.\n * - `[x-y]?` => Randomly decide to include or not include characters between `x` and `y` (inclusive).\n * - `x*` => Repeat `x` 0 or more times.\n * - `[x-y]*` => Repeat characters between `x` and `y` (inclusive) 0 or more times.\n * - `x+` => Repeat `x` 1 or more times.\n * - `[x-y]+` => Repeat characters between `x` and `y` (inclusive) 1 or more times.\n * - `.` => returns a wildcard ASCII character that can be any number, character or symbol. Can be combined with quantifiers as well.\n *\n * @param {string | RegExp} pattern The template string/RegExp to generate a matching string for.\n * @returns {string} A string matching the given pattern.\n *\n * @throws If min value is more than max value in quantifier. e.g. `#{10,5}`\n * @throws If invalid quantifier symbol is passed in.\n *\n * @example\n * regexSample('#{5}') // '#####'\n * regexSample('#{2,9}') // '#######'\n * regexSample('[1-7]') // '5'\n * regexSample('#{3}test[1-5]') // '###test3'\n * regexSample('[0-9a-dmno]') // '5'\n * regexSample('[^a-zA-Z0-8]') // '9'\n * regexSample('[a-d0-6]{2,8}') // 'a0dc45b0'\n * regexSample('[-a-z]{5}') // 'a-zab'\n * regexSample(/[A-Z0-9]{4}-[A-Z0-9]{4}/) // 'BS4G-485H'\n * regexSample(/[A-Z]{5}/i) // 'pDKfh'\n * regexSample(/.{5}/) // '14(#B'\n * regexSample(/Joh?n/) // 'Jon'\n * regexSample(/ABC*DE/) // 'ABDE'\n * regexSample(/bee+p/) // 'beeeeeeeep'\n *\n * @since 8.0.0\n */\nexport function regexSample(pattern) {\n let isCaseInsensitive = false;\n\n if (pattern instanceof RegExp) {\n isCaseInsensitive = pattern.flags.includes('i');\n pattern = pattern.toString();\n pattern = pattern.match(/\\/(.+?)\\//)?.[1] ?? ''; // Remove frontslash from front and back of RegExp\n }\n \n pattern = pattern.replace(/^(\\^)?(.*?)(\\$)?$/, '$2'); // Remove anchors if present\n \n let min\n let max\n let repetitions\n\n // Deal with single wildcards\n const SINGLE_CHAR_REG =\n /([.A-Za-z0-9])(?:\\{(\\d+)(?:\\,(\\d+)|)\\}|(\\?|\\*|\\+))(?![^[]*]|[^{]*})/;\n let token = pattern.match(SINGLE_CHAR_REG);\n while (token != null) {\n const quantifierMin = token[2];\n const quantifierMax = token[3];\n const quantifierSymbol = token[4];\n\n repetitions = getRepetitionsBasedOnQuantifierParameters(\n quantifierSymbol,\n quantifierMin,\n quantifierMax\n );\n\n pattern =\n pattern.slice(0, token.index) +\n token[1].repeat(repetitions) +\n pattern.slice(token.index + token[0].length);\n token = pattern.match(SINGLE_CHAR_REG);\n }\n\n const SINGLE_RANGE_REG = /(\\d-\\d|\\w-\\w|\\d|\\w|[-!@#$&()`.+,/\"])/;\n const RANGE_ALPHANUMEMRIC_REG =\n /\\[(\\^|)(-|)(.+?)\\](?:\\{(\\d+)(?:\\,(\\d+)|)\\}|(\\?|\\*|\\+)|)/;\n // Deal with character classes with quantifiers `[a-z0-9]{min[, max]}`\n token = pattern.match(RANGE_ALPHANUMEMRIC_REG);\n while (token != null) {\n const isNegated = token[1] === '^';\n const includesDash = token[2] === '-';\n const quantifierMin = token[4];\n const quantifierMax = token[5];\n const quantifierSymbol = token[6];\n\n const rangeCodes = [];\n\n let ranges = token[3];\n let range = ranges.match(SINGLE_RANGE_REG);\n\n if (includesDash) {\n // 45 is the ascii code for '-'\n rangeCodes.push(45);\n }\n\n while (range != null) {\n if (range[0].indexOf('-') === -1) {\n // handle non-ranges\n if (isCaseInsensitive && isNaN(Number(range[0]))) {\n rangeCodes.push(range[0].toUpperCase().charCodeAt(0));\n rangeCodes.push(range[0].toLowerCase().charCodeAt(0));\n } else {\n rangeCodes.push(range[0].charCodeAt(0));\n }\n } else {\n // handle ranges\n const rangeMinMax = range[0].split('-').map((x) => x.charCodeAt(0));\n min = rangeMinMax[0];\n max = rangeMinMax[1];\n // throw error if min larger than max\n if (min > max) {\n throw new Error('Character range provided is out of order.');\n }\n\n for (let i = min; i <= max; i++) {\n if (isCaseInsensitive && isNaN(Number(String.fromCharCode(i)))) {\n const ch = String.fromCharCode(i);\n rangeCodes.push(ch.toUpperCase().charCodeAt(0));\n rangeCodes.push(ch.toLowerCase().charCodeAt(0));\n } else {\n rangeCodes.push(i);\n }\n }\n }\n\n ranges = ranges.substring(range[0].length);\n range = ranges.match(SINGLE_RANGE_REG);\n }\n\n repetitions = getRepetitionsBasedOnQuantifierParameters(\n quantifierSymbol,\n quantifierMin,\n quantifierMax\n );\n\n if (isNegated) {\n let index = -1;\n // 0-9\n for (let i = 48; i <= 57; i++) {\n index = rangeCodes.indexOf(i);\n if (index > -1) {\n rangeCodes.splice(index, 1);\n continue;\n }\n\n rangeCodes.push(i);\n }\n\n // A-Z\n for (let i = 65; i <= 90; i++) {\n index = rangeCodes.indexOf(i);\n if (index > -1) {\n rangeCodes.splice(index, 1);\n continue;\n }\n\n rangeCodes.push(i);\n }\n\n // a-z\n for (let i = 97; i <= 122; i++) {\n index = rangeCodes.indexOf(i);\n if (index > -1) {\n rangeCodes.splice(index, 1);\n continue;\n }\n\n rangeCodes.push(i);\n }\n }\n\n const generatedString = Array.from(\n { length: repetitions },\n () => String.fromCharCode(rangeCodes[intSample(0, rangeCodes.length - 1)]),\n ).join('');\n\n pattern =\n pattern.slice(0, token.index) +\n generatedString +\n pattern.slice(token.index + token[0].length);\n token = pattern.match(RANGE_ALPHANUMEMRIC_REG);\n }\n\n const RANGE_REP_REG = /(.)\\{(\\d+)\\,(\\d+)\\}/;\n // Deal with quantifier ranges `{min,max}`\n token = pattern.match(RANGE_REP_REG);\n while (token != null) {\n min = parseInt(token[2]);\n max = parseInt(token[3]);\n // throw error if min larger than max\n if (min > max) {\n throw new Error('Numbers out of order in {} quantifier.');\n }\n\n repetitions = intSample(min, max);\n pattern =\n pattern.slice(0, token.index) +\n token[1].repeat(repetitions) +\n pattern.slice(token.index + token[0].length);\n token = pattern.match(RANGE_REP_REG);\n }\n\n const REP_REG = /(.)\\{(\\d+)\\}/;\n // Deal with repeat `{num}`\n token = pattern.match(REP_REG);\n while (token != null) {\n repetitions = parseInt(token[2]);\n pattern =\n pattern.slice(0, token.index) +\n token[1].repeat(repetitions) +\n pattern.slice(token.index + token[0].length);\n token = pattern.match(REP_REG);\n }\n\n return pattern;\n}\n","'use strict';\n\nimport { ensureMinLength, toRFCDateTime, uuid } from '../utils';\nimport * as faker from './string-regex';\n\nconst passwordSymbols = 'qwerty!@#$%^123456';\n\nfunction emailSample() {\n return 'user@example.com';\n}\nfunction idnEmailSample() {\n return 'пошта@укр.нет';\n}\nfunction passwordSample(min, max) {\n let res = 'pa$$word';\n if (min > res.length) {\n res += '_';\n res += ensureMinLength(passwordSymbols, min - res.length).substring(0, min - res.length);\n }\n return res;\n}\n\nfunction commonDateTimeSample({ min, max, omitTime, omitDate }) {\n let res = toRFCDateTime(new Date('2019-08-24T14:15:22.123Z'), omitTime, omitDate, false);\n if (res.length < min) {\n console.warn(`Using minLength = ${min} is incorrect with format \"date-time\"`);\n }\n if (max && res.length > max) {\n console.warn(`Using maxLength = ${max} is incorrect with format \"date-time\"`);\n }\n return res;\n}\n\nfunction dateTimeSample(min, max) {\n return commonDateTimeSample({ min, max, omitTime: false, omitDate: false });\n}\n\nfunction dateSample(min, max) {\n return commonDateTimeSample({ min, max, omitTime: true, omitDate: false });\n}\n\nfunction timeSample(min, max) {\n return commonDateTimeSample({ min, max, omitTime: false, omitDate: true }).slice(1);\n}\n\nfunction defaultSample(min, max, _propertyName, pattern, enablePatterns = false) {\n if (pattern && enablePatterns) {\n return faker.regexSample(pattern);\n }\n let res = ensureMinLength('string', min);\n if (max && res.length > max) {\n res = res.substring(0, max);\n }\n return res;\n}\n\nfunction ipv4Sample() {\n return '192.168.0.1';\n}\n\nfunction ipv6Sample() {\n return '2001:0db8:85a3:0000:0000:8a2e:0370:7334';\n}\n\nfunction hostnameSample() {\n return 'example.com';\n}\nfunction idnHostnameSample() {\n return 'приклад.укр';\n}\nfunction uriSample() {\n return 'http://example.com';\n}\n\nfunction uriReferenceSample() {\n return '../dictionary';\n}\n\nfunction uriTemplateSample() {\n return 'http://example.com/{endpoint}';\n}\n\nfunction iriSample() {\n return 'http://example.com/entity/1';\n}\n\nfunction iriReferenceSample() {\n return '/entity/1';\n}\n\nfunction uuidSample(_min, _max, propertyName) {\n return uuid(propertyName || 'id');\n}\n\nfunction jsonPointerSample() {\n return '/json/pointer';\n}\n\nfunction relativeJsonPointerSample() {\n return '1/relative/json/pointer';\n}\n\nfunction regexSample() {\n return '/regex/';\n}\n\nconst stringFormats = {\n 'email': emailSample,\n 'idn-email': idnEmailSample, // https://tools.ietf.org/html/rfc6531#section-3.3\n 'password': passwordSample,\n 'date-time': dateTimeSample,\n 'date': dateSample,\n 'time': timeSample, // full-time in https://tools.ietf.org/html/rfc3339#section-5.6\n 'ipv4': ipv4Sample,\n 'ipv6': ipv6Sample,\n 'hostname': hostnameSample,\n 'idn-hostname': idnHostnameSample, // https://tools.ietf.org/html/rfc5890#section-2.3.2.3\n 'iri': iriSample, // https://tools.ietf.org/html/rfc3987\n 'iri-reference': iriReferenceSample,\n 'uri': uriSample,\n 'uri-reference': uriReferenceSample, // either a URI or relative-reference https://tools.ietf.org/html/rfc3986#section-4.1\n 'uri-template': uriTemplateSample,\n 'uuid': uuidSample,\n 'default': defaultSample,\n 'json-pointer': jsonPointerSample,\n 'relative-json-pointer': relativeJsonPointerSample, // https://tools.ietf.org/html/draft-handrews-relative-json-pointer-01\n 'regex': regexSample,\n};\n\nexport function sampleString(schema, options, spec, context) {\n let format = schema.format || 'default';\n let sampler = stringFormats[format] || defaultSample;\n let propertyName = context && context.propertyName;\n return sampler(\n schema.minLength || 0,\n schema.maxLength,\n propertyName,\n schema.pattern,\n options?.enablePatterns\n );\n}\n","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n /**\n * Create a new Expression\n * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Path separator (default: '.')\n */\n constructor(pattern, options = {}) {\n this.pattern = pattern;\n this.separator = options.separator || '.';\n this.segments = this._parse(pattern);\n\n // Cache expensive checks for performance (O(1) instead of O(n))\n this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n }\n\n /**\n * Parse pattern string into segments\n * @private\n * @param {string} pattern - Pattern to parse\n * @returns {Array} Array of segment objects\n */\n _parse(pattern) {\n const segments = [];\n\n // Split by separator but handle \"..\" specially\n let i = 0;\n let currentPart = '';\n\n while (i < pattern.length) {\n if (pattern[i] === this.separator) {\n // Check if next char is also separator (deep wildcard)\n if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n // Flush current part if any\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n currentPart = '';\n }\n // Add deep wildcard\n segments.push({ type: 'deep-wildcard' });\n i += 2; // Skip both separators\n } else {\n // Regular separator\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n currentPart = '';\n i++;\n }\n } else {\n currentPart += pattern[i];\n i++;\n }\n }\n\n // Flush remaining part\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n\n return segments;\n }\n\n /**\n * Parse a single segment\n * @private\n * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n * @returns {Object} Segment object\n */\n _parseSegment(part) {\n const segment = { type: 'tag' };\n\n // NEW NAMESPACE SYNTAX (v2.0):\n // ============================\n // Namespace uses DOUBLE colon (::)\n // Position uses SINGLE colon (:)\n // \n // Examples:\n // \"user\" → tag\n // \"user:first\" → tag + position\n // \"user[id]\" → tag + attribute\n // \"user[id]:first\" → tag + attribute + position\n // \"ns::user\" → namespace + tag\n // \"ns::user:first\" → namespace + tag + position\n // \"ns::user[id]\" → namespace + tag + attribute\n // \"ns::user[id]:first\" → namespace + tag + attribute + position\n // \"ns::first\" → namespace + tag named \"first\" (NO ambiguity!)\n //\n // This eliminates all ambiguity:\n // :: = namespace separator\n // : = position selector\n // [] = attributes\n\n // Step 1: Extract brackets [attr] or [attr=value]\n let bracketContent = null;\n let withoutBrackets = part;\n\n const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n if (bracketMatch) {\n withoutBrackets = bracketMatch[1] + bracketMatch[3];\n if (bracketMatch[2]) {\n const content = bracketMatch[2].slice(1, -1);\n if (content) {\n bracketContent = content;\n }\n }\n }\n\n // Step 2: Check for namespace (double colon ::)\n let namespace = undefined;\n let tagAndPosition = withoutBrackets;\n\n if (withoutBrackets.includes('::')) {\n const nsIndex = withoutBrackets.indexOf('::');\n namespace = withoutBrackets.substring(0, nsIndex).trim();\n tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n if (!namespace) {\n throw new Error(`Invalid namespace in pattern: ${part}`);\n }\n }\n\n // Step 3: Parse tag and position (single colon :)\n let tag = undefined;\n let positionMatch = null;\n\n if (tagAndPosition.includes(':')) {\n const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n // Verify position is a valid keyword\n const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n /^nth\\(\\d+\\)$/.test(posPart);\n\n if (isPositionKeyword) {\n tag = tagPart;\n positionMatch = posPart;\n } else {\n // Not a valid position keyword, treat whole thing as tag\n tag = tagAndPosition;\n }\n } else {\n tag = tagAndPosition;\n }\n\n if (!tag) {\n throw new Error(`Invalid segment pattern: ${part}`);\n }\n\n segment.tag = tag;\n if (namespace) {\n segment.namespace = namespace;\n }\n\n // Step 4: Parse attributes\n if (bracketContent) {\n if (bracketContent.includes('=')) {\n const eqIndex = bracketContent.indexOf('=');\n segment.attrName = bracketContent.substring(0, eqIndex).trim();\n segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n } else {\n segment.attrName = bracketContent.trim();\n }\n }\n\n // Step 5: Parse position selector\n if (positionMatch) {\n const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n if (nthMatch) {\n segment.position = 'nth';\n segment.positionValue = parseInt(nthMatch[1], 10);\n } else {\n segment.position = positionMatch;\n }\n }\n\n return segment;\n }\n\n /**\n * Get the number of segments\n * @returns {number}\n */\n get length() {\n return this.segments.length;\n }\n\n /**\n * Check if expression contains deep wildcard\n * @returns {boolean}\n */\n hasDeepWildcard() {\n return this._hasDeepWildcard;\n }\n\n /**\n * Check if expression has attribute conditions\n * @returns {boolean}\n */\n hasAttributeCondition() {\n return this._hasAttributeCondition;\n }\n\n /**\n * Check if expression has position selectors\n * @returns {boolean}\n */\n hasPositionSelector() {\n return this._hasPositionSelector;\n }\n\n /**\n * Get string representation\n * @returns {string}\n */\n toString() {\n return this.pattern;\n }\n}","/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions\n * \n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n * \n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n * \n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\n\n/**\n * Names of methods that mutate Matcher state.\n * Any attempt to call these on a read-only view throws a TypeError.\n * @type {Set<string>}\n */\nconst MUTATING_METHODS = new Set(['push', 'pop', 'reset', 'updateCurrent', 'restore']);\n\nexport default class Matcher {\n /**\n * Create a new Matcher\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Default path separator (default: '.')\n */\n constructor(options = {}) {\n this.separator = options.separator || '.';\n this.path = [];\n this.siblingStacks = [];\n // Each path node: { tag: string, values: object, position: number, counter: number }\n // values only present for current (last) node\n // Each siblingStacks entry: Map<tagName, count> tracking occurrences at each level\n }\n\n /**\n * Push a new tag onto the path\n * @param {string} tagName - Name of the tag\n * @param {Object} attrValues - Attribute key-value pairs for current node (optional)\n * @param {string} namespace - Namespace for the tag (optional)\n */\n push(tagName, attrValues = null, namespace = null) {\n // Remove values from previous current node (now becoming ancestor)\n if (this.path.length > 0) {\n const prev = this.path[this.path.length - 1];\n prev.values = undefined;\n }\n\n // Get or create sibling tracking for current level\n const currentLevel = this.path.length;\n if (!this.siblingStacks[currentLevel]) {\n this.siblingStacks[currentLevel] = new Map();\n }\n\n const siblings = this.siblingStacks[currentLevel];\n\n // Create a unique key for sibling tracking that includes namespace\n const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n // Calculate counter (how many times this tag appeared at this level)\n const counter = siblings.get(siblingKey) || 0;\n\n // Calculate position (total children at this level so far)\n let position = 0;\n for (const count of siblings.values()) {\n position += count;\n }\n\n // Update sibling count for this tag\n siblings.set(siblingKey, counter + 1);\n\n // Create new node\n const node = {\n tag: tagName,\n position: position,\n counter: counter\n };\n\n // Store namespace if provided\n if (namespace !== null && namespace !== undefined) {\n node.namespace = namespace;\n }\n\n // Store values only for current node\n if (attrValues !== null && attrValues !== undefined) {\n node.values = attrValues;\n }\n\n this.path.push(node);\n }\n\n /**\n * Pop the last tag from the path\n * @returns {Object|undefined} The popped node\n */\n pop() {\n if (this.path.length === 0) {\n return undefined;\n }\n\n const node = this.path.pop();\n\n // Clean up sibling tracking for levels deeper than current\n // After pop, path.length is the new depth\n // We need to clean up siblingStacks[path.length + 1] and beyond\n if (this.siblingStacks.length > this.path.length + 1) {\n this.siblingStacks.length = this.path.length + 1;\n }\n\n return node;\n }\n\n /**\n * Update current node's attribute values\n * Useful when attributes are parsed after push\n * @param {Object} attrValues - Attribute values\n */\n updateCurrent(attrValues) {\n if (this.path.length > 0) {\n const current = this.path[this.path.length - 1];\n if (attrValues !== null && attrValues !== undefined) {\n current.values = attrValues;\n }\n }\n }\n\n /**\n * Get current tag name\n * @returns {string|undefined}\n */\n getCurrentTag() {\n return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n }\n\n /**\n * Get current namespace\n * @returns {string|undefined}\n */\n getCurrentNamespace() {\n return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n }\n\n /**\n * Get current node's attribute value\n * @param {string} attrName - Attribute name\n * @returns {*} Attribute value or undefined\n */\n getAttrValue(attrName) {\n if (this.path.length === 0) return undefined;\n const current = this.path[this.path.length - 1];\n return current.values?.[attrName];\n }\n\n /**\n * Check if current node has an attribute\n * @param {string} attrName - Attribute name\n * @returns {boolean}\n */\n hasAttr(attrName) {\n if (this.path.length === 0) return false;\n const current = this.path[this.path.length - 1];\n return current.values !== undefined && attrName in current.values;\n }\n\n /**\n * Get current node's sibling position (child index in parent)\n * @returns {number}\n */\n getPosition() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].position ?? 0;\n }\n\n /**\n * Get current node's repeat counter (occurrence count of this tag name)\n * @returns {number}\n */\n getCounter() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].counter ?? 0;\n }\n\n /**\n * Get current node's sibling index (alias for getPosition for backward compatibility)\n * @returns {number}\n * @deprecated Use getPosition() or getCounter() instead\n */\n getIndex() {\n return this.getPosition();\n }\n\n /**\n * Get current path depth\n * @returns {number}\n */\n getDepth() {\n return this.path.length;\n }\n\n /**\n * Get path as string\n * @param {string} separator - Optional separator (uses default if not provided)\n * @param {boolean} includeNamespace - Whether to include namespace in output (default: true)\n * @returns {string}\n */\n toString(separator, includeNamespace = true) {\n const sep = separator || this.separator;\n return this.path.map(n => {\n if (includeNamespace && n.namespace) {\n return `${n.namespace}:${n.tag}`;\n }\n return n.tag;\n }).join(sep);\n }\n\n /**\n * Get path as array of tag names\n * @returns {string[]}\n */\n toArray() {\n return this.path.map(n => n.tag);\n }\n\n /**\n * Reset the path to empty\n */\n reset() {\n this.path = [];\n this.siblingStacks = [];\n }\n\n /**\n * Match current path against an Expression\n * @param {Expression} expression - The expression to match against\n * @returns {boolean} True if current path matches the expression\n */\n matches(expression) {\n const segments = expression.segments;\n\n if (segments.length === 0) {\n return false;\n }\n\n // Handle deep wildcard patterns\n if (expression.hasDeepWildcard()) {\n return this._matchWithDeepWildcard(segments);\n }\n\n // Simple path matching (no deep wildcards)\n return this._matchSimple(segments);\n }\n\n /**\n * Match simple path (no deep wildcards)\n * @private\n */\n _matchSimple(segments) {\n // Path must be same length as segments\n if (this.path.length !== segments.length) {\n return false;\n }\n\n // Match each segment bottom-to-top\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const node = this.path[i];\n const isCurrentNode = (i === this.path.length - 1);\n\n if (!this._matchSegment(segment, node, isCurrentNode)) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Match path with deep wildcards\n * @private\n */\n _matchWithDeepWildcard(segments) {\n let pathIdx = this.path.length - 1; // Start from current node (bottom)\n let segIdx = segments.length - 1; // Start from last segment\n\n while (segIdx >= 0 && pathIdx >= 0) {\n const segment = segments[segIdx];\n\n if (segment.type === 'deep-wildcard') {\n // \"..\" matches zero or more levels\n segIdx--;\n\n if (segIdx < 0) {\n // Pattern ends with \"..\", always matches\n return true;\n }\n\n // Find where next segment matches in the path\n const nextSeg = segments[segIdx];\n let found = false;\n\n for (let i = pathIdx; i >= 0; i--) {\n const isCurrentNode = (i === this.path.length - 1);\n if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) {\n pathIdx = i - 1;\n segIdx--;\n found = true;\n break;\n }\n }\n\n if (!found) {\n return false;\n }\n } else {\n // Regular segment\n const isCurrentNode = (pathIdx === this.path.length - 1);\n if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) {\n return false;\n }\n pathIdx--;\n segIdx--;\n }\n }\n\n // All segments must be consumed\n return segIdx < 0;\n }\n\n /**\n * Match a single segment against a node\n * @private\n * @param {Object} segment - Segment from Expression\n * @param {Object} node - Node from path\n * @param {boolean} isCurrentNode - Whether this is the current (last) node\n * @returns {boolean}\n */\n _matchSegment(segment, node, isCurrentNode) {\n // Match tag name (* is wildcard)\n if (segment.tag !== '*' && segment.tag !== node.tag) {\n return false;\n }\n\n // Match namespace if specified in segment\n if (segment.namespace !== undefined) {\n // Segment has namespace - node must match it\n if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n return false;\n }\n }\n // If segment has no namespace, it matches nodes with or without namespace\n\n // Match attribute name (check if node has this attribute)\n // Can only check for current node since ancestors don't have values\n if (segment.attrName !== undefined) {\n if (!isCurrentNode) {\n // Can't check attributes for ancestor nodes (values not stored)\n return false;\n }\n\n if (!node.values || !(segment.attrName in node.values)) {\n return false;\n }\n\n // Match attribute value (only possible for current node)\n if (segment.attrValue !== undefined) {\n const actualValue = node.values[segment.attrName];\n // Both should be strings\n if (String(actualValue) !== String(segment.attrValue)) {\n return false;\n }\n }\n }\n\n // Match position (only for current node)\n if (segment.position !== undefined) {\n if (!isCurrentNode) {\n // Can't check position for ancestor nodes\n return false;\n }\n\n const counter = node.counter ?? 0;\n\n if (segment.position === 'first' && counter !== 0) {\n return false;\n } else if (segment.position === 'odd' && counter % 2 !== 1) {\n return false;\n } else if (segment.position === 'even' && counter % 2 !== 0) {\n return false;\n } else if (segment.position === 'nth') {\n if (counter !== segment.positionValue) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Create a snapshot of current state\n * @returns {Object} State snapshot\n */\n snapshot() {\n return {\n path: this.path.map(node => ({ ...node })),\n siblingStacks: this.siblingStacks.map(map => new Map(map))\n };\n }\n\n /**\n * Restore state from snapshot\n * @param {Object} snapshot - State snapshot\n */\n restore(snapshot) {\n this.path = snapshot.path.map(node => ({ ...node }));\n this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n }\n\n /**\n * Return a read-only view of this matcher.\n *\n * The returned object exposes all query/inspection methods but throws a\n * TypeError if any state-mutating method is called (`push`, `pop`, `reset`,\n * `updateCurrent`, `restore`). Property reads (e.g. `.path`, `.separator`)\n * are allowed but the returned arrays/objects are frozen so callers cannot\n * mutate internal state through them either.\n *\n * @returns {ReadOnlyMatcher} A proxy that forwards read operations and blocks writes.\n *\n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n *\n * const ro = matcher.readOnly();\n * ro.matches(expr); // ✓ works\n * ro.getCurrentTag(); // ✓ works\n * ro.push(\"child\", {}); // ✗ throws TypeError\n * ro.reset(); // ✗ throws TypeError\n */\n readOnly() {\n const self = this;\n\n return new Proxy(self, {\n get(target, prop, receiver) {\n // Block mutating methods\n if (MUTATING_METHODS.has(prop)) {\n return () => {\n throw new TypeError(\n `Cannot call '${prop}' on a read-only Matcher. ` +\n `Obtain a writable instance to mutate state.`\n );\n };\n }\n\n const value = Reflect.get(target, prop, receiver);\n\n // Freeze array/object properties so callers can't mutate internal\n // state through direct property access (e.g. matcher.path.push(...))\n if (prop === 'path' || prop === 'siblingStacks') {\n return Object.freeze(\n Array.isArray(value)\n ? value.map(item =>\n item instanceof Map\n ? Object.freeze(new Map(item)) // freeze a copy of each Map\n : Object.freeze({ ...item }) // freeze a copy of each node\n )\n : value\n );\n }\n\n // Bind methods so `this` inside them still refers to the real Matcher\n if (typeof value === 'function') {\n return value.bind(target);\n }\n\n return value;\n },\n\n // Prevent any property assignment on the read-only view\n set(_target, prop) {\n throw new TypeError(\n `Cannot set property '${String(prop)}' on a read-only Matcher.`\n );\n },\n\n // Prevent property deletion\n deleteProperty(_target, prop) {\n throw new TypeError(\n `Cannot delete property '${String(prop)}' from a read-only Matcher.`\n );\n }\n });\n }\n}","import { Expression, Matcher } from 'path-expression-matcher';\n\nconst EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n let indentation = \"\";\n if (options.format && options.indentBy.length > 0) {\n indentation = EOL;\n }\n\n // Pre-compile stopNode expressions for pattern matching\n const stopNodeExpressions = [];\n if (options.stopNodes && Array.isArray(options.stopNodes)) {\n for (let i = 0; i < options.stopNodes.length; i++) {\n const node = options.stopNodes[i];\n if (typeof node === 'string') {\n stopNodeExpressions.push(new Expression(node));\n } else if (node instanceof Expression) {\n stopNodeExpressions.push(node);\n }\n }\n }\n\n // Initialize matcher for path tracking\n const matcher = new Matcher();\n\n return arrToStr(jArray, options, indentation, matcher, stopNodeExpressions);\n}\n\nfunction arrToStr(arr, options, indentation, matcher, stopNodeExpressions) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n if (options.maxNestedTags && matcher.getDepth() > options.maxNestedTags) {\n throw new Error(\"Maximum nested tags exceeded\");\n }\n\n if (!Array.isArray(arr)) {\n // Non-array values (e.g. string tag values) should be treated as text content\n if (arr !== undefined && arr !== null) {\n let text = arr.toString();\n text = replaceEntitiesValue(text, options);\n return text;\n }\n return \"\";\n }\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if (tagName === undefined) continue;\n\n // Extract attributes from \":@\" property\n const attrValues = extractAttributeValues(tagObj[\":@\"], options);\n\n // Push tag to matcher WITH attributes\n matcher.push(tagName, attrValues);\n\n // Check if this is a stop node using Expression matching\n const isStopNode = checkStopNode(matcher, stopNodeExpressions);\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n matcher.pop();\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += `<![CDATA[${tagObj[tagName][0][options.textNodeName]}]]>`;\n isPreviousElementTag = false;\n matcher.pop();\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + `<!--${tagObj[tagName][0][options.textNodeName]}-->`;\n isPreviousElementTag = true;\n matcher.pop();\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n matcher.pop();\n continue;\n }\n\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n\n // Pass isStopNode to attr_to_str so attributes are also not processed for stopNodes\n const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n const tagStart = indentation + `<${tagName}${attStr}`;\n\n // If this is a stopNode, get raw content without processing\n let tagValue;\n if (isStopNode) {\n tagValue = getRawContent(tagObj[tagName], options);\n } else {\n\n tagValue = arrToStr(tagObj[tagName], options, newIdentation, matcher, stopNodeExpressions);\n }\n\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}</${tagName}>`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"</\"))) {\n xmlStr += indentation + options.indentBy + tagValue + indentation;\n } else {\n xmlStr += tagValue;\n }\n xmlStr += `</${tagName}>`;\n }\n isPreviousElementTag = true;\n\n // Pop tag from matcher\n matcher.pop();\n }\n\n return xmlStr;\n}\n\n/**\n * Extract attribute values from the \":@\" object and return as plain object\n * for passing to matcher.push()\n */\nfunction extractAttributeValues(attrMap, options) {\n if (!attrMap || options.ignoreAttributes) return null;\n\n const attrValues = {};\n let hasAttrs = false;\n\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n // Remove the attribute prefix to get clean attribute name\n const cleanAttrName = attr.startsWith(options.attributeNamePrefix)\n ? attr.substr(options.attributeNamePrefix.length)\n : attr;\n attrValues[cleanAttrName] = attrMap[attr];\n hasAttrs = true;\n }\n\n return hasAttrs ? attrValues : null;\n}\n\n/**\n * Extract raw content from a stopNode without any processing\n * This preserves the content exactly as-is, including special characters\n */\nfunction getRawContent(arr, options) {\n if (!Array.isArray(arr)) {\n // Non-array values return as-is\n if (arr !== undefined && arr !== null) {\n return arr.toString();\n }\n return \"\";\n }\n\n let content = \"\";\n for (let i = 0; i < arr.length; i++) {\n const item = arr[i];\n const tagName = propName(item);\n\n if (tagName === options.textNodeName) {\n // Raw text content - NO processing, NO entity replacement\n content += item[tagName];\n } else if (tagName === options.cdataPropName) {\n // CDATA content\n content += item[tagName][0][options.textNodeName];\n } else if (tagName === options.commentPropName) {\n // Comment content\n content += item[tagName][0][options.textNodeName];\n } else if (tagName && tagName[0] === \"?\") {\n // Processing instruction - skip for stopNodes\n continue;\n } else if (tagName) {\n // Nested tags within stopNode\n // Recursively get raw content and reconstruct the tag\n // For stopNodes, we don't process attributes either\n const attStr = attr_to_str_raw(item[\":@\"], options);\n const nestedContent = getRawContent(item[tagName], options);\n\n if (!nestedContent || nestedContent.length === 0) {\n content += `<${tagName}${attStr}/>`;\n } else {\n content += `<${tagName}${attStr}>${nestedContent}</${tagName}>`;\n }\n }\n }\n return content;\n}\n\n/**\n * Build attribute string for stopNodes - NO entity replacement\n */\nfunction attr_to_str_raw(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n // For stopNodes, use raw value without processing\n let attrVal = attrMap[attr];\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options, isStopNode) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n let attrVal;\n\n if (isStopNode) {\n // For stopNodes, use raw value without any processing\n attrVal = attrMap[attr];\n } else {\n // Normal processing: apply attributeValueProcessor and entity replacement\n attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n }\n\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction checkStopNode(matcher, stopNodeExpressions) {\n if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n for (let i = 0; i < stopNodeExpressions.length; i++) {\n if (matcher.matches(stopNodeExpressions[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n if (typeof ignoreAttributes === 'function') {\n return ignoreAttributes\n }\n if (Array.isArray(ignoreAttributes)) {\n return (attrName) => {\n for (const pattern of ignoreAttributes) {\n if (typeof pattern === 'string' && attrName === pattern) {\n return true\n }\n if (pattern instanceof RegExp && pattern.test(attrName)) {\n return true\n }\n }\n }\n }\n return () => false\n}","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"./ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function (key, a) {\n return a;\n },\n attributeValueProcessor: function (attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false,\n maxNestedTags: 100,\n jPath: true // When true, callbacks receive string jPath; when false, receive Matcher instance\n};\n\nexport default function Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n\n // Convert old-style stopNodes for backward compatibility\n // Old syntax: \"*.tag\" meant \"tag anywhere in tree\"\n // New syntax: \"..tag\" means \"tag anywhere in tree\"\n if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n this.options.stopNodes = this.options.stopNodes.map(node => {\n if (typeof node === 'string' && node.startsWith('*.')) {\n // Convert old wildcard syntax to deep wildcard\n return '..' + node.substring(2);\n }\n return node;\n });\n }\n\n // Pre-compile stopNode expressions for pattern matching\n this.stopNodeExpressions = [];\n if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n for (let i = 0; i < this.options.stopNodes.length; i++) {\n const node = this.options.stopNodes[i];\n if (typeof node === 'string') {\n this.stopNodeExpressions.push(new Expression(node));\n } else if (node instanceof Expression) {\n this.stopNodeExpressions.push(node);\n }\n }\n }\n\n if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n this.isAttribute = function (/*a*/) {\n return false;\n };\n } else {\n this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function () {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function (jObj) {\n if (this.options.preserveOrder) {\n return buildFromOrderedJs(jObj, this.options);\n } else {\n if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n jObj = {\n [this.options.arrayNodeName]: jObj\n }\n }\n // Initialize matcher for path tracking\n const matcher = new Matcher();\n return this.j2x(jObj, 0, matcher).val;\n }\n};\n\nBuilder.prototype.j2x = function (jObj, level, matcher) {\n let attrStr = '';\n let val = '';\n if (this.options.maxNestedTags && matcher.getDepth() >= this.options.maxNestedTags) {\n throw new Error(\"Maximum nested tags exceeded\");\n }\n // Get jPath based on option: string for backward compatibility, or Matcher for new features\n const jPath = this.options.jPath ? matcher.toString() : matcher;\n\n // Check if current node is a stopNode (will be used for attribute encoding)\n const isCurrentStopNode = this.checkStopNode(matcher);\n\n for (let key in jObj) {\n if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key === this.options.cdataPropName) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level, matcher);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key], isCurrentStopNode);\n } else if (!attr) {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n // Check if this is a stopNode before building\n matcher.push(key);\n const isStopNode = this.checkStopNode(matcher);\n matcher.pop();\n\n if (isStopNode) {\n // Build as raw content without encoding\n const textValue = '' + jObj[key];\n if (textValue === '') {\n val += this.indentate(level) + '<' + key + this.closeTag(key) + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '>' + textValue + '</' + key + this.tagEndChar;\n }\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level, matcher);\n }\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if (key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if (this.options.oneListGroup) {\n // Push tag to matcher before recursive call\n matcher.push(key);\n const result = this.j2x(item, level + 1, matcher);\n // Pop tag from matcher after recursive call\n matcher.pop();\n\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr\n }\n } else {\n listTagVal += this.processTextOrObjNode(item, key, level, matcher)\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n // Check if this is a stopNode before building\n matcher.push(key);\n const isStopNode = this.checkStopNode(matcher);\n matcher.pop();\n\n if (isStopNode) {\n // Build as raw content without encoding\n const textValue = '' + item;\n if (textValue === '') {\n listTagVal += this.indentate(level) + '<' + key + this.closeTag(key) + this.tagEndChar;\n } else {\n listTagVal += this.indentate(level) + '<' + key + '>' + textValue + '</' + key + this.tagEndChar;\n }\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level, matcher);\n }\n }\n }\n }\n if (this.options.oneListGroup) {\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]], isCurrentStopNode);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level, matcher)\n }\n }\n }\n return { attrStr: attrStr, val: val };\n};\n\nBuilder.prototype.buildAttrPairStr = function (attrName, val, isStopNode) {\n if (!isStopNode) {\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n }\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode(object, key, level, matcher) {\n // Extract attributes to pass to matcher\n const attrValues = this.extractAttributes(object);\n\n // Push tag to matcher before recursion WITH attributes\n matcher.push(key, attrValues);\n\n // Check if this entire node is a stopNode\n const isStopNode = this.checkStopNode(matcher);\n\n if (isStopNode) {\n // For stopNodes, build raw content without entity encoding\n const rawContent = this.buildRawContent(object);\n const attrStr = this.buildAttributesForStopNode(object);\n matcher.pop();\n return this.buildObjectNode(rawContent, key, attrStr, level);\n }\n\n const result = this.j2x(object, level + 1, matcher);\n // Pop tag from matcher after recursion\n matcher.pop();\n\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level, matcher);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\n// Helper method to extract attributes from an object\nBuilder.prototype.extractAttributes = function (obj) {\n if (!obj || typeof obj !== 'object') return null;\n\n const attrValues = {};\n let hasAttrs = false;\n\n // Check for attributesGroupName (when attributes are grouped)\n if (this.options.attributesGroupName && obj[this.options.attributesGroupName]) {\n const attrGroup = obj[this.options.attributesGroupName];\n for (let attrKey in attrGroup) {\n if (!Object.prototype.hasOwnProperty.call(attrGroup, attrKey)) continue;\n // Remove attribute prefix if present\n const cleanKey = attrKey.startsWith(this.options.attributeNamePrefix)\n ? attrKey.substring(this.options.attributeNamePrefix.length)\n : attrKey;\n attrValues[cleanKey] = attrGroup[attrKey];\n hasAttrs = true;\n }\n } else {\n // Look for individual attributes (prefixed with attributeNamePrefix)\n for (let key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n const attr = this.isAttribute(key);\n if (attr) {\n attrValues[attr] = obj[key];\n hasAttrs = true;\n }\n }\n }\n\n return hasAttrs ? attrValues : null;\n};\n\n// Build raw content for stopNode without entity encoding\nBuilder.prototype.buildRawContent = function (obj) {\n if (typeof obj === 'string') {\n return obj; // Already a string, return as-is\n }\n\n if (typeof obj !== 'object' || obj === null) {\n return String(obj);\n }\n\n // Check if this is a stopNode data from parser: { \"#text\": \"raw xml\", \"@_attr\": \"val\" }\n if (obj[this.options.textNodeName] !== undefined) {\n return obj[this.options.textNodeName]; // Return raw text without encoding\n }\n\n // Build raw XML from nested structure\n let content = '';\n\n for (let key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n\n // Skip attributes\n if (this.isAttribute(key)) continue;\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) continue;\n\n const value = obj[key];\n\n if (key === this.options.textNodeName) {\n content += value; // Raw text\n } else if (Array.isArray(value)) {\n // Array of same tag\n for (let item of value) {\n if (typeof item === 'string' || typeof item === 'number') {\n content += `<${key}>${item}</${key}>`;\n } else if (typeof item === 'object' && item !== null) {\n const nestedContent = this.buildRawContent(item);\n const nestedAttrs = this.buildAttributesForStopNode(item);\n if (nestedContent === '') {\n content += `<${key}${nestedAttrs}/>`;\n } else {\n content += `<${key}${nestedAttrs}>${nestedContent}</${key}>`;\n }\n }\n }\n } else if (typeof value === 'object' && value !== null) {\n // Nested object\n const nestedContent = this.buildRawContent(value);\n const nestedAttrs = this.buildAttributesForStopNode(value);\n if (nestedContent === '') {\n content += `<${key}${nestedAttrs}/>`;\n } else {\n content += `<${key}${nestedAttrs}>${nestedContent}</${key}>`;\n }\n } else {\n // Primitive value\n content += `<${key}>${value}</${key}>`;\n }\n }\n\n return content;\n};\n\n// Build attribute string for stopNode (no entity encoding)\nBuilder.prototype.buildAttributesForStopNode = function (obj) {\n if (!obj || typeof obj !== 'object') return '';\n\n let attrStr = '';\n\n // Check for attributesGroupName (when attributes are grouped)\n if (this.options.attributesGroupName && obj[this.options.attributesGroupName]) {\n const attrGroup = obj[this.options.attributesGroupName];\n for (let attrKey in attrGroup) {\n if (!Object.prototype.hasOwnProperty.call(attrGroup, attrKey)) continue;\n const cleanKey = attrKey.startsWith(this.options.attributeNamePrefix)\n ? attrKey.substring(this.options.attributeNamePrefix.length)\n : attrKey;\n const val = attrGroup[attrKey];\n if (val === true && this.options.suppressBooleanAttributes) {\n attrStr += ' ' + cleanKey;\n } else {\n attrStr += ' ' + cleanKey + '=\"' + val + '\"'; // No encoding for stopNode\n }\n }\n } else {\n // Look for individual attributes\n for (let key in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n const attr = this.isAttribute(key);\n if (attr) {\n const val = obj[key];\n if (val === true && this.options.suppressBooleanAttributes) {\n attrStr += ' ' + attr;\n } else {\n attrStr += ' ' + attr + '=\"' + val + '\"'; // No encoding for stopNode\n }\n }\n }\n }\n\n return attrStr;\n};\n\nBuilder.prototype.buildObjectNode = function (val, key, attrStr, level) {\n if (val === \"\") {\n if (key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n } else {\n\n let tagEndExp = '</' + key + this.tagEndChar;\n let piClosingChar = \"\";\n\n if (key[0] === \"?\") {\n piClosingChar = \"?\";\n tagEndExp = \"\";\n }\n\n // attrStr is an empty string in case the attribute came as undefined or null\n if ((attrStr || attrStr === '') && val.indexOf('<') === -1) {\n return (this.indentate(level) + '<' + key + attrStr + piClosingChar + '>' + val + tagEndExp);\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp);\n }\n }\n}\n\nBuilder.prototype.closeTag = function (key) {\n let closeTag = \"\";\n if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired\n if (!this.options.suppressUnpairedNode) closeTag = \"/\"\n } else if (this.options.suppressEmptyNode) { //empty\n closeTag = \"/\";\n } else {\n closeTag = `></${key}`\n }\n return closeTag;\n}\n\nBuilder.prototype.checkStopNode = function (matcher) {\n if (!this.stopNodeExpressions || this.stopNodeExpressions.length === 0) return false;\n\n for (let i = 0; i < this.stopNodeExpressions.length; i++) {\n if (matcher.matches(this.stopNodeExpressions[i])) {\n return true;\n }\n }\n return false;\n}\n\nfunction buildEmptyObjNode(val, key, attrStr, level) {\n if (val !== '') {\n return this.buildObjectNode(val, key, attrStr, level);\n } else {\n if (key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;\n // return this.buildTagStr(level,key, attrStr);\n }\n }\n}\n\nBuilder.prototype.buildTextValNode = function (val, key, attrStr, level, matcher) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `<![CDATA[${val}]]>` + this.newLine;\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `<!--${val}-->` + this.newLine;\n } else if (key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n } else {\n // Normal processing: apply tagValueProcessor and entity replacement\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n\n if (textValue === '') {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n } else {\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n '</' + key + this.tagEndChar;\n }\n }\n}\n\nBuilder.prototype.replaceEntitiesValue = function (textValue) {\n if (textValue && textValue.length > 0 && this.options.processEntities) {\n for (let i = 0; i < this.options.entities.length; i++) {\n const entity = this.options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\n\nfunction indentate(level) {\n return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n return name.substr(this.attrPrefixLen);\n } else {\n return false;\n }\n}","import { traverse, clearCache } from './traverse';\nimport { sampleArray, sampleBoolean, sampleNumber, sampleObject, sampleString } from './samplers/index';\nimport { XMLBuilder } from 'fast-xml-parser';\n\nexport var _samplers = {};\n\nconst defaults = {\n skipReadOnly: false,\n maxSampleDepth: 15,\n};\n\nfunction convertJsonToXml(obj, schema) {\n if (!obj) {\n throw new Error('Unknown format output for building XML.');\n }\n if (Array.isArray(obj) || Object.keys(obj).length > 1) {\n obj = { [schema?.xml?.name || 'root']: obj }; // XML document must contain one root element\n }\n const builder = new XMLBuilder({\n ignoreAttributes: false,\n format: true,\n attributeNamePrefix: '$',\n textNodeName: '#text',\n cdataPropName: '#cdata',\n });\n return builder.build(obj);\n}\n\nexport function sample(schema, options, spec) {\n let opts = Object.assign({}, defaults, options);\n clearCache();\n let result = traverse(schema, opts, spec).value;\n if (opts?.format === 'xml') {\n return convertJsonToXml(result, schema);\n }\n return result;\n};\n\nexport function _registerSampler(type, sampler) {\n _samplers[type] = sampler;\n};\n\nexport { inferType } from './infer';\n\n_registerSampler('array', sampleArray);\n_registerSampler('boolean', sampleBoolean);\n_registerSampler('integer', sampleNumber);\n_registerSampler('number', sampleNumber);\n_registerSampler('object', sampleObject);\n_registerSampler('string', sampleString);\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { resetStyles } from '../../styles/reset.css.js';\r\nimport type { ParsedRequestBody } from '../../core/types.js';\r\nimport { sample as sampleFromSchema } from 'openapi-sampler';\r\n\r\n@customElement('sl-request-body')\r\nexport class SlRequestBody extends LitElement {\r\n static override styles = [\r\n resetStyles,\r\n css`\r\n :host {\r\n display: block;\r\n }\r\n\r\n .desc {\r\n font-size: var(--sl-font-size-sm);\r\n color: var(--sl-color-text-secondary);\r\n margin-bottom: var(--sl-spacing-sm);\r\n }\r\n\r\n .media-tabs {\r\n display: flex;\r\n gap: 0;\r\n border-bottom: 1px solid var(--sl-color-border);\r\n margin-bottom: var(--sl-spacing-md);\r\n }\r\n\r\n .media-tab {\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-md);\r\n font-size: var(--sl-font-size-xs);\r\n font-family: var(--sl-font-mono);\r\n color: var(--sl-color-text-muted);\r\n border-bottom: 2px solid transparent;\r\n transition: all var(--sl-transition-fast);\r\n }\r\n\r\n .media-tab:hover {\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .media-tab.active {\r\n color: var(--sl-color-primary);\r\n border-bottom-color: var(--sl-color-primary);\r\n }\r\n\r\n .example-block {\r\n background: var(--sl-color-code-bg);\r\n border: 1px solid var(--sl-color-border);\r\n border-radius: var(--sl-radius-md);\r\n overflow: hidden;\r\n }\r\n\r\n .example-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-md);\r\n border-bottom: 1px solid var(--sl-color-border);\r\n background: var(--sl-color-surface-raised);\r\n }\r\n\r\n .example-label {\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n color: var(--sl-color-text-muted);\r\n text-transform: uppercase;\r\n letter-spacing: 0.04em;\r\n }\r\n\r\n .copy-btn {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n padding: 2px 8px;\r\n border-radius: var(--sl-radius-sm);\r\n transition: all var(--sl-transition-fast);\r\n }\r\n\r\n .copy-btn:hover {\r\n background: var(--sl-color-surface);\r\n color: var(--sl-color-text);\r\n }\r\n\r\n pre {\r\n padding: var(--sl-spacing-md);\r\n font-size: var(--sl-font-size-sm);\r\n color: var(--sl-color-code-text);\r\n overflow-x: auto;\r\n line-height: 1.6;\r\n }\r\n\r\n .schema-section {\r\n margin-top: var(--sl-spacing-md);\r\n }\r\n\r\n .schema-label {\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n color: var(--sl-color-text-muted);\r\n text-transform: uppercase;\r\n letter-spacing: 0.04em;\r\n margin-bottom: var(--sl-spacing-sm);\r\n }\r\n `,\r\n ];\r\n\r\n @property({ type: Object }) requestBody: ParsedRequestBody | null = null;\r\n @state() private _activeMediaType = 0;\r\n\r\n private _getSample(schema: object | null): string {\r\n if (!schema) return '{}';\r\n try {\r\n const sample = sampleFromSchema(schema as Record<string, unknown>);\r\n return JSON.stringify(sample, null, 2);\r\n } catch {\r\n return '{}';\r\n }\r\n }\r\n\r\n private _copy(text: string) {\r\n navigator.clipboard.writeText(text);\r\n }\r\n\r\n override render() {\r\n if (!this.requestBody) return html``;\r\n const rb = this.requestBody;\r\n const content = rb.content[this._activeMediaType];\r\n if (!content) return html``;\r\n\r\n const example = content.example\r\n ? JSON.stringify(content.example, null, 2)\r\n : this._getSample(content.schema);\r\n\r\n return html`\r\n ${rb.description ? html`<div class=\"desc\">${rb.description}</div>` : null}\r\n\r\n ${rb.content.length > 1 ? html`\r\n <div class=\"media-tabs\">\r\n ${rb.content.map((c, i) => html`\r\n <button\r\n class=\"media-tab ${i === this._activeMediaType ? 'active' : ''}\"\r\n @click=${() => this._activeMediaType = i}\r\n >${c.mediaType}</button>\r\n `)}\r\n </div>\r\n ` : null}\r\n\r\n <div class=\"example-block\">\r\n <div class=\"example-header\">\r\n <span class=\"example-label\">Example</span>\r\n <button class=\"copy-btn\" @click=${() => this._copy(example)}>Copy</button>\r\n </div>\r\n <pre><code>${example}</code></pre>\r\n </div>\r\n\r\n ${content.schema ? html`\r\n <div class=\"schema-section\">\r\n <div class=\"schema-label\">Schema</div>\r\n <sl-schema .schema=${content.schema}></sl-schema>\r\n </div>\r\n ` : null}\r\n `;\r\n }\r\n}\r\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},e=t=>(...e)=>({_$litDirective$:t,values:e});class i{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,i){this._$Ct=t,this._$AM=e,this._$Ci=i}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}}export{i as Directive,t as PartType,e as directive};\n//# sourceMappingURL=directive.js.map\n","import{nothing as t,noChange as i}from\"../lit-html.js\";import{directive as r,Directive as s,PartType as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends s{constructor(i){if(super(i),this.it=t,i.type!==n.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=r(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\r\nimport { resetStyles } from '../../styles/reset.css.js';\r\nimport type { ParsedResponse } from '../../core/types.js';\r\nimport { sample as sampleFromSchema } from 'openapi-sampler';\r\n\r\n@customElement('sl-responses')\r\nexport class SlResponses extends LitElement {\r\n static override styles = [\r\n resetStyles,\r\n css`\r\n :host {\r\n display: block;\r\n }\r\n\r\n .status-tabs {\r\n display: flex;\r\n gap: 0;\r\n border-bottom: 1px solid var(--sl-color-border);\r\n margin-bottom: var(--sl-spacing-md);\r\n overflow-x: auto;\r\n }\r\n\r\n .status-tab {\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-md);\r\n font-size: var(--sl-font-size-sm);\r\n font-family: var(--sl-font-mono);\r\n font-weight: 600;\r\n color: var(--sl-color-text-muted);\r\n border-bottom: 2px solid transparent;\r\n transition: all var(--sl-transition-fast);\r\n white-space: nowrap;\r\n }\r\n\r\n .status-tab:hover {\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .status-tab.active {\r\n border-bottom-color: currentColor;\r\n }\r\n\r\n .status-2xx { color: var(--sl-color-success); }\r\n .status-3xx { color: var(--sl-color-info); }\r\n .status-4xx { color: var(--sl-color-warning); }\r\n .status-5xx { color: var(--sl-color-danger); }\r\n .status-default { color: var(--sl-color-text-muted); }\r\n\r\n .response-content {\r\n font-size: var(--sl-font-size-sm);\r\n }\r\n\r\n .response-desc {\r\n color: var(--sl-color-text-secondary);\r\n margin-bottom: var(--sl-spacing-md);\r\n line-height: 1.6;\r\n }\r\n\r\n .headers-section {\r\n margin-bottom: var(--sl-spacing-md);\r\n }\r\n\r\n .headers-label {\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n text-transform: uppercase;\r\n letter-spacing: 0.04em;\r\n color: var(--sl-color-text-muted);\r\n margin-bottom: var(--sl-spacing-xs);\r\n }\r\n\r\n .header-row {\r\n display: grid;\r\n grid-template-columns: 150px 1fr;\r\n gap: var(--sl-spacing-sm);\r\n padding: var(--sl-spacing-xs) 0;\r\n border-bottom: 1px solid var(--sl-color-border);\r\n }\r\n\r\n .header-name {\r\n font-family: var(--sl-font-mono);\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .header-desc {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n }\r\n\r\n .example-block {\r\n border: 1px solid #30363d;\r\n border-radius: var(--sl-radius-md);\r\n overflow: hidden;\r\n margin-bottom: var(--sl-spacing-md);\r\n background: #0d1117;\r\n }\r\n\r\n .example-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-md);\r\n border-bottom: 1px solid #30363d;\r\n background: #161b22;\r\n }\r\n\r\n .example-label {\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n color: #8b949e;\r\n text-transform: uppercase;\r\n letter-spacing: 0.04em;\r\n }\r\n\r\n .media-type-badge {\r\n font-family: var(--sl-font-mono);\r\n font-size: var(--sl-font-size-xs);\r\n color: #8b949e;\r\n }\r\n\r\n pre {\r\n margin: 0;\r\n padding: var(--sl-spacing-md);\r\n font-size: var(--sl-font-size-sm);\r\n font-family: var(--sl-font-mono);\r\n color: #e6edf3;\r\n background: #0d1117;\r\n overflow-x: auto;\r\n line-height: 1.65;\r\n max-height: 60vh;\r\n overflow-y: auto;\r\n }\r\n\r\n code { font-family: inherit; }\r\n\r\n /* ── JSON syntax token colors (VS Code Dark+ palette) ── */\r\n .hl-key { color: #9cdcfe; }\r\n .hl-str { color: #ce9178; }\r\n .hl-num { color: #b5cea8; }\r\n .hl-kw { color: #569cd6; }\r\n `,\r\n ];\r\n\r\n @property({ type: Array }) responses: ParsedResponse[] = [];\r\n @state() private _activeTab = 0;\r\n\r\n private _esc(s: string): string {\r\n return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\r\n }\r\n\r\n private _highlightJson(code: string): string {\r\n const rules: [RegExp, string][] = [\r\n [/^\"(?:[^\"\\\\]|\\\\.)*\"(?=\\s*:)/, 'hl-key'],\r\n [/^\"(?:[^\"\\\\]|\\\\.)*\"/, 'hl-str'],\r\n [/^\\b(?:true|false|null)\\b/, 'hl-kw'],\r\n [/^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/, 'hl-num'],\r\n ];\r\n let out = '';\r\n let rem = code;\r\n while (rem.length > 0) {\r\n let hit = false;\r\n for (const [re, cls] of rules) {\r\n const m = re.exec(rem);\r\n if (m && m.index === 0) {\r\n out += `<span class=\"${cls}\">${this._esc(m[0])}</span>`;\r\n rem = rem.slice(m[0].length);\r\n hit = true;\r\n break;\r\n }\r\n }\r\n if (!hit) { out += this._esc(rem[0]); rem = rem.slice(1); }\r\n }\r\n return out;\r\n }\r\n\r\n private _getStatusClass(code: string): string {\r\n if (code === 'default') return 'status-default';\r\n if (code.startsWith('2')) return 'status-2xx';\r\n if (code.startsWith('3')) return 'status-3xx';\r\n if (code.startsWith('4')) return 'status-4xx';\r\n if (code.startsWith('5')) return 'status-5xx';\r\n return 'status-default';\r\n }\r\n\r\n private _getExample(response: ParsedResponse): string | null {\r\n const content = response.content[0];\r\n if (!content) return null;\r\n\r\n if (content.example) {\r\n return JSON.stringify(content.example, null, 2);\r\n }\r\n\r\n if (Object.keys(content.examples).length > 0) {\r\n const firstExample = Object.values(content.examples)[0];\r\n return JSON.stringify(firstExample, null, 2);\r\n }\r\n\r\n if (content.schema) {\r\n try {\r\n const sample = sampleFromSchema(content.schema as Record<string, unknown>);\r\n return JSON.stringify(sample, null, 2);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n override render() {\r\n if (this.responses.length === 0) return html``;\r\n\r\n const active = this.responses[this._activeTab];\r\n if (!active) return html``;\r\n\r\n const example = this._getExample(active);\r\n const headers = Object.entries(active.headers);\r\n const mediaType = active.content[0]?.mediaType;\r\n\r\n return html`\r\n <div class=\"status-tabs\">\r\n ${this.responses.map((r, i) => html`\r\n <button\r\n class=\"status-tab ${this._getStatusClass(r.statusCode)} ${i === this._activeTab ? 'active' : ''}\"\r\n @click=${() => this._activeTab = i}\r\n >${r.statusCode}</button>\r\n `)}\r\n </div>\r\n\r\n <div class=\"response-content\">\r\n ${active.description ? html`<div class=\"response-desc\">${active.description}</div>` : null}\r\n\r\n ${headers.length > 0 ? html`\r\n <div class=\"headers-section\">\r\n <div class=\"headers-label\">Headers</div>\r\n ${headers.map(([name, h]) => html`\r\n <div class=\"header-row\">\r\n <span class=\"header-name\">${name}</span>\r\n <span class=\"header-desc\">${h.description}</span>\r\n </div>\r\n `)}\r\n </div>\r\n ` : null}\r\n\r\n ${example ? html`\r\n <div class=\"example-block\">\r\n <div class=\"example-header\">\r\n <span class=\"example-label\">Response Example</span>\r\n ${mediaType ? html`<span class=\"media-type-badge\">${mediaType}</span>` : null}\r\n </div>\r\n <pre><code>${unsafeHTML(this._highlightJson(example))}</code></pre>\r\n </div>\r\n ` : null}\r\n </div>\r\n `;\r\n }\r\n}\r\n","const globalObject = (function () {\n if (typeof globalThis !== \"undefined\") {\n return globalThis;\n }\n if (typeof self !== \"undefined\") {\n return self;\n }\n return window;\n}());\nexport const { FormData, Blob, File } = globalObject;\n","/**\n * @license https://raw.githubusercontent.com/node-fetch/node-fetch/master/LICENSE.md\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2016 - 2020 Node Fetch Team\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n *\n * Extracted from https://github.com/node-fetch/node-fetch/blob/64c5c296a0250b852010746c76144cb9e14698d9/src/utils/form-data.js\n */\nconst carriage = '\\r\\n';\nconst dashes = '-'.repeat(2);\nconst NAME = Symbol.toStringTag;\nexport const isBlob = (object) => typeof object === 'object' &&\n typeof object.arrayBuffer === 'function' &&\n typeof object.type === 'string' &&\n typeof object.stream === 'function' &&\n typeof object.constructor === 'function' &&\n /^(Blob|File)$/.test(object[NAME]);\nconst getFooter = (boundary) => `${dashes}${boundary}${dashes}${carriage.repeat(1)}`;\nconst getHeader = (boundary, name, field) => {\n let header = '';\n header += `${dashes}${boundary}${carriage}`;\n header += `Content-Disposition: form-data; name=\"${name}\"`;\n if (typeof field !== 'string' && field.name !== 'blob') {\n header += `; filename=\"${field.name}\"${carriage}`;\n header += `Content-Type: ${field.type || 'application/octet-stream'}`;\n }\n return `${header}${carriage.repeat(2)}`;\n};\nexport const formDataIterator = async function* (form, boundary) {\n for (const [name, value] of form) {\n yield getHeader(boundary, name, value);\n if (typeof value === 'string') {\n yield value;\n }\n else {\n yield await value.text();\n }\n yield carriage;\n }\n yield getFooter(boundary);\n};\n","/**\n * Given a headers object retrieve a specific header out of it via a case-insensitive key.\n */\nexport const getHeaderName = (headers, name) => Object.keys(headers).find(header => header.toLowerCase() === name.toLowerCase());\n/**\n * Given a headers object retrieve the contents of a header out of it via a case-insensitive key.\n */\nexport const getHeader = (headers, name) => {\n const headerName = getHeaderName(headers, name);\n if (!headerName) {\n return undefined;\n }\n return headers[headerName];\n};\n/**\n * Determine if a given case-insensitive header exists within a header object.\n */\nexport const hasHeader = (headers, name) => Boolean(getHeaderName(headers, name));\nconst mimeTypeJson = [\n 'application/json',\n 'application/x-json',\n 'text/json',\n 'text/x-json',\n '+json',\n];\n/**\n * Determines if a given mimetype is JSON, or a variant of such.\n */\nexport const isMimeTypeJSON = (mimeType) => mimeTypeJson.some(type => mimeType.includes(type));\n","export const reducer = (accumulator, pair) => {\n if (pair.value === void 0) {\n return accumulator;\n }\n const currentValue = accumulator[pair.name];\n if (currentValue === undefined) {\n accumulator[pair.name] = pair.value;\n return accumulator;\n }\n // If we already have it as array just push the value\n if (Array.isArray(currentValue)) {\n currentValue.push(pair.value);\n return accumulator;\n }\n // convert to array since now we have more than one value for this key\n accumulator[pair.name] = [currentValue, pair.value];\n return accumulator;\n};\n","export function toSearchParams(obj) {\n return new URLSearchParams(Object.entries(obj)\n .map(([key, value]) => {\n if (Array.isArray(value)) {\n return value.map(v => [key, v]);\n }\n return [[key, value]];\n })\n .flat(1));\n}\nexport class ExtendedURL extends URL {\n get path() {\n return this.pathname + this.search;\n }\n}\n","const DEFAULT_INDENTATION_CHARACTER = '';\nconst DEFAULT_LINE_JOIN = '\\n';\nexport class CodeBuilder {\n /**\n * Helper object to format and aggragate lines of code.\n * Lines are aggregated in a `code` array, and need to be joined to obtain a proper code snippet.\n */\n constructor({ indent, join } = {}) {\n this.postProcessors = [];\n this.code = [];\n this.indentationCharacter = DEFAULT_INDENTATION_CHARACTER;\n this.lineJoin = DEFAULT_LINE_JOIN;\n /**\n * Add given indentation level to given line of code\n */\n this.indentLine = (line, indentationLevel = 0) => {\n const indent = this.indentationCharacter.repeat(indentationLevel);\n return `${indent}${line}`;\n };\n /**\n * Add the line at the beginning of the current lines\n */\n this.unshift = (line, indentationLevel) => {\n const newLine = this.indentLine(line, indentationLevel);\n this.code.unshift(newLine);\n };\n /**\n * Add the line at the end of the current lines\n */\n this.push = (line, indentationLevel) => {\n const newLine = this.indentLine(line, indentationLevel);\n this.code.push(newLine);\n };\n /**\n * Add an empty line at the end of current lines\n */\n this.blank = () => {\n this.code.push('');\n };\n /**\n * Concatenate all current lines using the given lineJoin, then apply any replacers that may have been added\n */\n this.join = () => {\n const unreplacedCode = this.code.join(this.lineJoin);\n const replacedOutput = this.postProcessors.reduce((accumulator, replacer) => replacer(accumulator), unreplacedCode);\n return replacedOutput;\n };\n /**\n * Often when writing modules you may wish to add a literal tag or bit of metadata that you wish to transform after other processing as a final step.\n * To do so, you can provide a PostProcessor function and it will be run automatically for you when you call `join()` later on.\n */\n this.addPostProcessor = (postProcessor) => {\n this.postProcessors = [...this.postProcessors, postProcessor];\n };\n this.indentationCharacter = indent || DEFAULT_INDENTATION_CHARACTER;\n this.lineJoin = join !== null && join !== void 0 ? join : DEFAULT_LINE_JOIN;\n }\n}\n","/**\n * Escape characters within a value to make it safe to insert directly into a\n * snippet. Takes options which define the escape requirements.\n *\n * This is closely based on the JSON-stringify string serialization algorithm,\n * but generalized for other string delimiters (e.g. \" or ') and different escape\n * characters (e.g. Powershell uses `)\n *\n * See https://tc39.es/ecma262/multipage/structured-data.html#sec-quotejsonstring\n * for the complete original algorithm.\n */\nexport function escapeString(rawValue, options = {}) {\n const { delimiter = '\"', escapeChar = '\\\\', escapeNewlines = true } = options;\n const stringValue = rawValue.toString();\n return [...stringValue]\n .map(c => {\n if (c === '\\b') {\n return `${escapeChar}b`;\n }\n else if (c === '\\t') {\n return `${escapeChar}t`;\n }\n else if (c === '\\n') {\n if (escapeNewlines) {\n return `${escapeChar}n`;\n }\n return c; // Don't just continue, or this is caught by < \\u0020\n }\n else if (c === '\\f') {\n return `${escapeChar}f`;\n }\n else if (c === '\\r') {\n if (escapeNewlines) {\n return `${escapeChar}r`;\n }\n return c; // Don't just continue, or this is caught by < \\u0020\n }\n else if (c === escapeChar) {\n return escapeChar + escapeChar;\n }\n else if (c === delimiter) {\n return escapeChar + delimiter;\n }\n else if (c < '\\u0020' || c > '\\u007E') {\n // Delegate the trickier non-ASCII cases to the normal algorithm. Some of these\n // are escaped as \\uXXXX, whilst others are represented literally. Since we're\n // using this primarily for header values that are generally (though not 100%\n // strictly?) ASCII-only, this should almost never happen.\n return JSON.stringify(c).slice(1, -1);\n }\n return c;\n })\n .join('');\n}\n/**\n * Make a string value safe to insert literally into a snippet within single quotes,\n * by escaping problematic characters, including single quotes inside the string,\n * backslashes, newlines, and other special characters.\n *\n * If value is not a string, it will be stringified with .toString() first.\n */\nexport const escapeForSingleQuotes = (value) => escapeString(value, { delimiter: \"'\" });\n/**\n * Make a string value safe to insert literally into a snippet within double quotes,\n * by escaping problematic characters, including double quotes inside the string,\n * backslashes, newlines, and other special characters.\n *\n * If value is not a string, it will be stringified with .toString() first.\n */\nexport const escapeForDoubleQuotes = (value) => escapeString(value, { delimiter: '\"' });\n","import { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nexport const libcurl = {\n info: {\n key: 'libcurl',\n title: 'Libcurl',\n link: 'http://curl.haxx.se/libcurl',\n description: 'Simple REST and HTTP API Client for C',\n },\n convert: ({ method, fullUrl, headersObj, allHeaders, postData }) => {\n const { push, blank, join } = new CodeBuilder();\n push('CURL *hnd = curl_easy_init();');\n blank();\n push(`curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \"${method.toUpperCase()}\");`);\n push(`curl_easy_setopt(hnd, CURLOPT_URL, \"${fullUrl}\");`);\n // Add headers, including the cookies\n const headers = Object.keys(headersObj);\n // construct headers\n if (headers.length) {\n blank();\n push('struct curl_slist *headers = NULL;');\n headers.forEach(header => {\n push(`headers = curl_slist_append(headers, \"${header}: ${escapeForDoubleQuotes(headersObj[header])}\");`);\n });\n push('curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);');\n }\n // construct cookies\n if (allHeaders.cookie) {\n blank();\n push(`curl_easy_setopt(hnd, CURLOPT_COOKIE, \"${allHeaders.cookie}\");`);\n }\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n blank();\n push(`curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, ${JSON.stringify(postData.text)});`);\n }\n blank();\n push('CURLcode ret = curl_easy_perform(hnd);');\n return join();\n },\n};\n","import { libcurl } from \"./libcurl/client.mjs\";\nexport const c = {\n info: {\n key: 'c',\n title: 'C',\n extname: '.c',\n default: 'libcurl',\n },\n clientsById: {\n libcurl,\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for Clojure using clj-http.\n *\n * @author\n * @tggreene\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { getHeader, getHeaderName } from \"../../../helpers/headers.mjs\";\nclass Keyword {\n constructor(name) {\n this.name = '';\n this.toString = () => `:${this.name}`;\n this.name = name;\n }\n}\nclass File {\n constructor(path) {\n this.path = '';\n this.toString = () => `(clojure.java.io/file \"${this.path}\")`;\n this.path = path;\n }\n}\nconst jsType = (input) => {\n if (input === undefined) {\n return null;\n }\n if (input === null) {\n return 'null';\n }\n return input.constructor.name.toLowerCase();\n};\nconst objEmpty = (input) => {\n if (jsType(input) === 'object') {\n return Object.keys(input).length === 0;\n }\n return false;\n};\nconst filterEmpty = (input) => {\n Object.keys(input)\n .filter(x => objEmpty(input[x]))\n .forEach(x => {\n delete input[x];\n });\n return input;\n};\nconst padBlock = (padSize, input) => {\n const padding = ' '.repeat(padSize);\n return input.replace(/\\n/g, `\\n${padding}`);\n};\nconst jsToEdn = (js) => {\n switch (jsType(js)) {\n case 'string':\n return `\"${js.replace(/\"/g, '\\\\\"')}\"`;\n case 'file':\n return js.toString();\n case 'keyword':\n return js.toString();\n case 'null':\n return 'nil';\n case 'regexp':\n return `#\"${js.source}\"`;\n case 'object': {\n // simple vertical format\n const obj = Object.keys(js)\n .reduce((accumulator, key) => {\n const val = padBlock(key.length + 2, jsToEdn(js[key]));\n return `${accumulator}:${key} ${val}\\n `;\n }, '')\n .trim();\n return `{${padBlock(1, obj)}}`;\n }\n case 'array': {\n // simple horizontal format\n const arr = js\n .reduce((accumulator, value) => `${accumulator} ${jsToEdn(value)}`, '')\n .trim();\n return `[${padBlock(1, arr)}]`;\n }\n default: // 'number' 'boolean'\n return js.toString();\n }\n};\nexport const clj_http = {\n info: {\n key: 'clj_http',\n title: 'clj-http',\n link: 'https://github.com/dakrone/clj-http',\n description: 'An idiomatic clojure http client wrapping the apache client.',\n },\n convert: ({ queryObj, method, postData, url, allHeaders }, options) => {\n const { push, join } = new CodeBuilder({ indent: options === null || options === void 0 ? void 0 : options.indent });\n const methods = ['get', 'post', 'put', 'delete', 'patch', 'head', 'options'];\n method = method.toLowerCase();\n if (!methods.includes(method)) {\n push('Method not supported');\n return join();\n }\n const params = {\n headers: allHeaders,\n 'query-params': queryObj,\n };\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/json':\n {\n params['content-type'] = new Keyword('json');\n params['form-params'] = postData.jsonObj;\n const header = getHeaderName(params.headers, 'content-type');\n if (header) {\n delete params.headers[header];\n }\n }\n break;\n case 'application/x-www-form-urlencoded':\n {\n params['form-params'] = postData.paramsObj;\n const header = getHeaderName(params.headers, 'content-type');\n if (header) {\n delete params.headers[header];\n }\n }\n break;\n case 'text/plain':\n {\n params.body = postData.text;\n const header = getHeaderName(params.headers, 'content-type');\n if (header) {\n delete params.headers[header];\n }\n }\n break;\n case 'multipart/form-data': {\n if (postData.params) {\n params.multipart = postData.params.map(param => {\n if (param.fileName && !param.value) {\n return {\n name: param.name,\n content: new File(param.fileName),\n };\n }\n return {\n name: param.name,\n content: param.value,\n };\n });\n const header = getHeaderName(params.headers, 'content-type');\n if (header) {\n delete params.headers[header];\n }\n }\n break;\n }\n }\n switch (getHeader(params.headers, 'accept')) {\n case 'application/json':\n {\n params.accept = new Keyword('json');\n const header = getHeaderName(params.headers, 'accept');\n if (header) {\n delete params.headers[header];\n }\n }\n break;\n }\n push(\"(require '[clj-http.client :as client])\\n\");\n if (objEmpty(filterEmpty(params))) {\n push(`(client/${method} \"${url}\")`);\n }\n else {\n const padding = 11 + method.length + url.length;\n const formattedParams = padBlock(padding, jsToEdn(filterEmpty(params)));\n push(`(client/${method} \"${url}\" ${formattedParams})`);\n }\n return join();\n },\n};\n","import { clj_http } from \"./clj_http/client.mjs\";\nexport const clojure = {\n info: {\n key: 'clojure',\n title: 'Clojure',\n extname: '.clj',\n default: 'clj_http',\n },\n clientsById: {\n clj_http,\n },\n};\n","import { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nimport { getHeader } from \"../../../helpers/headers.mjs\";\nconst getDecompressionMethods = (allHeaders) => {\n let acceptEncodings = getHeader(allHeaders, 'accept-encoding');\n if (!acceptEncodings) {\n return []; // no decompression\n }\n const supportedMethods = {\n gzip: 'DecompressionMethods.GZip',\n deflate: 'DecompressionMethods.Deflate',\n };\n const methods = [];\n if (typeof acceptEncodings === 'string') {\n acceptEncodings = [acceptEncodings];\n }\n acceptEncodings.forEach(acceptEncoding => {\n acceptEncoding.split(',').forEach(encoding => {\n const match = /\\s*([^;\\s]+)/.exec(encoding);\n if (match) {\n const method = supportedMethods[match[1]];\n if (method) {\n methods.push(method);\n }\n }\n });\n });\n return methods;\n};\nexport const httpclient = {\n info: {\n key: 'httpclient',\n title: 'HttpClient',\n link: 'https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httpclient',\n description: '.NET Standard HTTP Client',\n },\n convert: ({ allHeaders, postData, method, fullUrl }, options) => {\n var _a, _b;\n const opts = {\n indent: ' ',\n ...options,\n };\n const { push, join } = new CodeBuilder({ indent: opts.indent });\n push('using System.Net.Http.Headers;');\n let clienthandler = '';\n const cookies = Boolean(allHeaders.cookie);\n const decompressionMethods = getDecompressionMethods(allHeaders);\n if (cookies || decompressionMethods.length) {\n clienthandler = 'clientHandler';\n push('var clientHandler = new HttpClientHandler');\n push('{');\n if (cookies) {\n // enable setting the cookie header\n push('UseCookies = false,', 1);\n }\n if (decompressionMethods.length) {\n // enable decompression for supported methods\n push(`AutomaticDecompression = ${decompressionMethods.join(' | ')},`, 1);\n }\n push('};');\n }\n push(`var client = new HttpClient(${clienthandler});`);\n push('var request = new HttpRequestMessage');\n push('{');\n const methods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS', 'TRACE'];\n method = method.toUpperCase();\n if (method && methods.includes(method)) {\n // buildin method\n method = `HttpMethod.${method[0]}${method.substring(1).toLowerCase()}`;\n }\n else {\n // custom method\n method = `new HttpMethod(\"${method}\")`;\n }\n push(`Method = ${method},`, 1);\n push(`RequestUri = new Uri(\"${fullUrl}\"),`, 1);\n const headers = Object.keys(allHeaders).filter(header => {\n switch (header.toLowerCase()) {\n case 'content-type':\n case 'content-length':\n case 'accept-encoding':\n // skip these headers\n return false;\n default:\n return true;\n }\n });\n if (headers.length) {\n push('Headers =', 1);\n push('{', 1);\n headers.forEach(key => {\n push(`{ \"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\" },`, 2);\n });\n push('},', 1);\n }\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n const contentType = postData.mimeType;\n switch (contentType) {\n case 'application/x-www-form-urlencoded':\n push('Content = new FormUrlEncodedContent(new Dictionary<string, string>', 1);\n push('{', 1);\n (_a = postData.params) === null || _a === void 0 ? void 0 : _a.forEach(param => {\n push(`{ \"${param.name}\", \"${param.value}\" },`, 2);\n });\n push('}),', 1);\n break;\n case 'multipart/form-data':\n push('Content = new MultipartFormDataContent', 1);\n push('{', 1);\n (_b = postData.params) === null || _b === void 0 ? void 0 : _b.forEach(param => {\n push(`new StringContent(${JSON.stringify(param.value || '')})`, 2);\n push('{', 2);\n push('Headers =', 3);\n push('{', 3);\n if (param.contentType) {\n push(`ContentType = new MediaTypeHeaderValue(\"${param.contentType}\"),`, 4);\n }\n push('ContentDisposition = new ContentDispositionHeaderValue(\"form-data\")', 4);\n push('{', 4);\n push(`Name = \"${param.name}\",`, 5);\n if (param.fileName) {\n push(`FileName = \"${param.fileName}\",`, 5);\n }\n push('}', 4);\n push('}', 3);\n push('},', 2);\n });\n push('},', 1);\n break;\n default:\n push(`Content = new StringContent(${JSON.stringify((postData === null || postData === void 0 ? void 0 : postData.text) || '')})`, 1);\n push('{', 1);\n push('Headers =', 2);\n push('{', 2);\n push(`ContentType = new MediaTypeHeaderValue(\"${contentType}\")`, 3);\n push('}', 2);\n push('}', 1);\n break;\n }\n }\n push('};');\n // send and read response\n push('using (var response = await client.SendAsync(request))');\n push('{');\n push('response.EnsureSuccessStatusCode();', 1);\n push('var body = await response.Content.ReadAsStringAsync();', 1);\n push('Console.WriteLine(body);', 1);\n push('}');\n return join();\n },\n};\n","import { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nimport { getHeader } from \"../../../helpers/headers.mjs\";\nexport const restsharp = {\n info: {\n key: 'restsharp',\n title: 'RestSharp',\n link: 'http://restsharp.org/',\n description: 'Simple REST and HTTP API Client for .NET',\n },\n convert: ({ allHeaders, method, fullUrl, headersObj, cookies, postData }) => {\n const { push, join } = new CodeBuilder();\n const isSupportedMethod = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'].includes(method.toUpperCase());\n if (!isSupportedMethod) {\n return 'Method not supported';\n }\n push(`var client = new RestClient(\"${fullUrl}\");`);\n push(`var request = new RestRequest(Method.${method.toUpperCase()});`);\n // Add headers, including the cookies\n Object.keys(headersObj).forEach(key => {\n push(`request.AddHeader(\"${key}\", \"${escapeForDoubleQuotes(headersObj[key])}\");`);\n });\n cookies === null || cookies === void 0 ? void 0 : cookies.forEach(({ name, value }) => {\n push(`request.AddCookie(\"${name}\", \"${value}\");`);\n });\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n const header = getHeader(allHeaders, 'content-type');\n const text = JSON.stringify(postData.text);\n push(`request.AddParameter(\"${header}\", ${text}, ParameterType.RequestBody);`);\n }\n push('IRestResponse response = client.Execute(request);');\n return join();\n },\n};\n","import { httpclient } from \"./httpclient/client.mjs\";\nimport { restsharp } from \"./restsharp/client.mjs\";\nexport const csharp = {\n info: {\n key: 'csharp',\n title: 'C#',\n extname: '.cs',\n default: 'restsharp',\n },\n clientsById: {\n httpclient,\n restsharp,\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for native Go.\n *\n * @author\n * @montanaflynn\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nexport const native = {\n info: {\n key: 'native',\n title: 'NewRequest',\n link: 'http://golang.org/pkg/net/http/#NewRequest',\n description: 'Golang HTTP client request',\n },\n convert: ({ postData, method, allHeaders, fullUrl }, options = {}) => {\n const { blank, push, join } = new CodeBuilder({ indent: '\\t' });\n const { showBoilerplate = true, checkErrors = false, printBody = true, timeout = -1, insecureSkipVerify = false, } = options;\n const errorPlaceholder = checkErrors ? 'err' : '_';\n const indent = showBoilerplate ? 1 : 0;\n const errorCheck = () => {\n if (checkErrors) {\n push('if err != nil {', indent);\n push('panic(err)', indent + 1);\n push('}', indent);\n }\n };\n // Create boilerplate\n if (showBoilerplate) {\n push('package main');\n blank();\n push('import (');\n push('\"fmt\"', indent);\n if (timeout > 0) {\n push('\"time\"', indent);\n }\n if (insecureSkipVerify) {\n push('\"crypto/tls\"', indent);\n }\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push('\"strings\"', indent);\n }\n push('\"net/http\"', indent);\n if (printBody) {\n push('\"io\"', indent);\n }\n push(')');\n blank();\n push('func main() {');\n blank();\n }\n // Create an insecure transport for the client\n if (insecureSkipVerify) {\n push('insecureTransport := http.DefaultTransport.(*http.Transport).Clone()', indent);\n push('insecureTransport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}', indent);\n }\n // Create client\n const hasTimeout = timeout > 0;\n const hasClient = hasTimeout || insecureSkipVerify;\n const client = hasClient ? 'client' : 'http.DefaultClient';\n if (hasClient) {\n push('client := http.Client{', indent);\n if (hasTimeout) {\n push(`Timeout: time.Duration(${timeout} * time.Second),`, indent + 1);\n }\n if (insecureSkipVerify) {\n push('Transport: insecureTransport,', indent + 1);\n }\n push('}', indent);\n blank();\n }\n push(`url := \"${fullUrl}\"`, indent);\n blank();\n // If we have body content or not create the var and reader or nil\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`payload := strings.NewReader(${JSON.stringify(postData.text)})`, indent);\n blank();\n push(`req, ${errorPlaceholder} := http.NewRequest(\"${method}\", url, payload)`, indent);\n blank();\n }\n else {\n push(`req, ${errorPlaceholder} := http.NewRequest(\"${method}\", url, nil)`, indent);\n blank();\n }\n errorCheck();\n // Add headers\n if (Object.keys(allHeaders).length) {\n Object.keys(allHeaders).forEach(key => {\n push(`req.Header.Add(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\")`, indent);\n });\n blank();\n }\n // Make request\n push(`res, ${errorPlaceholder} := ${client}.Do(req)`, indent);\n errorCheck();\n // Get Body\n if (printBody) {\n blank();\n push('defer res.Body.Close()', indent);\n push(`body, ${errorPlaceholder} := io.ReadAll(res.Body)`, indent);\n errorCheck();\n }\n // Print it\n blank();\n push('fmt.Println(res)', indent);\n if (printBody) {\n push('fmt.Println(string(body))', indent);\n }\n // End main block\n if (showBoilerplate) {\n blank();\n push('}');\n }\n return join();\n },\n};\n","import { native } from \"./native/client.mjs\";\nexport const go = {\n info: {\n key: 'go',\n title: 'Go',\n extname: '.go',\n default: 'native',\n },\n clientsById: {\n native,\n },\n};\n","/**\n * @description\n * HTTP code snippet generator to generate raw HTTP/1.1 request strings,\n * in accordance to the RFC 7230 (and RFC 7231) specifications.\n *\n * @author\n * @irvinlim\n *\n * For any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nconst CRLF = '\\r\\n';\n/**\n * Request follows the request message format in accordance to RFC 7230, Section 3.\n * Each section is prepended with the RFC and section number.\n * See more at https://tools.ietf.org/html/rfc7230#section-3.\n */\nexport const http11 = {\n info: {\n key: 'http1.1',\n title: 'HTTP/1.1',\n link: 'https://tools.ietf.org/html/rfc7230',\n description: 'HTTP/1.1 request string in accordance with RFC 7230',\n },\n convert: ({ method, fullUrl, uriObj, httpVersion, allHeaders, postData }, options) => {\n const opts = {\n absoluteURI: false,\n autoContentLength: true,\n autoHost: true,\n ...options,\n };\n // RFC 7230 Section 3. Message Format\n // All lines have no indentation, and should be terminated with CRLF.\n const { blank, push, join } = new CodeBuilder({ indent: '', join: CRLF });\n // RFC 7230 Section 5.3. Request Target\n // Determines if the Request-Line should use 'absolute-form' or 'origin-form'.\n // Basically it means whether the \"http://domain.com\" will prepend the full url.\n const requestUrl = opts.absoluteURI ? fullUrl : uriObj.path;\n // RFC 7230 Section 3.1.1. Request-Line\n push(`${method} ${requestUrl} ${httpVersion}`);\n const headerKeys = Object.keys(allHeaders);\n // RFC 7231 Section 5. Header Fields\n headerKeys.forEach(key => {\n // Capitalize header keys, even though it's not required by the spec.\n const keyCapitalized = key.toLowerCase().replace(/(^|-)(\\w)/g, input => input.toUpperCase());\n push(`${keyCapitalized}: ${allHeaders[key]}`);\n });\n // RFC 7230 Section 5.4. Host\n // Automatically set Host header if option is on and on header already exists.\n if (opts.autoHost && !headerKeys.includes('host')) {\n push(`Host: ${uriObj.host}`);\n }\n // RFC 7230 Section 3.3.3. Message Body Length\n // Automatically set Content-Length header if option is on, postData is present and no header already exists.\n if (opts.autoContentLength && (postData === null || postData === void 0 ? void 0 : postData.text) && !headerKeys.includes('content-length')) {\n push(`Content-Length: ${postData.text.length}`);\n }\n // Add extra line after header section.\n blank();\n // Separate header section and message body section.\n const headerSection = join();\n // RFC 7230 Section 3.3. Message Body\n const messageBody = (postData === null || postData === void 0 ? void 0 : postData.text) || '';\n // RFC 7230 Section 3. Message Format\n // Extra CRLF separating the headers from the body.\n return `${headerSection}${CRLF}${messageBody}`;\n },\n};\n","import { http11 } from \"./http1.1/client.mjs\";\nexport const http = {\n info: {\n key: 'http',\n title: 'HTTP',\n extname: null,\n default: '1.1',\n },\n clientsById: {\n 'http1.1': http11,\n },\n};\n","/**\n * @description\n * Asynchronous Http and WebSocket Client library for Java\n *\n * @author\n * @windard\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nexport const asynchttp = {\n info: {\n key: 'asynchttp',\n title: 'AsyncHttp',\n link: 'https://github.com/AsyncHttpClient/async-http-client',\n description: 'Asynchronous Http and WebSocket Client library for Java',\n },\n convert: ({ method, allHeaders, postData, fullUrl }, options) => {\n const opts = {\n indent: ' ',\n ...options,\n };\n const { blank, push, join } = new CodeBuilder({ indent: opts.indent });\n push('AsyncHttpClient client = new DefaultAsyncHttpClient();');\n push(`client.prepare(\"${method.toUpperCase()}\", \"${fullUrl}\")`);\n // Add headers, including the cookies\n Object.keys(allHeaders).forEach(key => {\n push(`.setHeader(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\")`, 1);\n });\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`.setBody(${JSON.stringify(postData.text)})`, 1);\n }\n push('.execute()', 1);\n push('.toCompletableFuture()', 1);\n push('.thenAccept(System.out::println)', 1);\n push('.join();', 1);\n blank();\n push('client.close();');\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for Java using java.net.http.\n *\n * @author\n * @wtetsu\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nexport const nethttp = {\n info: {\n key: 'nethttp',\n title: 'java.net.http',\n link: 'https://openjdk.java.net/groups/net/httpclient/intro.html',\n description: 'Java Standardized HTTP Client API',\n },\n convert: ({ allHeaders, fullUrl, method, postData }, options) => {\n const opts = {\n indent: ' ',\n ...options,\n };\n const { push, join } = new CodeBuilder({ indent: opts.indent });\n push('HttpRequest request = HttpRequest.newBuilder()');\n push(`.uri(URI.create(\"${fullUrl}\"))`, 2);\n Object.keys(allHeaders).forEach(key => {\n push(`.header(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\")`, 2);\n });\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`.method(\"${method.toUpperCase()}\", HttpRequest.BodyPublishers.ofString(${JSON.stringify(postData.text)}))`, 2);\n }\n else {\n push(`.method(\"${method.toUpperCase()}\", HttpRequest.BodyPublishers.noBody())`, 2);\n }\n push('.build();', 2);\n push('HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());');\n push('System.out.println(response.body());');\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for Java using OkHttp.\n *\n * @author\n * @shashiranjan84\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nexport const okhttp = {\n info: {\n key: 'okhttp',\n title: 'OkHttp',\n link: 'http://square.github.io/okhttp/',\n description: 'An HTTP Request Client Library',\n },\n convert: ({ postData, method, fullUrl, allHeaders }, options) => {\n const opts = {\n indent: ' ',\n ...options,\n };\n const { push, blank, join } = new CodeBuilder({ indent: opts.indent });\n const methods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD'];\n const methodsWithBody = ['POST', 'PUT', 'DELETE', 'PATCH'];\n push('OkHttpClient client = new OkHttpClient();');\n blank();\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n if (postData.boundary) {\n push(`MediaType mediaType = MediaType.parse(\"${postData.mimeType}; boundary=${postData.boundary}\");`);\n }\n else {\n push(`MediaType mediaType = MediaType.parse(\"${postData.mimeType}\");`);\n }\n push(`RequestBody body = RequestBody.create(mediaType, ${JSON.stringify(postData.text)});`);\n }\n push('Request request = new Request.Builder()');\n push(`.url(\"${fullUrl}\")`, 1);\n if (!methods.includes(method.toUpperCase())) {\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`.method(\"${method.toUpperCase()}\", body)`, 1);\n }\n else {\n push(`.method(\"${method.toUpperCase()}\", null)`, 1);\n }\n }\n else if (methodsWithBody.includes(method.toUpperCase())) {\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`.${method.toLowerCase()}(body)`, 1);\n }\n else {\n push(`.${method.toLowerCase()}(null)`, 1);\n }\n }\n else {\n push(`.${method.toLowerCase()}()`, 1);\n }\n // Add headers, including the cookies\n Object.keys(allHeaders).forEach(key => {\n push(`.addHeader(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\")`, 1);\n });\n push('.build();', 1);\n blank();\n push('Response response = client.newCall(request).execute();');\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for Java using Unirest.\n *\n * @author\n * @shashiranjan84\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nexport const unirest = {\n info: {\n key: 'unirest',\n title: 'Unirest',\n link: 'http://unirest.io/java.html',\n description: 'Lightweight HTTP Request Client Library',\n },\n convert: ({ method, allHeaders, postData, fullUrl }, options) => {\n const opts = {\n indent: ' ',\n ...options,\n };\n const { join, push } = new CodeBuilder({ indent: opts.indent });\n const methods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'];\n if (!methods.includes(method.toUpperCase())) {\n push(`HttpResponse<String> response = Unirest.customMethod(\"${method.toUpperCase()}\",\"${fullUrl}\")`);\n }\n else {\n push(`HttpResponse<String> response = Unirest.${method.toLowerCase()}(\"${fullUrl}\")`);\n }\n // Add headers, including the cookies\n Object.keys(allHeaders).forEach(key => {\n push(`.header(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\")`, 1);\n });\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`.body(${JSON.stringify(postData.text)})`, 1);\n }\n push('.asString();', 1);\n return join();\n },\n};\n","import { asynchttp } from \"./asynchttp/client.mjs\";\nimport { nethttp } from \"./nethttp/client.mjs\";\nimport { okhttp } from \"./okhttp/client.mjs\";\nimport { unirest } from \"./unirest/client.mjs\";\nexport const java = {\n info: {\n key: 'java',\n title: 'Java',\n extname: '.java',\n default: 'unirest',\n },\n clientsById: {\n asynchttp,\n nethttp,\n okhttp,\n unirest,\n },\n};\n","'use strict';\nmodule.exports = function (re) {\n\treturn Object.prototype.toString.call(re) === '[object RegExp]';\n};\n","'use strict';\nmodule.exports = function (x) {\n\tvar type = typeof x;\n\treturn x !== null && (type === 'object' || type === 'function');\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = (object) => Object\n .getOwnPropertySymbols(object)\n .filter((keySymbol) => Object.prototype.propertyIsEnumerable.call(object, keySymbol));\n//# sourceMappingURL=index.js.map","'use strict';\nconst isRegexp = require('is-regexp');\nconst isObj = require('is-obj');\nconst getOwnEnumPropSymbols = require('get-own-enumerable-property-symbols').default;\n\nmodule.exports = (val, opts, pad) => {\n\tconst seen = [];\n\n\treturn (function stringify(val, opts, pad) {\n\t\topts = opts || {};\n\t\topts.indent = opts.indent || '\\t';\n\t\tpad = pad || '';\n\n\t\tlet tokens;\n\n\t\tif (opts.inlineCharacterLimit === undefined) {\n\t\t\ttokens = {\n\t\t\t\tnewLine: '\\n',\n\t\t\t\tnewLineOrSpace: '\\n',\n\t\t\t\tpad,\n\t\t\t\tindent: pad + opts.indent\n\t\t\t};\n\t\t} else {\n\t\t\ttokens = {\n\t\t\t\tnewLine: '@@__STRINGIFY_OBJECT_NEW_LINE__@@',\n\t\t\t\tnewLineOrSpace: '@@__STRINGIFY_OBJECT_NEW_LINE_OR_SPACE__@@',\n\t\t\t\tpad: '@@__STRINGIFY_OBJECT_PAD__@@',\n\t\t\t\tindent: '@@__STRINGIFY_OBJECT_INDENT__@@'\n\t\t\t};\n\t\t}\n\n\t\tconst expandWhiteSpace = string => {\n\t\t\tif (opts.inlineCharacterLimit === undefined) {\n\t\t\t\treturn string;\n\t\t\t}\n\n\t\t\tconst oneLined = string\n\t\t\t\t.replace(new RegExp(tokens.newLine, 'g'), '')\n\t\t\t\t.replace(new RegExp(tokens.newLineOrSpace, 'g'), ' ')\n\t\t\t\t.replace(new RegExp(tokens.pad + '|' + tokens.indent, 'g'), '');\n\n\t\t\tif (oneLined.length <= opts.inlineCharacterLimit) {\n\t\t\t\treturn oneLined;\n\t\t\t}\n\n\t\t\treturn string\n\t\t\t\t.replace(new RegExp(tokens.newLine + '|' + tokens.newLineOrSpace, 'g'), '\\n')\n\t\t\t\t.replace(new RegExp(tokens.pad, 'g'), pad)\n\t\t\t\t.replace(new RegExp(tokens.indent, 'g'), pad + opts.indent);\n\t\t};\n\n\t\tif (seen.indexOf(val) !== -1) {\n\t\t\treturn '\"[Circular]\"';\n\t\t}\n\n\t\tif (val === null ||\n\t\t\tval === undefined ||\n\t\t\ttypeof val === 'number' ||\n\t\t\ttypeof val === 'boolean' ||\n\t\t\ttypeof val === 'function' ||\n\t\t\ttypeof val === 'symbol' ||\n\t\t\tisRegexp(val)) {\n\t\t\treturn String(val);\n\t\t}\n\n\t\tif (val instanceof Date) {\n\t\t\treturn `new Date('${val.toISOString()}')`;\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tif (val.length === 0) {\n\t\t\t\treturn '[]';\n\t\t\t}\n\n\t\t\tseen.push(val);\n\n\t\t\tconst ret = '[' + tokens.newLine + val.map((el, i) => {\n\t\t\t\tconst eol = val.length - 1 === i ? tokens.newLine : ',' + tokens.newLineOrSpace;\n\t\t\t\tlet value = stringify(el, opts, pad + opts.indent);\n\t\t\t\tif (opts.transform) {\n\t\t\t\t\tvalue = opts.transform(val, i, value);\n\t\t\t\t}\n\t\t\t\treturn tokens.indent + value + eol;\n\t\t\t}).join('') + tokens.pad + ']';\n\n\t\t\tseen.pop();\n\n\t\t\treturn expandWhiteSpace(ret);\n\t\t}\n\n\t\tif (isObj(val)) {\n\t\t\tlet objKeys = Object.keys(val).concat(getOwnEnumPropSymbols(val));\n\n\t\t\tif (opts.filter) {\n\t\t\t\tobjKeys = objKeys.filter(el => opts.filter(val, el));\n\t\t\t}\n\n\t\t\tif (objKeys.length === 0) {\n\t\t\t\treturn '{}';\n\t\t\t}\n\n\t\t\tseen.push(val);\n\n\t\t\tconst ret = '{' + tokens.newLine + objKeys.map((el, i) => {\n\t\t\t\tconst eol = objKeys.length - 1 === i ? tokens.newLine : ',' + tokens.newLineOrSpace;\n\t\t\t\tconst isSymbol = typeof el === 'symbol';\n\t\t\t\tconst isClassic = !isSymbol && /^[a-z$_][a-z$_0-9]*$/i.test(el);\n\t\t\t\tconst key = isSymbol || isClassic ? el : stringify(el, opts);\n\t\t\t\tlet value = stringify(val[el], opts, pad + opts.indent);\n\t\t\t\tif (opts.transform) {\n\t\t\t\t\tvalue = opts.transform(val, el, value);\n\t\t\t\t}\n\t\t\t\treturn tokens.indent + String(key) + ': ' + value + eol;\n\t\t\t}).join('') + tokens.pad + '}';\n\n\t\t\tseen.pop();\n\n\t\t\treturn expandWhiteSpace(ret);\n\t\t}\n\n\t\tval = String(val).replace(/[\\r\\n]/g, x => x === '\\n' ? '\\\\n' : '\\\\r');\n\n\t\tif (opts.singleQuotes === false) {\n\t\t\tval = val.replace(/\"/g, '\\\\\"');\n\t\t\treturn `\"${val}\"`;\n\t\t}\n\n\t\tval = val.replace(/\\\\?'/g, '\\\\\\'');\n\t\treturn `'${val}'`;\n\t})(val, opts, pad);\n};\n","/**\n * @description\n * HTTP code snippet generator for Javascript & Node.js using Axios.\n *\n * @author\n * @rohit-gohri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport stringifyObject from 'stringify-object';\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nexport const axios = {\n info: {\n key: 'axios',\n title: 'Axios',\n link: 'https://github.com/axios/axios',\n description: 'Promise based HTTP client for the browser and node.js',\n },\n convert: ({ allHeaders, method, url, queryObj, postData }, options) => {\n const opts = {\n indent: ' ',\n ...options,\n };\n const { blank, push, join, addPostProcessor } = new CodeBuilder({ indent: opts.indent });\n push(\"import axios from 'axios';\");\n blank();\n const requestOptions = {\n method,\n url,\n };\n if (Object.keys(queryObj).length) {\n requestOptions.params = queryObj;\n }\n if (Object.keys(allHeaders).length) {\n requestOptions.headers = allHeaders;\n }\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n if (postData.params) {\n push('const encodedParams = new URLSearchParams();');\n postData.params.forEach(param => {\n push(`encodedParams.set('${param.name}', '${param.value}');`);\n });\n blank();\n requestOptions.data = 'encodedParams,';\n addPostProcessor(code => code.replace(/'encodedParams,'/, 'encodedParams,'));\n }\n break;\n case 'application/json':\n if (postData.jsonObj) {\n requestOptions.data = postData.jsonObj;\n }\n break;\n case 'multipart/form-data':\n if (!postData.params) {\n break;\n }\n push('const form = new FormData();');\n postData.params.forEach(param => {\n push(`form.append('${param.name}', '${param.value || param.fileName || ''}');`);\n });\n blank();\n requestOptions.data = '[form]';\n break;\n default:\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n requestOptions.data = postData.text;\n }\n }\n const optionString = stringifyObject(requestOptions, {\n indent: ' ',\n inlineCharacterLimit: 80,\n }).replace('\"[form]\"', 'form');\n push(`const options = ${optionString};`);\n blank();\n push('try {');\n push('const { data } = await axios.request(options);', 1);\n push('console.log(data);', 1);\n push('} catch (error) {');\n push('console.error(error);', 1);\n push('}');\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for fetch\n *\n * @author\n * @pmdroid\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport stringifyObject from 'stringify-object';\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { getHeaderName } from \"../../../helpers/headers.mjs\";\nexport const fetch = {\n info: {\n key: 'fetch',\n title: 'fetch',\n link: 'https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch',\n description: 'Perform asynchronous HTTP requests with the Fetch API',\n },\n convert: ({ method, allHeaders, postData, fullUrl }, inputOpts) => {\n const opts = {\n indent: ' ',\n credentials: null,\n ...inputOpts,\n };\n const { blank, join, push } = new CodeBuilder({ indent: opts.indent });\n const options = {\n method,\n };\n if (Object.keys(allHeaders).length) {\n options.headers = allHeaders;\n }\n if (opts.credentials !== null) {\n options.credentials = opts.credentials;\n }\n push(`const url = '${fullUrl}';`);\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n options.body = postData.paramsObj ? postData.paramsObj : postData.text;\n break;\n case 'application/json':\n options.body = JSON.stringify(postData.jsonObj);\n break;\n case 'multipart/form-data':\n if (!postData.params) {\n break;\n }\n // The FormData API automatically adds a `Content-Type` header for `multipart/form-data` content and if we add our own here data won't be correctly transmitted.\n // eslint-disable-next-line no-case-declarations -- We're only using `contentTypeHeader` within this block.\n const contentTypeHeader = getHeaderName(allHeaders, 'content-type');\n if (contentTypeHeader) {\n delete allHeaders[contentTypeHeader];\n }\n push('const form = new FormData();');\n postData.params.forEach(param => {\n push(`form.append('${param.name}', '${param.value || param.fileName || ''}');`);\n });\n blank();\n break;\n default:\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n options.body = postData.text;\n }\n }\n // If we ultimately don't have any headers to send then we shouldn't add an empty object into the request options.\n if (options.headers && !Object.keys(options.headers).length) {\n delete options.headers;\n }\n push(`const options = ${stringifyObject(options, {\n indent: opts.indent,\n inlineCharacterLimit: 80,\n transform: (_, property, originalResult) => {\n if (property === 'body' &&\n postData &&\n postData.mimeType === 'application/x-www-form-urlencoded') {\n return `new URLSearchParams(${originalResult})`;\n }\n return originalResult;\n },\n })};`);\n blank();\n if ((postData === null || postData === void 0 ? void 0 : postData.params) && postData.mimeType === 'multipart/form-data') {\n push('options.body = form;');\n blank();\n }\n push('try {');\n push(`const response = await fetch(url, options);`, 1);\n push('const data = await response.json();', 1);\n push('console.log(data);', 1);\n push('} catch (error) {');\n push('console.error(error);', 1);\n push('}');\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for native XMLHttpRequest\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport stringifyObject from 'stringify-object';\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { getHeader, getHeaderName, hasHeader } from \"../../../helpers/headers.mjs\";\nexport const jquery = {\n info: {\n key: 'jquery',\n title: 'jQuery',\n link: 'http://api.jquery.com/jquery.ajax/',\n description: 'Perform an asynchronous HTTP (Ajax) requests with jQuery',\n },\n convert: ({ fullUrl, method, allHeaders, postData }, options) => {\n var _a;\n const opts = {\n indent: ' ',\n ...options,\n };\n const { blank, push, join } = new CodeBuilder({ indent: opts.indent });\n const settings = {\n async: true,\n crossDomain: true,\n url: fullUrl,\n method,\n headers: allHeaders,\n };\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n settings.data = postData.paramsObj ? postData.paramsObj : postData.text;\n break;\n case 'application/json':\n settings.processData = false;\n settings.data = postData.text;\n break;\n case 'multipart/form-data':\n if (!postData.params) {\n break;\n }\n push('const form = new FormData();');\n postData.params.forEach(param => {\n push(`form.append('${param.name}', '${param.value || param.fileName || ''}');`);\n });\n settings.processData = false;\n settings.contentType = false;\n settings.mimeType = 'multipart/form-data';\n settings.data = '[form]';\n // remove the contentType header\n if (hasHeader(allHeaders, 'content-type')) {\n if ((_a = getHeader(allHeaders, 'content-type')) === null || _a === void 0 ? void 0 : _a.includes('boundary')) {\n const headerName = getHeaderName(allHeaders, 'content-type');\n if (headerName) {\n delete settings.headers[headerName];\n }\n }\n }\n blank();\n break;\n default:\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n settings.data = postData.text;\n }\n }\n const stringifiedSettings = stringifyObject(settings, { indent: opts.indent }).replace(\"'[form]'\", 'form');\n push(`const settings = ${stringifiedSettings};`);\n blank();\n push('$.ajax(settings).done(function (response) {');\n push('console.log(response);', 1);\n push('});');\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for native XMLHttpRequest\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport stringifyObject from 'stringify-object';\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForSingleQuotes } from \"../../../helpers/escape.mjs\";\nimport { getHeader, getHeaderName, hasHeader } from \"../../../helpers/headers.mjs\";\nexport const xhr = {\n info: {\n key: 'xhr',\n title: 'XMLHttpRequest',\n link: 'https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest',\n description: 'W3C Standard API that provides scripted client functionality',\n },\n convert: ({ postData, allHeaders, method, fullUrl }, options) => {\n var _a;\n const opts = {\n indent: ' ',\n cors: true,\n ...options,\n };\n const { blank, push, join } = new CodeBuilder({ indent: opts.indent });\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/json':\n push(`const data = JSON.stringify(${stringifyObject(postData.jsonObj, {\n indent: opts.indent,\n })});`);\n blank();\n break;\n case 'multipart/form-data':\n if (!postData.params) {\n break;\n }\n push('const data = new FormData();');\n postData.params.forEach(param => {\n push(`data.append('${param.name}', '${param.value || param.fileName || ''}');`);\n });\n // remove the contentType header\n if (hasHeader(allHeaders, 'content-type')) {\n if ((_a = getHeader(allHeaders, 'content-type')) === null || _a === void 0 ? void 0 : _a.includes('boundary')) {\n const headerName = getHeaderName(allHeaders, 'content-type');\n if (headerName) {\n delete allHeaders[headerName];\n }\n }\n }\n blank();\n break;\n default:\n push(`const data = ${(postData === null || postData === void 0 ? void 0 : postData.text) ? `'${postData.text}'` : 'null'};`);\n blank();\n }\n push('const xhr = new XMLHttpRequest();');\n if (opts.cors) {\n push('xhr.withCredentials = true;');\n }\n blank();\n push(\"xhr.addEventListener('readystatechange', function () {\");\n push('if (this.readyState === this.DONE) {', 1);\n push('console.log(this.responseText);', 2);\n push('}', 1);\n push('});');\n blank();\n push(`xhr.open('${method}', '${fullUrl}');`);\n Object.keys(allHeaders).forEach(key => {\n push(`xhr.setRequestHeader('${key}', '${escapeForSingleQuotes(allHeaders[key])}');`);\n });\n blank();\n push('xhr.send(data);');\n return join();\n },\n};\n","import { axios } from \"./axios/client.mjs\";\nimport { fetch } from \"./fetch/client.mjs\";\nimport { jquery } from \"./jquery/client.mjs\";\nimport { xhr } from \"./xhr/client.mjs\";\nexport const javascript = {\n info: {\n key: 'javascript',\n title: 'JavaScript',\n extname: '.js',\n default: 'xhr',\n },\n clientsById: {\n xhr,\n axios,\n fetch,\n jquery,\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for Kotlin using OkHttp.\n *\n * @author\n * @seanghay\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nexport const okhttp = {\n info: {\n key: 'okhttp',\n title: 'OkHttp',\n link: 'http://square.github.io/okhttp/',\n description: 'An HTTP Request Client Library',\n },\n convert: ({ postData, fullUrl, method, allHeaders }, options) => {\n const opts = {\n indent: ' ',\n ...options,\n };\n const { blank, join, push } = new CodeBuilder({ indent: opts.indent });\n const methods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD'];\n const methodsWithBody = ['POST', 'PUT', 'DELETE', 'PATCH'];\n push('val client = OkHttpClient()');\n blank();\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n if (postData.boundary) {\n push(`val mediaType = MediaType.parse(\"${postData.mimeType}; boundary=${postData.boundary}\")`);\n }\n else {\n push(`val mediaType = MediaType.parse(\"${postData.mimeType}\")`);\n }\n push(`val body = RequestBody.create(mediaType, ${JSON.stringify(postData.text)})`);\n }\n push('val request = Request.Builder()');\n push(`.url(\"${fullUrl}\")`, 1);\n if (!methods.includes(method.toUpperCase())) {\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`.method(\"${method.toUpperCase()}\", body)`, 1);\n }\n else {\n push(`.method(\"${method.toUpperCase()}\", null)`, 1);\n }\n }\n else if (methodsWithBody.includes(method.toUpperCase())) {\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`.${method.toLowerCase()}(body)`, 1);\n }\n else {\n push(`.${method.toLowerCase()}(null)`, 1);\n }\n }\n else {\n push(`.${method.toLowerCase()}()`, 1);\n }\n // Add headers, including the cookies\n Object.keys(allHeaders).forEach(key => {\n push(`.addHeader(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\")`, 1);\n });\n push('.build()', 1);\n blank();\n push('val response = client.newCall(request).execute()');\n return join();\n },\n};\n","import { okhttp } from \"./okhttp/client.mjs\";\nexport const kotlin = {\n info: {\n key: 'kotlin',\n title: 'Kotlin',\n extname: '.kt',\n default: 'okhttp',\n },\n clientsById: {\n okhttp,\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for Javascript & Node.js using Axios.\n *\n * @author\n * @rohit-gohri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport stringifyObject from 'stringify-object';\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nexport const axios = {\n info: {\n key: 'axios',\n title: 'Axios',\n link: 'https://github.com/axios/axios',\n description: 'Promise based HTTP client for the browser and node.js',\n },\n convert: ({ method, url, queryObj, allHeaders, postData }, options) => {\n const opts = {\n indent: ' ',\n ...options,\n };\n const { blank, join, push, addPostProcessor } = new CodeBuilder({ indent: opts.indent });\n push(\"const axios = require('axios').default;\");\n const reqOpts = {\n method,\n url,\n };\n if (Object.keys(queryObj).length) {\n reqOpts.params = queryObj;\n }\n if (Object.keys(allHeaders).length) {\n reqOpts.headers = allHeaders;\n }\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n if (postData.params) {\n push(\"const { URLSearchParams } = require('url');\");\n blank();\n push('const encodedParams = new URLSearchParams();');\n postData.params.forEach(param => {\n push(`encodedParams.set('${param.name}', '${param.value}');`);\n });\n blank();\n reqOpts.data = 'encodedParams,';\n addPostProcessor(code => code.replace(/'encodedParams,'/, 'encodedParams,'));\n }\n break;\n case 'application/json':\n blank();\n if (postData.jsonObj) {\n reqOpts.data = postData.jsonObj;\n }\n break;\n default:\n blank();\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n reqOpts.data = postData.text;\n }\n }\n const stringifiedOptions = stringifyObject(reqOpts, { indent: ' ', inlineCharacterLimit: 80 });\n push(`const options = ${stringifiedOptions};`);\n blank();\n push('try {');\n push('const { data } = await axios.request(options);', 1);\n push('console.log(data);', 1);\n push('} catch (error) {');\n push('console.error(error);', 1);\n push('}');\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for Node.js using node-fetch.\n *\n * @author\n * @hirenoble\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport stringifyObject from 'stringify-object';\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { getHeaderName } from \"../../../helpers/headers.mjs\";\nexport const fetch = {\n info: {\n key: 'fetch',\n title: 'Fetch',\n link: 'https://github.com/bitinn/node-fetch',\n description: 'Simplified HTTP node-fetch client',\n },\n convert: ({ method, fullUrl, postData, headersObj, cookies }, options) => {\n var _a;\n const opts = {\n indent: ' ',\n ...options,\n };\n let includeFS = false;\n const { blank, push, join, unshift } = new CodeBuilder({ indent: opts.indent });\n push(\"const fetch = require('node-fetch');\");\n blank();\n const reqOpts = {\n method,\n };\n if (Object.keys(headersObj).length) {\n reqOpts.headers = headersObj;\n }\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n unshift(\"const { URLSearchParams } = require('url');\");\n push('const encodedParams = new URLSearchParams();');\n (_a = postData.params) === null || _a === void 0 ? void 0 : _a.forEach(param => {\n push(`encodedParams.set('${param.name}', '${param.value}');`);\n });\n blank();\n reqOpts.body = 'encodedParams';\n break;\n case 'application/json':\n if (postData.jsonObj) {\n reqOpts.body = JSON.stringify(postData.jsonObj);\n }\n break;\n case 'multipart/form-data':\n if (!postData.params) {\n break;\n }\n // The `form-data` module automatically adds a `Content-Type` header for `multipart/form-data` content and if we add our own here data won't be correctly transmitted.\n // eslint-disable-next-line no-case-declarations -- We're only using `contentTypeHeader` within this block.\n const contentTypeHeader = getHeaderName(headersObj, 'content-type');\n if (contentTypeHeader) {\n delete headersObj[contentTypeHeader];\n }\n unshift(\"const FormData = require('form-data');\");\n push('const formData = new FormData();');\n postData.params.forEach(param => {\n if (!param.fileName && !param.fileName && !param.contentType) {\n push(`formData.append('${param.name}', '${param.value}');`);\n return;\n }\n if (param.fileName) {\n includeFS = true;\n push(`formData.append('${param.name}', fs.createReadStream('${param.fileName}'));`);\n }\n });\n blank();\n break;\n default:\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n reqOpts.body = postData.text;\n }\n }\n // construct cookies argument\n if (cookies.length) {\n const cookiesString = cookies\n .map(cookie => `${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}`)\n .join('; ');\n if (reqOpts.headers) {\n reqOpts.headers.cookie = cookiesString;\n }\n else {\n reqOpts.headers = {};\n reqOpts.headers.cookie = cookiesString;\n }\n }\n push(`const url = '${fullUrl}';`);\n // If we ultimately don't have any headers to send then we shouldn't add an empty object into the request options.\n if (reqOpts.headers && !Object.keys(reqOpts.headers).length) {\n delete reqOpts.headers;\n }\n const stringifiedOptions = stringifyObject(reqOpts, { indent: ' ', inlineCharacterLimit: 80 });\n push(`const options = ${stringifiedOptions};`);\n if (includeFS) {\n unshift(\"const fs = require('fs');\");\n }\n if ((postData === null || postData === void 0 ? void 0 : postData.params) && postData.mimeType === 'multipart/form-data') {\n push('options.body = formData;');\n }\n blank();\n push('try {');\n push(`const response = await fetch(url, options);`, 1);\n push('const data = await response.json();', 1);\n push('console.log(data);', 1);\n push('} catch (error) {');\n push('console.error(error);', 1);\n push('}');\n return join()\n .replace(/'encodedParams'/, 'encodedParams')\n .replace(/\"fs\\.createReadStream\\(\\\\\"(.+)\\\\\"\\)\"/, 'fs.createReadStream(\"$1\")');\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for native Node.js.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport stringifyObject from 'stringify-object';\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nexport const native = {\n info: {\n key: 'native',\n title: 'HTTP',\n link: 'http://nodejs.org/api/http.html#http_http_request_options_callback',\n description: 'Node.js native HTTP interface',\n },\n convert: ({ uriObj, method, allHeaders, postData }, options = {}) => {\n const { indent = ' ', insecureSkipVerify = false } = options;\n const { blank, join, push, unshift } = new CodeBuilder({ indent });\n const reqOpts = {\n method,\n hostname: uriObj.hostname,\n port: uriObj.port === '' ? null : uriObj.port,\n path: uriObj.path,\n headers: allHeaders,\n ...(insecureSkipVerify ? { rejectUnauthorized: false } : {}),\n };\n push(`const http = require('${uriObj.protocol.replace(':', '')}');`);\n blank();\n push(`const options = ${stringifyObject(reqOpts, { indent })};`);\n blank();\n push('const req = http.request(options, function (res) {');\n push('const chunks = [];', 1);\n blank();\n push(\"res.on('data', function (chunk) {\", 1);\n push('chunks.push(chunk);', 2);\n push('});', 1);\n blank();\n push(\"res.on('end', function () {\", 1);\n push('const body = Buffer.concat(chunks);', 2);\n push('console.log(body.toString());', 2);\n push('});', 1);\n push('});');\n blank();\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n if (postData.paramsObj) {\n unshift(\"const qs = require('querystring');\");\n push(`req.write(qs.stringify(${stringifyObject(postData.paramsObj, {\n indent: ' ',\n inlineCharacterLimit: 80,\n })}));`);\n }\n break;\n case 'application/json':\n if (postData.jsonObj) {\n push(`req.write(JSON.stringify(${stringifyObject(postData.jsonObj, {\n indent: ' ',\n inlineCharacterLimit: 80,\n })}));`);\n }\n break;\n default:\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`req.write(${stringifyObject(postData.text, { indent })});`);\n }\n }\n push('req.end();');\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for Node.js using Request.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport stringifyObject from 'stringify-object';\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nexport const request = {\n info: {\n key: 'request',\n title: 'Request',\n link: 'https://github.com/request/request',\n description: 'Simplified HTTP request client',\n },\n convert: ({ method, url, queryObj, postData, headersObj, cookies }, options) => {\n const opts = {\n indent: ' ',\n ...options,\n };\n let includeFS = false;\n const { push, blank, join, unshift } = new CodeBuilder({ indent: opts.indent });\n push(\"const request = require('request');\");\n blank();\n const reqOpts = {\n method,\n url,\n };\n if (Object.keys(queryObj).length) {\n reqOpts.qs = queryObj;\n }\n if (Object.keys(headersObj).length) {\n reqOpts.headers = headersObj;\n }\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n reqOpts.form = postData.paramsObj;\n break;\n case 'application/json':\n if (postData.jsonObj) {\n reqOpts.body = postData.jsonObj;\n reqOpts.json = true;\n }\n break;\n case 'multipart/form-data':\n if (!postData.params) {\n break;\n }\n reqOpts.formData = {};\n postData.params.forEach(param => {\n if (!param.fileName && !param.fileName && !param.contentType) {\n reqOpts.formData[param.name] = param.value;\n return;\n }\n let attachment = {};\n if (param.fileName) {\n includeFS = true;\n attachment = {\n value: `fs.createReadStream(${param.fileName})`,\n options: {\n filename: param.fileName,\n contentType: param.contentType ? param.contentType : null,\n },\n };\n }\n else if (param.value) {\n attachment.value = param.value;\n }\n reqOpts.formData[param.name] = attachment;\n });\n break;\n default:\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n reqOpts.body = postData.text;\n }\n }\n // construct cookies argument\n if (cookies.length) {\n reqOpts.jar = 'JAR';\n push('const jar = request.jar();');\n cookies.forEach(cookie => {\n push(`jar.setCookie(request.cookie('${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}'), '${url}');`);\n });\n blank();\n }\n if (includeFS) {\n unshift(\"const fs = require('fs');\");\n }\n push(`const options = ${stringifyObject(reqOpts, { indent: ' ', inlineCharacterLimit: 80 })};`);\n blank();\n push('request(options, function (error, response, body) {');\n push('if (error) throw new Error(error);', 1);\n blank();\n push('console.log(body);', 1);\n push('});');\n return join()\n .replace(\"'JAR'\", 'jar')\n .replace(/'fs\\.createReadStream\\((.*)\\)'/, \"fs.createReadStream('$1')\");\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for Node.js using Unirest.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport stringifyObject from 'stringify-object';\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nexport const unirest = {\n info: {\n key: 'unirest',\n title: 'Unirest',\n link: 'http://unirest.io/nodejs.html',\n description: 'Lightweight HTTP Request Client Library',\n },\n convert: ({ method, url, cookies, queryObj, postData, headersObj }, options) => {\n const opts = {\n indent: ' ',\n ...options,\n };\n let includeFS = false;\n const { addPostProcessor, blank, join, push, unshift } = new CodeBuilder({\n indent: opts.indent,\n });\n push(\"const unirest = require('unirest');\");\n blank();\n push(`const req = unirest('${method}', '${url}');`);\n blank();\n if (cookies.length) {\n push('const CookieJar = unirest.jar();');\n cookies.forEach(cookie => {\n push(`CookieJar.add('${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}', '${url}');`);\n });\n push('req.jar(CookieJar);');\n blank();\n }\n if (Object.keys(queryObj).length) {\n push(`req.query(${stringifyObject(queryObj, { indent: opts.indent })});`);\n blank();\n }\n if (Object.keys(headersObj).length) {\n push(`req.headers(${stringifyObject(headersObj, { indent: opts.indent })});`);\n blank();\n }\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n if (postData.paramsObj) {\n push(`req.form(${stringifyObject(postData.paramsObj, { indent: opts.indent })});`);\n blank();\n }\n break;\n case 'application/json':\n if (postData.jsonObj) {\n push(\"req.type('json');\");\n push(`req.send(${stringifyObject(postData.jsonObj, { indent: opts.indent })});`);\n blank();\n }\n break;\n case 'multipart/form-data': {\n if (!postData.params) {\n break;\n }\n const multipart = [];\n postData.params.forEach(param => {\n const part = {};\n if (param.fileName && !param.value) {\n includeFS = true;\n part.body = `fs.createReadStream('${param.fileName}')`;\n addPostProcessor(code => code.replace(/'fs\\.createReadStream\\(\\\\'(.+)\\\\'\\)'/, \"fs.createReadStream('$1')\"));\n }\n else if (param.value) {\n part.body = param.value;\n }\n if (part.body) {\n if (param.contentType) {\n part['content-type'] = param.contentType;\n }\n multipart.push(part);\n }\n });\n push(`req.multipart(${stringifyObject(multipart, { indent: opts.indent })});`);\n blank();\n break;\n }\n default:\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`req.send(${stringifyObject(postData.text, { indent: opts.indent })});`);\n blank();\n }\n }\n if (includeFS) {\n unshift(\"const fs = require('fs');\");\n }\n push('req.end(function (res) {');\n push('if (res.error) throw new Error(res.error);', 1);\n blank();\n push('console.log(res.body);', 1);\n push('});');\n return join();\n },\n};\n","import { axios } from \"./axios/client.mjs\";\nimport { fetch } from \"./fetch/client.mjs\";\nimport { native } from \"./native/client.mjs\";\nimport { request } from \"./request/client.mjs\";\nimport { unirest } from \"./unirest/client.mjs\";\nexport const node = {\n info: {\n key: 'node',\n title: 'Node.js',\n extname: '.js',\n default: 'native',\n },\n clientsById: {\n native,\n request,\n unirest,\n axios,\n fetch,\n },\n};\n","/**\n * Create a string corresponding to a valid declaration and initialization of an Objective-C object literal.\n *\n * @param nsClass Class of the litteral\n * @param name Desired name of the instance\n * @param parameters Key-value object of parameters to translate to an Objective-C object litearal\n * @param indent If true, will declare the litteral by indenting each new key/value pair.\n * @return A valid Objective-C declaration and initialization of an Objective-C object litteral.\n *\n * @example\n * nsDeclaration('NSDictionary', 'params', {a: 'b', c: 'd'}, true)\n * // returns:\n * NSDictionary *params = @{ @\"a\": @\"b\",\n * @\"c\": @\"d\" };\n *\n * nsDeclaration('NSDictionary', 'params', {a: 'b', c: 'd'})\n * // returns:\n * NSDictionary *params = @{ @\"a\": @\"b\", @\"c\": @\"d\" };\n */\nexport const nsDeclaration = (nsClass, name, parameters, indent) => {\n const opening = `${nsClass} *${name} = `;\n const literal = literalRepresentation(parameters, indent ? opening.length : undefined);\n return `${opening}${literal};`;\n};\n/**\n * Create a valid Objective-C string of a literal value according to its type.\n *\n * @param value Any JavaScript literal\n */\nexport const literalRepresentation = (value, indentation) => {\n const join = indentation === undefined ? ', ' : `,\\n ${' '.repeat(indentation)}`;\n switch (Object.prototype.toString.call(value)) {\n case '[object Number]':\n return `@${value}`;\n case '[object Array]': {\n const valuesRepresentation = value.map((value) => literalRepresentation(value));\n return `@[ ${valuesRepresentation.join(join)} ]`;\n }\n case '[object Object]': {\n const keyValuePairs = [];\n for (const key in value) {\n keyValuePairs.push(`@\"${key}\": ${literalRepresentation(value[key])}`);\n }\n return `@{ ${keyValuePairs.join(join)} }`;\n }\n case '[object Boolean]':\n return value ? '@YES' : '@NO';\n default:\n if (value === null || value === undefined) {\n return '';\n }\n return `@\"${value.toString().replace(/\"/g, '\\\\\"')}\"`;\n }\n};\n","/**\n * @description\n * HTTP code snippet generator for Objective-C using NSURLSession.\n *\n * @author\n * @thibaultCha\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { nsDeclaration } from \"../helpers.mjs\";\nexport const nsurlsession = {\n info: {\n key: 'nsurlsession',\n title: 'NSURLSession',\n link: 'https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSURLSession_class/index.html',\n description: \"Foundation's NSURLSession request\",\n },\n convert: ({ allHeaders, postData, method, fullUrl }, options) => {\n var _a;\n const opts = {\n indent: ' ',\n pretty: true,\n timeout: 10,\n ...options,\n };\n const { push, join, blank } = new CodeBuilder({ indent: opts.indent });\n // Markers for headers to be created as literal objects and later be set on the NSURLRequest if exist\n const req = {\n hasHeaders: false,\n hasBody: false,\n };\n // We just want to make sure people understand that is the only dependency\n push('#import <Foundation/Foundation.h>');\n if (Object.keys(allHeaders).length) {\n req.hasHeaders = true;\n blank();\n push(nsDeclaration('NSDictionary', 'headers', allHeaders, opts.pretty));\n }\n if (postData && (postData.text || postData.jsonObj || postData.params)) {\n req.hasBody = true;\n switch (postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n if ((_a = postData.params) === null || _a === void 0 ? void 0 : _a.length) {\n // By appending parameters one by one in the resulting snippet,\n // we make it easier for the user to edit it according to his or her needs after pasting.\n // The user can just add/remove lines adding/removing body parameters.\n blank();\n const [head, ...tail] = postData.params;\n push(`NSMutableData *postData = [[NSMutableData alloc] initWithData:[@\"${head.name}=${head.value}\" dataUsingEncoding:NSUTF8StringEncoding]];`);\n tail.forEach(({ name, value }) => {\n push(`[postData appendData:[@\"&${name}=${value}\" dataUsingEncoding:NSUTF8StringEncoding]];`);\n });\n }\n else {\n req.hasBody = false;\n }\n break;\n case 'application/json':\n if (postData.jsonObj) {\n push(nsDeclaration('NSDictionary', 'parameters', postData.jsonObj, opts.pretty));\n blank();\n push('NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];');\n }\n break;\n case 'multipart/form-data':\n // By appending multipart parameters one by one in the resulting snippet,\n // we make it easier for the user to edit it according to his or her needs after pasting.\n // The user can just edit the parameters NSDictionary or put this part of a snippet in a multipart builder method.\n push(nsDeclaration('NSArray', 'parameters', postData.params || [], opts.pretty));\n push(`NSString *boundary = @\"${postData.boundary}\";`);\n blank();\n push('NSError *error;');\n push('NSMutableString *body = [NSMutableString string];');\n push('for (NSDictionary *param in parameters) {');\n push('[body appendFormat:@\"--%@\\\\r\\\\n\", boundary];', 1);\n push('if (param[@\"fileName\"]) {', 1);\n push('[body appendFormat:@\"Content-Disposition:form-data; name=\\\\\"%@\\\\\"; filename=\\\\\"%@\\\\\"\\\\r\\\\n\", param[@\"name\"], param[@\"fileName\"]];', 2);\n push('[body appendFormat:@\"Content-Type: %@\\\\r\\\\n\\\\r\\\\n\", param[@\"contentType\"]];', 2);\n push('[body appendFormat:@\"%@\", [NSString stringWithContentsOfFile:param[@\"fileName\"] encoding:NSUTF8StringEncoding error:&error]];', 2);\n push('if (error) {', 2);\n push('NSLog(@\"%@\", error);', 3);\n push('}', 2);\n push('} else {', 1);\n push('[body appendFormat:@\"Content-Disposition:form-data; name=\\\\\"%@\\\\\"\\\\r\\\\n\\\\r\\\\n\", param[@\"name\"]];', 2);\n push('[body appendFormat:@\"%@\", param[@\"value\"]];', 2);\n push('}', 1);\n push('}');\n push('[body appendFormat:@\"\\\\r\\\\n--%@--\\\\r\\\\n\", boundary];');\n push('NSData *postData = [body dataUsingEncoding:NSUTF8StringEncoding];');\n break;\n default:\n blank();\n push(`NSData *postData = [[NSData alloc] initWithData:[@\"${postData.text}\" dataUsingEncoding:NSUTF8StringEncoding]];`);\n }\n }\n blank();\n push(`NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@\"${fullUrl}\"]`);\n // NSURLRequestUseProtocolCachePolicy is the default policy, let's just always set it to avoid confusion.\n push(' cachePolicy:NSURLRequestUseProtocolCachePolicy');\n push(` timeoutInterval:${opts.timeout.toFixed(1)}];`);\n push(`[request setHTTPMethod:@\"${method}\"];`);\n if (req.hasHeaders) {\n push('[request setAllHTTPHeaderFields:headers];');\n }\n if (req.hasBody) {\n push('[request setHTTPBody:postData];');\n }\n blank();\n // Retrieving the shared session will be less verbose than creating a new one.\n push('NSURLSession *session = [NSURLSession sharedSession];');\n push('NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request');\n push(' completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {');\n push(' if (error) {', 1);\n push(' NSLog(@\"%@\", error);', 2);\n push(' } else {', 1);\n // Casting the NSURLResponse to NSHTTPURLResponse so the user can see the status .\n push(' NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;', 2);\n push(' NSLog(@\"%@\", httpResponse);', 2);\n push(' }', 1);\n push(' }];');\n push('[dataTask resume];');\n return join();\n },\n};\n","import { nsurlsession } from \"./nsurlsession/client.mjs\";\nexport const objc = {\n info: {\n key: 'objc',\n title: 'Objective-C',\n extname: '.m',\n default: 'nsurlsession',\n },\n clientsById: {\n nsurlsession,\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for OCaml using CoHTTP.\n *\n * @author\n * @SGrondin\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nexport const cohttp = {\n info: {\n key: 'cohttp',\n title: 'CoHTTP',\n link: 'https://github.com/mirage/ocaml-cohttp',\n description: 'Cohttp is a very lightweight HTTP server using Lwt or Async for OCaml',\n },\n convert: ({ fullUrl, allHeaders, postData, method }, options) => {\n const opts = {\n indent: ' ',\n ...options,\n };\n const methods = ['get', 'post', 'head', 'delete', 'patch', 'put', 'options'];\n const { push, blank, join } = new CodeBuilder({ indent: opts.indent });\n push('open Cohttp_lwt_unix');\n push('open Cohttp');\n push('open Lwt');\n blank();\n push(`let uri = Uri.of_string \"${fullUrl}\" in`);\n // Add headers, including the cookies\n const headers = Object.keys(allHeaders);\n if (headers.length === 1) {\n push(`let headers = Header.add (Header.init ()) \"${headers[0]}\" \"${escapeForDoubleQuotes(allHeaders[headers[0]])}\" in`);\n }\n else if (headers.length > 1) {\n push('let headers = Header.add_list (Header.init ()) [');\n headers.forEach(key => {\n push(`(\"${key}\", \"${escapeForDoubleQuotes(allHeaders[key])}\");`, 1);\n });\n push('] in');\n }\n // Add body\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n // Just text\n push(`let body = Cohttp_lwt_body.of_string ${JSON.stringify(postData.text)} in`);\n }\n // Do the request\n blank();\n const h = headers.length ? '~headers ' : '';\n const b = (postData === null || postData === void 0 ? void 0 : postData.text) ? '~body ' : '';\n const m = methods.includes(method.toLowerCase())\n ? `\\`${method.toUpperCase()}`\n : `(Code.method_of_string \"${method}\")`;\n push(`Client.call ${h}${b}${m} uri`);\n // Catch result\n push('>>= fun (res, body_stream) ->');\n push('(* Do stuff with the result *)', 1);\n return join();\n },\n};\n","import { cohttp } from \"./cohttp/client.mjs\";\nexport const ocaml = {\n info: {\n key: 'ocaml',\n title: 'OCaml',\n extname: '.ml',\n default: 'cohttp',\n },\n clientsById: {\n cohttp,\n },\n};\n","import { escapeString } from \"../../helpers/escape.mjs\";\nexport const convertType = (obj, indent, lastIndent) => {\n lastIndent = lastIndent || '';\n indent = indent || '';\n switch (Object.prototype.toString.call(obj)) {\n case '[object Null]':\n return 'null';\n case '[object Undefined]':\n return 'null';\n case '[object String]':\n return `'${escapeString(obj, { delimiter: \"'\", escapeNewlines: false })}'`;\n case '[object Number]':\n return obj.toString();\n case '[object Array]': {\n const contents = obj\n .map((item) => convertType(item, `${indent}${indent}`, indent))\n .join(`,\\n${indent}`);\n return `[\\n${indent}${contents}\\n${lastIndent}]`;\n }\n case '[object Object]': {\n const result = [];\n for (const i in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, i)) {\n result.push(`${convertType(i, indent)} => ${convertType(obj[i], `${indent}${indent}`, indent)}`);\n }\n }\n return `[\\n${indent}${result.join(`,\\n${indent}`)}\\n${lastIndent}]`;\n }\n default:\n return 'null';\n }\n};\nexport const supportedMethods = [\n 'ACL',\n 'BASELINE_CONTROL',\n 'CHECKIN',\n 'CHECKOUT',\n 'CONNECT',\n 'COPY',\n 'DELETE',\n 'GET',\n 'HEAD',\n 'LABEL',\n 'LOCK',\n 'MERGE',\n 'MKACTIVITY',\n 'MKCOL',\n 'MKWORKSPACE',\n 'MOVE',\n 'OPTIONS',\n 'POST',\n 'PROPFIND',\n 'PROPPATCH',\n 'PUT',\n 'REPORT',\n 'TRACE',\n 'UNCHECKOUT',\n 'UNLOCK',\n 'UPDATE',\n 'VERSION_CONTROL',\n];\n","/**\n * @description\n * HTTP code snippet generator for PHP using curl-ext.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nimport { convertType } from \"../helpers.mjs\";\nexport const curl = {\n info: {\n key: 'curl',\n title: 'cURL',\n link: 'http://php.net/manual/en/book.curl.php',\n description: 'PHP with ext-curl',\n },\n convert: ({ uriObj, postData, fullUrl, method, httpVersion, cookies, headersObj }, options = {}) => {\n const { closingTag = false, indent = ' ', maxRedirects = 10, namedErrors = false, noTags = false, shortTags = false, timeout = 30, } = options;\n const { push, blank, join } = new CodeBuilder({ indent });\n if (!noTags) {\n push(shortTags ? '<?' : '<?php');\n blank();\n }\n push('$curl = curl_init();');\n blank();\n const curlOptions = [\n {\n escape: true,\n name: 'CURLOPT_PORT',\n value: uriObj.port === '' ? null : uriObj.port,\n },\n {\n escape: true,\n name: 'CURLOPT_URL',\n value: fullUrl,\n },\n {\n escape: false,\n name: 'CURLOPT_RETURNTRANSFER',\n value: 'true',\n },\n {\n escape: true,\n name: 'CURLOPT_ENCODING',\n value: '',\n },\n {\n escape: false,\n name: 'CURLOPT_MAXREDIRS',\n value: maxRedirects,\n },\n {\n escape: false,\n name: 'CURLOPT_TIMEOUT',\n value: timeout,\n },\n {\n escape: false,\n name: 'CURLOPT_HTTP_VERSION',\n value: httpVersion === 'HTTP/1.0' ? 'CURL_HTTP_VERSION_1_0' : 'CURL_HTTP_VERSION_1_1',\n },\n {\n escape: true,\n name: 'CURLOPT_CUSTOMREQUEST',\n value: method,\n },\n {\n escape: !(postData === null || postData === void 0 ? void 0 : postData.jsonObj),\n name: 'CURLOPT_POSTFIELDS',\n value: postData\n ? postData.jsonObj\n ? `json_encode(${convertType(postData.jsonObj, indent.repeat(2), indent)})`\n : postData.text\n : undefined,\n },\n ];\n push('curl_setopt_array($curl, [');\n const curlopts = new CodeBuilder({ indent, join: `\\n${indent}` });\n curlOptions.forEach(({ value, name, escape }) => {\n if (value !== null && value !== undefined) {\n curlopts.push(`${name} => ${escape ? JSON.stringify(value) : value},`);\n }\n });\n // construct cookies\n const curlCookies = cookies.map(cookie => `${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}`);\n if (curlCookies.length) {\n curlopts.push(`CURLOPT_COOKIE => \"${curlCookies.join('; ')}\",`);\n }\n // construct cookies\n const headers = Object.keys(headersObj)\n .sort()\n .map(key => `\"${key}: ${escapeForDoubleQuotes(headersObj[key])}\"`);\n if (headers.length) {\n curlopts.push('CURLOPT_HTTPHEADER => [');\n curlopts.push(headers.join(`,\\n${indent}${indent}`), 1);\n curlopts.push('],');\n }\n push(curlopts.join(), 1);\n push(']);');\n blank();\n push('$response = curl_exec($curl);');\n push('$err = curl_error($curl);');\n blank();\n push('curl_close($curl);');\n blank();\n push('if ($err) {');\n if (namedErrors) {\n push('echo array_flip(get_defined_constants(true)[\"curl\"])[$err];', 1);\n }\n else {\n push('echo \"cURL Error #:\" . $err;', 1);\n }\n push('} else {');\n push('echo $response;', 1);\n push('}');\n if (!noTags && closingTag) {\n blank();\n push('?>');\n }\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for PHP using Guzzle.\n *\n * @author @RobertoArruda\n * @author @erunion\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForSingleQuotes } from \"../../../helpers/escape.mjs\";\nimport { getHeader, getHeaderName, hasHeader } from \"../../../helpers/headers.mjs\";\nimport { convertType } from \"../helpers.mjs\";\nexport const guzzle = {\n info: {\n key: 'guzzle',\n title: 'Guzzle',\n link: 'http://docs.guzzlephp.org/en/stable/',\n description: 'PHP with Guzzle',\n },\n convert: ({ postData, fullUrl, method, cookies, headersObj }, options) => {\n var _a;\n const opts = {\n closingTag: false,\n indent: ' ',\n noTags: false,\n shortTags: false,\n ...options,\n };\n const { push, blank, join } = new CodeBuilder({ indent: opts.indent });\n const { code: requestCode, push: requestPush, join: requestJoin, } = new CodeBuilder({ indent: opts.indent });\n if (!opts.noTags) {\n push(opts.shortTags ? '<?' : '<?php');\n blank();\n }\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n requestPush(`'form_params' => ${convertType(postData.paramsObj, opts.indent + opts.indent, opts.indent)},`, 1);\n break;\n case 'multipart/form-data': {\n const fields = [];\n if (postData.params) {\n postData.params.forEach(function (param) {\n if (param.fileName) {\n const field = {\n name: param.name,\n filename: param.fileName,\n contents: param.value,\n };\n if (param.contentType) {\n field.headers = { 'Content-Type': param.contentType };\n }\n fields.push(field);\n }\n else if (param.value) {\n fields.push({\n name: param.name,\n contents: param.value,\n });\n }\n });\n }\n if (fields.length) {\n requestPush(`'multipart' => ${convertType(fields, opts.indent + opts.indent, opts.indent)}`, 1);\n // Guzzle adds its own boundary for multipart requests.\n if (hasHeader(headersObj, 'content-type')) {\n if ((_a = getHeader(headersObj, 'content-type')) === null || _a === void 0 ? void 0 : _a.indexOf('boundary')) {\n const headerName = getHeaderName(headersObj, 'content-type');\n if (headerName) {\n delete headersObj[headerName];\n }\n }\n }\n }\n break;\n }\n default:\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n requestPush(`'body' => ${convertType(postData.text)},`, 1);\n }\n }\n // construct headers\n const headers = Object.keys(headersObj)\n .sort()\n .map(function (key) {\n return `${opts.indent}${opts.indent}'${key}' => '${escapeForSingleQuotes(headersObj[key])}',`;\n });\n // construct cookies\n const cookieString = cookies\n .map(cookie => `${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}`)\n .join('; ');\n if (cookieString.length) {\n headers.push(`${opts.indent}${opts.indent}'cookie' => '${escapeForSingleQuotes(cookieString)}',`);\n }\n if (headers.length) {\n requestPush(\"'headers' => [\", 1);\n requestPush(headers.join('\\n'));\n requestPush('],', 1);\n }\n push('$client = new \\\\GuzzleHttp\\\\Client();');\n blank();\n if (requestCode.length) {\n push(`$response = $client->request('${method}', '${fullUrl}', [`);\n push(requestJoin());\n push(']);');\n }\n else {\n push(`$response = $client->request('${method}', '${fullUrl}');`);\n }\n blank();\n push('echo $response->getBody();');\n if (!opts.noTags && opts.closingTag) {\n blank();\n push('?>');\n }\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for PHP using curl-ext.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { convertType, supportedMethods } from \"../helpers.mjs\";\nexport const http1 = {\n info: {\n key: 'http1',\n title: 'HTTP v1',\n link: 'http://php.net/manual/en/book.http.php',\n description: 'PHP with pecl/http v1',\n },\n convert: ({ method, url, postData, queryObj, headersObj, cookiesObj }, options = {}) => {\n const { closingTag = false, indent = ' ', noTags = false, shortTags = false } = options;\n const { push, blank, join } = new CodeBuilder({ indent });\n if (!noTags) {\n push(shortTags ? '<?' : '<?php');\n blank();\n }\n if (!supportedMethods.includes(method.toUpperCase())) {\n push(`HttpRequest::methodRegister('${method}');`);\n }\n push('$request = new HttpRequest();');\n push(`$request->setUrl(${convertType(url)});`);\n if (supportedMethods.includes(method.toUpperCase())) {\n push(`$request->setMethod(HTTP_METH_${method.toUpperCase()});`);\n }\n else {\n push(`$request->setMethod(HttpRequest::HTTP_METH_${method.toUpperCase()});`);\n }\n blank();\n if (Object.keys(queryObj).length) {\n push(`$request->setQueryData(${convertType(queryObj, indent)});`);\n blank();\n }\n if (Object.keys(headersObj).length) {\n push(`$request->setHeaders(${convertType(headersObj, indent)});`);\n blank();\n }\n if (Object.keys(cookiesObj).length) {\n push(`$request->setCookies(${convertType(cookiesObj, indent)});`);\n blank();\n }\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n push(`$request->setContentType(${convertType(postData.mimeType)});`);\n push(`$request->setPostFields(${convertType(postData.paramsObj, indent)});`);\n blank();\n break;\n case 'application/json':\n push(`$request->setContentType(${convertType(postData.mimeType)});`);\n push(`$request->setBody(json_encode(${convertType(postData.jsonObj, indent)}));`);\n blank();\n break;\n default:\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`$request->setBody(${convertType(postData.text)});`);\n blank();\n }\n }\n push('try {');\n push('$response = $request->send();', 1);\n blank();\n push('echo $response->getBody();', 1);\n push('} catch (HttpException $ex) {');\n push('echo $ex;', 1);\n push('}');\n if (!noTags && closingTag) {\n blank();\n push('?>');\n }\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for PHP using curl-ext.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { getHeader, getHeaderName, hasHeader } from \"../../../helpers/headers.mjs\";\nimport { convertType } from \"../helpers.mjs\";\nexport const http2 = {\n info: {\n key: 'http2',\n title: 'HTTP v2',\n link: 'http://devel-m6w6.rhcloud.com/mdref/http',\n description: 'PHP with pecl/http v2',\n },\n convert: ({ postData, headersObj, method, queryObj, cookiesObj, url }, options = {}) => {\n var _a;\n const { closingTag = false, indent = ' ', noTags = false, shortTags = false } = options;\n const { push, blank, join } = new CodeBuilder({ indent });\n let hasBody = false;\n if (!noTags) {\n push(shortTags ? '<?' : '<?php');\n blank();\n }\n push('$client = new http\\\\Client;');\n push('$request = new http\\\\Client\\\\Request;');\n blank();\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n push('$body = new http\\\\Message\\\\Body;');\n push(`$body->append(new http\\\\QueryString(${convertType(postData.paramsObj, indent)}));`);\n blank();\n hasBody = true;\n break;\n case 'multipart/form-data': {\n if (!postData.params) {\n break;\n }\n const files = [];\n const fields = {};\n postData.params.forEach(({ name, fileName, value, contentType }) => {\n if (fileName) {\n files.push({\n name,\n type: contentType,\n file: fileName,\n data: value,\n });\n return;\n }\n if (value) {\n fields[name] = value;\n }\n });\n const field = Object.keys(fields).length ? convertType(fields, indent) : 'null';\n const formValue = files.length ? convertType(files, indent) : 'null';\n push('$body = new http\\\\Message\\\\Body;');\n push(`$body->addForm(${field}, ${formValue});`);\n // remove the contentType header\n if (hasHeader(headersObj, 'content-type')) {\n if ((_a = getHeader(headersObj, 'content-type')) === null || _a === void 0 ? void 0 : _a.indexOf('boundary')) {\n const headerName = getHeaderName(headersObj, 'content-type');\n if (headerName) {\n delete headersObj[headerName];\n }\n }\n }\n blank();\n hasBody = true;\n break;\n }\n case 'application/json':\n push('$body = new http\\\\Message\\\\Body;');\n push(`$body->append(json_encode(${convertType(postData.jsonObj, indent)}));`);\n hasBody = true;\n break;\n default:\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push('$body = new http\\\\Message\\\\Body;');\n push(`$body->append(${convertType(postData.text)});`);\n blank();\n hasBody = true;\n }\n }\n push(`$request->setRequestUrl(${convertType(url)});`);\n push(`$request->setRequestMethod(${convertType(method)});`);\n if (hasBody) {\n push('$request->setBody($body);');\n blank();\n }\n if (Object.keys(queryObj).length) {\n push(`$request->setQuery(new http\\\\QueryString(${convertType(queryObj, indent)}));`);\n blank();\n }\n if (Object.keys(headersObj).length) {\n push(`$request->setHeaders(${convertType(headersObj, indent)});`);\n blank();\n }\n if (Object.keys(cookiesObj).length) {\n blank();\n push(`$client->setCookies(${convertType(cookiesObj, indent)});`);\n blank();\n }\n push('$client->enqueue($request)->send();');\n push('$response = $client->getResponse();');\n blank();\n push('echo $response->getBody();');\n if (!noTags && closingTag) {\n blank();\n push('?>');\n }\n return join();\n },\n};\n","import { curl } from \"./curl/client.mjs\";\nimport { guzzle } from \"./guzzle/client.mjs\";\nimport { http1 } from \"./http1/client.mjs\";\nimport { http2 } from \"./http2/client.mjs\";\nexport const php = {\n info: {\n key: 'php',\n title: 'PHP',\n extname: '.php',\n default: 'curl',\n },\n clientsById: {\n curl,\n guzzle,\n http1,\n http2,\n },\n};\n","import { CodeBuilder } from \"../../helpers/code-builder.mjs\";\nimport { escapeString } from \"../../helpers/escape.mjs\";\nimport { getHeader } from \"../../helpers/headers.mjs\";\nexport const generatePowershellConvert = (command) => {\n const convert = ({ method, headersObj, cookies, uriObj, fullUrl, postData, allHeaders, }) => {\n const { push, join } = new CodeBuilder();\n const methods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'];\n if (!methods.includes(method.toUpperCase())) {\n return 'Method not supported';\n }\n const commandOptions = [];\n // Add headers, including the cookies\n const headers = Object.keys(headersObj);\n // construct headers\n if (headers.length) {\n push('$headers=@{}');\n headers.forEach(key => {\n if (key !== 'connection') {\n // Not allowed\n push(`$headers.Add(\"${key}\", \"${escapeString(headersObj[key], { escapeChar: '`' })}\")`);\n }\n });\n commandOptions.push('-Headers $headers');\n }\n // construct cookies\n if (cookies.length) {\n push('$session = New-Object Microsoft.PowerShell.Commands.WebRequestSession');\n cookies.forEach(cookie => {\n push('$cookie = New-Object System.Net.Cookie');\n push(`$cookie.Name = '${cookie.name}'`);\n push(`$cookie.Value = '${cookie.value}'`);\n push(`$cookie.Domain = '${uriObj.host}'`);\n push('$session.Cookies.Add($cookie)');\n });\n commandOptions.push('-WebSession $session');\n }\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n commandOptions.push(`-ContentType '${escapeString(getHeader(allHeaders, 'content-type'), {\n delimiter: \"'\",\n escapeChar: '`',\n })}'`);\n commandOptions.push(`-Body '${postData.text}'`);\n }\n push(`$response = ${command} -Uri '${fullUrl}' -Method ${method} ${commandOptions.join(' ')}`);\n return join();\n };\n return convert;\n};\n","import { generatePowershellConvert } from \"../common.mjs\";\nexport const restmethod = {\n info: {\n key: 'restmethod',\n title: 'Invoke-RestMethod',\n link: 'https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Invoke-RestMethod',\n description: 'Powershell Invoke-RestMethod client',\n },\n convert: generatePowershellConvert('Invoke-RestMethod'),\n};\n","import { generatePowershellConvert } from \"../common.mjs\";\nexport const webrequest = {\n info: {\n key: 'webrequest',\n title: 'Invoke-WebRequest',\n link: 'https://docs.microsoft.com/en-us/powershell/module/Microsoft.PowerShell.Utility/Invoke-WebRequest',\n description: 'Powershell Invoke-WebRequest client',\n },\n convert: generatePowershellConvert('Invoke-WebRequest'),\n};\n","import { restmethod } from \"./restmethod/client.mjs\";\nimport { webrequest } from \"./webrequest/client.mjs\";\nexport const powershell = {\n info: {\n key: 'powershell',\n title: 'Powershell',\n extname: '.ps1',\n default: 'webrequest',\n },\n clientsById: {\n webrequest,\n restmethod,\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for native Python3.\n *\n * @author\n * @montanaflynn\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nexport const python3 = {\n info: {\n key: 'python3',\n title: 'http.client',\n link: 'https://docs.python.org/3/library/http.client.html',\n description: 'Python3 HTTP Client',\n },\n convert: ({ uriObj: { path, protocol, host }, postData, allHeaders, method }, options = {}) => {\n const { insecureSkipVerify = false } = options;\n const { push, blank, join } = new CodeBuilder();\n // Start Request\n push('import http.client');\n if (insecureSkipVerify) {\n push('import ssl');\n }\n blank();\n // Check which protocol to be used for the client connection\n if (protocol === 'https:') {\n const sslContext = insecureSkipVerify ? ', context = ssl._create_unverified_context()' : '';\n push(`conn = http.client.HTTPSConnection(\"${host}\"${sslContext})`);\n blank();\n }\n else {\n push(`conn = http.client.HTTPConnection(\"${host}\")`);\n blank();\n }\n // Create payload string if it exists\n const payload = JSON.stringify(postData === null || postData === void 0 ? void 0 : postData.text);\n if (payload) {\n push(`payload = ${payload}`);\n blank();\n }\n // Create Headers\n const headers = allHeaders;\n const headerCount = Object.keys(headers).length;\n if (headerCount === 1) {\n for (const header in headers) {\n push(`headers = { '${header}': \"${escapeForDoubleQuotes(headers[header])}\" }`);\n blank();\n }\n }\n else if (headerCount > 1) {\n let count = 1;\n push('headers = {');\n for (const header in headers) {\n if (count++ !== headerCount) {\n push(` '${header}': \"${escapeForDoubleQuotes(headers[header])}\",`);\n }\n else {\n push(` '${header}': \"${escapeForDoubleQuotes(headers[header])}\"`);\n }\n }\n push('}');\n blank();\n }\n // Make Request\n if (payload && headerCount) {\n push(`conn.request(\"${method}\", \"${path}\", payload, headers)`);\n }\n else if (payload && !headerCount) {\n push(`conn.request(\"${method}\", \"${path}\", payload)`);\n }\n else if (!payload && headerCount) {\n push(`conn.request(\"${method}\", \"${path}\", headers=headers)`);\n }\n else {\n push(`conn.request(\"${method}\", \"${path}\")`);\n }\n // Get Response\n blank();\n push('res = conn.getresponse()');\n push('data = res.read()');\n blank();\n push('print(data.decode(\"utf-8\"))');\n return join();\n },\n};\n","/**\n * Create a string corresponding to a Dictionary or Array literal representation with pretty option\n * and indentation.\n */\nfunction concatValues(concatType, values, pretty, indentation, indentLevel) {\n const currentIndent = indentation.repeat(indentLevel);\n const closingBraceIndent = indentation.repeat(indentLevel - 1);\n const join = pretty ? `,\\n${currentIndent}` : ', ';\n const openingBrace = concatType === 'object' ? '{' : '[';\n const closingBrace = concatType === 'object' ? '}' : ']';\n if (pretty) {\n return `${openingBrace}\\n${currentIndent}${values.join(join)}\\n${closingBraceIndent}${closingBrace}`;\n }\n if (concatType === 'object' && values.length > 0) {\n return `${openingBrace} ${values.join(join)} ${closingBrace}`;\n }\n return `${openingBrace}${values.join(join)}${closingBrace}`;\n}\n/**\n * Create a valid Python string of a literal value according to its type.\n *\n * @param {*} value Any JavaScript literal\n * @param {Object} opts Target options\n * @return {string}\n */\nexport const literalRepresentation = (value, opts, indentLevel) => {\n indentLevel = indentLevel === undefined ? 1 : indentLevel + 1;\n switch (Object.prototype.toString.call(value)) {\n case '[object Number]':\n return value;\n case '[object Array]': {\n let pretty = false;\n const valuesRepresentation = value.map(v => {\n // Switch to prettify if the value is a dictionary with multiple keys\n if (Object.prototype.toString.call(v) === '[object Object]') {\n pretty = Object.keys(v).length > 1;\n }\n return literalRepresentation(v, opts, indentLevel);\n });\n return concatValues('array', valuesRepresentation, pretty, opts.indent, indentLevel);\n }\n case '[object Object]': {\n const keyValuePairs = [];\n for (const key in value) {\n keyValuePairs.push(`\"${key}\": ${literalRepresentation(value[key], opts, indentLevel)}`);\n }\n return concatValues('object', keyValuePairs, opts.pretty && keyValuePairs.length > 1, opts.indent, indentLevel);\n }\n case '[object Null]':\n return 'None';\n case '[object Boolean]':\n return value ? 'True' : 'False';\n default:\n if (value === null || value === undefined) {\n return '';\n }\n return `\"${value.toString().replace(/\"/g, '\\\\\"')}\"`;\n }\n};\n","/**\n * @description\n * HTTP code snippet generator for Python using Requests\n *\n * @author\n * @montanaflynn\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes } from \"../../../helpers/escape.mjs\";\nimport { getHeaderName } from \"../../../helpers/headers.mjs\";\nimport { literalRepresentation } from \"../helpers.mjs\";\nconst builtInMethods = ['HEAD', 'GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'];\nexport const requests = {\n info: {\n key: 'requests',\n title: 'Requests',\n link: 'http://docs.python-requests.org/en/latest/api/#requests.request',\n description: 'Requests HTTP library',\n },\n convert: ({ queryObj, url, postData, allHeaders, method }, options) => {\n const opts = {\n indent: ' ',\n pretty: true,\n ...options,\n };\n // Start snippet\n const { push, blank, join } = new CodeBuilder({ indent: opts.indent });\n // Import requests\n push('import requests');\n blank();\n // Set URL\n push(`url = \"${url}\"`);\n blank();\n // Construct query string\n let qs;\n if (Object.keys(queryObj).length) {\n qs = `querystring = ${JSON.stringify(queryObj)}`;\n push(qs);\n blank();\n }\n const headers = allHeaders;\n // Construct payload\n let payload = {};\n const files = {};\n let hasFiles = false;\n let hasPayload = false;\n let jsonPayload = false;\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'application/json':\n if (postData.jsonObj) {\n push(`payload = ${literalRepresentation(postData.jsonObj, opts)}`);\n jsonPayload = true;\n hasPayload = true;\n }\n break;\n case 'multipart/form-data':\n if (!postData.params) {\n break;\n }\n payload = {};\n postData.params.forEach(p => {\n if (p.fileName) {\n files[p.name] = `open('${p.fileName}', 'rb')`;\n hasFiles = true;\n }\n else {\n payload[p.name] = p.value;\n hasPayload = true;\n }\n });\n if (hasFiles) {\n push(`files = ${literalRepresentation(files, opts)}`);\n if (hasPayload) {\n push(`payload = ${literalRepresentation(payload, opts)}`);\n }\n // The requests library will only automatically add a `multipart/form-data` header if there are files being sent. If we're **only** sending form data we still need to send the boundary ourselves.\n const headerName = getHeaderName(headers, 'content-type');\n if (headerName) {\n delete headers[headerName];\n }\n }\n else {\n const nonFilePayload = JSON.stringify(postData.text);\n if (nonFilePayload) {\n push(`payload = ${nonFilePayload}`);\n hasPayload = true;\n }\n }\n break;\n default: {\n if (!postData) {\n break;\n }\n if (postData.mimeType === 'application/x-www-form-urlencoded' && postData.paramsObj) {\n push(`payload = ${literalRepresentation(postData.paramsObj, opts)}`);\n hasPayload = true;\n break;\n }\n const payload = JSON.stringify(postData.text);\n if (payload) {\n push(`payload = ${payload}`);\n hasPayload = true;\n }\n }\n }\n // Construct headers\n const headerCount = Object.keys(headers).length;\n if (headerCount === 0 && (hasPayload || hasFiles)) {\n // If we don't have any heads but we do have a payload we should put a blank line here between that payload consturction and our execution of the requests library.\n blank();\n }\n else if (headerCount === 1) {\n for (const header in headers) {\n push(`headers = {\"${header}\": \"${escapeForDoubleQuotes(headers[header])}\"}`);\n blank();\n }\n }\n else if (headerCount > 1) {\n let count = 1;\n push('headers = {');\n for (const header in headers) {\n if (count !== headerCount) {\n push(`\"${header}\": \"${escapeForDoubleQuotes(headers[header])}\",`, 1);\n }\n else {\n push(`\"${header}\": \"${escapeForDoubleQuotes(headers[header])}\"`, 1);\n }\n count += 1;\n }\n push('}');\n blank();\n }\n // Construct request\n let request = builtInMethods.includes(method)\n ? `response = requests.${method.toLowerCase()}(url`\n : `response = requests.request(\"${method}\", url`;\n if (hasPayload) {\n if (jsonPayload) {\n request += ', json=payload';\n }\n else {\n request += ', data=payload';\n }\n }\n if (hasFiles) {\n request += ', files=files';\n }\n if (headerCount > 0) {\n request += ', headers=headers';\n }\n if (qs) {\n request += ', params=querystring';\n }\n request += ')';\n push(request);\n blank();\n // Print response\n push('print(response.json())');\n return join();\n },\n};\n","import { python3 } from \"./python3/client.mjs\";\nimport { requests } from \"./requests/client.mjs\";\nexport const python = {\n info: {\n key: 'python',\n title: 'Python',\n extname: '.py',\n default: 'python3',\n },\n clientsById: {\n python3,\n requests,\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for R using httr\n *\n * @author\n * @gabrielakoreeda\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForDoubleQuotes, escapeForSingleQuotes } from \"../../../helpers/escape.mjs\";\nimport { getHeader } from \"../../../helpers/headers.mjs\";\nexport const httr = {\n info: {\n key: 'httr',\n title: 'httr',\n link: 'https://cran.r-project.org/web/packages/httr/vignettes/quickstart.html',\n description: 'httr: Tools for Working with URLs and HTTP',\n },\n convert: ({ url, queryObj, queryString, postData, allHeaders, method }, options = {}) => {\n var _a, _b;\n // Start snippet\n const { push, blank, join } = new CodeBuilder({\n indent: (_a = options.indent) !== null && _a !== void 0 ? _a : ' ',\n });\n // Import httr\n push('library(httr)');\n blank();\n // Set URL\n push(`url <- \"${url}\"`);\n blank();\n // Construct query string\n const qs = queryObj;\n delete queryObj.key;\n const entries = Object.entries(qs);\n const entriesCount = entries.length;\n if (entriesCount === 1) {\n const entry = entries[0];\n push(`queryString <- list(${entry[0]} = \"${entry[1]}\")`);\n blank();\n }\n else if (entriesCount > 1) {\n push('queryString <- list(');\n entries.forEach(([key, value], i) => {\n const isLastItem = i !== entriesCount - 1;\n const maybeComma = isLastItem ? ',' : '';\n push(`${key} = \"${value}\"${maybeComma}`, 1);\n });\n push(')');\n blank();\n }\n // Construct payload\n const payload = JSON.stringify(postData === null || postData === void 0 ? void 0 : postData.text);\n if (payload) {\n push(`payload <- ${payload}`);\n blank();\n }\n // Define encode\n if (postData && (postData.text || postData.jsonObj || postData.params)) {\n switch (postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n push('encode <- \"form\"');\n blank();\n break;\n case 'application/json':\n push('encode <- \"json\"');\n blank();\n break;\n case 'multipart/form-data':\n push('encode <- \"multipart\"');\n blank();\n break;\n default:\n push('encode <- \"raw\"');\n blank();\n break;\n }\n }\n // Construct headers\n const cookieHeader = getHeader(allHeaders, 'cookie');\n const acceptHeader = getHeader(allHeaders, 'accept');\n const setCookies = cookieHeader\n ? `set_cookies(\\`${String(cookieHeader)\n .replace(/;/g, '\", `')\n .replace(/` /g, '`')\n .replace(/[=]/g, '` = \"')}\")`\n : undefined;\n const setAccept = acceptHeader ? `accept(\"${escapeForDoubleQuotes(acceptHeader)}\")` : undefined;\n const setContentType = `content_type(\"${escapeForDoubleQuotes((_b = postData === null || postData === void 0 ? void 0 : postData.mimeType) !== null && _b !== void 0 ? _b : 'application/octet-stream')}\")`;\n const otherHeaders = Object.entries(allHeaders)\n // These headers are all handled separately:\n .filter(([key]) => !['cookie', 'accept', 'content-type'].includes(key.toLowerCase()))\n .map(([key, value]) => `'${key}' = '${escapeForSingleQuotes(value)}'`)\n .join(', ');\n const setHeaders = otherHeaders ? `add_headers(${otherHeaders})` : undefined;\n // Construct request\n let request = `response <- VERB(\"${method}\", url`;\n if (payload) {\n request += ', body = payload';\n }\n if (queryString.length) {\n request += ', query = queryString';\n }\n const headerAdditions = [setHeaders, setContentType, setAccept, setCookies]\n .filter(x => !!x)\n .join(', ');\n if (headerAdditions) {\n request += `, ${headerAdditions}`;\n }\n if (postData && (postData.text || postData.jsonObj || postData.params)) {\n request += ', encode = encode';\n }\n request += ')';\n push(request);\n blank();\n // Print response\n push('content(response, \"text\")');\n return join();\n },\n};\n","import { httr } from \"./httr/client.mjs\";\nexport const r = {\n info: {\n key: 'r',\n title: 'R',\n extname: '.r',\n default: 'httr',\n },\n clientsById: {\n httr,\n },\n};\n","import { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escapeForSingleQuotes } from \"../../../helpers/escape.mjs\";\nexport const native = {\n info: {\n key: 'native',\n title: 'net::http',\n link: 'http://ruby-doc.org/stdlib-2.2.1/libdoc/net/http/rdoc/Net/HTTP.html',\n description: 'Ruby HTTP client',\n },\n convert: ({ uriObj, method: rawMethod, fullUrl, postData, allHeaders }, options = {}) => {\n const { insecureSkipVerify = false } = options;\n const { push, blank, join } = new CodeBuilder();\n push(\"require 'uri'\");\n push(\"require 'net/http'\");\n blank();\n // To support custom methods we check for the supported methods\n // and if doesn't exist then we build a custom class for it\n const method = rawMethod.toUpperCase();\n const methods = [\n 'GET',\n 'POST',\n 'HEAD',\n 'DELETE',\n 'PATCH',\n 'PUT',\n 'OPTIONS',\n 'COPY',\n 'LOCK',\n 'UNLOCK',\n 'MOVE',\n 'TRACE',\n ];\n const capMethod = method.charAt(0) + method.substring(1).toLowerCase();\n if (!methods.includes(method)) {\n push(`class Net::HTTP::${capMethod} < Net::HTTPRequest`);\n push(` METHOD = '${method.toUpperCase()}'`);\n push(` REQUEST_HAS_BODY = '${(postData === null || postData === void 0 ? void 0 : postData.text) ? 'true' : 'false'}'`);\n push(' RESPONSE_HAS_BODY = true');\n push('end');\n blank();\n }\n push(`url = URI(\"${fullUrl}\")`);\n blank();\n push('http = Net::HTTP.new(url.host, url.port)');\n if (uriObj.protocol === 'https:') {\n push('http.use_ssl = true');\n if (insecureSkipVerify) {\n push('http.verify_mode = OpenSSL::SSL::VERIFY_NONE');\n }\n }\n blank();\n push(`request = Net::HTTP::${capMethod}.new(url)`);\n const headers = Object.keys(allHeaders);\n if (headers.length) {\n headers.forEach(key => {\n push(`request[\"${key}\"] = '${escapeForSingleQuotes(allHeaders[key])}'`);\n });\n }\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`request.body = ${JSON.stringify(postData.text)}`);\n }\n blank();\n push('response = http.request(request)');\n push('puts response.read_body');\n return join();\n },\n};\n","import { native } from \"./native/client.mjs\";\nexport const ruby = {\n info: {\n key: 'ruby',\n title: 'Ruby',\n extname: '.rb',\n default: 'native',\n },\n clientsById: {\n native,\n },\n};\n","/**\n * Use 'strong quoting' using single quotes so that we only need to deal with nested single quote characters.\n * see: http://wiki.bash-hackers.org/syntax/quoting#strong_quoting\n */\nexport const quote = (value = '') => {\n const safe = /^[a-z0-9-_/.@%^=:]+$/i;\n const isShellSafe = safe.test(value);\n if (isShellSafe) {\n return value;\n }\n // if the value is not shell safe, then quote it\n return `'${value.replace(/'/g, \"'\\\\''\")}'`;\n};\nexport const escape = (value) => value.replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n');\n","/**\n * @description\n *\n * HTTP code snippet generator for the Shell using cURL.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { getHeader, getHeaderName, isMimeTypeJSON } from \"../../../helpers/headers.mjs\";\nimport { quote } from \"../../../helpers/shell.mjs\";\n/**\n * This is a const record with keys that correspond to the long names and values that correspond to the short names for cURL arguments.\n */\nconst params = {\n 'http1.0': '0',\n 'url ': '',\n cookie: 'b',\n data: 'd',\n form: 'F',\n globoff: 'g',\n header: 'H',\n insecure: 'k',\n request: 'X',\n};\nconst getArg = (short) => (longName) => {\n if (short) {\n const shortName = params[longName];\n if (!shortName) {\n return '';\n }\n return `-${shortName}`;\n }\n return `--${longName}`;\n};\nexport const curl = {\n info: {\n key: 'curl',\n title: 'cURL',\n link: 'http://curl.haxx.se/',\n description: 'cURL is a command line tool and library for transferring data with URL syntax',\n },\n convert: ({ fullUrl, method, httpVersion, headersObj, allHeaders, postData }, options = {}) => {\n var _a;\n const { binary = false, globOff = false, indent = ' ', insecureSkipVerify = false, prettifyJson = false, short = false, } = options;\n const { push, join } = new CodeBuilder({\n ...(typeof indent === 'string' ? { indent: indent } : {}),\n join: indent !== false ? ` \\\\\\n${indent}` : ' ',\n });\n const arg = getArg(short);\n let formattedUrl = quote(fullUrl);\n push(`curl ${arg('request')} ${method}`);\n if (globOff) {\n formattedUrl = unescape(formattedUrl);\n push(arg('globoff'));\n }\n push(`${arg('url ')}${formattedUrl}`);\n if (insecureSkipVerify) {\n push(arg('insecure'));\n }\n if (httpVersion === 'HTTP/1.0') {\n push(arg('http1.0'));\n }\n if (getHeader(allHeaders, 'accept-encoding')) {\n // note: there is no shorthand for this cURL option\n push('--compressed');\n }\n // if multipart form data, we want to remove the boundary\n if ((postData === null || postData === void 0 ? void 0 : postData.mimeType) === 'multipart/form-data') {\n const contentTypeHeaderName = getHeaderName(headersObj, 'content-type');\n if (contentTypeHeaderName) {\n const contentTypeHeader = headersObj[contentTypeHeaderName];\n if (contentTypeHeaderName && contentTypeHeader) {\n // remove the leading semi colon and boundary\n // up to the next semi colon or the end of string\n // @ts-expect-error it is a reality that the headersObj can have values which are string arrays. This is a genuine bug that this case isn't handled or tested. It is, however tested in `reducer.test.ts`. Go check that out to see more.\n const noBoundary = contentTypeHeader.replace(/; boundary.+?(?=(;|$))/, '');\n // replace the content-type header with no boundary in both headersObj and allHeaders\n headersObj[contentTypeHeaderName] = noBoundary;\n allHeaders[contentTypeHeaderName] = noBoundary;\n }\n }\n }\n // construct headers\n Object.keys(headersObj)\n .sort()\n .forEach(key => {\n const header = `${key}: ${headersObj[key]}`;\n push(`${arg('header')} ${quote(header)}`);\n });\n if (allHeaders.cookie) {\n push(`${arg('cookie')} ${quote(allHeaders.cookie)}`);\n }\n // construct post params\n switch (postData === null || postData === void 0 ? void 0 : postData.mimeType) {\n case 'multipart/form-data':\n (_a = postData.params) === null || _a === void 0 ? void 0 : _a.forEach(param => {\n let post = '';\n if (param.fileName) {\n post = `${param.name}=@${param.fileName}`;\n }\n else {\n post = `${param.name}=${param.value}`;\n }\n push(`${arg('form')} ${quote(post)}`);\n });\n break;\n case 'application/x-www-form-urlencoded':\n if (postData.params) {\n postData.params.forEach(param => {\n const unencoded = param.name;\n const encoded = encodeURIComponent(param.name);\n const needsEncoding = encoded !== unencoded;\n const name = needsEncoding ? encoded : unencoded;\n const flag = binary ? '--data-binary' : `--data${needsEncoding ? '-urlencode' : ''}`;\n push(`${flag} ${quote(`${name}=${param.value}`)}`);\n });\n }\n else {\n push(`${binary ? '--data-binary' : arg('data')} ${quote(postData.text)}`);\n }\n break;\n default: {\n if (!postData) {\n break;\n }\n // raw request body\n if (!postData.text) {\n break;\n }\n const flag = binary ? '--data-binary' : arg('data');\n let builtPayload = false;\n // If we're dealing with a JSON variant, and our payload is JSON let's make it look a little nicer.\n if (isMimeTypeJSON(postData.mimeType)) {\n // If our postData is less than 20 characters, let's keep it all on one line so as to not make the snippet overly lengthy.\n const couldBeJSON = postData.text.length > 2;\n if (couldBeJSON && prettifyJson) {\n try {\n const jsonPayload = JSON.parse(postData.text);\n // If the JSON object has a single quote we should prepare it inside of a HEREDOC because the single quote in something like `string's` can't be escaped when used with `--data`.\n //\n // Basically this boils down to `--data @- <<EOF...EOF` vs `--data '...'`.\n builtPayload = true;\n const payload = JSON.stringify(jsonPayload, undefined, indent);\n if (postData.text.indexOf(\"'\") > 0) {\n push(`${flag} @- <<EOF\\n${payload}\\nEOF`);\n }\n else {\n push(`${flag} '\\n${payload}\\n'`);\n }\n }\n catch (err) {\n // no-op\n }\n }\n }\n if (!builtPayload) {\n push(`${flag} ${quote(postData.text)}`);\n }\n }\n }\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for the Shell using HTTPie.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { quote } from \"../../../helpers/shell.mjs\";\nexport const httpie = {\n info: {\n key: 'httpie',\n title: 'HTTPie',\n link: 'http://httpie.org/',\n description: 'a CLI, cURL-like tool for humans',\n },\n convert: ({ allHeaders, postData, queryObj, fullUrl, method, url }, options) => {\n const opts = {\n body: false,\n cert: false,\n headers: false,\n indent: ' ',\n pretty: false,\n print: false,\n queryParams: false,\n short: false,\n style: false,\n timeout: false,\n verbose: false,\n verify: false,\n ...options,\n };\n const { push, join, unshift } = new CodeBuilder({\n indent: opts.indent,\n // @ts-expect-error SEEMS LEGIT\n join: opts.indent !== false ? ` \\\\\\n${opts.indent}` : ' ',\n });\n let raw = false;\n const flags = [];\n if (opts.headers) {\n flags.push(opts.short ? '-h' : '--headers');\n }\n if (opts.body) {\n flags.push(opts.short ? '-b' : '--body');\n }\n if (opts.verbose) {\n flags.push(opts.short ? '-v' : '--verbose');\n }\n if (opts.print) {\n flags.push(`${opts.short ? '-p' : '--print'}=${opts.print}`);\n }\n if (opts.verify) {\n flags.push(`--verify=${opts.verify}`);\n }\n if (opts.cert) {\n flags.push(`--cert=${opts.cert}`);\n }\n if (opts.pretty) {\n flags.push(`--pretty=${opts.pretty}`);\n }\n if (opts.style) {\n flags.push(`--style=${opts.style}`);\n }\n if (opts.timeout) {\n flags.push(`--timeout=${opts.timeout}`);\n }\n // construct query params\n if (opts.queryParams) {\n Object.keys(queryObj).forEach(name => {\n const value = queryObj[name];\n if (Array.isArray(value)) {\n value.forEach(val => {\n push(`${name}==${quote(val)}`);\n });\n }\n else {\n push(`${name}==${quote(value)}`);\n }\n });\n }\n // construct headers\n Object.keys(allHeaders)\n .sort()\n .forEach(key => {\n push(`${key}:${quote(allHeaders[key])}`);\n });\n if ((postData === null || postData === void 0 ? void 0 : postData.mimeType) === 'application/x-www-form-urlencoded') {\n // construct post params\n if (postData.params && postData.params.length) {\n flags.push(opts.short ? '-f' : '--form');\n postData.params.forEach(param => {\n push(`${param.name}=${quote(param.value)}`);\n });\n }\n }\n else {\n raw = true;\n }\n const cliFlags = flags.length ? `${flags.join(' ')} ` : '';\n url = quote(opts.queryParams ? url : fullUrl);\n unshift(`http ${cliFlags}${method} ${url}`);\n if (raw && (postData === null || postData === void 0 ? void 0 : postData.text)) {\n const postDataText = quote(postData.text);\n unshift(`echo ${postDataText} | `);\n }\n return join();\n },\n};\n","/**\n * @description\n * HTTP code snippet generator for the Shell using Wget.\n *\n * @author\n * @AhmadNassri\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { escape, quote } from \"../../../helpers/shell.mjs\";\nexport const wget = {\n info: {\n key: 'wget',\n title: 'Wget',\n link: 'https://www.gnu.org/software/wget/',\n description: 'a free software package for retrieving files using HTTP, HTTPS',\n },\n convert: ({ method, postData, allHeaders, fullUrl }, options) => {\n const opts = {\n indent: ' ',\n short: false,\n verbose: false,\n ...options,\n };\n const { push, join } = new CodeBuilder({\n indent: opts.indent,\n // @ts-expect-error SEEMS LEGIT\n join: opts.indent !== false ? ` \\\\\\n${opts.indent}` : ' ',\n });\n if (opts.verbose) {\n push(`wget ${opts.short ? '-v' : '--verbose'}`);\n }\n else {\n push(`wget ${opts.short ? '-q' : '--quiet'}`);\n }\n push(`--method ${quote(method)}`);\n Object.keys(allHeaders).forEach(key => {\n const header = `${key}: ${allHeaders[key]}`;\n push(`--header ${quote(header)}`);\n });\n if (postData === null || postData === void 0 ? void 0 : postData.text) {\n push(`--body-data ${escape(quote(postData.text))}`);\n }\n push(opts.short ? '-O' : '--output-document');\n push(`- ${quote(fullUrl)}`);\n return join();\n },\n};\n","import { curl } from \"./curl/client.mjs\";\nimport { httpie } from \"./httpie/client.mjs\";\nimport { wget } from \"./wget/client.mjs\";\nexport const shell = {\n info: {\n key: 'shell',\n title: 'Shell',\n extname: '.sh',\n default: 'curl',\n },\n clientsById: {\n curl,\n httpie,\n wget,\n },\n};\n","/**\n * Create an string of given length filled with blank spaces\n *\n * @param length Length of the array to return\n * @param str String to pad out with\n */\nconst buildString = (length, str) => str.repeat(length);\n/**\n * Create a string corresponding to a Dictionary or Array literal representation with pretty option and indentation.\n */\nconst concatArray = (arr, pretty, indentation, indentLevel) => {\n const currentIndent = buildString(indentLevel, indentation);\n const closingBraceIndent = buildString(indentLevel - 1, indentation);\n const join = pretty ? `,\\n${currentIndent}` : ', ';\n if (pretty) {\n return `[\\n${currentIndent}${arr.join(join)}\\n${closingBraceIndent}]`;\n }\n return `[${arr.join(join)}]`;\n};\n/**\n * Create a string corresponding to a valid declaration and initialization of a Swift array or dictionary literal\n *\n * @param name Desired name of the instance\n * @param parameters Key-value object of parameters to translate to a Swift object litearal\n * @param opts Target options\n * @return {string}\n */\nexport const literalDeclaration = (name, parameters, opts) => `let ${name} = ${literalRepresentation(parameters, opts)}`;\n/**\n * Create a valid Swift string of a literal value according to its type.\n *\n * @param value Any JavaScript literal\n * @param opts Target options\n */\nexport const literalRepresentation = (value, opts, indentLevel) => {\n indentLevel = indentLevel === undefined ? 1 : indentLevel + 1;\n switch (Object.prototype.toString.call(value)) {\n case '[object Number]':\n return value;\n case '[object Array]': {\n // Don't prettify arrays nto not take too much space\n let pretty = false;\n const valuesRepresentation = value.map((v) => {\n // Switch to prettify if the value is a dictionary with multiple keys\n if (Object.prototype.toString.call(v) === '[object Object]') {\n pretty = Object.keys(v).length > 1;\n }\n return literalRepresentation(v, opts, indentLevel);\n });\n // @ts-expect-error needs better types\n return concatArray(valuesRepresentation, pretty, opts.indent, indentLevel);\n }\n case '[object Object]': {\n const keyValuePairs = [];\n for (const key in value) {\n keyValuePairs.push(`\"${key}\": ${literalRepresentation(value[key], opts, indentLevel)}`);\n }\n return concatArray(keyValuePairs, \n // @ts-expect-error needs better types\n opts.pretty && keyValuePairs.length > 1, \n // @ts-expect-error needs better types\n opts.indent, indentLevel);\n }\n case '[object Boolean]':\n return value.toString();\n default:\n if (value === null || value === undefined) {\n return '';\n }\n return `\"${value.toString().replace(/\"/g, '\\\\\"')}\"`;\n }\n};\n","/**\n * @description\n * HTTP code snippet generator for Swift using NSURLSession.\n *\n * @author\n * @thibaultCha\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\nimport { CodeBuilder } from \"../../../helpers/code-builder.mjs\";\nimport { literalDeclaration } from \"../helpers.mjs\";\nexport const nsurlsession = {\n info: {\n key: 'nsurlsession',\n title: 'NSURLSession',\n link: 'https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSURLSession_class/index.html',\n description: \"Foundation's NSURLSession request\",\n },\n convert: ({ allHeaders, postData, fullUrl, method }, options) => {\n var _a;\n const opts = {\n indent: ' ',\n pretty: true,\n timeout: '10',\n ...options,\n };\n const { push, blank, join } = new CodeBuilder({ indent: opts.indent });\n // Markers for headers to be created as litteral objects and later be set on the NSURLRequest if exist\n const req = {\n hasHeaders: false,\n hasBody: false,\n };\n // We just want to make sure people understand that is the only dependency\n push('import Foundation');\n if (Object.keys(allHeaders).length) {\n req.hasHeaders = true;\n blank();\n push(literalDeclaration('headers', allHeaders, opts));\n }\n if (postData && (postData.text || postData.jsonObj || postData.params)) {\n req.hasBody = true;\n switch (postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n // By appending parameters one by one in the resulting snippet,\n // we make it easier for the user to edit it according to his or her needs after pasting.\n // The user can just add/remove lines adding/removing body parameters.\n blank();\n if ((_a = postData.params) === null || _a === void 0 ? void 0 : _a.length) {\n const [head, ...tail] = postData.params;\n push(`let postData = NSMutableData(data: \"${head.name}=${head.value}\".data(using: String.Encoding.utf8)!)`);\n tail.forEach(({ name, value }) => {\n push(`postData.append(\"&${name}=${value}\".data(using: String.Encoding.utf8)!)`);\n });\n }\n else {\n req.hasBody = false;\n }\n break;\n case 'application/json':\n if (postData.jsonObj) {\n push(`${literalDeclaration('parameters', postData.jsonObj, opts)} as [String : Any]`);\n blank();\n push('let postData = JSONSerialization.data(withJSONObject: parameters, options: [])');\n }\n break;\n case 'multipart/form-data':\n /**\n * By appending multipart parameters one by one in the resulting snippet,\n * we make it easier for the user to edit it according to his or her needs after pasting.\n * The user can just edit the parameters NSDictionary or put this part of a snippet in a multipart builder method.\n */\n push(literalDeclaration('parameters', postData.params, opts));\n blank();\n push(`let boundary = \"${postData.boundary}\"`);\n blank();\n push('var body = \"\"');\n push('var error: NSError? = nil');\n push('for param in parameters {');\n push('let paramName = param[\"name\"]!', 1);\n push('body += \"--\\\\(boundary)\\\\r\\\\n\"', 1);\n push('body += \"Content-Disposition:form-data; name=\\\\\"\\\\(paramName)\\\\\"\"', 1);\n push('if let filename = param[\"fileName\"] {', 1);\n push('let contentType = param[\"content-type\"]!', 2);\n push('let fileContent = String(contentsOfFile: filename, encoding: String.Encoding.utf8)', 2);\n push('if (error != nil) {', 2);\n push('print(error as Any)', 3);\n push('}', 2);\n push('body += \"; filename=\\\\\"\\\\(filename)\\\\\"\\\\r\\\\n\"', 2);\n push('body += \"Content-Type: \\\\(contentType)\\\\r\\\\n\\\\r\\\\n\"', 2);\n push('body += fileContent', 2);\n push('} else if let paramValue = param[\"value\"] {', 1);\n push('body += \"\\\\r\\\\n\\\\r\\\\n\\\\(paramValue)\"', 2);\n push('}', 1);\n push('}');\n break;\n default:\n blank();\n push(`let postData = NSData(data: \"${postData.text}\".data(using: String.Encoding.utf8)!)`);\n }\n }\n blank();\n // NSURLRequestUseProtocolCachePolicy is the default policy, let's just always set it to avoid confusion.\n push(`let request = NSMutableURLRequest(url: NSURL(string: \"${fullUrl}\")! as URL,`);\n push(' cachePolicy: .useProtocolCachePolicy,');\n push(\n // @ts-expect-error needs better types\n ` timeoutInterval: ${parseInt(opts.timeout, 10).toFixed(1)})`);\n push(`request.httpMethod = \"${method}\"`);\n if (req.hasHeaders) {\n push('request.allHTTPHeaderFields = headers');\n }\n if (req.hasBody) {\n push('request.httpBody = postData as Data');\n }\n blank();\n // Retrieving the shared session will be less verbose than creating a new one.\n push('let session = URLSession.shared');\n push('let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in');\n push('if (error != nil) {', 1);\n push('print(error as Any)', 2);\n push('} else {', 1); // Casting the NSURLResponse to NSHTTPURLResponse so the user can see the status .\n push('let httpResponse = response as? HTTPURLResponse', 2);\n push('print(httpResponse)', 2);\n push('}', 1);\n push('})');\n blank();\n push('dataTask.resume()');\n return join();\n },\n};\n","import { nsurlsession } from \"./nsurlsession/client.mjs\";\nexport const swift = {\n info: {\n key: 'swift',\n title: 'Swift',\n extname: '.swift',\n default: 'nsurlsession',\n },\n clientsById: {\n nsurlsession,\n },\n};\n","import { availableTargets } from \"../httpsnippet.mjs\";\nimport { c } from \"./c/target.mjs\";\nimport { clojure } from \"./clojure/target.mjs\";\nimport { csharp } from \"./csharp/target.mjs\";\nimport { go } from \"./go/target.mjs\";\nimport { http } from \"./http/target.mjs\";\nimport { java } from \"./java/target.mjs\";\nimport { javascript } from \"./javascript/target.mjs\";\nimport { kotlin } from \"./kotlin/target.mjs\";\nimport { node } from \"./node/target.mjs\";\nimport { objc } from \"./objc/target.mjs\";\nimport { ocaml } from \"./ocaml/target.mjs\";\nimport { php } from \"./php/target.mjs\";\nimport { powershell } from \"./powershell/target.mjs\";\nimport { python } from \"./python/target.mjs\";\nimport { r } from \"./r/target.mjs\";\nimport { ruby } from \"./ruby/target.mjs\";\nimport { shell } from \"./shell/target.mjs\";\nimport { swift } from \"./swift/target.mjs\";\nexport const targets = {\n c,\n clojure,\n csharp,\n go,\n http,\n java,\n javascript,\n kotlin,\n node,\n objc,\n ocaml,\n php,\n powershell,\n python,\n r,\n ruby,\n shell,\n swift,\n};\nexport const isTarget = (target) => {\n if (typeof target !== 'object' || target === null || Array.isArray(target)) {\n const got = target === null ? 'null' : Array.isArray(target) ? 'array' : typeof target;\n throw new Error(`you tried to add a target which is not an object, got type: \"${got}\"`);\n }\n if (!Object.prototype.hasOwnProperty.call(target, 'info')) {\n throw new Error('targets must contain an `info` object');\n }\n if (!Object.prototype.hasOwnProperty.call(target.info, 'key')) {\n throw new Error('targets must have an `info` object with the property `key`');\n }\n if (!target.info.key) {\n throw new Error('target key must be a unique string');\n }\n if (Object.prototype.hasOwnProperty.call(targets, target.info.key)) {\n throw new Error(`a target already exists with this key, \\`${target.info.key}\\``);\n }\n if (!Object.prototype.hasOwnProperty.call(target.info, 'title')) {\n throw new Error('targets must have an `info` object with the property `title`');\n }\n if (!target.info.title) {\n throw new Error('target title must be a non-zero-length string');\n }\n if (!Object.prototype.hasOwnProperty.call(target.info, 'extname')) {\n throw new Error('targets must have an `info` object with the property `extname`');\n }\n if (!Object.prototype.hasOwnProperty.call(target, 'clientsById') ||\n !target.clientsById ||\n Object.keys(target.clientsById).length === 0) {\n throw new Error(`No clients provided in target ${target.info.key}. You must provide the property \\`clientsById\\` containg your clients.`);\n }\n if (!Object.prototype.hasOwnProperty.call(target.info, 'default')) {\n throw new Error('targets must have an `info` object with the property `default`');\n }\n if (!Object.prototype.hasOwnProperty.call(target.clientsById, target.info.default)) {\n throw new Error(`target ${target.info.key} is configured with a default client ${target.info.default}, but no such client was found in the property \\`clientsById\\` (found ${JSON.stringify(Object.keys(target.clientsById))})`);\n }\n Object.values(target.clientsById).forEach(isClient);\n return true;\n};\nexport function isValidTargetId(value) {\n return availableTargets().some(({ key }) => key === value);\n}\nexport const addTarget = (target) => {\n if (!isTarget(target)) {\n return;\n }\n targets[target.info.key] = target;\n};\nexport const isClient = (client) => {\n if (!client) {\n throw new Error('clients must be objects');\n }\n if (!Object.prototype.hasOwnProperty.call(client, 'info')) {\n throw new Error('targets client must contain an `info` object');\n }\n if (!Object.prototype.hasOwnProperty.call(client.info, 'key')) {\n throw new Error('targets client must have an `info` object with property `key`');\n }\n if (!client.info.key) {\n throw new Error('client.info.key must contain an identifier unique to this target');\n }\n if (!Object.prototype.hasOwnProperty.call(client.info, 'title')) {\n throw new Error('targets client must have an `info` object with property `title`');\n }\n if (!Object.prototype.hasOwnProperty.call(client.info, 'description')) {\n throw new Error('targets client must have an `info` object with property `description`');\n }\n if (!Object.prototype.hasOwnProperty.call(client.info, 'link')) {\n throw new Error('targets client must have an `info` object with property `link`');\n }\n if (!Object.prototype.hasOwnProperty.call(client, 'convert') ||\n typeof client.convert !== 'function') {\n throw new Error('targets client must have a `convert` property containing a conversion function');\n }\n return true;\n};\nexport const addTargetClient = (targetId, client) => {\n if (!isClient(client)) {\n return;\n }\n if (!Object.prototype.hasOwnProperty.call(targets, targetId)) {\n throw new Error(`Sorry, but no ${targetId} target exists to add clients to`);\n }\n if (Object.prototype.hasOwnProperty.call(targets[targetId], client.info.key)) {\n throw new Error(`the target ${targetId} already has a client with the key ${client.info.key}, please use a different key`);\n }\n targets[targetId].clientsById[client.info.key] = client;\n};\n","import { Blob, FormData } from 'formdata-node';\nimport { formDataIterator, isBlob } from \"./helpers/form-data.mjs\";\nimport { getHeaderName } from \"./helpers/headers.mjs\";\nimport { reducer } from \"./helpers/reducer.mjs\";\nimport { ExtendedURL, toSearchParams } from \"./helpers/url.mjs\";\nimport { targets } from \"./targets/targets.mjs\";\nexport { CodeBuilder } from \"./helpers/code-builder.mjs\";\nexport { availableTargets, extname } from \"./helpers/utils.mjs\";\nexport { isClient, isTarget } from \"./targets/targets.mjs\";\nexport { addTarget, addTargetClient, isValidTargetId } from \"./targets/targets.mjs\";\nfunction basename(value) {\n const parts = value.split('/');\n return parts[parts.length - 1];\n}\nconst isHarEntry = (value) => typeof value === 'object' &&\n 'log' in value &&\n typeof value.log === 'object' &&\n 'entries' in value.log &&\n Array.isArray(value.log.entries);\nexport class HTTPSnippet {\n constructor(input) {\n let entries = [];\n // is it har?\n if (isHarEntry(input)) {\n entries = input.log.entries;\n }\n else {\n entries = [\n {\n request: input,\n },\n ];\n }\n this.requests = Promise.all(entries.map(({ request }) => {\n var _a;\n // add optional properties to make validation successful\n const req = {\n bodySize: 0,\n headersSize: 0,\n headers: [],\n cookies: [],\n httpVersion: 'HTTP/1.1',\n queryString: [],\n postData: {\n mimeType: ((_a = request.postData) === null || _a === void 0 ? void 0 : _a.mimeType) || 'application/octet-stream',\n },\n ...request,\n };\n return this.prepare(req);\n }));\n }\n async prepare(harRequest) {\n var _a, _b, _c, _d;\n const request = {\n ...harRequest,\n fullUrl: '',\n queryObj: {},\n headersObj: {},\n cookiesObj: {},\n allHeaders: {},\n };\n // construct query objects\n if (request.queryString && request.queryString.length) {\n request.queryObj = request.queryString.reduce(reducer, {});\n }\n // construct headers objects\n if (request.headers && request.headers.length) {\n const http2VersionRegex = /^HTTP\\/2/;\n request.headersObj = request.headers.reduce((accumulator, { name, value }) => {\n const headerName = http2VersionRegex.exec(request.httpVersion)\n ? name.toLocaleLowerCase()\n : name;\n return {\n ...accumulator,\n [headerName]: value,\n };\n }, {});\n }\n // construct headers objects\n if (request.cookies && request.cookies.length) {\n request.cookiesObj = request.cookies.reduceRight((accumulator, { name, value }) => ({\n ...accumulator,\n [name]: value,\n }), {});\n }\n // construct Cookie header\n const cookies = (_a = request.cookies) === null || _a === void 0 ? void 0 : _a.map(({ name, value }) => `${encodeURIComponent(name)}=${encodeURIComponent(value)}`);\n if (cookies === null || cookies === void 0 ? void 0 : cookies.length) {\n request.allHeaders.cookie = cookies.join('; ');\n }\n switch ((_b = request.postData) === null || _b === void 0 ? void 0 : _b.mimeType) {\n case 'multipart/mixed':\n case 'multipart/related':\n case 'multipart/form-data':\n case 'multipart/alternative':\n // reset values\n request.postData.text = '';\n request.postData.mimeType = 'multipart/form-data';\n if ((_c = request.postData) === null || _c === void 0 ? void 0 : _c.params) {\n const form = new FormData();\n // TODO: THIS ABSOLUTELY MUST BE REMOVED.\n // IT BREAKS SOME USE-CASES FOR MULTIPART FORMS THAT DEPEND ON BEING ABLE TO SET THE BOUNDARY.\n // easter egg\n const boundary = '---011000010111000001101001'; // this is binary for \"api\". yep.\n (_d = request.postData) === null || _d === void 0 ? void 0 : _d.params.forEach(param => {\n const name = param.name;\n const value = param.value || '';\n const filename = param.fileName;\n if (isBlob(value)) {\n form.append(name, value, filename);\n }\n else {\n form.append(name, new Blob([value], { type: param.contentType }), filename ? basename(filename) : filename);\n }\n });\n const { postData } = request;\n for await (const data of formDataIterator(form, boundary)) {\n postData.text += data;\n }\n request.postData.boundary = boundary;\n // Since headers are case-sensitive we need to see if there's an existing `Content-Type` header that we can override.\n const contentTypeHeader = getHeaderName(request.headersObj, 'content-type') || 'content-type';\n request.headersObj[contentTypeHeader] = `multipart/form-data; boundary=${boundary}`;\n }\n break;\n case 'application/x-www-form-urlencoded':\n if (!request.postData.params) {\n request.postData.text = '';\n }\n else {\n request.postData.paramsObj = request.postData.params.reduce(reducer, {});\n // always overwrite\n request.postData.text = toSearchParams(request.postData.paramsObj).toString();\n }\n break;\n case 'text/json':\n case 'text/x-json':\n case 'application/json':\n case 'application/x-json':\n request.postData.mimeType = 'application/json';\n if (request.postData.text) {\n try {\n request.postData.jsonObj = JSON.parse(request.postData.text);\n }\n catch (e) {\n // force back to `text/plain` if headers have proper content-type value, then this should also work\n request.postData.mimeType = 'text/plain';\n }\n }\n break;\n }\n // create allHeaders object\n const allHeaders = {\n ...request.allHeaders,\n ...request.headersObj,\n };\n const url = new URL(request.url);\n const query = Object.fromEntries(url.searchParams);\n // query string key/value pairs in with literal querystrings contained within the url\n request.queryObj = {\n ...request.queryObj,\n ...query,\n }; //?\n const search = toSearchParams(request.queryObj);\n const fullUrl = new URL(request.url);\n fullUrl.search = search.toString();\n url.search = '';\n return {\n ...request,\n allHeaders,\n fullUrl: fullUrl.toString(),\n url: url.toString(),\n uriObj: new ExtendedURL(fullUrl.toString()),\n };\n }\n async convert(targetId, clientId, options) {\n if (!options && clientId) {\n options = clientId;\n }\n const target = targets[targetId];\n if (!target) {\n return null;\n }\n const { convert } = target.clientsById[clientId || target.info.default];\n const results = (await this.requests).map(request => convert(request, options));\n return results.length === 1 ? results[0] : results;\n }\n}\n","import { LitElement, html, css, svg } from 'lit';\r\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { resetStyles } from '../../styles/reset.css.js';\r\nimport type { ParsedOperation, ParsedServer, SecurityScheme, AuthState } from '../../core/types.js';\r\nimport { HTTPSnippet, type HarRequest } from 'httpsnippet-lite';\r\nimport { sample as sampleFromSchema } from 'openapi-sampler';\r\n\r\ninterface LanguageOption {\r\n id: string;\r\n label: string;\r\n target: string;\r\n client: string;\r\n}\r\n\r\nconst LANGUAGES: LanguageOption[] = [\r\n { id: 'curl', label: 'cURL', target: 'shell', client: 'curl' },\r\n { id: 'javascript', label: 'JavaScript', target: 'javascript', client: 'fetch' },\r\n { id: 'python', label: 'Python', target: 'python', client: 'requests' },\r\n { id: 'node', label: 'Node.js', target: 'node', client: 'fetch' },\r\n { id: 'go', label: 'Go', target: 'go', client: 'native' },\r\n { id: 'java', label: 'Java', target: 'java', client: 'okhttp' },\r\n { id: 'php', label: 'PHP', target: 'php', client: 'guzzle' },\r\n { id: 'ruby', label: 'Ruby', target: 'ruby', client: 'native' },\r\n { id: 'csharp', label: 'C#', target: 'csharp', client: 'httpclient' },\r\n];\r\n\r\n/* ── Inline SVG icons (14×14, monochrome, currentColor) ───── */\r\nconst LANG_ICONS: Record<string, ReturnType<typeof svg>> = {\r\n // Terminal prompt\r\n curl: svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\r\n <rect x=\"1\" y=\"2\" width=\"14\" height=\"12\" rx=\"2\"/>\r\n <path d=\"M4 7l3 2-3 2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M9 11h3\" stroke-linecap=\"round\"/>\r\n </svg>`,\r\n // JS\r\n javascript: svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <rect width=\"16\" height=\"16\" rx=\"2\" fill=\"currentColor\" opacity=\"0.15\"/>\r\n <text x=\"3\" y=\"13\" font-size=\"11\" font-weight=\"700\" font-family=\"system-ui\" fill=\"currentColor\">JS</text>\r\n </svg>`,\r\n // Python\r\n python: svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\">\r\n <path d=\"M8 1C5 1 5 2.5 5 3.5V5h3v1H4C2.5 6 1 7 1 9.5S2.5 13 4 13h1.5v-2c0-1.5 1-2.5 2.5-2.5h3c1 0 2-1 2-2V3.5C13 2 12 1 8 1z\"/>\r\n <path d=\"M8 15c3 0 3-1.5 3-2.5V11H8v-1h4c1.5 0 3-1 3-3.5S13.5 3 12 3h-1.5v2c0 1.5-1 2.5-2.5 2.5H5c-1 0-2 1-2 2v2.5C3 14 4 15 8 15z\"/>\r\n <circle cx=\"6.25\" cy=\"3.75\" r=\"0.75\" fill=\"currentColor\" stroke=\"none\"/>\r\n <circle cx=\"9.75\" cy=\"12.25\" r=\"0.75\" fill=\"currentColor\" stroke=\"none\"/>\r\n </svg>`,\r\n // Node.js hexagon\r\n node: svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\">\r\n <path d=\"M8 1L14 4.5V11.5L8 15L2 11.5V4.5L8 1Z\"/>\r\n <text x=\"4.5\" y=\"10.5\" font-size=\"6\" font-weight=\"700\" font-family=\"system-ui\" fill=\"currentColor\" stroke=\"none\">N</text>\r\n </svg>`,\r\n // Go\r\n go: svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <rect width=\"16\" height=\"16\" rx=\"2\" fill=\"currentColor\" opacity=\"0.15\"/>\r\n <text x=\"1.5\" y=\"12.5\" font-size=\"10\" font-weight=\"700\" font-family=\"system-ui\" fill=\"currentColor\">Go</text>\r\n </svg>`,\r\n // Java\r\n java: svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\">\r\n <path d=\"M5 2c0 0 3 1 3 4c0 3-3 4-3 4\" stroke-linecap=\"round\"/>\r\n <path d=\"M11 2c0 0-3 1-3 4c0 3 3 4 3 4\" stroke-linecap=\"round\"/>\r\n <path d=\"M3 12c2 2 8 2 10 0\" stroke-linecap=\"round\"/>\r\n <path d=\"M4 14c2 1.5 6 1.5 8 0\" stroke-linecap=\"round\"/>\r\n </svg>`,\r\n // PHP\r\n php: svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <ellipse cx=\"8\" cy=\"8\" rx=\"7.5\" ry=\"5.5\" fill=\"currentColor\" opacity=\"0.15\" stroke=\"none\"/>\r\n <text x=\"1.5\" y=\"10.5\" font-size=\"7\" font-weight=\"700\" font-family=\"system-ui\" fill=\"currentColor\">PHP</text>\r\n </svg>`,\r\n // Ruby gem\r\n ruby: svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\">\r\n <polygon points=\"8,1 14,5 14,11 8,15 2,11 2,5\"/>\r\n <line x1=\"8\" y1=\"1\" x2=\"8\" y2=\"15\"/>\r\n <line x1=\"2\" y1=\"5\" x2=\"14\" y2=\"5\"/>\r\n <line x1=\"2\" y1=\"5\" x2=\"8\" y2=\"15\"/>\r\n <line x1=\"14\" y1=\"5\" x2=\"8\" y2=\"15\"/>\r\n </svg>`,\r\n // C#\r\n csharp: svg`<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <rect width=\"16\" height=\"16\" rx=\"2\" fill=\"currentColor\" opacity=\"0.15\"/>\r\n <text x=\"2\" y=\"12.5\" font-size=\"10\" font-weight=\"700\" font-family=\"system-ui\" fill=\"currentColor\">C#</text>\r\n </svg>`,\r\n};\r\n\r\n/* ── Syntax Highlighting Engine ─────────────────────────────────── */\r\nconst _esc = (s: string): string =>\r\n s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\r\n\r\ntype _Rule = [RegExp, string];\r\n\r\nconst _SQ = /^'(?:[^'\\\\]|\\\\.)*'/;\r\nconst _DQ = /^\"(?:[^\"\\\\]|\\\\.)*\"/;\r\nconst _BQ = /^`(?:[^`\\\\]|\\\\.)*`/;\r\nconst _BCMT = /^\\/\\*[\\s\\S]*?\\*\\//;\r\nconst _LCMT = /^\\/\\/[^\\n]*/;\r\nconst _HCMT = /^#[^\\n]*/;\r\nconst _NUM = /^\\b\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b/;\r\nconst _FN = /^[a-zA-Z_$][\\w$]*(?=\\s*\\()/;\r\nconst _CLS = /^\\b[A-Z][a-zA-Z0-9_]*\\b/;\r\nconst _kw = (s: string): RegExp => new RegExp('^\\\\b(' + s + ')\\\\b');\r\n\r\nconst _R: Record<string, _Rule[]> = {\r\n curl: [\r\n [_HCMT, 'hl-cmt'],\r\n [_SQ, 'hl-str'],\r\n [_DQ, 'hl-str'],\r\n [/^https?:\\/\\/[^\\s'\">) \\\\]+/, 'hl-url'],\r\n [/^--?[a-zA-Z][\\w-]*/, 'hl-flag'],\r\n [_kw('curl|wget|echo|export|set|bash|sh|cat|grep|env|printf'), 'hl-kw'],\r\n [/^\\$\\{?[A-Za-z_]\\w*\\}?/, 'hl-var'],\r\n [_NUM, 'hl-num'],\r\n ],\r\n javascript: [\r\n [_BCMT, 'hl-cmt'],\r\n [_LCMT, 'hl-cmt'],\r\n [_BQ, 'hl-str'],\r\n [_SQ, 'hl-str'],\r\n [_DQ, 'hl-str'],\r\n [_kw('const|let|var|function|return|async|await|if|else|for|while|class|new|import|from|export|default|try|catch|finally|throw|of|in|typeof|instanceof|null|undefined|true|false|this|switch|case|break|continue|delete|void|do|yield|static|super|extends'), 'hl-kw'],\r\n [_kw('console|JSON|Promise|fetch|Response|Request|URL|Headers|Object|Array|String|Number|Boolean|Math|Date|Error|require|module|exports|process|Buffer|globalThis'), 'hl-type'],\r\n [_NUM, 'hl-num'],\r\n [_FN, 'hl-fn'],\r\n ],\r\n python: [\r\n [/^\"\"\"[\\s\\S]*?\"\"\"/, 'hl-str'],\r\n [/^'''[\\s\\S]*?'''/, 'hl-str'],\r\n [_HCMT, 'hl-cmt'],\r\n [/^[fFrRbB]?'(?:[^'\\\\]|\\\\.)*'/, 'hl-str'],\r\n [/^[fFrRbB]?\"(?:[^\"\\\\]|\\\\.)*\"/, 'hl-str'],\r\n [_kw('import|from|def|class|return|if|elif|else|for|while|with|as|try|except|finally|raise|pass|break|continue|and|or|not|in|is|None|True|False|lambda|yield|global|nonlocal|del|assert|async|await'), 'hl-kw'],\r\n [_kw('print|len|range|str|int|float|bool|list|dict|tuple|set|requests|json|os|sys|re|super|type|object|Exception|ValueError|TypeError|AttributeError'), 'hl-type'],\r\n [_NUM, 'hl-num'],\r\n [_FN, 'hl-fn'],\r\n [_CLS, 'hl-cls'],\r\n ],\r\n go: [\r\n [_BCMT, 'hl-cmt'],\r\n [_LCMT, 'hl-cmt'],\r\n [/^`[^`]*`/, 'hl-str'],\r\n [_DQ, 'hl-str'],\r\n [_kw('package|import|func|var|const|type|struct|interface|return|if|else|for|range|go|defer|select|case|default|break|continue|switch|map|chan|make|new|nil|true|false|append|len|cap|delete|copy|close|panic|recover'), 'hl-kw'],\r\n [_kw('string|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|float32|float64|bool|byte|rune|error|any|uintptr'), 'hl-type'],\r\n [_NUM, 'hl-num'],\r\n [_FN, 'hl-fn'],\r\n [_CLS, 'hl-cls'],\r\n ],\r\n java: [\r\n [_BCMT, 'hl-cmt'],\r\n [_LCMT, 'hl-cmt'],\r\n [_DQ, 'hl-str'],\r\n [_kw('public|private|protected|static|final|abstract|class|interface|enum|extends|implements|return|if|else|for|while|do|try|catch|finally|throw|throws|new|this|super|import|package|void|null|true|false|instanceof|switch|case|default|break|continue|synchronized|volatile'), 'hl-kw'],\r\n [_kw('String|Integer|Long|Double|Float|Boolean|Object|List|Map|Set|ArrayList|HashMap|HttpClient|HttpRequest|HttpResponse|Response|Request|URI|URL|System|Math|Arrays|Collections|Optional|Stream|StringBuilder'), 'hl-type'],\r\n [/^@[a-zA-Z]+/, 'hl-att'],\r\n [/^\\b\\d+(?:\\.\\d+)?[LlDdFf]?\\b/, 'hl-num'],\r\n [_FN, 'hl-fn'],\r\n [_CLS, 'hl-cls'],\r\n ],\r\n php: [\r\n [_BCMT, 'hl-cmt'],\r\n [/^(?:\\/\\/|#)[^\\n]*/, 'hl-cmt'],\r\n [_SQ, 'hl-str'],\r\n [_DQ, 'hl-str'],\r\n [_kw('use|namespace|class|interface|trait|extends|implements|public|private|protected|static|final|function|return|if|else|elseif|for|foreach|while|do|switch|case|default|break|continue|try|catch|finally|throw|new|echo|print|null|true|false|NULL|TRUE|FALSE|array|match|fn|yield|readonly|enum'), 'hl-kw'],\r\n [/^\\$[a-zA-Z_][a-zA-Z0-9_]*/, 'hl-var'],\r\n [_NUM, 'hl-num'],\r\n [_FN, 'hl-fn'],\r\n [_CLS, 'hl-cls'],\r\n ],\r\n ruby: [\r\n [_HCMT, 'hl-cmt'],\r\n [_SQ, 'hl-str'],\r\n [_DQ, 'hl-str'],\r\n [_kw('require|require_relative|include|extend|def|class|module|end|if|elsif|else|unless|while|until|for|do|return|yield|begin|rescue|ensure|raise|then|when|case|nil|true|false|self|super|puts|print|p|pp|lambda|proc|attr_accessor|attr_reader|attr_writer'), 'hl-kw'],\r\n [/^:[a-zA-Z_][a-zA-Z0-9_?!]*/, 'hl-sym'],\r\n [/^@{1,2}[a-zA-Z_][a-zA-Z0-9_]*/, 'hl-var'],\r\n [_NUM, 'hl-num'],\r\n [/^[a-zA-Z_][a-zA-Z0-9_?!]*(?=\\s*\\()/, 'hl-fn'],\r\n [_CLS, 'hl-cls'],\r\n ],\r\n csharp: [\r\n [_BCMT, 'hl-cmt'],\r\n [_LCMT, 'hl-cmt'],\r\n [/^@\"[^\"]*\"/, 'hl-str'],\r\n [_DQ, 'hl-str'],\r\n [_kw('using|namespace|class|interface|struct|enum|record|abstract|sealed|override|virtual|partial|public|private|protected|internal|static|readonly|const|new|return|if|else|for|foreach|while|do|switch|case|default|break|continue|try|catch|finally|throw|this|base|null|true|false|var|dynamic|async|await|in|out|ref|params|is|as|typeof|sizeof|nameof'), 'hl-kw'],\r\n [_kw('string|int|long|double|float|decimal|bool|byte|char|object|void|Task|List|Dictionary|HashSet|IEnumerable|HttpClient|HttpResponseMessage|StringContent|Uri|Console|Math|String|Array|Exception'), 'hl-type'],\r\n [/^\\b\\d+(?:\\.\\d+)?(?:[mMlLdDfFuU])?\\b/, 'hl-num'],\r\n [_FN, 'hl-fn'],\r\n [_CLS, 'hl-cls'],\r\n ],\r\n json: [\r\n [/^\"(?:[^\"\\\\]|\\\\.)*\"(?=\\s*:)/, 'hl-key'],\r\n [_DQ, 'hl-str'],\r\n [_kw('true|false|null'), 'hl-kw'],\r\n [/^-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/, 'hl-num'],\r\n ],\r\n};\r\n\r\nconst _LANG_MAP: Record<string, string> = {\r\n node: 'javascript', shell: 'curl', bash: 'curl', sh: 'curl',\r\n js: 'javascript', ts: 'javascript', typescript: 'javascript',\r\n py: 'python', golang: 'go', rb: 'ruby', 'c#': 'csharp',\r\n cs: 'csharp', dotnet: 'csharp',\r\n};\r\n\r\nfunction _highlight(code: string, lang: string): string {\r\n const key = _LANG_MAP[lang] ?? lang;\r\n const rules = _R[key] ?? _R['json'];\r\n let out = '';\r\n let rem = code;\r\n while (rem.length > 0) {\r\n let hit = false;\r\n for (const [re, cls] of rules) {\r\n const m = re.exec(rem);\r\n if (m && m.index === 0) {\r\n out += `<span class=\"${cls}\">${_esc(m[0])}</span>`;\r\n rem = rem.slice(m[0].length);\r\n hit = true;\r\n break;\r\n }\r\n }\r\n if (!hit) { out += _esc(rem[0]); rem = rem.slice(1); }\r\n }\r\n return out;\r\n}\r\n\r\n@customElement('sl-code-samples')\r\nexport class SlCodeSamples extends LitElement {\r\n static override styles = [\r\n resetStyles,\r\n css`\r\n :host {\r\n display: block;\r\n }\r\n\r\n .code-samples {\r\n border: 1px solid #30363d;\r\n border-radius: var(--sl-radius-md);\r\n overflow: hidden;\r\n background: #0d1117;\r\n }\r\n\r\n .tabs {\r\n display: flex;\r\n align-items: stretch;\r\n border-bottom: 1px solid #30363d;\r\n background: #161b22;\r\n position: relative;\r\n }\r\n\r\n /* Hidden measurement proxy — all tabs rendered off-screen at natural width */\r\n .tabs-measure {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n pointer-events: none;\r\n visibility: hidden;\r\n display: flex;\r\n white-space: nowrap;\r\n user-select: none;\r\n }\r\n\r\n .tabs-inner {\r\n display: flex;\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n }\r\n\r\n .tab {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-md);\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 500;\r\n color: #8b949e;\r\n white-space: nowrap;\r\n flex-shrink: 0;\r\n border-bottom: 2px solid transparent;\r\n transition: all var(--sl-transition-fast);\r\n cursor: pointer;\r\n }\r\n\r\n .tab:hover {\r\n color: #e6edf3;\r\n background: rgba(255,255,255,0.04);\r\n }\r\n\r\n .tab.active {\r\n color: #e6edf3;\r\n border-bottom-color: #58a6ff;\r\n }\r\n\r\n .tab-icon {\r\n display: inline-flex;\r\n flex-shrink: 0;\r\n opacity: 0.7;\r\n }\r\n\r\n .tab.active .tab-icon {\r\n opacity: 1;\r\n }\r\n\r\n .tab.spec-sample {\r\n border-left: 1px solid #30363d;\r\n }\r\n\r\n .tabs-more-wrap {\r\n flex-shrink: 0;\r\n position: relative;\r\n border-left: 1px solid #30363d;\r\n display: flex;\r\n align-items: stretch;\r\n }\r\n\r\n .tabs-more-btn {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 4px;\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-md);\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 500;\r\n color: #8b949e;\r\n white-space: nowrap;\r\n cursor: pointer;\r\n background: transparent;\r\n border: none;\r\n border-bottom: 2px solid transparent;\r\n transition: all var(--sl-transition-fast);\r\n }\r\n\r\n .tabs-more-btn:hover,\r\n .tabs-more-btn.open {\r\n color: #e6edf3;\r\n background: rgba(255,255,255,0.04);\r\n }\r\n\r\n .tabs-dropdown {\r\n position: absolute;\r\n top: calc(100% + 4px);\r\n right: 0;\r\n z-index: 100;\r\n background: #1c2128;\r\n border: 1px solid #30363d;\r\n border-radius: var(--sl-radius-md);\r\n padding: 4px;\r\n min-width: 148px;\r\n box-shadow: 0 8px 24px rgba(0,0,0,0.5);\r\n }\r\n\r\n .dropdown-item {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n width: 100%;\r\n padding: 6px 10px;\r\n border-radius: var(--sl-radius-sm);\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 500;\r\n color: #8b949e;\r\n white-space: nowrap;\r\n cursor: pointer;\r\n background: transparent;\r\n border: none;\r\n text-align: left;\r\n box-sizing: border-box;\r\n transition: all var(--sl-transition-fast);\r\n }\r\n\r\n .dropdown-item:hover {\r\n color: #e6edf3;\r\n background: rgba(255,255,255,0.06);\r\n }\r\n\r\n .dropdown-item.active {\r\n color: #e6edf3;\r\n background: rgba(88,166,255,0.12);\r\n }\r\n\r\n .code-wrapper {\r\n position: relative;\r\n }\r\n\r\n .copy-btn {\r\n position: absolute;\r\n top: var(--sl-spacing-sm);\r\n right: var(--sl-spacing-sm);\r\n padding: 4px 10px;\r\n border-radius: var(--sl-radius-sm);\r\n font-size: var(--sl-font-size-xs);\r\n color: #8b949e;\r\n background: #21262d;\r\n border: 1px solid #30363d;\r\n transition: all var(--sl-transition-fast);\r\n z-index: 1;\r\n cursor: pointer;\r\n }\r\n\r\n .copy-btn:hover {\r\n color: #e6edf3;\r\n background: #30363d;\r\n border-color: #8b949e;\r\n }\r\n\r\n .copy-btn.copied {\r\n color: #3fb950;\r\n border-color: #3fb950;\r\n }\r\n\r\n pre {\r\n margin: 0;\r\n padding: var(--sl-spacing-md);\r\n padding-right: 80px;\r\n font-family: var(--sl-font-mono);\r\n font-size: var(--sl-font-size-sm);\r\n color: #e6edf3;\r\n background: #0d1117;\r\n overflow-x: auto;\r\n line-height: 1.65;\r\n max-height: 60vh;\r\n overflow-y: auto;\r\n scrollbar-width: thin;\r\n scrollbar-color: #484f58 #0d1117;\r\n }\r\n\r\n pre::-webkit-scrollbar { width: 6px; height: 6px; }\r\n pre::-webkit-scrollbar-track { background: #0d1117; }\r\n pre::-webkit-scrollbar-thumb { background: #484f58; border-radius: 3px; }\r\n pre::-webkit-scrollbar-thumb:hover { background: #6e7681; }\r\n pre::-webkit-scrollbar-corner { background: #0d1117; }\r\n\r\n code { font-family: inherit; }\r\n\r\n /* ── IDE syntax token colors (VS Code Dark+ palette) ── */\r\n .hl-kw { color: #569cd6; }\r\n .hl-str { color: #ce9178; }\r\n .hl-cmt { color: #6a9955; font-style: italic; }\r\n .hl-num { color: #b5cea8; }\r\n .hl-fn { color: #dcdcaa; }\r\n .hl-var { color: #9cdcfe; }\r\n .hl-type { color: #4ec9b0; }\r\n .hl-flag { color: #c586c0; }\r\n .hl-url { color: #58a6ff; text-decoration: underline; text-underline-offset: 2px; }\r\n .hl-cls { color: #4ec9b0; }\r\n .hl-sym { color: #c586c0; }\r\n .hl-att { color: #c586c0; }\r\n .hl-key { color: #9cdcfe; }\r\n `,\r\n ];\r\n\r\n @property({ type: Object }) operation!: ParsedOperation;\r\n @property({ type: Array }) servers: ParsedServer[] = [];\r\n @property({ type: Object }) authState: AuthState = { apiKeys: {}, bearerTokens: {} };\r\n @property({ type: Array }) securitySchemes: SecurityScheme[] = [];\r\n\r\n @state() private _activeTab = 0;\r\n @state() private _snippets = new Map<string, string>();\r\n @state() private _copied = false;\r\n @state() private _overflowStart = Infinity;\r\n @state() private _moreOpen = false;\r\n\r\n private _allTabs: { id: string; label: string; isSpec: boolean }[] = [];\r\n private _tabNaturalWidths: number[] = [];\r\n private _ro?: ResizeObserver;\r\n private _prevOperation: ParsedOperation | null = null;\r\n private _dropdownPortal: HTMLDivElement | null = null;\r\n private _docClickHandler: EventListener | null = null;\r\n\r\n override disconnectedCallback() {\r\n super.disconnectedCallback();\r\n this._ro?.disconnect();\r\n this._ro = undefined;\r\n this._closeDropdownPortal();\r\n }\r\n\r\n override async willUpdate() {\r\n if (!this.operation) return;\r\n\r\n // Build tab list: generated langs + spec samples\r\n this._allTabs = [\r\n ...LANGUAGES.map(l => ({ id: l.id, label: l.label, isSpec: false })),\r\n ...this.operation.codeSamples.map(s => ({ id: `spec:${s.lang}`, label: s.label, isSpec: true })),\r\n ];\r\n\r\n // Generate snippets if not cached\r\n if (this._snippets.size === 0) {\r\n await this._generateSnippets();\r\n }\r\n }\r\n\r\n override updated(changed: Map<PropertyKey, unknown>) {\r\n // Reset tab measurements when the operation changes\r\n if (changed.has('operation') && this.operation !== this._prevOperation) {\r\n this._prevOperation = this.operation;\r\n this._tabNaturalWidths = [];\r\n this._overflowStart = Infinity;\r\n }\r\n // Measure proxy tab widths — runs after first render and after tab list changes\r\n const needsMeasure =\r\n this._tabNaturalWidths.length === 0 ||\r\n this._tabNaturalWidths.length !== this._allTabs.length;\r\n if (needsMeasure && this._allTabs.length > 0) {\r\n this._tabNaturalWidths = []; // clear stale widths so recompute sees them as fresh\r\n requestAnimationFrame(() => this._measureTabWidths());\r\n }\r\n }\r\n\r\n private _measureTabWidths() {\r\n // Read from the hidden proxy row — children always render at full natural width\r\n const measure = this.shadowRoot?.querySelector<HTMLElement>('.tabs-measure');\r\n if (!measure) return;\r\n const proxyTabs = Array.from(measure.querySelectorAll<HTMLElement>('.tab'));\r\n this._tabNaturalWidths = proxyTabs.map(el => el.getBoundingClientRect().width);\r\n\r\n if (!this._ro) {\r\n // Observe the outer .tabs bar — width is stable regardless of More-button presence\r\n const tabsEl = this.shadowRoot?.querySelector<HTMLElement>('.tabs');\r\n if (tabsEl) {\r\n this._ro = new ResizeObserver(() => this._recomputeOverflow());\r\n this._ro.observe(tabsEl);\r\n }\r\n }\r\n this._recomputeOverflow();\r\n }\r\n\r\n private _recomputeOverflow() {\r\n const tabsEl = this.shadowRoot?.querySelector<HTMLElement>('.tabs');\r\n if (!tabsEl || this._tabNaturalWidths.length === 0) return;\r\n\r\n const containerW = tabsEl.getBoundingClientRect().width;\r\n const totalNatural = this._tabNaturalWidths.reduce((a, b) => a + b, 0);\r\n\r\n // All tabs fit — no overflow needed\r\n if (totalNatural <= containerW) {\r\n if (this._overflowStart !== this._tabNaturalWidths.length) {\r\n this._overflowStart = this._tabNaturalWidths.length;\r\n }\r\n return;\r\n }\r\n\r\n // Overflow detected: reserve space for the More button, find cut-off index\r\n const MORE_BTN_W = 80;\r\n const effectiveW = containerW - MORE_BTN_W;\r\n let total = 0;\r\n let overflowAt = 0;\r\n for (let i = 0; i < this._tabNaturalWidths.length; i++) {\r\n total += this._tabNaturalWidths[i];\r\n if (total > effectiveW) {\r\n overflowAt = i;\r\n break;\r\n }\r\n overflowAt = i + 1;\r\n }\r\n if (overflowAt !== this._overflowStart) {\r\n this._overflowStart = overflowAt;\r\n }\r\n }\r\n\r\n private _toggleMore(e: Event) {\r\n e.stopPropagation();\r\n if (this._dropdownPortal) {\r\n this._closeDropdownPortal();\r\n } else {\r\n this._openDropdownPortal(e.currentTarget as HTMLElement);\r\n }\r\n }\r\n\r\n private _openDropdownPortal(triggerBtn: HTMLElement) {\r\n this._closeDropdownPortal();\r\n\r\n const rect = triggerBtn.getBoundingClientRect();\r\n const portal = document.createElement('div');\r\n\r\n Object.assign(portal.style, {\r\n position: 'fixed',\r\n top: `${rect.bottom + 4}px`,\r\n right: `${Math.round(window.innerWidth - rect.right)}px`,\r\n zIndex: '2147483647',\r\n background: '#1c2128',\r\n border: '1px solid #30363d',\r\n borderRadius: '6px',\r\n padding: '4px',\r\n minWidth: '148px',\r\n boxShadow: '0 8px 24px rgba(0,0,0,0.5)',\r\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\r\n fontSize: '0.75rem',\r\n });\r\n\r\n this._allTabs.slice(this._overflowStart).forEach((tab, ii) => {\r\n const tabIndex = this._overflowStart + ii;\r\n const isActive = tabIndex === this._activeTab;\r\n\r\n const item = document.createElement('button');\r\n item.textContent = tab.label + (tab.isSpec ? ' ✦' : '');\r\n Object.assign(item.style, {\r\n display: 'block',\r\n width: '100%',\r\n padding: '6px 10px',\r\n borderRadius: '4px',\r\n fontSize: '0.75rem',\r\n fontWeight: '500',\r\n color: isActive ? '#e6edf3' : '#8b949e',\r\n whiteSpace: 'nowrap',\r\n cursor: 'pointer',\r\n background: isActive ? 'rgba(88,166,255,0.12)' : 'transparent',\r\n border: 'none',\r\n textAlign: 'left',\r\n boxSizing: 'border-box',\r\n fontFamily: 'inherit',\r\n });\r\n\r\n item.addEventListener('mouseenter', () => {\r\n if (tabIndex !== this._activeTab) {\r\n item.style.color = '#e6edf3';\r\n item.style.background = 'rgba(255,255,255,0.06)';\r\n }\r\n });\r\n item.addEventListener('mouseleave', () => {\r\n if (tabIndex !== this._activeTab) {\r\n item.style.color = '#8b949e';\r\n item.style.background = 'transparent';\r\n }\r\n });\r\n item.addEventListener('click', (ev) => {\r\n ev.stopPropagation();\r\n this._activeTab = tabIndex;\r\n this._copied = false;\r\n this._closeDropdownPortal();\r\n });\r\n\r\n portal.appendChild(item);\r\n });\r\n\r\n document.body.appendChild(portal);\r\n this._dropdownPortal = portal;\r\n this._moreOpen = true;\r\n\r\n // Close on any outside click or scroll, deferred so the current click doesn't immediately close it\r\n const handler = (ev: Event) => {\r\n if (ev.type === 'scroll' || !portal.contains(ev.target as Node)) {\r\n this._closeDropdownPortal();\r\n }\r\n };\r\n setTimeout(() => {\r\n document.addEventListener('click', handler, { capture: true });\r\n document.addEventListener('scroll', handler, { capture: true, once: true });\r\n this._docClickHandler = handler;\r\n }, 0);\r\n }\r\n\r\n private _closeDropdownPortal() {\r\n if (this._dropdownPortal) {\r\n this._dropdownPortal.remove();\r\n this._dropdownPortal = null;\r\n }\r\n if (this._docClickHandler) {\r\n document.removeEventListener('click', this._docClickHandler, { capture: true });\r\n document.removeEventListener('scroll', this._docClickHandler, { capture: true });\r\n this._docClickHandler = null;\r\n }\r\n if (this._moreOpen) {\r\n this._moreOpen = false;\r\n }\r\n }\r\n\r\n private _onRootClick(_e: Event) { /* no-op — kept for template compat */ }\r\n\r\n private async _generateSnippets() {\r\n const har = this._buildHar();\r\n const snippets = new Map<string, string>();\r\n\r\n // Add spec code samples\r\n for (const sample of this.operation.codeSamples) {\r\n snippets.set(`spec:${sample.lang}`, sample.source);\r\n }\r\n\r\n try {\r\n const snippet = new HTTPSnippet(har);\r\n\r\n for (const lang of LANGUAGES) {\r\n try {\r\n const output = await snippet.convert(lang.target as any, lang.client);\r\n if (output && typeof output === 'string') {\r\n snippets.set(lang.id, output);\r\n } else if (Array.isArray(output) && output.length > 0) {\r\n snippets.set(lang.id, output[0]);\r\n }\r\n } catch {\r\n snippets.set(lang.id, `// Failed to generate ${lang.label} snippet`);\r\n }\r\n }\r\n } catch {\r\n for (const lang of LANGUAGES) {\r\n snippets.set(lang.id, `// Failed to generate snippet`);\r\n }\r\n }\r\n\r\n this._snippets = snippets;\r\n }\r\n\r\n private _buildHar(): HarRequest {\r\n const serverObjs = this.operation.servers.length > 0 ? this.operation.servers : this.servers;\r\n const server = serverObjs[0];\r\n let baseUrl = server?.url ?? '';\r\n\r\n // Replace server variables\r\n if (server) {\r\n for (const [key, val] of Object.entries(server.variables)) {\r\n baseUrl = baseUrl.replace(`{${key}}`, val.default);\r\n }\r\n }\r\n\r\n // Build path with example values\r\n let path = this.operation.path;\r\n for (const p of this.operation.parameters.filter(p => p.in === 'path')) {\r\n const value = p.example !== undefined ? String(p.example) : `{${p.name}}`;\r\n path = path.replace(`{${p.name}}`, value);\r\n }\r\n\r\n const url = `${baseUrl}${path}`;\r\n\r\n // Query params\r\n const queryString: Array<{ name: string; value: string }> = this.operation.parameters\r\n .filter(p => p.in === 'query' && p.example !== undefined)\r\n .map(p => ({ name: p.name, value: String(p.example) }));\r\n\r\n // Headers\r\n const headers: Array<{ name: string; value: string }> = [];\r\n\r\n // Auth headers/query params — use first matching security requirement (alternatives are OR-ed)\r\n const secReq = this.operation.security[0];\r\n if (secReq) {\r\n for (const schemeName of Object.keys(secReq)) {\r\n const scheme = this.securitySchemes.find(s => s.key === schemeName);\r\n if (!scheme) continue;\r\n\r\n if (scheme.type === 'apiKey' && scheme.name) {\r\n const val = this.authState.apiKeys[schemeName] || '<YOUR_API_KEY>';\r\n if (scheme.in === 'header') {\r\n headers.push({ name: scheme.name, value: val });\r\n } else if (scheme.in === 'query') {\r\n queryString.push({ name: scheme.name, value: val });\r\n }\r\n } else if (scheme.type === 'http') {\r\n if (scheme.scheme === 'bearer') {\r\n const val = this.authState.bearerTokens[schemeName] || '<YOUR_TOKEN>';\r\n headers.push({ name: 'Authorization', value: `Bearer ${val}` });\r\n } else if (scheme.scheme === 'basic') {\r\n const val = this.authState.apiKeys[schemeName] || 'username:password';\r\n headers.push({ name: 'Authorization', value: `Basic ${btoa(val)}` });\r\n }\r\n } else if (scheme.type === 'oauth2' || scheme.type === 'openIdConnect') {\r\n const val = this.authState.bearerTokens[schemeName] || '<YOUR_ACCESS_TOKEN>';\r\n headers.push({ name: 'Authorization', value: `Bearer ${val}` });\r\n }\r\n }\r\n }\r\n\r\n // Header params\r\n for (const p of this.operation.parameters.filter(p => p.in === 'header')) {\r\n if (p.example !== undefined) {\r\n headers.push({ name: p.name, value: String(p.example) });\r\n }\r\n }\r\n\r\n // Request body\r\n let postData: HarRequest['postData'] = undefined;\r\n if (this.operation.requestBody) {\r\n const content = this.operation.requestBody.content[0];\r\n if (content) {\r\n headers.push({ name: 'Content-Type', value: content.mediaType });\r\n let bodyText = '{}';\r\n if (content.example) {\r\n bodyText = JSON.stringify(content.example);\r\n } else if (content.schema) {\r\n try {\r\n bodyText = JSON.stringify(sampleFromSchema(content.schema as Record<string, unknown>));\r\n } catch { /* ignore */ }\r\n }\r\n postData = {\r\n mimeType: content.mediaType,\r\n text: bodyText,\r\n };\r\n }\r\n }\r\n\r\n return {\r\n method: this.operation.method.toUpperCase(),\r\n url,\r\n httpVersion: 'HTTP/1.1',\r\n cookies: [],\r\n headers,\r\n queryString,\r\n postData,\r\n headersSize: -1,\r\n bodySize: -1,\r\n };\r\n }\r\n\r\n private async _copy() {\r\n const tab = this._allTabs[this._activeTab];\r\n if (!tab) return;\r\n const code = this._snippets.get(tab.id) ?? '';\r\n await navigator.clipboard.writeText(code);\r\n this._copied = true;\r\n setTimeout(() => { this._copied = false; }, 2000);\r\n }\r\n\r\n private _getIcon(tabId: string) {\r\n // For spec samples (id starts with \"spec:\"), use generic code icon\r\n if (tabId.startsWith('spec:')) {\r\n return svg`<svg class=\"tab-icon\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\r\n <path d=\"M5 4L1 8l4 4M11 4l4 4-4 4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>`;\r\n }\r\n const icon = LANG_ICONS[tabId];\r\n return icon ? html`<span class=\"tab-icon\">${icon}</span>` : null;\r\n }\r\n\r\n private _highlightCode(code: string, tabId: string): string {\r\n const lang = tabId.startsWith('spec:')\r\n ? tabId.slice(5).toLowerCase()\r\n : tabId;\r\n return _highlight(code, lang);\r\n }\r\n\r\n override render() {\r\n if (!this.operation || this._allTabs.length === 0) return html``;\r\n\r\n const activeTabInfo = this._allTabs[this._activeTab];\r\n const code = activeTabInfo ? (this._snippets.get(activeTabInfo.id) ?? 'Loading…') : '';\r\n const hasOverflow = this._overflowStart < this._allTabs.length;\r\n\r\n return html`\r\n <div class=\"code-samples\">\r\n <div class=\"tabs\">\r\n <!-- Hidden proxy: all tabs at natural size, used only for measurement -->\r\n <div class=\"tabs-measure\" aria-hidden=\"true\">\r\n ${this._allTabs.map(tab => html`\r\n <button class=\"tab ${tab.isSpec ? 'spec-sample' : ''}\" tabindex=\"-1\">\r\n ${this._getIcon(tab.id)}${tab.label}${tab.isSpec ? ' ✦' : ''}\r\n </button>\r\n `)}\r\n </div>\r\n <!-- Visible tabs: the subset that fits -->\r\n <div class=\"tabs-inner\">\r\n ${this._allTabs.slice(0, this._overflowStart).map((tab, i) => html`\r\n <button\r\n class=\"tab ${i === this._activeTab ? 'active' : ''} ${tab.isSpec ? 'spec-sample' : ''}\"\r\n @click=${() => { this._activeTab = i; this._copied = false; this._closeDropdownPortal(); }}\r\n >${this._getIcon(tab.id)}${tab.label}${tab.isSpec ? ' ✦' : ''}</button>\r\n `)}\r\n </div>\r\n ${hasOverflow ? html`\r\n <div class=\"tabs-more-wrap\">\r\n <button class=\"tabs-more-btn ${this._moreOpen ? 'open' : ''}\" @click=${this._toggleMore}>\r\n More\r\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\r\n <path d=\"${this._moreOpen ? 'M1 7l4-4 4 4' : 'M1 3l4 4 4-4'}\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n ` : null}\r\n </div>\r\n <div class=\"code-wrapper\">\r\n <button class=\"copy-btn ${this._copied ? 'copied' : ''}\" @click=${this._copy}>\r\n ${this._copied ? '✓ Copied' : 'Copy'}\r\n </button>\r\n <pre><code>${unsafeHTML(this._highlightCode(code, activeTabInfo?.id ?? ''))}</code></pre>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css, nothing } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { resetStyles } from '../../styles/reset.css.js';\r\n\r\ninterface SchemaObj {\r\n type?: string;\r\n properties?: Record<string, SchemaObj>;\r\n items?: SchemaObj;\r\n required?: string[];\r\n description?: string;\r\n format?: string;\r\n enum?: unknown[];\r\n const?: unknown;\r\n default?: unknown;\r\n example?: unknown;\r\n minimum?: number;\r\n maximum?: number;\r\n minLength?: number;\r\n maxLength?: number;\r\n pattern?: string;\r\n readOnly?: boolean;\r\n writeOnly?: boolean;\r\n nullable?: boolean;\r\n deprecated?: boolean;\r\n allOf?: SchemaObj[];\r\n oneOf?: SchemaObj[];\r\n anyOf?: SchemaObj[];\r\n discriminator?: { propertyName: string; mapping?: Record<string, string> };\r\n additionalProperties?: boolean | SchemaObj;\r\n title?: string;\r\n $ref?: string;\r\n}\r\n\r\n@customElement('sl-schema')\r\nexport class SlSchema extends LitElement {\r\n static override styles = [\r\n resetStyles,\r\n css`\r\n :host {\r\n display: block;\r\n font-size: var(--sl-font-size-sm);\r\n }\r\n\r\n .schema-tree {\r\n border: 1px solid var(--sl-color-border);\r\n border-radius: var(--sl-radius-md);\r\n overflow: hidden;\r\n }\r\n\r\n .schema-row {\r\n display: grid;\r\n grid-template-columns: minmax(140px, auto) auto 1fr;\r\n gap: var(--sl-spacing-sm);\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-md);\r\n border-bottom: 1px solid var(--sl-color-border);\r\n align-items: start;\r\n }\r\n\r\n .schema-row:last-child {\r\n border-bottom: none;\r\n }\r\n\r\n .schema-row.nested {\r\n padding-left: calc(var(--sl-spacing-md) + var(--sl-indent, 0px));\r\n }\r\n\r\n .prop-name {\r\n font-family: var(--sl-font-mono);\r\n font-weight: 500;\r\n color: var(--sl-color-text);\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-xs);\r\n }\r\n\r\n .toggle-btn {\r\n width: 16px;\r\n height: 16px;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: var(--sl-color-text-muted);\r\n transition: transform var(--sl-transition-fast);\r\n flex-shrink: 0;\r\n }\r\n\r\n .toggle-btn.expanded {\r\n transform: rotate(90deg);\r\n }\r\n\r\n .type-info {\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n flex-wrap: wrap;\r\n }\r\n\r\n .type-badge {\r\n font-family: var(--sl-font-mono);\r\n font-size: var(--sl-font-size-xs);\r\n padding: 1px 6px;\r\n border-radius: var(--sl-radius-sm);\r\n background: var(--sl-color-surface-raised);\r\n color: var(--sl-color-text-muted);\r\n }\r\n\r\n .required-badge {\r\n font-size: 0.6875rem;\r\n color: var(--sl-color-badge-required);\r\n font-weight: 600;\r\n }\r\n\r\n .readonly-badge,\r\n .writeonly-badge,\r\n .deprecated-badge,\r\n .nullable-badge {\r\n font-size: 0.6875rem;\r\n padding: 0 4px;\r\n border-radius: var(--sl-radius-sm);\r\n }\r\n\r\n .readonly-badge { color: var(--sl-color-info); }\r\n .writeonly-badge { color: var(--sl-color-warning); }\r\n .deprecated-badge { color: var(--sl-color-badge-deprecated); }\r\n .nullable-badge { color: var(--sl-color-text-muted); }\r\n\r\n .prop-desc {\r\n color: var(--sl-color-text-secondary);\r\n line-height: 1.5;\r\n }\r\n\r\n .constraints {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n margin-top: 2px;\r\n }\r\n\r\n .enum-values {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 4px;\r\n margin-top: 4px;\r\n }\r\n\r\n .enum-pill {\r\n font-family: var(--sl-font-mono);\r\n font-size: 0.6875rem;\r\n padding: 0 6px;\r\n border-radius: var(--sl-radius-sm);\r\n background: var(--sl-color-surface-raised);\r\n color: var(--sl-color-text-secondary);\r\n }\r\n\r\n .composition-label {\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n padding: var(--sl-spacing-xs) var(--sl-spacing-md);\r\n color: var(--sl-color-text-muted);\r\n text-transform: uppercase;\r\n letter-spacing: 0.04em;\r\n background: var(--sl-color-bg-subtle);\r\n border-bottom: 1px solid var(--sl-color-border);\r\n }\r\n\r\n .additional-props {\r\n padding: var(--sl-spacing-xs) var(--sl-spacing-md);\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n font-style: italic;\r\n border-bottom: 1px solid var(--sl-color-border);\r\n }\r\n `,\r\n ];\r\n\r\n @property({ type: Object }) schema: SchemaObj | null = null;\r\n @property({ type: Number }) depth = 0;\r\n\r\n @state() private _expanded = new Set<string>();\r\n private _seen = new WeakSet<object>();\r\n\r\n private _toggleProp(key: string) {\r\n const next = new Set(this._expanded);\r\n if (next.has(key)) {\r\n next.delete(key);\r\n } else {\r\n next.add(key);\r\n }\r\n this._expanded = next;\r\n }\r\n\r\n private _renderType(s: SchemaObj): string {\r\n if (s.type === 'array' && s.items) {\r\n return `${s.items.type ?? 'any'}[]`;\r\n }\r\n return s.type ?? (s.oneOf ? 'oneOf' : s.anyOf ? 'anyOf' : s.allOf ? 'allOf' : 'any');\r\n }\r\n\r\n private _isExpandable(s: SchemaObj): boolean {\r\n if (s.type === 'object' && s.properties) return true;\r\n if (s.type === 'array' && s.items?.type === 'object') return true;\r\n if (s.allOf || s.oneOf || s.anyOf) return true;\r\n return false;\r\n }\r\n\r\n private _renderProperty(name: string, schema: SchemaObj, isRequired: boolean, indentLevel: number): unknown {\r\n const key = `${indentLevel}:${name}`;\r\n const expanded = this._expanded.has(key);\r\n const expandable = this._isExpandable(schema);\r\n const indent = indentLevel * 20;\r\n const constraints: string[] = [];\r\n\r\n if (schema.minimum !== undefined) constraints.push(`min: ${schema.minimum}`);\r\n if (schema.maximum !== undefined) constraints.push(`max: ${schema.maximum}`);\r\n if (schema.minLength !== undefined) constraints.push(`minLen: ${schema.minLength}`);\r\n if (schema.maxLength !== undefined) constraints.push(`maxLen: ${schema.maxLength}`);\r\n if (schema.pattern) constraints.push(`pattern: ${schema.pattern}`);\r\n if (schema.format) constraints.push(schema.format);\r\n\r\n // Detect circular reference\r\n if (typeof schema === 'object' && schema !== null) {\r\n if (this._seen.has(schema)) {\r\n return html`\r\n <div class=\"schema-row nested\" style=\"--sl-indent: ${indent}px\">\r\n <div class=\"prop-name\">${name}</div>\r\n <div class=\"type-info\"><span class=\"type-badge\">[circular]</span></div>\r\n <div class=\"prop-desc\" style=\"font-style: italic; color: var(--sl-color-text-muted);\">Circular reference</div>\r\n </div>\r\n `;\r\n }\r\n this._seen.add(schema);\r\n }\r\n\r\n return html`\r\n <div class=\"schema-row nested\" style=\"--sl-indent: ${indent}px\">\r\n <div class=\"prop-name\">\r\n ${expandable ? html`\r\n <button class=\"toggle-btn ${expanded ? 'expanded' : ''}\" @click=${() => this._toggleProp(key)}>\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"currentColor\">\r\n <path d=\"M4 2l4 4-4 4\"/>\r\n </svg>\r\n </button>\r\n ` : html`<span style=\"width:16px\"></span>`}\r\n ${name}\r\n </div>\r\n <div class=\"type-info\">\r\n <span class=\"type-badge\">${this._renderType(schema)}</span>\r\n ${isRequired ? html`<span class=\"required-badge\">required</span>` : nothing}\r\n ${schema.readOnly ? html`<span class=\"readonly-badge\">read-only</span>` : nothing}\r\n ${schema.writeOnly ? html`<span class=\"writeonly-badge\">write-only</span>` : nothing}\r\n ${schema.deprecated ? html`<span class=\"deprecated-badge\">deprecated</span>` : nothing}\r\n ${schema.nullable ? html`<span class=\"nullable-badge\">nullable</span>` : nothing}\r\n </div>\r\n <div>\r\n ${schema.description ? html`<div class=\"prop-desc\">${schema.description}</div>` : nothing}\r\n ${constraints.length > 0 ? html`<div class=\"constraints\">${constraints.join(' · ')}</div>` : nothing}\r\n ${schema.enum ? html`\r\n <div class=\"enum-values\">\r\n ${schema.enum.map(v => html`<span class=\"enum-pill\">${JSON.stringify(v)}</span>`)}\r\n </div>\r\n ` : nothing}\r\n </div>\r\n </div>\r\n\r\n ${expanded ? this._renderNestedSchema(schema, indentLevel + 1) : nothing}\r\n `;\r\n }\r\n\r\n private _renderNestedSchema(schema: SchemaObj, indentLevel: number): unknown {\r\n // Handle object properties\r\n if (schema.type === 'object' && schema.properties) {\r\n const required = new Set(schema.required ?? []);\r\n return html`\r\n ${Object.entries(schema.properties).map(([name, prop]) =>\r\n this._renderProperty(name, prop, required.has(name), indentLevel)\r\n )}\r\n ${schema.additionalProperties && typeof schema.additionalProperties === 'object' ? html`\r\n <div class=\"additional-props\" style=\"padding-left: calc(var(--sl-spacing-md) + ${indentLevel * 20}px)\">\r\n Additional properties allowed\r\n </div>\r\n ` : nothing}\r\n `;\r\n }\r\n\r\n // Handle array items\r\n if (schema.type === 'array' && schema.items?.type === 'object') {\r\n const items = schema.items;\r\n const required = new Set(items.required ?? []);\r\n return html`\r\n ${items.properties ? Object.entries(items.properties).map(([name, prop]) =>\r\n this._renderProperty(name, prop, required.has(name), indentLevel)\r\n ) : nothing}\r\n `;\r\n }\r\n\r\n // Handle allOf / oneOf / anyOf\r\n for (const [key, label] of [['allOf', 'All Of'], ['oneOf', 'One Of'], ['anyOf', 'Any Of']] as const) {\r\n const arr = (schema as Record<string, SchemaObj[] | undefined>)[key];\r\n if (arr) {\r\n return html`\r\n ${arr.map((sub, i) => html`\r\n <div class=\"composition-label\" style=\"padding-left: calc(var(--sl-spacing-md) + ${indentLevel * 20}px)\">${label} #${i + 1}</div>\r\n ${sub.properties\r\n ? Object.entries(sub.properties).map(([name, prop]) =>\r\n this._renderProperty(name, prop, (sub.required ?? []).includes(name), indentLevel)\r\n )\r\n : nothing}\r\n `)}\r\n `;\r\n }\r\n }\r\n\r\n return nothing;\r\n }\r\n\r\n override render() {\r\n if (!this.schema) return html``;\r\n\r\n this._seen = new WeakSet();\r\n\r\n // Root level: render properties if it's an object\r\n if (this.schema.type === 'object' && this.schema.properties) {\r\n const required = new Set(this.schema.required ?? []);\r\n return html`\r\n <div class=\"schema-tree\">\r\n ${Object.entries(this.schema.properties).map(([name, prop]) =>\r\n this._renderProperty(name, prop, required.has(name), 0)\r\n )}\r\n ${this.schema.additionalProperties && typeof this.schema.additionalProperties === 'object' ? html`\r\n <div class=\"additional-props\">Additional properties allowed</div>\r\n ` : nothing}\r\n </div>\r\n `;\r\n }\r\n\r\n // Array at root\r\n if (this.schema.type === 'array' && this.schema.items) {\r\n return html`\r\n <div class=\"schema-tree\">\r\n <div class=\"composition-label\">Array items (${(this.schema.items as SchemaObj).type ?? 'any'})</div>\r\n ${this._renderNestedSchema({ type: 'object', properties: (this.schema.items as SchemaObj).properties, required: (this.schema.items as SchemaObj).required }, 0)}\r\n </div>\r\n `;\r\n }\r\n\r\n // Composition at root\r\n if (this.schema.allOf || this.schema.oneOf || this.schema.anyOf) {\r\n return html`\r\n <div class=\"schema-tree\">\r\n ${this._renderNestedSchema(this.schema, 0)}\r\n </div>\r\n `;\r\n }\r\n\r\n // Simple type\r\n return html`\r\n <div class=\"schema-tree\">\r\n <div class=\"schema-row\">\r\n <div class=\"prop-name\">(root)</div>\r\n <div class=\"type-info\"><span class=\"type-badge\">${this._renderType(this.schema)}</span></div>\r\n <div class=\"prop-desc\">${this.schema.description ?? ''}</div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { resetStyles } from '../../styles/reset.css.js';\r\nimport { marked } from 'marked';\r\nimport type { ParsedOperation, ParsedServer, SecurityScheme, AuthState } from '../../core/types.js';\r\n\r\nimport './sl-parameters.js';\r\nimport './sl-request-body.js';\r\nimport './sl-responses.js';\r\nimport '../code/sl-code-samples.js';\r\nimport '../schema/sl-schema.js';\r\n\r\n@customElement('sl-operation')\r\nexport class SlOperation extends LitElement {\r\n static override styles = [\r\n resetStyles,\r\n css`\r\n :host {\r\n display: block;\r\n margin-bottom: var(--sl-spacing-lg);\r\n }\r\n\r\n .operation {\r\n border: 1px solid var(--sl-color-border);\r\n border-radius: var(--sl-radius-lg);\r\n overflow: hidden;\r\n transition: box-shadow var(--sl-transition-fast);\r\n }\r\n\r\n .operation:hover {\r\n box-shadow: var(--sl-shadow-sm);\r\n }\r\n\r\n .op-header {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-md);\r\n padding: var(--sl-spacing-md) var(--sl-spacing-lg);\r\n cursor: pointer;\r\n user-select: none;\r\n transition: background var(--sl-transition-fast);\r\n }\r\n\r\n .op-header:hover {\r\n background: var(--sl-color-bg-subtle);\r\n }\r\n\r\n .method-badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 56px;\r\n padding: 4px 10px;\r\n border-radius: var(--sl-radius-md);\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 700;\r\n font-family: var(--sl-font-mono);\r\n text-transform: uppercase;\r\n letter-spacing: 0.02em;\r\n }\r\n\r\n .method-get { background: var(--sl-color-get-bg); color: var(--sl-color-get); }\r\n .method-post { background: var(--sl-color-post-bg); color: var(--sl-color-post); }\r\n .method-put { background: var(--sl-color-put-bg); color: var(--sl-color-put); }\r\n .method-delete { background: var(--sl-color-delete-bg); color: var(--sl-color-delete); }\r\n .method-patch { background: var(--sl-color-patch-bg); color: var(--sl-color-patch); }\r\n .method-options,\r\n .method-head,\r\n .method-trace { background: var(--sl-color-options-bg); color: var(--sl-color-options); }\r\n\r\n .op-path {\r\n font-family: var(--sl-font-mono);\r\n font-size: var(--sl-font-size-base);\r\n font-weight: 500;\r\n color: var(--sl-color-text);\r\n word-break: break-all;\r\n }\r\n\r\n .op-summary {\r\n flex: 1;\r\n font-size: var(--sl-font-size-sm);\r\n color: var(--sl-color-text-muted);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n }\r\n\r\n .badge-deprecated {\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n padding: 2px 8px;\r\n border-radius: var(--sl-radius-full);\r\n background: var(--sl-color-badge-deprecated-bg);\r\n color: var(--sl-color-badge-deprecated);\r\n }\r\n\r\n .try-it-btn {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n padding: 4px 14px;\r\n border-radius: var(--sl-radius-md);\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n color: var(--sl-color-primary);\r\n border: 1px solid var(--sl-color-primary);\r\n background: transparent;\r\n cursor: pointer;\r\n transition: all var(--sl-transition-fast);\r\n white-space: nowrap;\r\n }\r\n\r\n .try-it-btn:hover {\r\n background: var(--sl-color-primary);\r\n color: var(--sl-color-primary-text);\r\n }\r\n\r\n .expand-icon {\r\n color: var(--sl-color-text-muted);\r\n transition: transform var(--sl-transition-fast);\r\n flex-shrink: 0;\r\n }\r\n\r\n .expand-icon.expanded {\r\n transform: rotate(180deg);\r\n }\r\n\r\n .op-body {\r\n border-top: 1px solid var(--sl-color-border);\r\n display: grid;\r\n grid-template-columns: 3fr 2fr;\r\n gap: 0;\r\n min-height: 0;\r\n }\r\n\r\n .op-content {\r\n padding: var(--sl-spacing-lg);\r\n min-width: 0;\r\n overflow: hidden;\r\n }\r\n\r\n .op-code-panel {\r\n padding: var(--sl-spacing-lg);\r\n border-left: 1px solid var(--sl-color-border);\r\n background: var(--sl-color-bg-subtle);\r\n min-width: 0;\r\n overflow: hidden;\r\n }\r\n\r\n .op-responses-panel {\r\n margin-top: var(--sl-spacing-2xl);\r\n padding-top: var(--sl-spacing-xl);\r\n border-top: 1px solid var(--sl-color-border);\r\n }\r\n\r\n .op-code-sticky {\r\n position: sticky;\r\n top: calc(var(--sl-header-height) + var(--sl-spacing-lg));\r\n }\r\n\r\n .op-description {\r\n font-size: var(--sl-font-size-base);\r\n color: var(--sl-color-text-secondary);\r\n line-height: 1.7;\r\n margin-bottom: var(--sl-spacing-lg);\r\n }\r\n\r\n .op-description p {\r\n margin: 0 0 var(--sl-spacing-sm) 0;\r\n }\r\n\r\n .op-description p:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n .op-description code {\r\n background: var(--sl-color-code-bg);\r\n padding: 2px 5px;\r\n border-radius: var(--sl-radius-sm);\r\n font-size: 0.85em;\r\n }\r\n\r\n .section-title {\r\n font-size: var(--sl-font-size-sm);\r\n font-weight: 600;\r\n color: var(--sl-color-text);\r\n margin: var(--sl-spacing-lg) 0 var(--sl-spacing-sm) 0;\r\n text-transform: uppercase;\r\n letter-spacing: 0.04em;\r\n }\r\n\r\n .section-title:first-child {\r\n margin-top: 0;\r\n }\r\n\r\n .response-schema-block {\r\n margin-bottom: var(--sl-spacing-md);\r\n border: 1px solid var(--sl-color-border);\r\n border-radius: var(--sl-radius-md);\r\n overflow: hidden;\r\n }\r\n\r\n .response-schema-header {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-sm);\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-md);\r\n background: var(--sl-color-bg-subtle);\r\n border-bottom: 1px solid var(--sl-color-border);\r\n }\r\n\r\n .response-schema-status {\r\n font-family: var(--sl-font-mono);\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 700;\r\n }\r\n\r\n .response-schema-status.status-2xx { color: var(--sl-color-success); }\r\n .response-schema-status.status-3xx { color: var(--sl-color-info); }\r\n .response-schema-status.status-4xx { color: var(--sl-color-warning); }\r\n .response-schema-status.status-5xx { color: var(--sl-color-danger); }\r\n .response-schema-status.status-default { color: var(--sl-color-text-muted); }\r\n\r\n .response-schema-desc {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n }\r\n\r\n .copy-link-btn {\r\n margin-left: auto;\r\n padding: 4px 8px;\r\n border-radius: var(--sl-radius-sm);\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n opacity: 0;\r\n transition: opacity var(--sl-transition-fast);\r\n }\r\n\r\n .op-header:hover .copy-link-btn {\r\n opacity: 1;\r\n }\r\n\r\n .copy-link-btn:hover {\r\n background: var(--sl-color-surface-raised);\r\n color: var(--sl-color-text);\r\n }\r\n\r\n @media (max-width: 900px) {\r\n .op-body {\r\n grid-template-columns: 1fr;\r\n }\r\n .op-code-panel {\r\n border-left: none;\r\n border-top: 1px solid var(--sl-color-border);\r\n }\r\n .op-code-sticky {\r\n position: static;\r\n }\r\n }\r\n `,\r\n ];\r\n\r\n @property({ type: Object }) operation!: ParsedOperation;\r\n @property({ type: Array }) servers: ParsedServer[] = [];\r\n @property({ type: Array }) securitySchemes: SecurityScheme[] = [];\r\n @property({ type: Object }) authState: AuthState = { apiKeys: {}, bearerTokens: {} };\r\n @property({ type: String }) proxyUrl = '';\r\n @property({ type: Boolean, attribute: 'hide-try-it' }) hideTryIt = false;\r\n @property({ type: Boolean, attribute: 'hide-code-samples' }) hideCodeSamples = false;\r\n @property({ type: String }) activeOperationId = '';\r\n\r\n @state() private _expanded = false;\r\n\r\n override willUpdate(changed: Map<string, unknown>): void {\r\n if (changed.has('activeOperationId') && this.activeOperationId) {\r\n if (this.activeOperationId === this.operation?.operationId) {\r\n this._expanded = true;\r\n }\r\n }\r\n }\r\n\r\n private _toggle() {\r\n this._expanded = !this._expanded;\r\n }\r\n\r\n private _copyLink(e: Event) {\r\n e.stopPropagation();\r\n const url = `${window.location.origin}${window.location.pathname}#/operation/${encodeURIComponent(this.operation.operationId)}`;\r\n navigator.clipboard.writeText(url);\r\n }\r\n\r\n private _openTryIt(e: Event) {\r\n e.stopPropagation();\r\n this.dispatchEvent(new CustomEvent('try-it', {\r\n detail: this.operation,\r\n bubbles: true,\r\n composed: true,\r\n }));\r\n }\r\n\r\n override render() {\r\n const op = this.operation;\r\n if (!op) return html``;\r\n\r\n return html`\r\n <div class=\"operation\">\r\n <div class=\"op-header\" @click=${this._toggle}>\r\n <span class=\"method-badge method-${op.method}\">${op.method}</span>\r\n <span class=\"op-path\">${op.path}</span>\r\n <span class=\"op-summary\">${op.summary}</span>\r\n ${op.deprecated ? html`<span class=\"badge-deprecated\">Deprecated</span>` : null}\r\n ${!this.hideTryIt ? html`\r\n <button class=\"try-it-btn\" @click=${this._openTryIt}>\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\r\n <path d=\"M4 2l10 6-10 6V2z\"/>\r\n </svg>\r\n Try It\r\n </button>\r\n ` : null}\r\n <button class=\"copy-link-btn\" @click=${this._copyLink} title=\"Copy link\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\r\n <rect x=\"5\" y=\"5\" width=\"8\" height=\"8\" rx=\"1\"/>\r\n <path d=\"M3 11V3h8\"/>\r\n </svg>\r\n </button>\r\n <svg class=\"expand-icon ${this._expanded ? 'expanded' : ''}\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\r\n <path d=\"M4 6l4 4 4-4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n </div>\r\n\r\n ${this._expanded ? html`\r\n <div class=\"op-body\">\r\n <div class=\"op-content\">\r\n ${op.description ? html`\r\n <div class=\"op-description\" .innerHTML=${marked.parse(op.description) as string}></div>\r\n ` : null}\r\n\r\n ${op.parameters.length > 0 ? html`\r\n <div class=\"section-title\">Parameters</div>\r\n <sl-parameters .parameters=${op.parameters}></sl-parameters>\r\n ` : null}\r\n\r\n ${op.requestBody ? html`\r\n <div class=\"section-title\">Request Body ${op.requestBody.required ? html`<span style=\"color:var(--sl-color-badge-required)\">*</span>` : ''}</div>\r\n <sl-request-body .requestBody=${op.requestBody}></sl-request-body>\r\n ` : null}\r\n\r\n ${op.responses.some(r => r.content[0]?.schema) ? html`\r\n <div class=\"section-title\">Response Schema</div>\r\n ${op.responses.filter(r => r.content[0]?.schema).map(r => html`\r\n <div class=\"response-schema-block\">\r\n <div class=\"response-schema-header\">\r\n <span class=\"response-schema-status status-${r.statusCode.startsWith('2') ? '2xx' : r.statusCode.startsWith('3') ? '3xx' : r.statusCode.startsWith('4') ? '4xx' : r.statusCode.startsWith('5') ? '5xx' : 'default'}\">${r.statusCode}</span>\r\n ${r.description ? html`<span class=\"response-schema-desc\">${r.description}</span>` : null}\r\n </div>\r\n <sl-schema .schema=${r.content[0].schema}></sl-schema>\r\n </div>\r\n `)}\r\n ` : null}\r\n </div>\r\n\r\n ${!this.hideCodeSamples ? html`\r\n <div class=\"op-code-panel\">\r\n <div class=\"op-code-sticky\">\r\n <div class=\"section-title\">Code Samples</div>\r\n <sl-code-samples\r\n .operation=${op}\r\n .servers=${this.servers}\r\n .authState=${this.authState}\r\n .securitySchemes=${this.securitySchemes}\r\n ></sl-code-samples>\r\n </div>\r\n ${op.responses.length > 0 ? html`\r\n <div class=\"op-responses-panel\">\r\n <div class=\"section-title\">Responses</div>\r\n <sl-responses .responses=${op.responses}></sl-responses>\r\n </div>\r\n ` : null}\r\n </div>\r\n ` : html`<div></div>`}\r\n </div>\r\n ` : null}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { resetStyles } from '../../styles/reset.css.js';\r\nimport type { ParsedOperation, ParsedServer, SecurityScheme, AuthState } from '../../core/types.js';\r\nimport { sample as sampleFromSchema } from 'openapi-sampler';\r\n\r\ninterface TryItResponse {\r\n status: number;\r\n statusText: string;\r\n headers: Record<string, string>;\r\n body: string;\r\n time: number;\r\n}\r\n\r\n@customElement('sl-try-it')\r\nexport class SlTryIt extends LitElement {\r\n static override styles = [\r\n resetStyles,\r\n css`\r\n :host {\r\n display: block;\r\n }\r\n\r\n .try-it {\r\n border: 1px solid var(--sl-color-border);\r\n border-radius: var(--sl-radius-md);\r\n overflow: hidden;\r\n }\r\n\r\n .form-section {\r\n padding: var(--sl-spacing-md) var(--sl-spacing-lg);\r\n }\r\n\r\n .form-section + .form-section {\r\n border-top: 1px solid var(--sl-color-border);\r\n }\r\n\r\n .form-label {\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n text-transform: uppercase;\r\n letter-spacing: 0.04em;\r\n color: var(--sl-color-text-muted);\r\n margin-bottom: var(--sl-spacing-sm);\r\n }\r\n\r\n .param-input-row {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-sm);\r\n margin-bottom: var(--sl-spacing-sm);\r\n }\r\n\r\n .param-input-row:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n .param-input-name {\r\n font-family: var(--sl-font-mono);\r\n font-size: var(--sl-font-size-sm);\r\n color: var(--sl-color-text);\r\n min-width: 120px;\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n }\r\n\r\n .param-input-name .req {\r\n color: var(--sl-color-badge-required);\r\n }\r\n\r\n input[type=\"text\"],\r\n select {\r\n flex: 1;\r\n padding: 6px 10px;\r\n border: 1px solid var(--sl-color-border);\r\n border-radius: var(--sl-radius-sm);\r\n background: var(--sl-color-bg);\r\n color: var(--sl-color-text);\r\n font-family: var(--sl-font-mono);\r\n font-size: var(--sl-font-size-sm);\r\n outline: none;\r\n transition: border-color var(--sl-transition-fast);\r\n }\r\n\r\n input:focus, select:focus {\r\n border-color: var(--sl-color-primary);\r\n }\r\n\r\n input::placeholder {\r\n color: var(--sl-color-text-muted);\r\n }\r\n\r\n textarea {\r\n width: 100%;\r\n min-height: 120px;\r\n padding: var(--sl-spacing-sm);\r\n border: 1px solid var(--sl-color-border);\r\n border-radius: var(--sl-radius-sm);\r\n background: var(--sl-color-code-bg);\r\n color: var(--sl-color-code-text);\r\n font-family: var(--sl-font-mono);\r\n font-size: var(--sl-font-size-sm);\r\n line-height: 1.6;\r\n resize: vertical;\r\n outline: none;\r\n transition: border-color var(--sl-transition-fast);\r\n }\r\n\r\n textarea:focus {\r\n border-color: var(--sl-color-primary);\r\n }\r\n\r\n .actions-bar {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-sm);\r\n padding: var(--sl-spacing-md) var(--sl-spacing-lg);\r\n border-top: 1px solid var(--sl-color-border);\r\n background: var(--sl-color-bg-subtle);\r\n }\r\n\r\n .send-btn {\r\n padding: 8px 20px;\r\n border-radius: var(--sl-radius-md);\r\n background: var(--sl-color-primary);\r\n color: var(--sl-color-primary-text);\r\n font-weight: 600;\r\n font-size: var(--sl-font-size-sm);\r\n transition: background var(--sl-transition-fast);\r\n }\r\n\r\n .send-btn:hover {\r\n background: var(--sl-color-primary-hover);\r\n }\r\n\r\n .send-btn:disabled {\r\n opacity: 0.6;\r\n cursor: not-allowed;\r\n }\r\n\r\n .server-select {\r\n flex: 1;\r\n max-width: 400px;\r\n }\r\n\r\n /* Response */\r\n .response-section {\r\n border-top: 1px solid var(--sl-color-border);\r\n }\r\n\r\n .response-header {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-md);\r\n padding: var(--sl-spacing-md) var(--sl-spacing-lg);\r\n background: var(--sl-color-bg-subtle);\r\n }\r\n\r\n .status-badge {\r\n font-family: var(--sl-font-mono);\r\n font-weight: 700;\r\n font-size: var(--sl-font-size-sm);\r\n padding: 2px 10px;\r\n border-radius: var(--sl-radius-sm);\r\n }\r\n\r\n .status-2xx { background: rgba(16,185,129,0.1); color: var(--sl-color-success); }\r\n .status-3xx { background: rgba(59,130,246,0.1); color: var(--sl-color-info); }\r\n .status-4xx { background: rgba(245,158,11,0.1); color: var(--sl-color-warning); }\r\n .status-5xx { background: rgba(239,68,68,0.1); color: var(--sl-color-danger); }\r\n\r\n .response-time {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n margin-left: auto;\r\n }\r\n\r\n .response-body {\r\n padding: var(--sl-spacing-md) var(--sl-spacing-lg);\r\n }\r\n\r\n .response-body pre {\r\n background: var(--sl-color-code-bg);\r\n border: 1px solid var(--sl-color-border);\r\n border-radius: var(--sl-radius-sm);\r\n padding: var(--sl-spacing-md);\r\n font-size: var(--sl-font-size-sm);\r\n color: var(--sl-color-code-text);\r\n overflow-x: auto;\r\n line-height: 1.6;\r\n max-height: 400px;\r\n overflow-y: auto;\r\n }\r\n\r\n .response-headers {\r\n padding: 0 var(--sl-spacing-lg) var(--sl-spacing-md);\r\n }\r\n\r\n .response-headers-title {\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n color: var(--sl-color-text-muted);\r\n text-transform: uppercase;\r\n letter-spacing: 0.04em;\r\n margin-bottom: var(--sl-spacing-xs);\r\n cursor: pointer;\r\n }\r\n\r\n .response-headers pre {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n background: var(--sl-color-code-bg);\r\n border: 1px solid var(--sl-color-border);\r\n border-radius: var(--sl-radius-sm);\r\n padding: var(--sl-spacing-sm);\r\n }\r\n\r\n .error-msg {\r\n padding: var(--sl-spacing-md) var(--sl-spacing-lg);\r\n color: var(--sl-color-danger);\r\n font-size: var(--sl-font-size-sm);\r\n }\r\n\r\n .error-msg .cors-hint {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n margin-top: var(--sl-spacing-xs);\r\n }\r\n\r\n .loading-bar {\r\n height: 2px;\r\n background: var(--sl-color-primary);\r\n animation: sl-loading-pulse 1.5s ease infinite;\r\n }\r\n\r\n @keyframes sl-loading-pulse {\r\n 0%, 100% { opacity: 0.3; }\r\n 50% { opacity: 1; }\r\n }\r\n `,\r\n ];\r\n\r\n @property({ type: Object }) operation!: ParsedOperation;\r\n @property({ type: Array }) servers: ParsedServer[] = [];\r\n @property({ type: Array }) securitySchemes: SecurityScheme[] = [];\r\n @property({ type: Object }) authState: AuthState = { apiKeys: {}, bearerTokens: {} };\r\n @property({ type: String }) proxyUrl = '';\r\n\r\n @state() private _paramValues: Record<string, string> = {};\r\n @state() private _bodyValue = '';\r\n @state() private _selectedServer = 0;\r\n @state() private _response: TryItResponse | null = null;\r\n @state() private _loading = false;\r\n @state() private _error: string | null = null;\r\n @state() private _showResponseHeaders = false;\r\n @state() private _initialized = false;\r\n\r\n override willUpdate() {\r\n if (!this._initialized && this.operation) {\r\n this._initDefaults();\r\n this._initialized = true;\r\n }\r\n }\r\n\r\n private _initDefaults() {\r\n const defaults: Record<string, string> = {};\r\n for (const p of this.operation.parameters) {\r\n if (p.example !== undefined) {\r\n defaults[`${p.in}:${p.name}`] = String(p.example);\r\n }\r\n }\r\n this._paramValues = defaults;\r\n\r\n // Pre-fill body\r\n if (this.operation.requestBody) {\r\n const content = this.operation.requestBody.content[0];\r\n if (content?.schema) {\r\n try {\r\n const sample = sampleFromSchema(content.schema as Record<string, unknown>);\r\n this._bodyValue = JSON.stringify(sample, null, 2);\r\n } catch {\r\n this._bodyValue = '{}';\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _buildUrl(): string {\r\n const serverObjs = this.operation.servers.length > 0 ? this.operation.servers : this.servers;\r\n const server = serverObjs[this._selectedServer] ?? serverObjs[0];\r\n if (!server) return this.operation.path;\r\n\r\n let baseUrl = server.url;\r\n // Replace server variables with defaults\r\n for (const [key, val] of Object.entries(server.variables)) {\r\n baseUrl = baseUrl.replace(`{${key}}`, val.default);\r\n }\r\n\r\n // Replace path params\r\n let path = this.operation.path;\r\n for (const p of this.operation.parameters.filter(p => p.in === 'path')) {\r\n const value = this._paramValues[`path:${p.name}`] ?? '';\r\n path = path.replace(`{${p.name}}`, encodeURIComponent(value));\r\n }\r\n\r\n // Query params\r\n const queryParams = this.operation.parameters\r\n .filter(p => p.in === 'query')\r\n .map(p => {\r\n const value = this._paramValues[`query:${p.name}`];\r\n return value ? `${encodeURIComponent(p.name)}=${encodeURIComponent(value)}` : null;\r\n })\r\n .filter(Boolean);\r\n\r\n const queryString = queryParams.length > 0 ? `?${queryParams.join('&')}` : '';\r\n return `${baseUrl}${path}${queryString}`;\r\n }\r\n\r\n private _buildHeaders(): Record<string, string> {\r\n const headers: Record<string, string> = {};\r\n\r\n // Header params\r\n for (const p of this.operation.parameters.filter(p => p.in === 'header')) {\r\n const value = this._paramValues[`header:${p.name}`];\r\n if (value) headers[p.name] = value;\r\n }\r\n\r\n // Auth\r\n for (const secReq of this.operation.security) {\r\n for (const schemeName of Object.keys(secReq)) {\r\n const scheme = this.securitySchemes.find(s => s.key === schemeName);\r\n if (!scheme) continue;\r\n\r\n if (scheme.type === 'apiKey' && scheme.in === 'header' && scheme.name) {\r\n const val = this.authState.apiKeys[schemeName];\r\n if (val) headers[scheme.name] = val;\r\n }\r\n if (scheme.type === 'http') {\r\n const val = this.authState.bearerTokens[schemeName];\r\n if (val) {\r\n if (scheme.scheme === 'bearer') {\r\n headers['Authorization'] = `Bearer ${val}`;\r\n } else if (scheme.scheme === 'basic') {\r\n headers['Authorization'] = `Basic ${btoa(val)}`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Content-Type for body\r\n if (this.operation.requestBody) {\r\n const content = this.operation.requestBody.content[0];\r\n if (content) {\r\n headers['Content-Type'] = content.mediaType;\r\n }\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n private async _send() {\r\n this._loading = true;\r\n this._error = null;\r\n this._response = null;\r\n\r\n const url = this._buildUrl();\r\n const headers = this._buildHeaders();\r\n const hasBody = this.operation.requestBody && ['post', 'put', 'patch'].includes(this.operation.method);\r\n\r\n const targetUrl = this.proxyUrl ? `${this.proxyUrl}${encodeURIComponent(url)}` : url;\r\n\r\n const start = performance.now();\r\n\r\n try {\r\n const resp = await fetch(targetUrl, {\r\n method: this.operation.method.toUpperCase(),\r\n headers,\r\n body: hasBody ? this._bodyValue : undefined,\r\n });\r\n\r\n const time = Math.round(performance.now() - start);\r\n const body = await resp.text();\r\n\r\n const respHeaders: Record<string, string> = {};\r\n resp.headers.forEach((v, k) => { respHeaders[k] = v; });\r\n\r\n this._response = {\r\n status: resp.status,\r\n statusText: resp.statusText,\r\n headers: respHeaders,\r\n body,\r\n time,\r\n };\r\n } catch (err) {\r\n const msg = err instanceof Error ? err.message : String(err);\r\n this._error = msg;\r\n } finally {\r\n this._loading = false;\r\n }\r\n }\r\n\r\n private _getStatusClass(status: number): string {\r\n if (status < 300) return 'status-2xx';\r\n if (status < 400) return 'status-3xx';\r\n if (status < 500) return 'status-4xx';\r\n return 'status-5xx';\r\n }\r\n\r\n private _formatBody(body: string): string {\r\n try {\r\n return JSON.stringify(JSON.parse(body), null, 2);\r\n } catch {\r\n return body;\r\n }\r\n }\r\n\r\n override render() {\r\n if (!this.operation) return html``;\r\n\r\n const pathParams = this.operation.parameters.filter(p => p.in === 'path');\r\n const queryParams = this.operation.parameters.filter(p => p.in === 'query');\r\n const headerParams = this.operation.parameters.filter(p => p.in === 'header');\r\n const serverObjs = this.operation.servers.length > 0 ? this.operation.servers : this.servers;\r\n\r\n return html`\r\n <div class=\"try-it\">\r\n ${pathParams.length > 0 ? html`\r\n <div class=\"form-section\">\r\n <div class=\"form-label\">Path Parameters</div>\r\n ${pathParams.map(p => html`\r\n <div class=\"param-input-row\">\r\n <div class=\"param-input-name\">${p.name} ${p.required ? html`<span class=\"req\">*</span>` : null}</div>\r\n <input\r\n type=\"text\"\r\n placeholder=\"${p.example ?? p.name}\"\r\n .value=${this._paramValues[`path:${p.name}`] ?? ''}\r\n @input=${(e: Event) => { this._paramValues = { ...this._paramValues, [`path:${p.name}`]: (e.target as HTMLInputElement).value }; }}\r\n />\r\n </div>\r\n `)}\r\n </div>\r\n ` : null}\r\n\r\n ${queryParams.length > 0 ? html`\r\n <div class=\"form-section\">\r\n <div class=\"form-label\">Query Parameters</div>\r\n ${queryParams.map(p => html`\r\n <div class=\"param-input-row\">\r\n <div class=\"param-input-name\">${p.name} ${p.required ? html`<span class=\"req\">*</span>` : null}</div>\r\n <input\r\n type=\"text\"\r\n placeholder=\"${p.example ?? ''}\"\r\n .value=${this._paramValues[`query:${p.name}`] ?? ''}\r\n @input=${(e: Event) => { this._paramValues = { ...this._paramValues, [`query:${p.name}`]: (e.target as HTMLInputElement).value }; }}\r\n />\r\n </div>\r\n `)}\r\n </div>\r\n ` : null}\r\n\r\n ${headerParams.length > 0 ? html`\r\n <div class=\"form-section\">\r\n <div class=\"form-label\">Header Parameters</div>\r\n ${headerParams.map(p => html`\r\n <div class=\"param-input-row\">\r\n <div class=\"param-input-name\">${p.name}</div>\r\n <input\r\n type=\"text\"\r\n placeholder=\"${p.example ?? ''}\"\r\n .value=${this._paramValues[`header:${p.name}`] ?? ''}\r\n @input=${(e: Event) => { this._paramValues = { ...this._paramValues, [`header:${p.name}`]: (e.target as HTMLInputElement).value }; }}\r\n />\r\n </div>\r\n `)}\r\n </div>\r\n ` : null}\r\n\r\n ${this.operation.requestBody ? html`\r\n <div class=\"form-section\">\r\n <div class=\"form-label\">Request Body</div>\r\n <textarea\r\n .value=${this._bodyValue}\r\n @input=${(e: Event) => { this._bodyValue = (e.target as HTMLTextAreaElement).value; }}\r\n ></textarea>\r\n </div>\r\n ` : null}\r\n\r\n <div class=\"actions-bar\">\r\n ${serverObjs.length > 1 ? html`\r\n <select class=\"server-select\" @change=${(e: Event) => { this._selectedServer = (e.target as HTMLSelectElement).selectedIndex; }}>\r\n ${serverObjs.map(s => html`<option>${s.url}${s.description ? ` — ${s.description}` : ''}</option>`)}\r\n </select>\r\n ` : null}\r\n <button class=\"send-btn\" @click=${this._send} ?disabled=${this._loading}>\r\n ${this._loading ? 'Sending…' : 'Send Request'}\r\n </button>\r\n </div>\r\n\r\n ${this._loading ? html`<div class=\"loading-bar\"></div>` : null}\r\n\r\n ${this._error ? html`\r\n <div class=\"error-msg\">\r\n ${this._error}\r\n <div class=\"cors-hint\">\r\n If this is a CORS error, the API server may need to allow cross-origin requests,\r\n or you can configure a <code>proxyUrl</code> in SpecLens.\r\n </div>\r\n </div>\r\n ` : null}\r\n\r\n ${this._response ? html`\r\n <div class=\"response-section\">\r\n <div class=\"response-header\">\r\n <span class=\"status-badge ${this._getStatusClass(this._response.status)}\">\r\n ${this._response.status} ${this._response.statusText}\r\n </span>\r\n <span class=\"response-time\">${this._response.time}ms</span>\r\n </div>\r\n <div class=\"response-body\">\r\n <pre><code>${this._formatBody(this._response.body)}</code></pre>\r\n </div>\r\n <div class=\"response-headers\">\r\n <div class=\"response-headers-title\" @click=${() => this._showResponseHeaders = !this._showResponseHeaders}>\r\n Headers ${this._showResponseHeaders ? '▾' : '▸'}\r\n </div>\r\n ${this._showResponseHeaders ? html`\r\n <pre>${Object.entries(this._response.headers).map(([k, v]) => `${k}: ${v}`).join('\\n')}</pre>\r\n ` : null}\r\n </div>\r\n </div>\r\n ` : null}\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { resetStyles } from '../../styles/reset.css.js';\r\nimport { marked } from 'marked';\r\nimport type { SecurityScheme, AuthState } from '../../core/types.js';\r\n\r\n@customElement('sl-auth')\r\nexport class SlAuth extends LitElement {\r\n static override styles = [\r\n resetStyles,\r\n css`\r\n :host {\r\n display: block;\r\n position: fixed;\r\n inset: 0;\r\n z-index: 300;\r\n }\r\n\r\n .overlay {\r\n position: absolute;\r\n inset: 0;\r\n background: var(--sl-color-overlay);\r\n animation: sl-fade-in 150ms ease;\r\n }\r\n\r\n @keyframes sl-fade-in {\r\n from { opacity: 0; }\r\n to { opacity: 1; }\r\n }\r\n\r\n .modal {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n width: min(580px, calc(100vw - 2rem));\r\n max-height: calc(100vh - 4rem);\r\n background: var(--sl-color-surface);\r\n border-radius: var(--sl-radius-xl);\r\n box-shadow: var(--sl-shadow-xl);\r\n border: 1px solid var(--sl-color-border);\r\n overflow: hidden;\r\n display: flex;\r\n flex-direction: column;\r\n animation: sl-modal-in 200ms cubic-bezier(0.16, 1, 0.3, 1);\r\n }\r\n\r\n @keyframes sl-modal-in {\r\n from { opacity: 0; transform: translate(-50%, -48%) scale(0.96); }\r\n to { opacity: 1; transform: translate(-50%, -50%) scale(1); }\r\n }\r\n\r\n .modal-header {\r\n display: flex;\r\n align-items: flex-start;\r\n justify-content: space-between;\r\n padding: var(--sl-spacing-xl);\r\n border-bottom: 1px solid var(--sl-color-border);\r\n flex-shrink: 0;\r\n gap: var(--sl-spacing-md);\r\n }\r\n\r\n .modal-title-area {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-md);\r\n }\r\n\r\n .modal-icon {\r\n width: 40px;\r\n height: 40px;\r\n flex-shrink: 0;\r\n border-radius: var(--sl-radius-lg);\r\n background: var(--sl-color-primary);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: #fff;\r\n box-shadow: 0 2px 8px rgba(99, 102, 241, 0.35);\r\n }\r\n\r\n .modal-title-text {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 2px;\r\n }\r\n\r\n .modal-title {\r\n font-size: var(--sl-font-size-lg);\r\n font-weight: 700;\r\n color: var(--sl-color-text);\r\n line-height: 1.2;\r\n }\r\n\r\n .modal-subtitle {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n }\r\n\r\n .close-btn {\r\n width: 32px;\r\n height: 32px;\r\n flex-shrink: 0;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: var(--sl-radius-md);\r\n color: var(--sl-color-text-muted);\r\n transition: all var(--sl-transition-fast);\r\n margin-top: 2px;\r\n }\r\n\r\n .close-btn:hover {\r\n background: var(--sl-color-surface-raised);\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .modal-body {\r\n flex: 1;\r\n overflow-y: auto;\r\n padding: var(--sl-spacing-xl);\r\n }\r\n\r\n .scheme-list {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--sl-spacing-md);\r\n }\r\n\r\n .scheme-card {\r\n border: 1px solid var(--sl-color-border);\r\n border-left: 3px solid var(--sl-color-primary);\r\n border-radius: var(--sl-radius-lg);\r\n background: var(--sl-color-bg-subtle);\r\n overflow: hidden;\r\n transition: border-color var(--sl-transition-fast);\r\n }\r\n\r\n .scheme-card:focus-within {\r\n border-color: var(--sl-color-primary);\r\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\r\n }\r\n\r\n .scheme-card-inner {\r\n padding: var(--sl-spacing-md) var(--sl-spacing-lg);\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--sl-spacing-sm);\r\n }\r\n\r\n .scheme-header {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: var(--sl-spacing-sm);\r\n }\r\n\r\n .scheme-name {\r\n font-size: var(--sl-font-size-sm);\r\n font-weight: 700;\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .scheme-badge {\r\n font-size: 10px;\r\n font-weight: 600;\r\n letter-spacing: 0.05em;\r\n text-transform: uppercase;\r\n padding: 2px 8px;\r\n border-radius: var(--sl-radius-full);\r\n background: rgba(99, 102, 241, 0.1);\r\n color: var(--sl-color-primary);\r\n white-space: nowrap;\r\n }\r\n\r\n .scheme-meta {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n display: flex;\r\n align-items: center;\r\n gap: 4px;\r\n }\r\n\r\n .scheme-meta code {\r\n font-family: var(--sl-font-mono);\r\n background: var(--sl-color-surface-raised);\r\n padding: 1px 5px;\r\n border-radius: 3px;\r\n color: var(--sl-color-text-secondary);\r\n }\r\n\r\n .scheme-desc {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n line-height: 1.6;\r\n border-top: 1px solid var(--sl-color-border);\r\n padding-top: var(--sl-spacing-sm);\r\n }\r\n\r\n .scheme-desc p {\r\n margin: 0 0 var(--sl-spacing-xs) 0;\r\n }\r\n\r\n .scheme-desc p:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n .scheme-desc code {\r\n background: var(--sl-color-surface-raised);\r\n padding: 1px 5px;\r\n border-radius: 3px;\r\n font-size: 0.85em;\r\n font-family: var(--sl-font-mono);\r\n }\r\n\r\n .scheme-desc a {\r\n color: var(--sl-color-primary);\r\n text-decoration: none;\r\n }\r\n\r\n .scheme-desc a:hover {\r\n text-decoration: underline;\r\n }\r\n\r\n .input-row {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-sm);\r\n border-top: 1px solid var(--sl-color-border);\r\n padding-top: var(--sl-spacing-sm);\r\n }\r\n\r\n .input-label {\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 600;\r\n color: var(--sl-color-text-muted);\r\n text-transform: uppercase;\r\n letter-spacing: 0.04em;\r\n min-width: 46px;\r\n }\r\n\r\n .input-wrapper {\r\n flex: 1;\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n }\r\n\r\n input[type=\"text\"],\r\n input[type=\"password\"] {\r\n width: 100%;\r\n padding: 8px 40px 8px 12px;\r\n border: 1.5px solid var(--sl-color-border);\r\n border-radius: var(--sl-radius-md);\r\n background: var(--sl-color-bg);\r\n color: var(--sl-color-text);\r\n font-family: var(--sl-font-mono);\r\n font-size: var(--sl-font-size-sm);\r\n outline: none;\r\n transition: border-color var(--sl-transition-fast), box-shadow var(--sl-transition-fast);\r\n }\r\n\r\n input:focus {\r\n border-color: var(--sl-color-primary);\r\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);\r\n }\r\n\r\n input::placeholder {\r\n color: var(--sl-color-text-muted);\r\n font-family: var(--sl-font-family);\r\n font-style: italic;\r\n }\r\n\r\n .toggle-visibility {\r\n position: absolute;\r\n right: 8px;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n width: 26px;\r\n height: 26px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: var(--sl-radius-sm);\r\n color: var(--sl-color-text-muted);\r\n transition: all var(--sl-transition-fast);\r\n }\r\n\r\n .toggle-visibility:hover {\r\n background: var(--sl-color-surface-raised);\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .unsupported-card {\r\n padding: var(--sl-spacing-md) var(--sl-spacing-lg);\r\n border: 1px dashed var(--sl-color-border);\r\n border-radius: var(--sl-radius-lg);\r\n background: transparent;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: var(--sl-spacing-md);\r\n }\r\n\r\n .unsupported-name {\r\n font-size: var(--sl-font-size-sm);\r\n font-weight: 600;\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .unsupported-type {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n margin-top: 2px;\r\n }\r\n\r\n .unsupported-badge {\r\n font-size: 10px;\r\n font-weight: 600;\r\n letter-spacing: 0.04em;\r\n text-transform: uppercase;\r\n padding: 2px 8px;\r\n border-radius: var(--sl-radius-full);\r\n background: var(--sl-color-surface-raised);\r\n color: var(--sl-color-text-muted);\r\n white-space: nowrap;\r\n flex-shrink: 0;\r\n }\r\n\r\n .modal-footer {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: var(--sl-spacing-sm);\r\n padding: var(--sl-spacing-md) var(--sl-spacing-xl);\r\n border-top: 1px solid var(--sl-color-border);\r\n background: var(--sl-color-bg-subtle);\r\n flex-shrink: 0;\r\n }\r\n\r\n .footer-info {\r\n font-size: var(--sl-font-size-xs);\r\n color: var(--sl-color-text-muted);\r\n }\r\n\r\n .footer-actions {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-sm);\r\n }\r\n\r\n .btn-secondary {\r\n padding: 7px 16px;\r\n border-radius: var(--sl-radius-md);\r\n font-size: var(--sl-font-size-sm);\r\n font-weight: 500;\r\n color: var(--sl-color-text-secondary);\r\n border: 1px solid var(--sl-color-border);\r\n transition: all var(--sl-transition-fast);\r\n }\r\n\r\n .btn-secondary:hover {\r\n background: var(--sl-color-surface-raised);\r\n color: var(--sl-color-text);\r\n border-color: var(--sl-color-border-hover);\r\n }\r\n\r\n .btn-primary {\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n padding: 7px 18px;\r\n border-radius: var(--sl-radius-md);\r\n font-size: var(--sl-font-size-sm);\r\n font-weight: 600;\r\n color: var(--sl-color-primary-text);\r\n background: var(--sl-color-primary);\r\n transition: all var(--sl-transition-fast);\r\n box-shadow: 0 1px 3px rgba(99, 102, 241, 0.3);\r\n }\r\n\r\n .btn-primary:hover {\r\n background: var(--sl-color-primary-hover);\r\n box-shadow: 0 2px 6px rgba(99, 102, 241, 0.4);\r\n }\r\n `,\r\n ];\r\n\r\n @property({ type: Array }) securitySchemes: SecurityScheme[] = [];\r\n @property({ type: Object }) authState: AuthState = { apiKeys: {}, bearerTokens: {} };\r\n\r\n @state() private _localState: AuthState = { apiKeys: {}, bearerTokens: {} };\r\n @state() private _showTokens = new Set<string>();\r\n\r\n override willUpdate(): void {\r\n if (Object.keys(this._localState.apiKeys).length === 0 &&\r\n Object.keys(this._localState.bearerTokens).length === 0) {\r\n this._localState = { ...this.authState };\r\n }\r\n }\r\n\r\n private _updateApiKey(schemeName: string, value: string) {\r\n this._localState = {\r\n ...this._localState,\r\n apiKeys: { ...this._localState.apiKeys, [schemeName]: value },\r\n };\r\n this._emit();\r\n }\r\n\r\n private _updateBearerToken(schemeName: string, value: string) {\r\n this._localState = {\r\n ...this._localState,\r\n bearerTokens: { ...this._localState.bearerTokens, [schemeName]: value },\r\n };\r\n this._emit();\r\n }\r\n\r\n private _emit() {\r\n this.dispatchEvent(new CustomEvent('auth-update', { detail: this._localState }));\r\n }\r\n\r\n private _toggleShow(key: string) {\r\n const next = new Set(this._showTokens);\r\n if (next.has(key)) next.delete(key);\r\n else next.add(key);\r\n this._showTokens = next;\r\n }\r\n\r\n private _close() {\r\n this.dispatchEvent(new CustomEvent('close-auth'));\r\n }\r\n\r\n private _renderScheme(scheme: SecurityScheme) {\r\n const eyeIcon = (visible: boolean) => html`\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\">\r\n ${visible\r\n ? html`<path d=\"M1 8s2.5-5 7-5 7 5 7 5-2.5 5-7 5-7-5-7-5z\"/><circle cx=\"8\" cy=\"8\" r=\"2\"/>`\r\n : html`<path d=\"M1 1l14 14M6.7 6.7A2 2 0 0010.3 10.3M3.4 3.4A7 7 0 001 8s2.5 5 7 5a7 7 0 003.6-1\"/><path d=\"M8 3c4.4 0 7 5 7 5a12.8 12.8 0 01-1.7 2.3\"/>`}\r\n </svg>\r\n `;\r\n\r\n if (scheme.type === 'apiKey') {\r\n const visible = this._showTokens.has(scheme.key);\r\n return html`\r\n <div class=\"scheme-card\">\r\n <div class=\"scheme-card-inner\">\r\n <div class=\"scheme-header\">\r\n <span class=\"scheme-name\">${scheme.key}</span>\r\n <span class=\"scheme-badge\">API Key</span>\r\n </div>\r\n <div class=\"scheme-meta\">\r\n In <code>${scheme.in}</code> as <code>${scheme.name}</code>\r\n </div>\r\n <div class=\"scheme-desc\" .innerHTML=${marked.parse(scheme.description || 'Enter your API key to authenticate requests.') as string}></div>\r\n <div class=\"input-row\">\r\n <span class=\"input-label\">Value</span>\r\n <div class=\"input-wrapper\">\r\n <input\r\n type=\"${visible ? 'text' : 'password'}\"\r\n placeholder=\"Enter API key…\"\r\n .value=${this._localState.apiKeys[scheme.key] ?? ''}\r\n @input=${(e: Event) => this._updateApiKey(scheme.key, (e.target as HTMLInputElement).value)}\r\n />\r\n <button class=\"toggle-visibility\" @click=${() => this._toggleShow(scheme.key)} title=\"${visible ? 'Hide' : 'Show'} value\">\r\n ${eyeIcon(visible)}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n if (scheme.type === 'http' && (scheme.scheme === 'bearer' || scheme.scheme === 'basic')) {\r\n const visible = this._showTokens.has(scheme.key);\r\n const badgeLabel = scheme.scheme === 'bearer' ? 'Bearer Token' : 'Basic Auth';\r\n const metaLabel = scheme.scheme === 'bearer'\r\n ? html`HTTP Bearer${scheme.bearerFormat ? html` · <code>${scheme.bearerFormat}</code>` : null}`\r\n : html`HTTP Basic <code>username:password</code>`;\r\n\r\n return html`\r\n <div class=\"scheme-card\">\r\n <div class=\"scheme-card-inner\">\r\n <div class=\"scheme-header\">\r\n <span class=\"scheme-name\">${scheme.key}</span>\r\n <span class=\"scheme-badge\">${badgeLabel}</span>\r\n </div>\r\n <div class=\"scheme-meta\">${metaLabel}</div>\r\n <div class=\"scheme-desc\" .innerHTML=${marked.parse(scheme.description || 'Enter your bearer token to authenticate requests.') as string}></div>\r\n <div class=\"input-row\">\r\n <span class=\"input-label\">Token</span>\r\n <div class=\"input-wrapper\">\r\n <input\r\n type=\"${visible ? 'text' : 'password'}\"\r\n placeholder=\"Enter token…\"\r\n .value=${this._localState.bearerTokens[scheme.key] ?? ''}\r\n @input=${(e: Event) => this._updateBearerToken(scheme.key, (e.target as HTMLInputElement).value)}\r\n />\r\n <button class=\"toggle-visibility\" @click=${() => this._toggleShow(scheme.key)} title=\"${visible ? 'Hide' : 'Show'} token\">\r\n ${eyeIcon(visible)}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n return html`\r\n <div class=\"unsupported-card\">\r\n <div>\r\n <div class=\"unsupported-name\">${scheme.key}</div>\r\n <div class=\"unsupported-type\">${scheme.description ?? 'No description'}</div>\r\n </div>\r\n <span class=\"unsupported-badge\">${scheme.type} — not supported</span>\r\n </div>\r\n `;\r\n }\r\n\r\n override render() {\r\n const schemeCount = this.securitySchemes.length;\r\n return html`\r\n <div class=\"overlay\" @click=${this._close}></div>\r\n <div class=\"modal\">\r\n <div class=\"modal-header\">\r\n <div class=\"modal-title-area\">\r\n <div class=\"modal-icon\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <rect x=\"4\" y=\"9\" width=\"12\" height=\"9\" rx=\"2\"/>\r\n <path d=\"M7 9V7a3 3 0 016 0v2\"/>\r\n <circle cx=\"10\" cy=\"14\" r=\"1.2\" fill=\"currentColor\" stroke=\"none\"/>\r\n </svg>\r\n </div>\r\n <div class=\"modal-title-text\">\r\n <span class=\"modal-title\">Authorization</span>\r\n <span class=\"modal-subtitle\">${schemeCount} security scheme${schemeCount !== 1 ? 's' : ''} configured</span>\r\n </div>\r\n </div>\r\n <button class=\"close-btn\" @click=${this._close} title=\"Close\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\">\r\n <path d=\"M4 4l8 8M12 4l-8 8\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"scheme-list\">\r\n ${this.securitySchemes.map(s => this._renderScheme(s))}\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <span class=\"footer-info\">Credentials are stored in memory only</span>\r\n <div class=\"footer-actions\">\r\n <button class=\"btn-secondary\" @click=${this._close}>Cancel</button>\r\n <button class=\"btn-primary\" @click=${this._close}>\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M3 8l4 4 6-6\"/>\r\n </svg>\r\n Save & Close\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import { LitElement, html, css, PropertyValues } from 'lit';\r\nimport { customElement, property, state } from 'lit/decorators.js';\r\nimport { resetStyles } from './styles/reset.css.js';\r\nimport { tokenStyles } from './styles/tokens.css.js';\r\nimport { themeStyles } from './styles/theme.css.js';\r\nimport { parseSpec } from './core/parser.js';\r\nimport { buildSearchIndex } from './core/search.js';\r\nimport { Router } from './core/router.js';\r\nimport { ThemeManager } from './core/theme.js';\r\nimport { marked } from 'marked';\r\nimport type { SpecLensConfig, ParsedSpec, ParsedOperation, AuthState, SearchEngine } from './core/types.js';\r\n\r\nimport './components/layout/sl-header.js';\r\nimport './components/layout/sl-sidebar.js';\r\nimport './components/operation/sl-operation.js';\r\nimport './components/operation/sl-try-it.js';\r\nimport './components/auth/sl-auth.js';\r\n\r\n@customElement('spec-lens')\r\nexport class SpecLensElement extends LitElement {\r\n static override styles = [\r\n resetStyles,\r\n tokenStyles,\r\n themeStyles,\r\n css`\r\n :host {\r\n display: block;\r\n font-family: var(--sl-font-family);\r\n color: var(--sl-color-text);\r\n background: var(--sl-color-bg);\r\n min-height: 100vh;\r\n }\r\n\r\n .sl-root {\r\n display: flex;\r\n flex-direction: column;\r\n min-height: 100vh;\r\n }\r\n\r\n .sl-body {\r\n display: flex;\r\n flex: 1;\r\n }\r\n\r\n .sl-main {\r\n flex: 1;\r\n min-width: 0;\r\n padding: var(--sl-spacing-xl) var(--sl-spacing-2xl);\r\n max-width: 1400px;\r\n margin: 0 auto;\r\n }\r\n\r\n /* ── Introduction Section ──────────── */\r\n .sl-introduction {\r\n margin-bottom: var(--sl-spacing-3xl);\r\n padding-bottom: var(--sl-spacing-2xl);\r\n border-bottom: 1px solid var(--sl-color-border);\r\n }\r\n\r\n .sl-intro-title {\r\n font-size: var(--sl-font-size-2xl);\r\n font-weight: 800;\r\n color: var(--sl-color-text);\r\n margin: 0 0 var(--sl-spacing-sm) 0;\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-md);\r\n }\r\n\r\n .sl-intro-version {\r\n font-size: var(--sl-font-size-sm);\r\n font-weight: 600;\r\n padding: 3px 10px;\r\n border-radius: var(--sl-radius-full);\r\n background: var(--sl-color-primary);\r\n color: var(--sl-color-primary-text);\r\n }\r\n\r\n .sl-intro-desc {\r\n font-size: var(--sl-font-size-base);\r\n color: var(--sl-color-text-secondary);\r\n line-height: 1.7;\r\n max-width: 900px;\r\n }\r\n\r\n .sl-intro-desc p {\r\n margin: 0 0 var(--sl-spacing-md) 0;\r\n }\r\n .sl-intro-desc p:last-child {\r\n margin-bottom: 0;\r\n }\r\n\r\n /* ── Headings ──────────────────────── */\r\n .sl-intro-desc h1,\r\n .sl-intro-desc h2,\r\n .sl-intro-desc h3,\r\n .sl-intro-desc h4,\r\n .sl-intro-desc h5,\r\n .sl-intro-desc h6 {\r\n color: var(--sl-color-text);\r\n font-weight: 700;\r\n margin: var(--sl-spacing-xl) 0 var(--sl-spacing-sm) 0;\r\n line-height: 1.3;\r\n }\r\n .sl-intro-desc h1 { font-size: 1.6rem; border-bottom: 2px solid var(--sl-color-border); padding-bottom: var(--sl-spacing-sm); }\r\n .sl-intro-desc h2 { font-size: 1.3rem; border-bottom: 1px solid var(--sl-color-border); padding-bottom: var(--sl-spacing-xs); }\r\n .sl-intro-desc h3 { font-size: 1.1rem; }\r\n .sl-intro-desc h4 { font-size: 1rem; }\r\n .sl-intro-desc h5 { font-size: 0.9rem; }\r\n .sl-intro-desc h1:first-child,\r\n .sl-intro-desc h2:first-child,\r\n .sl-intro-desc h3:first-child {\r\n margin-top: 0;\r\n }\r\n\r\n /* ── Inline code ───────────────────── */\r\n .sl-intro-desc code {\r\n background: var(--sl-color-code-bg);\r\n padding: 2px 7px;\r\n border-radius: var(--sl-radius-sm);\r\n font-size: 0.85em;\r\n font-family: var(--sl-font-mono);\r\n border: 1px solid var(--sl-color-border);\r\n }\r\n\r\n /* ── Code blocks ───────────────────── */\r\n .sl-intro-desc pre {\r\n background: #0d1117;\r\n border: 1px solid #30363d;\r\n border-radius: var(--sl-radius-md);\r\n padding: var(--sl-spacing-md);\r\n overflow-x: auto;\r\n margin: var(--sl-spacing-md) 0;\r\n line-height: 1.6;\r\n }\r\n .sl-intro-desc pre code {\r\n background: none;\r\n border: none;\r\n padding: 0;\r\n border-radius: 0;\r\n color: #e6edf3;\r\n font-size: var(--sl-font-size-sm);\r\n font-family: var(--sl-font-mono);\r\n }\r\n\r\n /* ── Links (button-like) ───────────── */\r\n .sl-intro-desc a {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 4px;\r\n color: var(--sl-color-primary);\r\n text-decoration: none;\r\n font-weight: 500;\r\n padding: 2px 8px;\r\n border-radius: var(--sl-radius-sm);\r\n border: 1px solid transparent;\r\n transition: all var(--sl-transition-fast);\r\n }\r\n .sl-intro-desc a:hover {\r\n background: rgba(99, 102, 241, 0.08);\r\n border-color: rgba(99, 102, 241, 0.25);\r\n text-decoration: none;\r\n }\r\n .sl-intro-desc a:active {\r\n background: rgba(99, 102, 241, 0.15);\r\n }\r\n\r\n /* ── Tables ────────────────────────── */\r\n .sl-intro-desc table {\r\n width: 100%;\r\n border-collapse: separate;\r\n border-spacing: 0;\r\n border: 1px solid var(--sl-color-border);\r\n border-radius: var(--sl-radius-md);\r\n overflow: hidden;\r\n margin: var(--sl-spacing-md) 0;\r\n font-size: var(--sl-font-size-sm);\r\n }\r\n .sl-intro-desc thead {\r\n background: var(--sl-color-bg-subtle);\r\n }\r\n .sl-intro-desc th {\r\n text-align: left;\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-md);\r\n font-weight: 600;\r\n color: var(--sl-color-text);\r\n border-bottom: 2px solid var(--sl-color-border);\r\n white-space: nowrap;\r\n }\r\n .sl-intro-desc td {\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-md);\r\n border-bottom: 1px solid var(--sl-color-border);\r\n color: var(--sl-color-text-secondary);\r\n }\r\n .sl-intro-desc tr:last-child td {\r\n border-bottom: none;\r\n }\r\n .sl-intro-desc tbody tr:hover {\r\n background: var(--sl-color-bg-subtle);\r\n }\r\n\r\n /* ── Blockquotes ───────────────────── */\r\n .sl-intro-desc blockquote {\r\n border-left: 3px solid var(--sl-color-primary);\r\n background: rgba(99, 102, 241, 0.05);\r\n margin: var(--sl-spacing-md) 0;\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-lg);\r\n border-radius: 0 var(--sl-radius-md) var(--sl-radius-md) 0;\r\n color: var(--sl-color-text-secondary);\r\n }\r\n .sl-intro-desc blockquote p {\r\n margin-bottom: var(--sl-spacing-xs);\r\n }\r\n .sl-intro-desc blockquote code {\r\n background: rgba(99, 102, 241, 0.1);\r\n border-color: rgba(99, 102, 241, 0.2);\r\n }\r\n\r\n /* ── Lists ─────────────────────────── */\r\n .sl-intro-desc ul,\r\n .sl-intro-desc ol {\r\n margin: var(--sl-spacing-sm) 0;\r\n padding-left: var(--sl-spacing-xl);\r\n }\r\n .sl-intro-desc li {\r\n margin-bottom: var(--sl-spacing-xs);\r\n }\r\n .sl-intro-desc li strong {\r\n color: var(--sl-color-text);\r\n }\r\n\r\n /* ── Horizontal rules ──────────────── */\r\n .sl-intro-desc hr {\r\n border: none;\r\n height: 1px;\r\n background: var(--sl-color-border);\r\n margin: var(--sl-spacing-xl) 0;\r\n }\r\n\r\n /* ── Bootstrap-style badges (from spec HTML) ── */\r\n .sl-intro-desc .badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 40px;\r\n padding: 2px 10px;\r\n border-radius: var(--sl-radius-full);\r\n font-size: 0.75rem;\r\n font-weight: 700;\r\n font-family: var(--sl-font-mono);\r\n line-height: 1.5;\r\n letter-spacing: 0.02em;\r\n }\r\n .sl-intro-desc .bg-success { background: var(--sl-color-get-bg); color: var(--sl-color-get); }\r\n .sl-intro-desc .bg-primary { background: var(--sl-color-post-bg); color: var(--sl-color-post); }\r\n .sl-intro-desc .bg-info { background: var(--sl-color-put-bg); color: var(--sl-color-put); }\r\n .sl-intro-desc .bg-danger { background: var(--sl-color-delete-bg); color: var(--sl-color-delete); }\r\n .sl-intro-desc .bg-secondary { background: var(--sl-color-bg-subtle); color: var(--sl-color-text-secondary); border: 1px solid var(--sl-color-border); }\r\n\r\n /* ── Bootstrap-style alert divs ────── */\r\n .sl-intro-desc .alert {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-sm);\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-lg);\r\n border-radius: var(--sl-radius-md);\r\n font-size: var(--sl-font-size-sm);\r\n font-weight: 600;\r\n margin: var(--sl-spacing-md) 0;\r\n }\r\n .sl-intro-desc .alert-success {\r\n background: var(--sl-color-get-bg);\r\n color: var(--sl-color-get);\r\n border: 1px solid rgba(16, 185, 129, 0.2);\r\n }\r\n .sl-intro-desc .alert-danger {\r\n background: var(--sl-color-delete-bg);\r\n color: var(--sl-color-delete);\r\n border: 1px solid rgba(239, 68, 68, 0.2);\r\n }\r\n\r\n /* ── Bootstrap-style buttons (from spec HTML) ── */\r\n .sl-intro-desc button,\r\n .sl-intro-desc .btn {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: 6px;\r\n padding: 6px 16px;\r\n border-radius: var(--sl-radius-md);\r\n font-size: var(--sl-font-size-sm);\r\n font-weight: 600;\r\n cursor: pointer;\r\n transition: all var(--sl-transition-fast);\r\n border: 1px solid var(--sl-color-get);\r\n background: transparent;\r\n color: var(--sl-color-get);\r\n }\r\n .sl-intro-desc button:hover,\r\n .sl-intro-desc .btn:hover {\r\n background: var(--sl-color-get);\r\n color: #fff;\r\n }\r\n\r\n /* ── Images ────────────────────────── */\r\n .sl-intro-desc img {\r\n max-width: 100%;\r\n height: auto;\r\n border-radius: var(--sl-radius-md);\r\n margin: var(--sl-spacing-sm) 0;\r\n }\r\n\r\n .sl-intro-server {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-sm);\r\n margin-top: var(--sl-spacing-md);\r\n padding: var(--sl-spacing-sm) var(--sl-spacing-md);\r\n border-radius: var(--sl-radius-md);\r\n background: var(--sl-color-bg-subtle);\r\n border: 1px solid var(--sl-color-border);\r\n font-size: var(--sl-font-size-sm);\r\n }\r\n\r\n .sl-intro-server-label {\r\n color: var(--sl-color-text-muted);\r\n font-weight: 500;\r\n }\r\n\r\n .sl-intro-server-url {\r\n font-family: var(--sl-font-mono);\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .sl-intro-meta {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: var(--sl-spacing-md);\r\n margin-top: var(--sl-spacing-sm);\r\n font-size: var(--sl-font-size-sm);\r\n color: var(--sl-color-text-secondary);\r\n }\r\n\r\n .sl-intro-meta a {\r\n color: var(--sl-color-primary);\r\n text-decoration: none;\r\n }\r\n\r\n .sl-intro-meta a:hover {\r\n text-decoration: underline;\r\n }\r\n\r\n /* ── Loading / Error ───────────────── */\r\n .sl-loading {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n min-height: 60vh;\r\n gap: var(--sl-spacing-md);\r\n }\r\n\r\n .sl-loading-spinner {\r\n width: 40px;\r\n height: 40px;\r\n border: 3px solid var(--sl-color-border);\r\n border-top-color: var(--sl-color-primary);\r\n border-radius: 50%;\r\n animation: sl-spin 0.8s linear infinite;\r\n }\r\n\r\n @keyframes sl-spin {\r\n to { transform: rotate(360deg); }\r\n }\r\n\r\n .sl-loading-text {\r\n color: var(--sl-color-text-muted);\r\n font-size: 0.875rem;\r\n }\r\n\r\n .sl-error {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n min-height: 60vh;\r\n gap: var(--sl-spacing-md);\r\n color: var(--sl-color-delete);\r\n text-align: center;\r\n padding: var(--sl-spacing-xl);\r\n }\r\n\r\n .sl-error-icon {\r\n font-size: 2rem;\r\n }\r\n\r\n .sl-error-title {\r\n font-size: 1.25rem;\r\n font-weight: 600;\r\n }\r\n\r\n .sl-error-detail {\r\n font-size: 0.875rem;\r\n color: var(--sl-color-text-muted);\r\n max-width: 500px;\r\n word-break: break-word;\r\n }\r\n\r\n /* ── Tag Groups ────────────────────── */\r\n .sl-tag-group {\r\n margin-bottom: var(--sl-spacing-2xl);\r\n }\r\n\r\n .sl-tag-group-title {\r\n font-size: 1.5rem;\r\n font-weight: 700;\r\n margin: 0 0 var(--sl-spacing-xs) 0;\r\n padding-bottom: var(--sl-spacing-sm);\r\n border-bottom: 2px solid var(--sl-color-border);\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .sl-tag-group-desc {\r\n font-size: 0.875rem;\r\n color: var(--sl-color-text-muted);\r\n margin: 0 0 var(--sl-spacing-lg) 0;\r\n }\r\n\r\n /* ── Try It Modal ──────────────────── */\r\n .try-it-overlay {\r\n position: fixed;\r\n inset: 0;\r\n z-index: 300;\r\n }\r\n\r\n .try-it-backdrop {\r\n position: absolute;\r\n inset: 0;\r\n background: var(--sl-color-overlay);\r\n animation: sl-fade-in 150ms ease;\r\n }\r\n\r\n @keyframes sl-fade-in {\r\n from { opacity: 0; }\r\n to { opacity: 1; }\r\n }\r\n\r\n .try-it-modal {\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n width: min(680px, calc(100vw - 2rem));\r\n max-height: calc(100vh - 4rem);\r\n background: var(--sl-color-surface);\r\n border-radius: var(--sl-radius-xl);\r\n box-shadow: var(--sl-shadow-xl);\r\n border: 1px solid var(--sl-color-border);\r\n overflow: hidden;\r\n display: flex;\r\n flex-direction: column;\r\n animation: sl-modal-in 200ms ease;\r\n }\r\n\r\n @keyframes sl-modal-in {\r\n from { opacity: 0; transform: translate(-50%, -50%) scale(0.96); }\r\n to { opacity: 1; transform: translate(-50%, -50%) scale(1); }\r\n }\r\n\r\n .try-it-header {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--sl-spacing-md);\r\n padding: var(--sl-spacing-md) var(--sl-spacing-xl);\r\n border-bottom: 1px solid var(--sl-color-border);\r\n flex-shrink: 0;\r\n }\r\n\r\n .try-it-header .method-badge {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 52px;\r\n padding: 3px 10px;\r\n border-radius: var(--sl-radius-md);\r\n font-size: var(--sl-font-size-xs);\r\n font-weight: 700;\r\n font-family: var(--sl-font-mono);\r\n text-transform: uppercase;\r\n }\r\n\r\n .method-get { background: var(--sl-color-get-bg); color: var(--sl-color-get); }\r\n .method-post { background: var(--sl-color-post-bg); color: var(--sl-color-post); }\r\n .method-put { background: var(--sl-color-put-bg); color: var(--sl-color-put); }\r\n .method-delete { background: var(--sl-color-delete-bg); color: var(--sl-color-delete); }\r\n .method-patch { background: var(--sl-color-patch-bg); color: var(--sl-color-patch); }\r\n .method-options,\r\n .method-head,\r\n .method-trace { background: var(--sl-color-options-bg); color: var(--sl-color-options); }\r\n\r\n .try-it-header .try-it-path {\r\n font-family: var(--sl-font-mono);\r\n font-size: var(--sl-font-size-sm);\r\n font-weight: 500;\r\n color: var(--sl-color-text);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n flex: 1;\r\n }\r\n\r\n .try-it-close {\r\n width: 32px;\r\n height: 32px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: var(--sl-radius-md);\r\n color: var(--sl-color-text-muted);\r\n transition: all var(--sl-transition-fast);\r\n flex-shrink: 0;\r\n }\r\n\r\n .try-it-close:hover {\r\n background: var(--sl-color-surface-raised);\r\n color: var(--sl-color-text);\r\n }\r\n\r\n .try-it-body {\r\n flex: 1;\r\n overflow-y: auto;\r\n padding: 0;\r\n }\r\n\r\n @media (max-width: 768px) {\r\n .sl-main {\r\n padding: var(--sl-spacing-md);\r\n }\r\n }\r\n `,\r\n ];\r\n\r\n @property({ attribute: 'spec-url' })\r\n specUrl = '';\r\n\r\n @property({ attribute: 'proxy-url' })\r\n proxyUrl = '';\r\n\r\n @property({ attribute: 'theme', reflect: true })\r\n theme: 'light' | 'dark' | 'auto' = 'auto';\r\n\r\n @property({ type: Boolean, attribute: 'hide-try-it' })\r\n hideTryIt = false;\r\n\r\n @property({ type: Boolean, attribute: 'hide-code-samples' })\r\n hideCodeSamples = false;\r\n\r\n config: SpecLensConfig = {};\r\n\r\n @state() private _spec: ParsedSpec | null = null;\r\n @state() private _loading = false;\r\n @state() private _error: string | null = null;\r\n @state() private _sidebarOpen = false;\r\n @state() private _authOpen = false;\r\n @state() private _activeOperationId = '';\r\n @state() private _navigateToId = '';\r\n @state() private _authState: AuthState = { apiKeys: {}, bearerTokens: {} };\r\n @state() private _tryItOperation: ParsedOperation | null = null;\r\n\r\n private _search: SearchEngine | null = null;\r\n private _router: Router | null = null;\r\n private _themeManager: ThemeManager | null = null;\r\n private _observer: IntersectionObserver | null = null;\r\n\r\n private _handleKeyDown = (e: KeyboardEvent) => {\r\n if ((e.metaKey || e.ctrlKey) && e.key === 'k') {\r\n e.preventDefault();\r\n const sidebar = this.renderRoot.querySelector('sl-sidebar') as any;\r\n sidebar?.focusSearch();\r\n }\r\n };\r\n\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n this._themeManager = new ThemeManager(this);\r\n this._themeManager.init(this.theme);\r\n this._router = new Router((opId) => {\r\n this._activeOperationId = opId;\r\n this._navigateToId = opId;\r\n this._scrollToOperation(opId);\r\n });\r\n this._router.init();\r\n document.addEventListener('keydown', this._handleKeyDown);\r\n }\r\n\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n this._router?.destroy();\r\n this._themeManager?.destroy();\r\n this._observer?.disconnect();\r\n document.removeEventListener('keydown', this._handleKeyDown);\r\n }\r\n\r\n override willUpdate(changed: PropertyValues): void {\r\n if (changed.has('specUrl') || changed.has('config')) {\r\n this._loadSpec();\r\n }\r\n if (changed.has('theme')) {\r\n this._themeManager?.setTheme(this.theme);\r\n }\r\n }\r\n\r\n private async _loadSpec(): Promise<void> {\r\n const specSource = this.config?.spec || this.specUrl;\r\n if (!specSource) return;\r\n\r\n this._loading = true;\r\n this._error = null;\r\n this._spec = null;\r\n\r\n try {\r\n const spec = await parseSpec(specSource);\r\n this._spec = spec;\r\n this._search = buildSearchIndex(spec.allOperations);\r\n this._loading = false;\r\n\r\n // After render, handle initial route + set up scroll tracking\r\n await this.updateComplete;\r\n this._router?.handleCurrentRoute();\r\n this._setupScrollTracking();\r\n } catch (err) {\r\n this._loading = false;\r\n this._error = err instanceof Error ? err.message : String(err);\r\n }\r\n }\r\n\r\n private _setupScrollTracking(): void {\r\n this._observer?.disconnect();\r\n\r\n this._observer = new IntersectionObserver(\r\n (entries) => {\r\n for (const entry of entries) {\r\n if (entry.isIntersecting) {\r\n const id = entry.target.id;\r\n if (id === 'introduction') {\r\n this._activeOperationId = '';\r\n } else if (id.startsWith('op-')) {\r\n this._activeOperationId = id.replace('op-', '');\r\n }\r\n }\r\n }\r\n },\r\n {\r\n root: null,\r\n rootMargin: '-20% 0px -70% 0px',\r\n threshold: 0,\r\n }\r\n );\r\n\r\n // Observe introduction\r\n const intro = this.renderRoot.querySelector('#introduction');\r\n if (intro) this._observer.observe(intro);\r\n\r\n // Observe all operations\r\n const ops = this.renderRoot.querySelectorAll('[id^=\"op-\"]');\r\n ops.forEach(el => this._observer!.observe(el));\r\n }\r\n\r\n private _scrollToOperation(operationId: string): void {\r\n if (!operationId) return;\r\n const el = this.renderRoot.querySelector(`#op-${CSS.escape(operationId)}`);\r\n el?.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n\r\n private _scrollToIntro(): void {\r\n this._activeOperationId = '';\r\n const el = this.renderRoot.querySelector('#introduction');\r\n el?.scrollIntoView({ behavior: 'smooth', block: 'start' });\r\n }\r\n\r\n private _handleThemeToggle(): void {\r\n const newTheme = this._themeManager?.toggle() ?? 'auto';\r\n this.theme = newTheme;\r\n }\r\n\r\n private _handleAuthUpdate(e: CustomEvent<AuthState>): void {\r\n this._authState = e.detail;\r\n }\r\n\r\n private _handleTryIt(e: CustomEvent<ParsedOperation>): void {\r\n this._tryItOperation = e.detail;\r\n }\r\n\r\n override render() {\r\n return html`\r\n <div class=\"sl-root\" data-theme=${this._themeManager?.resolved ?? 'light'}>\r\n ${this._spec ? html`\r\n <sl-header\r\n .spec=${this._spec}\r\n .authOpen=${this._authOpen}\r\n @toggle-theme=${this._handleThemeToggle}\r\n @toggle-sidebar=${() => this._sidebarOpen = !this._sidebarOpen}\r\n @toggle-auth=${() => this._authOpen = !this._authOpen}\r\n ></sl-header>\r\n\r\n <div class=\"sl-body\">\r\n <sl-sidebar\r\n .tagGroups=${this._spec.tagGroups}\r\n .activeOperationId=${this._activeOperationId}\r\n .open=${this._sidebarOpen}\r\n .searchEngine=${this._search}\r\n @navigate=${(e: CustomEvent<string>) => this._router?.navigateTo(e.detail)}\r\n @navigate-intro=${() => this._scrollToIntro()}\r\n @close-sidebar=${() => this._sidebarOpen = false}\r\n ></sl-sidebar>\r\n\r\n <main class=\"sl-main\">\r\n <section class=\"sl-introduction\" id=\"introduction\">\r\n <h1 class=\"sl-intro-title\">\r\n ${this._spec.title}\r\n <span class=\"sl-intro-version\">${this._spec.version}</span>\r\n </h1>\r\n ${this._spec.description ? html`\r\n <div class=\"sl-intro-desc\" .innerHTML=${marked.parse(this._spec.description) as string}></div>\r\n ` : html`\r\n <div class=\"sl-intro-desc\">\r\n <p>Welcome to the <strong>${this._spec.title}</strong> API documentation.</p>\r\n </div>\r\n `}\r\n ${this._spec.servers.length > 0 ? html`\r\n <div class=\"sl-intro-server\">\r\n <span class=\"sl-intro-server-label\">Base URL</span>\r\n <span class=\"sl-intro-server-url\">${this._spec.servers[0].url}</span>\r\n </div>\r\n ` : null}\r\n ${this._spec.contact ? html`\r\n <div class=\"sl-intro-meta\">\r\n ${this._spec.contact.name ? html`<span class=\"sl-intro-meta-item\"><strong>Contact:</strong> ${this._spec.contact.url ? html`<a href=\"${this._spec.contact.url}\" target=\"_blank\" rel=\"noopener\">${this._spec.contact.name}</a>` : this._spec.contact.name}</span>` : null}\r\n ${this._spec.contact.email ? html`<span class=\"sl-intro-meta-item\"><strong>Email:</strong> <a href=\"mailto:${this._spec.contact.email}\">${this._spec.contact.email}</a></span>` : null}\r\n </div>\r\n ` : null}\r\n ${this._spec.license ? html`\r\n <div class=\"sl-intro-meta\">\r\n <span class=\"sl-intro-meta-item\"><strong>License:</strong> ${this._spec.license.url ? html`<a href=\"${this._spec.license.url}\" target=\"_blank\" rel=\"noopener\">${this._spec.license.name}</a>` : this._spec.license.name}</span>\r\n </div>\r\n ` : null}\r\n ${this._spec.termsOfService ? html`\r\n <div class=\"sl-intro-meta\">\r\n <span class=\"sl-intro-meta-item\"><a href=\"${this._spec.termsOfService}\" target=\"_blank\" rel=\"noopener\">Terms of Service</a></span>\r\n </div>\r\n ` : null}\r\n </section>\r\n\r\n ${this._spec.tagGroups.map(group => html`\r\n <section class=\"sl-tag-group\" id=\"tag-${CSS.escape(group.name)}\">\r\n <h2 class=\"sl-tag-group-title\">${group.name}</h2>\r\n ${group.description ? html`<div class=\"sl-tag-group-desc sl-intro-desc\" .innerHTML=${marked.parse(group.description) as string}></div>` : null}\r\n ${group.operations.map(op => html`\r\n <sl-operation\r\n id=\"op-${op.operationId}\"\r\n .operation=${op}\r\n .servers=${this._spec!.servers}\r\n .securitySchemes=${this._spec!.securitySchemes}\r\n .authState=${this._authState}\r\n .proxyUrl=${this.proxyUrl || this.config?.proxyUrl || ''}\r\n .activeOperationId=${this._navigateToId}\r\n ?hide-try-it=${this.hideTryIt || this.config?.hideTryIt}\r\n ?hide-code-samples=${this.hideCodeSamples || this.config?.hideCodeSamples}\r\n @try-it=${this._handleTryIt}\r\n ></sl-operation>\r\n `)}\r\n </section>\r\n `)}\r\n </main>\r\n </div>\r\n\r\n ${this._authOpen && this._spec.securitySchemes.length > 0 ? html`\r\n <sl-auth\r\n .securitySchemes=${this._spec.securitySchemes}\r\n .authState=${this._authState}\r\n @auth-update=${this._handleAuthUpdate}\r\n @close-auth=${() => this._authOpen = false}\r\n ></sl-auth>\r\n ` : null}\r\n\r\n ${this._tryItOperation ? html`\r\n <div class=\"try-it-overlay\">\r\n <div class=\"try-it-backdrop\" @click=${() => this._tryItOperation = null}></div>\r\n <div class=\"try-it-modal\">\r\n <div class=\"try-it-header\">\r\n <span class=\"method-badge method-${this._tryItOperation.method}\">${this._tryItOperation.method}</span>\r\n <span class=\"try-it-path\">${this._tryItOperation.path}</span>\r\n <button class=\"try-it-close\" @click=${() => this._tryItOperation = null}>\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\r\n <path d=\"M4 4l8 8M12 4l-8 8\" stroke-linecap=\"round\"/>\r\n </svg>\r\n </button>\r\n </div>\r\n <div class=\"try-it-body\">\r\n <sl-try-it\r\n .operation=${this._tryItOperation}\r\n .servers=${this._spec!.servers}\r\n .securitySchemes=${this._spec!.securitySchemes}\r\n .authState=${this._authState}\r\n .proxyUrl=${this.proxyUrl || this.config?.proxyUrl || ''}\r\n ></sl-try-it>\r\n </div>\r\n </div>\r\n </div>\r\n ` : null}\r\n ` : null}\r\n\r\n ${this._loading ? html`\r\n <div class=\"sl-loading\">\r\n <div class=\"sl-loading-spinner\"></div>\r\n <div class=\"sl-loading-text\">Loading API specification…</div>\r\n </div>\r\n ` : null}\r\n\r\n ${this._error ? html`\r\n <div class=\"sl-error\">\r\n <div class=\"sl-error-icon\">⚠</div>\r\n <div class=\"sl-error-title\">Failed to load specification</div>\r\n <div class=\"sl-error-detail\">${this._error}</div>\r\n </div>\r\n ` : null}\r\n </div>\r\n `;\r\n }\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n 'spec-lens': SpecLensElement;\r\n }\r\n}\r\n","import { Buffer } from 'buffer';\r\n\r\n// Polyfill Buffer for swagger-parser's browser usage\r\nif (typeof (globalThis as Record<string, unknown>).Buffer === 'undefined') {\r\n (globalThis as Record<string, unknown>).Buffer = Buffer;\r\n}\r\n\r\nimport { SpecLensElement } from './spec-lens.js';\r\nimport type { SpecLensConfig } from './core/types.js';\r\n\r\n// Register the custom element\r\nif (!customElements.get('spec-lens')) {\r\n customElements.define('spec-lens', SpecLensElement);\r\n}\r\n\r\n// Public API\r\nexport const SpecLens = {\r\n /**\r\n * Mount SpecLens into a container element.\r\n *\r\n * @example\r\n * ```html\r\n * <div id=\"docs\"></div>\r\n * <script src=\"https://cdn.jsdelivr.net/npm/speclens/dist/speclens.iife.js\"></script>\r\n * <script>\r\n * SpecLens.init('#docs', { specUrl: './openapi.json' });\r\n * </script>\r\n * ```\r\n */\r\n init(selector: string, config: SpecLensConfig): SpecLensElement {\r\n const container = document.querySelector(selector);\r\n if (!container) {\r\n throw new Error(`[SpecLens] Container not found: ${selector}`);\r\n }\r\n\r\n const el = document.createElement('spec-lens') as SpecLensElement;\r\n\r\n if (config.specUrl) {\r\n el.setAttribute('spec-url', config.specUrl);\r\n }\r\n if (config.theme && config.theme !== 'auto') {\r\n el.setAttribute('theme', config.theme);\r\n }\r\n if (config.proxyUrl) {\r\n el.setAttribute('proxy-url', config.proxyUrl);\r\n }\r\n if (config.hideTryIt) {\r\n el.setAttribute('hide-try-it', '');\r\n }\r\n if (config.hideCodeSamples) {\r\n el.setAttribute('hide-code-samples', '');\r\n }\r\n\r\n // Pass full config object for properties not expressible as attributes\r\n el.config = config;\r\n\r\n container.appendChild(el);\r\n return el;\r\n },\r\n};\r\n\r\n// Re-export types for ESM consumers\r\nexport type { SpecLensConfig } from './core/types.js';\r\nexport { SpecLensElement } from './spec-lens.js';\r\n"],"names":["lookup","code","i","len","len2","buffer","e","m","d","s","c","require$$0","ieee754","require$$1","exports","Buffer","b","a","x","y","list","n","inspect","str","toJSON","byteLength","last","errors","E","type","t","o","r","S","h","l","p","u","f","_a","_b","v","css","format","util","util_1","parse","path","schema","newline","protectedProps","options","normalizeArgs","ono","errorToJSON","OnoConstructor","names","_","UsedValueState","def","not","node","items","self","rules","keyword","Type","names_1","require$$2","params","require$$3","require$$4","DataType","types","dataType","defaults","properties","pattern","validate","subschema","equal","traverse","jsonSchemaTraverseModule","resolve","id","ref","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","jsonPointer","$ref","http","uri","fastUri","fastUriModule","uri_1","$schema","definitions","k","text","core_1","core","limitNumber","ucs2length_1","ucs2length","required","equal_1","validation_1","validation","prefixItems","block","additionalProperties","patternProperties","anyOf","allOf","require$$11","require$$12","require$$13","require$$14","require$$15","draft2020","applicator","format_2","DiscrError","tag","oneOf","module","dynamicAnchor_1","dynamicAnchor","dynamicRef_1","dynamicRef","dynamic_1","dynamic","next_1","next","unevaluatedProperties","unevaluated_1","unevaluated","metadata","lib","basename","this","convertPathToPosix_1","convertPathToPosix","isWindows_1","isWindows","k2","pointer","url","plugins","file","parse_1","json","extend","exception","common","map","merge","binary","_tag","string","escapeString","loader","dumper","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","normalizeArgs_1","resolveExternal_1","resolveExternal","bundle_1","bundle","key","dereference_1","dereference","maybe_1","maybe","defaultOptions","SwaggerParser","schemes","set","dist","child","document","chunk","promise","conditions","results","query","boosts","data","escape","title","text2","LitElement","html","__decorateClass","property","customElement","state","sample","uuid","seenSchemasStack","spec","unescape","compile","propName","regexSample","faker.regexSample","sep","attStr","buildFromOrderedJs","L","XMLBuilder","sampleFromSchema","unsafeHTML","File","getHeader","join","indent","supportedMethods","native","okhttp","unirest","isRegexp","isObj","stringifyObject","pad","val","opts","axios","fetch","literalRepresentation","value","nsurlsession","curl","payload","request","svg","snippet","nothing"],"mappings":"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AA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAA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A,EACA/J;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,154,155,156,157,158,159,160,161,162,163,164,165,166,167,170,174,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,197,198,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272]}
|